home / github

Menu
  • Search all tables
  • GraphQL API

issues

Table actions
  • GraphQL API for issues

45 rows where comments = 1, repo = 13221727 and user = 14371165 sorted by updated_at descending

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: draft, created_at (date), updated_at (date), closed_at (date)

type 2

  • pull 40
  • issue 5

state 2

  • closed 40
  • open 5

repo 1

  • xarray · 45 ✖
id node_id number title user state locked assignee milestone comments created_at updated_at ▲ closed_at author_association active_lock_reason draft pull_request body reactions performed_via_github_app state_reason repo type
2241095068 PR_kwDOAMm_X85sixE5 8935 Use Variable.stack instead of np.ravel Illviljan 14371165 open 0     1 2024-04-12T23:04:35Z 2024-04-13T08:27:13Z   MEMBER   1 pydata/xarray/pulls/8935
  • [ ] Closes #xxxx
  • [ ] Tests added
  • [ ] User visible changes (including notable bug fixes) are documented in whats-new.rst
  • [ ] New functions/methods are listed in api.rst
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8935/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1410608825 PR_kwDOAMm_X85A4RjC 7173 Add LineCollection plot Illviljan 14371165 open 0     1 2022-10-16T20:16:28Z 2024-04-07T20:26:44Z   MEMBER   1 pydata/xarray/pulls/7173

This adds a line plotter based on LineCollections, called .lines at the moment.

I wanted to replace darray.plot() with using LineCollection instead. But unfortunately due to how many cases are supported (and tested in xarray) darray.plot() will continue using plt.plot.

xref:

4820

5622

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7173/reactions",
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
2215603817 I_kwDOAMm_X86ED25p 8892 ffill's tolerance argument can be strings Illviljan 14371165 open 0     1 2024-03-29T15:49:40Z 2024-04-02T01:50:34Z   MEMBER      

What happened?

ffill, bfill reindex etc. have tolerance arguments that also supports strings. And we test for it here:

https://github.com/pydata/xarray/blob/2120808bbe45f3d4f0b6a01cd43bac4df4039092/xarray/tests/test_groupby.py#L2016-L2025

But our typing assumes it's floats only: https://github.com/pydata/xarray/blob/2120808bbe45f3d4f0b6a01cd43bac4df4039092/xarray/core/resample.py#L69-L94

What did you expect to happen?

Since our pytests pass, mypy should pass as well.

Minimal Complete Verifiable Example

```python import numpy as np import pandas as pd

import xarray as xr

https://github.com/pydata/xarray/blob/2120808bbe45f3d4f0b6a01cd43bac4df4039092/xarray/tests/test_groupby.py#L2016

Test tolerance keyword for upsample methods bfill, pad, nearest

times = pd.date_range("2000-01-01", freq="1D", periods=2) times_upsampled = pd.date_range("2000-01-01", freq="6h", periods=5) array = xr.DataArray(np.arange(2), [("time", times)])

Forward fill

actual = array.resample(time="6h").ffill(tolerance="12h") expected = xr.DataArray([0.0, 0.0, 0.0, np.nan, 1.0], [("time", times_upsampled)]) xr.testing.assert_identical(expected, actual)

```

Environment

master

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8892/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 issue
2215324218 PR_kwDOAMm_X85rKmW7 8890 Add typing to test_groupby.py Illviljan 14371165 closed 0     1 2024-03-29T13:13:59Z 2024-03-29T16:38:17Z 2024-03-29T16:38:16Z MEMBER   0 pydata/xarray/pulls/8890

Enforce typing on all tests in test_groupby.py and add the remaining type hints.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8890/reactions",
    "total_count": 1,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 1,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
2203493958 PR_kwDOAMm_X85qiskT 8868 Try ruff lint for numpy 2.0 Illviljan 14371165 closed 0     1 2024-03-22T23:31:04Z 2024-03-22T23:34:11Z 2024-03-22T23:33:03Z MEMBER   1 pydata/xarray/pulls/8868

From https://numpy.org/devdocs/numpy_2_0_migration_guide.html#numpy-2-migration-guide

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8868/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1418830429 PR_kwDOAMm_X85BT_a6 7194 Align naming convention with plt.subplots Illviljan 14371165 closed 0     1 2022-10-21T20:31:34Z 2024-03-13T21:44:17Z 2022-10-23T11:58:12Z MEMBER   0 pydata/xarray/pulls/7194

I noticed that the normal notation for fig, axs = plt.subplots(2, 1) wasn't used in facetgrid so did a quick find replace to change that. This feels better for my pedantic brain at least but I'm not sure it's worth the effort?

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7194/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
2034545604 PR_kwDOAMm_X85hnyZ9 8538 Check that compat is equal to identical only once in dataset concat Illviljan 14371165 closed 0     1 2023-12-10T21:42:20Z 2023-12-13T09:27:11Z 2023-12-13T09:27:11Z MEMBER   0 pydata/xarray/pulls/8538

Small change to avoid triggering several if-checks unnecessarily.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8538/reactions",
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1966567753 PR_kwDOAMm_X85eBydo 8386 Use get_args for duckarray checks Illviljan 14371165 closed 0     1 2023-10-28T11:58:57Z 2023-10-28T12:46:10Z 2023-10-28T12:45:32Z MEMBER   1 pydata/xarray/pulls/8386

xref: #8376

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8386/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1944068053 PR_kwDOAMm_X85c1sC5 8314 Align MemoryCachedArray and PandasIndexingAdapter more Illviljan 14371165 closed 0     1 2023-10-15T21:42:27Z 2023-10-16T20:01:21Z 2023-10-16T20:01:20Z MEMBER   0 pydata/xarray/pulls/8314

Seen in #8294.

The issue is the IndexVariable, ExplicitlyIndexedNDArrayMixin lacks .array which is required for IndexVariable, and therefore we need a new minimal class that are common between the two.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8314/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1944059054 PR_kwDOAMm_X85c1qR0 8312 Fix typing issues in tests Illviljan 14371165 closed 0     1 2023-10-15T21:11:12Z 2023-10-16T15:09:57Z 2023-10-16T15:09:57Z MEMBER   0 pydata/xarray/pulls/8312

Seen in #8294.

These tests implicitly made sure the type was correct in a way that type checkers wont understand. Make it explicit instead.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8312/reactions",
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1944083743 PR_kwDOAMm_X85c1vGB 8315 Handle numpy missing the array api function astype Illviljan 14371165 closed 0     1 2023-10-15T22:32:17Z 2023-10-16T06:25:20Z 2023-10-16T06:25:19Z MEMBER   0 pydata/xarray/pulls/8315

This is how our get_array_namespace works: https://github.com/pydata/xarray/blob/dafd726c36e24ac77427513a4a149a6933353b66/xarray/core/duck_array_ops.py#L44-L48

Which usually works. But not for astype.

Using np.array_api doesn't work because you have to use np.array_api.Array instead of np.ndarray:

```python import numpy.array_api as nxp nxp.astype(np.array([1, 2,]), np.dtype(float))

Traceback (most recent call last):

File "C:\Users\J.W\AppData\Local\Temp\ipykernel_8616\23329947.py", line 1, in <cell line: 1> nxp.astype(np.array([1, 2,]), np.dtype(float))

File "C:\Users\J.W\anaconda3\envs\xarray-tests\lib\site-packages\numpy\array_api_data_type_functions.py", line 20, in astype return Array._new(x._array.astype(dtype=dtype, copy=copy))

AttributeError: 'numpy.ndarray' object has no attribute '_array' ```

I found it simpler to just change astype here.

An alternative solution would be to use: https://github.com/data-apis/array-api-compat https://github.com/tomwhite/cubed/pull/317

Seen in #8294.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8315/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1938790253 PR_kwDOAMm_X85ckfW9 8295 Remove real, imag, astype methods from NamedArray Illviljan 14371165 closed 0     1 2023-10-11T21:44:26Z 2023-10-13T15:58:07Z 2023-10-13T15:58:06Z MEMBER   0 pydata/xarray/pulls/8295

These methods are not in the Array API. Instead convert the methods to functions in similar fashion as the array api.

https://data-apis.org/array-api/latest/API_specification/index.html

Not sure how to handle array compliant functions with an axis argument (max for example) but that's for a future PR.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8295/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1931329996 PR_kwDOAMm_X85cK3Or 8281 Add high level from_array function in namedarray Illviljan 14371165 closed 0     1 2023-10-07T12:19:23Z 2023-10-10T17:10:37Z 2023-10-10T17:10:37Z MEMBER   1 pydata/xarray/pulls/8281

The Idea is to avoid as much normalization in the NamedArray class as possible. Different types are handled before initializing instead.

  • [ ] Closes #xxxx
  • [ ] Tests added
  • [ ] User visible changes (including notable bug fixes) are documented in whats-new.rst
  • [ ] New functions/methods are listed in api.rst

References: https://github.com/tomwhite/cubed/blob/ea885193dd37d27917a24878b51bb086aaef5fb1/cubed/core/ops.py#L34 https://stackoverflow.com/questions/74633074/how-to-type-hint-a-generic-numpy-array https://numpy.org/doc/stable/reference/arrays.scalars.html#scalars https://github.com/numpy/numpy/blob/040ed2dc9847265c581a342301dd87d2b518a3c2/numpy/init.pyi#L1423 https://github.com/numpy/numpy/blob/040ed2dc9847265c581a342301dd87d2b518a3c2/numpy/_typing/_array_like.py#L32

Mypy issues: https://github.com/python/typing/issues/548

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8281/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1916331957 PR_kwDOAMm_X85bYX4z 8240 Bind T_DuckArray to NamedArray Illviljan 14371165 closed 0     1 2023-09-27T21:11:58Z 2023-09-28T16:18:26Z 2023-09-28T16:18:26Z MEMBER   0 pydata/xarray/pulls/8240

Binding allows typing the .data property.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/8240/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1549889322 PR_kwDOAMm_X85IKePm 7460 Add abstractmethods to backend classes Illviljan 14371165 open 0     1 2023-01-19T20:19:36Z 2023-07-29T11:42:33Z   MEMBER   1 pydata/xarray/pulls/7460

It's been unclear to me what methods are necessary to implement or not. I think decorating with @abstractmethod will help with that. It's a breaking change though and it could be disruptive.

  • [ ] Closes #xxxx
  • [ ] Tests added
  • [ ] User visible changes (including notable bug fixes) are documented in whats-new.rst
  • [ ] New functions/methods are listed in api.rst
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7460/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1699099029 PR_kwDOAMm_X85P8IoD 7824 Improve concat performance Illviljan 14371165 closed 0     1 2023-05-07T14:54:06Z 2023-06-02T14:36:11Z 2023-06-02T14:36:11Z MEMBER   0 pydata/xarray/pulls/7824
  • Don't use python for loops for possibly large coords. Rather create a np array once then filter out bad data.
  • DuckArrayModule is slightly slow, so cache the first import in a dict instead to speed up later calls.
  • Add more typing to be more confident that inputs are valid and then remove redundant checks and conversions.

  • [x] Requires #7843

  • [x] Requires #7844.
  • [x] Requires #7858
  • [x] Closes #7833
  • [x] Tests added
  • [x] User visible changes (including notable bug fixes) are documented in whats-new.rst
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7824/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1710752209 PR_kwDOAMm_X85QjIMH 7844 Improve to_dask_dataframe performance Illviljan 14371165 closed 0     1 2023-05-15T20:08:24Z 2023-05-25T20:08:54Z 2023-05-25T20:08:54Z MEMBER   0 pydata/xarray/pulls/7844
  • ds.chunks loops all the variables, do it once.
  • Faster to create a meta dataframe once than letting dask guess 2000 times.
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7844/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1697987899 PR_kwDOAMm_X85P4g05 7820 Pin pint to 0.20 Illviljan 14371165 closed 0     1 2023-05-05T17:59:40Z 2023-05-06T07:27:28Z 2023-05-06T07:27:28Z MEMBER   0 pydata/xarray/pulls/7820

Newest pint crashes our tests for some reason, pin it for now.

  • [ ] Closes #xxxx
  • [ ] Tests added
  • [ ] User visible changes (including notable bug fixes) are documented in whats-new.rst
  • [ ] New functions/methods are listed in api.rst
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7820/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1638243008 PR_kwDOAMm_X85MxepP 7668 Pull Request Labeler - Use a released version Illviljan 14371165 closed 0     1 2023-03-23T20:18:49Z 2023-03-23T20:29:04Z 2023-03-23T20:29:04Z MEMBER   0 pydata/xarray/pulls/7668
  • [ ] Closes #xxxx
  • [ ] Tests added
  • [ ] User visible changes (including notable bug fixes) are documented in whats-new.rst
  • [ ] New functions/methods are listed in api.rst
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7668/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1554036799 PR_kwDOAMm_X85IYHUz 7472 Avoid in-memory broadcasting when converting to_dask_dataframe Illviljan 14371165 closed 0     1 2023-01-24T00:15:01Z 2023-01-26T17:00:24Z 2023-01-26T17:00:23Z MEMBER   0 pydata/xarray/pulls/7472

Turns out that there's a call to .set_dims that forces a broadcast on the numpy coordinates.

  • [x] Closes #6811
  • [x] Tests added, see #7474.
  • [x] User visible changes (including notable bug fixes) are documented in whats-new.rst

Debugging script:

```python import dask.array as da import xarray as xr import numpy as np chunks = 5000 # I have to restart the pc if running with this: # dim1_sz = 100_000 # dim2_sz = 100_000 # Does not crash when using the following constants, >5 gig RAM increase though: dim1_sz = 40_000 dim2_sz = 40_000 x = da.random.random((dim1_sz, dim2_sz), chunks=chunks) ds = xr.Dataset( { "x": xr.DataArray( data=x, dims=["dim1", "dim2"], coords={"dim1": np.arange(0, dim1_sz), "dim2": np.arange(0, dim2_sz)}, ) } ) # with dask.config.set(**{"array.slicing.split_large_chunks": True}): df = ds.to_dask_dataframe() print(df) ```
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7472/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1555497796 PR_kwDOAMm_X85Ic_wm 7474 Add benchmarks for to_dataframe and to_dask_dataframe Illviljan 14371165 closed 0     1 2023-01-24T18:48:26Z 2023-01-24T21:00:39Z 2023-01-24T20:13:30Z MEMBER   0 pydata/xarray/pulls/7474

Related to #7472.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7474/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1523232313 PR_kwDOAMm_X85G2q5I 7426 Add lazy backend ASV test Illviljan 14371165 closed 0     1 2023-01-06T22:01:26Z 2023-01-12T16:00:05Z 2023-01-11T18:56:25Z MEMBER   0 pydata/xarray/pulls/7426

This tests xr.open_dataset without any slow file reading that can quickly become the majority of the performance time.

Related to #7374.

Timings for the new ASV-tests: ```

[ 50.85%] ··· dataset_io.IOReadCustomEngine.time_open_dataset ok [ 50.85%] ··· ======== ============ chunks
-------- ------------ None 265±4ms
{} 1.17±0.02s ======== ============ [ 54.69%] ··· dataset_io.IOReadSingleFile.time_read_dataset ok [ 54.69%] ··· ========= ============= ============= -- chunks
--------- --------------------------- engine None {}
========= ============= ============= scipy 4.81±0.1ms 6.65±0.01ms netcdf4 8.41±0.08ms 10.9±0.2ms ========= ============= ============= ``` From the IOReadCustomEngine test we can see that chunking datasets with many variables (2000+) is considerably slower.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7426/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1485474624 PR_kwDOAMm_X85E1fDn 7370 absolufy-imports - Only in xarray folder Illviljan 14371165 closed 0     1 2022-12-08T21:57:58Z 2022-12-10T11:42:32Z 2022-12-09T16:55:12Z MEMBER   0 pydata/xarray/pulls/7370

This reverts some of commit 6e77f5e8942206b3e0ab08c3621ade1499d8235b and #7204.

Apparently using it on all folders is not a good idea, follow pandas example.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7370/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1445870847 PR_kwDOAMm_X85CuWCd 7281 Use a default value for constant dimensions Illviljan 14371165 closed 0     1 2022-11-11T18:41:16Z 2022-11-20T09:59:38Z 2022-11-20T09:59:38Z MEMBER   0 pydata/xarray/pulls/7281
  • default markersize values of widths are 18 to 72.
  • plt.scatter default markersize is 36.
  • plt.plot default linewidth is 6.

With main we get 18 for constant arrays, but 36 if markersize was undefined. This seems a bit inconsistent to me. This PR adds a default value instead for constant arrays

Follow up to #7272.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7281/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1440711212 PR_kwDOAMm_X85Cc31j 7272 Handle division by zero in _Normalize._calc_widths Illviljan 14371165 closed 0     1 2022-11-08T18:35:55Z 2022-11-11T06:27:50Z 2022-11-11T06:27:50Z MEMBER   0 pydata/xarray/pulls/7272

Found an issue when constant values was used. Now if constant values are found it'll default to the minimum width value instead.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7272/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1422864082 PR_kwDOAMm_X85BhW94 7218 Rename FacetGrid.axes to FacetGrid.axs in tests Illviljan 14371165 closed 0     1 2022-10-25T17:59:39Z 2022-10-27T17:45:20Z 2022-10-27T17:45:19Z MEMBER   0 pydata/xarray/pulls/7218

Follow up to #7194. This fixes all the warnings related to the change.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7218/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1410526253 PR_kwDOAMm_X85A4Bki 7169 Rework docs about scatter plots Illviljan 14371165 closed 0     1 2022-10-16T15:37:25Z 2022-10-17T13:40:01Z 2022-10-17T13:40:01Z MEMBER   0 pydata/xarray/pulls/7169

Show off some more possibilities with the scatter plot.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/7169/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1340745375 PR_kwDOAMm_X849RXXN 6923 Add Self in xarray.core.types Illviljan 14371165 closed 0     1 2022-08-16T18:48:15Z 2022-08-22T12:24:05Z 2022-08-22T12:24:05Z MEMBER   0 pydata/xarray/pulls/6923

Adds typing_extensions.Self wrapped in some safety checks.

Wont really become useful until https://github.com/python/mypy/issues/11871 is fixed. But it can be used with pyright at least.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6923/reactions",
    "total_count": 2,
    "+1": 2,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1052952145 PR_kwDOAMm_X84uf1L8 5988 Check for py version instead of try/except when importing entry_points Illviljan 14371165 closed 0     1 2021-11-14T14:23:18Z 2022-08-12T09:08:25Z 2021-11-14T20:16:57Z MEMBER   0 pydata/xarray/pulls/5988

This removes the need for the # type: ignore to make mypy happy. It is also clearer when this compatibillity code can be removed.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5988/reactions",
    "total_count": 2,
    "+1": 2,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1099631638 PR_kwDOAMm_X84w0pGe 6159 Import Literal from typing instead of typing_extensions Illviljan 14371165 closed 0     1 2022-01-11T21:26:59Z 2022-08-12T09:06:58Z 2022-01-11T21:59:16Z MEMBER   0 pydata/xarray/pulls/6159

Small edit to #6121.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6159/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1171424128 PR_kwDOAMm_X840jZCq 6371 Remove test_rasterio_vrt_network Illviljan 14371165 closed 0     1 2022-03-16T18:49:29Z 2022-08-12T09:06:02Z 2022-03-17T06:25:22Z MEMBER   0 pydata/xarray/pulls/6371

This test has been failing with a 404 error for a while. Remove the test because a lot of the functionality is implemented in rioxarray.

  • [x] Closes #6363
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6371/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1167394407 PR_kwDOAMm_X840WQW1 6351 Run pyupgrade on core/groupby Illviljan 14371165 closed 0     1 2022-03-12T20:46:15Z 2022-08-12T09:05:37Z 2022-03-13T04:21:54Z MEMBER   0 pydata/xarray/pulls/6351

Minor touch up looking through #5950.

  • [x] xref #6244
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6351/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1133868003 PR_kwDOAMm_X84yl7lK 6270 Update pyupgrade to py38-plus Illviljan 14371165 closed 0     1 2022-02-12T10:58:00Z 2022-08-12T09:05:31Z 2022-02-12T13:50:31Z MEMBER   0 pydata/xarray/pulls/6270

xref: #6244

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6270/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1034382021 PR_kwDOAMm_X84tlqIi 5893 Only run asv benchmark when labeled Illviljan 14371165 closed 0     1 2021-10-24T10:44:17Z 2022-08-12T09:02:27Z 2021-10-24T11:35:42Z MEMBER   0 pydata/xarray/pulls/5893

Small fix to #5796. The benchmark was only intended to run when the PR has the label run-benchmark. I split the if condition in multiple lines for better readability thinking it didn't change the function but it did.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5893/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1332546810 PR_kwDOAMm_X8482ZvM 6897 Type xr.tutorial Illviljan 14371165 closed 0     1 2022-08-09T00:20:19Z 2022-08-12T08:59:30Z 2022-08-10T07:40:18Z MEMBER   0 pydata/xarray/pulls/6897

Add some typing to the open_dataset functions. Was doing some debugging and I only got Any when trying to simplify the problem with tutorial data.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6897/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1046458609 I_kwDOAMm_X84-X7Dx 5945 Start using `|` instead of `Union` or `Optional` when typing Illviljan 14371165 closed 0     1 2021-11-06T08:12:57Z 2022-06-04T04:26:03Z 2022-06-04T04:26:03Z MEMBER      

Is your feature request related to a problem? Please describe. To make it easier reading the typing it is now possible to use | instead of Union or Optional.

Here's an example how it looks like in pandas: https://github.com/pandas-dev/pandas/blob/master/pandas/plotting/_core.py#L116-L134

Describe the solution you'd like Replace for example: * Union[str, int] with str | int * Optional[str] with None | str

This would likely require adding from __future__ import annotations at the top of the file.

References https://www.python.org/dev/peps/pep-0604/

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5945/reactions",
    "total_count": 2,
    "+1": 2,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed xarray 13221727 issue
1236115720 PR_kwDOAMm_X84306YV 6609 Add setuptools as dependency in ASV benchmark CI Illviljan 14371165 closed 0     1 2022-05-14T20:33:09Z 2022-05-15T17:14:24Z 2022-05-14T23:06:44Z MEMBER   0 pydata/xarray/pulls/6609

Adding setuptools_scm[toml] and setuptools_scm_git_archive appears to fix the issue. Not sure why this is needed though.

  • [x] Closes #6606
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6609/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
1174585854 I_kwDOAMm_X85GAsH- 6384 xr.concat adds an extra array around elements Illviljan 14371165 closed 0     1 2022-03-20T15:25:49Z 2022-03-21T04:49:23Z 2022-03-21T04:49:23Z MEMBER      

What happened?

When concatenating dataarrays with pd.Interval along a dim the pd.Interval is wrapped with a numpy array and appended instead of without like it it was before #5692.

Minimal Complete Verifiable Example

```Python import numpy as np import xarray as xr

shape = (2, 3, 4) darray = xr.DataArray(np.linspace(0, 1, num=np.prod(shape)).reshape(shape)) bins = [-1, 0, 1, 2] a = darray.groupby_bins("dim_0", bins).mean(...) a_nan = np.nan * a.isel(**{"dim_0_bins": -1}) out = xr.concat([a, a_nan], dim="dim_0_bins") print(out["dim_0_bins"]) ```

Relevant log output

Current result: Python <xarray.DataArray 'dim_0_bins' (dim_0_bins: 4)> array([Interval(-1, 0, closed='right'), Interval(0, 1, closed='right'), Interval(1, 2, closed='right'), array(Interval(1, 2, closed='right'), dtype=object)], dtype=object) Coordinates: * dim_0_bins (dim_0_bins) object (-1, 0] (0, 1] (1, 2] (1, 2]

Should be: ```python <xarray.DataArray 'dim_0_bins' (dim_0_bins: 4)> array([Interval(-1, 0, closed='right'), Interval(0, 1, closed='right'), Interval(1, 2, closed='right'), Interval(1, 2, closed='right')], dtype=object) Coordinates: * dim_0_bins (dim_0_bins) object (-1, 0] (0, 1] (1, 2] (1, 2]

```

Anything else we need to know?

No response

Environment

xr.show_versions() INSTALLED VERSIONS ------------------ commit: None python: 3.9.6 | packaged by conda-forge | (default, Jul 11 2021, 03:37:25) [MSC v.1916 64 bit (AMD64)] python-bits: 64 OS: Windows OS-release: 10 machine: AMD64 processor: Intel64 Family 6 Model 58 Stepping 9, GenuineIntel byteorder: little LC_ALL: None LANG: en LOCALE: ('Swedish_Sweden', '1252') libhdf5: 1.10.6 libnetcdf: 4.7.4 xarray: 0.16.3.dev99+gc19467fb pandas: 1.3.1 numpy: 1.21.5 scipy: 1.7.1 netCDF4: 1.5.6 pydap: installed h5netcdf: 0.11.0 h5py: 2.10.0 Nio: None zarr: 2.8.3 cftime: 1.5.0 nc_time_axis: 1.3.1 PseudoNetCDF: installed rasterio: 1.2.6 cfgrib: None iris: 3.0.4 bottleneck: 1.3.2 dask: 2021.10.0 distributed: 2021.10.0 matplotlib: 3.4.3 cartopy: 0.19.0.post1 seaborn: 0.11.1 numbagg: 0.2.1 fsspec: 2021.11.1 cupy: None pint: 0.17 sparse: 0.12.0 setuptools: 49.6.0.post20210108 pip: 21.2.4 conda: None pytest: 6.2.4 IPython: 7.31.0 sphinx: 4.3.2
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/6384/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed xarray 13221727 issue
931796211 MDU6SXNzdWU5MzE3OTYyMTE= 5546 Limit number of displayed dimensions in repr Illviljan 14371165 closed 0     1 2021-06-28T17:25:18Z 2022-01-03T17:38:48Z 2022-01-03T17:38:48Z MEMBER      

What happened: Dimension doesn't seem to be limited when there are too many of them. See example below. This slows down the repr significantly and is quite unreadable to me.

What you expected to happen: To be limited so that it aligns with whatever the maximum line length is for variables. It's also fine if it continues on a couple of rows below in similar fashion to variables.

Minimal Complete Verifiable Example: This is probably a bit of an edge case. My real datasets usually have around 12 "dimensions" and coords, +2000 variables, 50 attrs. python a = np.arange(0, 2000) data_vars = dict() for i in a: data_vars[f"long_variable_name_{i}"] = xr.DataArray( name=f"long_variable_name_{i}", data=np.array([3, 4]), dims=[f"long_coord_name_{i}_x"], coords={f"long_coord_name_{i}_x": np.array([0, 1])}, ) ds0 = xr.Dataset(data_vars) ds0.attrs = {f"attr_{k}": 2 for k in a}

python <xarray.Dataset> Dimensions: (long_coord_name_0_x: 2, long_coord_name_1000_x: 2, long_coord_name_1001_x: 2, long_coord_name_1002_x: 2, long_coord_name_1003_x: 2, long_coord_name_1004_x: 2, long_coord_name_1005_x: 2, long_coord_name_1006_x: 2, long_coord_name_1007_x: 2, long_coord_name_1008_x: 2, long_coord_name_1009_x: 2, long_coord_name_100_x: 2, long_coord_name_1010_x: 2, long_coord_name_1011_x: 2, long_coord_name_1012_x: 2, long_coord_name_1013_x: 2, long_coord_name_1014_x: 2, long_coord_name_1015_x: 2, long_coord_name_1016_x: 2, long_coord_name_1017_x: 2, long_coord_name_1018_x: 2, long_coord_name_1019_x: 2, long_coord_name_101_x: 2, long_coord_name_1020_x: 2, long_coord_name_1021_x: 2, long_coord_name_1022_x: 2, long_coord_name_1023_x: 2, long_coord_name_1024_x: 2, long_coord_name_1025_x: 2, long_coord_name_1026_x: 2, long_coord_name_1027_x: 2, long_coord_name_1028_x: 2, long_coord_name_1029_x: 2, long_coord_name_102_x: 2, long_coord_name_1030_x: 2, long_coord_name_1031_x: 2, long_coord_name_1032_x: 2, long_coord_name_1033_x: 2, long_coord_name_1034_x: 2, long_coord_name_1035_x: 2, long_coord_name_1036_x: 2, long_coord_name_1037_x: 2, long_coord_name_1038_x: 2, long_coord_name_1039_x: 2, long_coord_name_103_x: 2, long_coord_name_1040_x: 2, long_coord_name_1041_x: 2, long_coord_name_1042_x: 2, long_coord_name_1043_x: 2, long_coord_name_1044_x: 2, long_coord_name_1045_x: 2, long_coord_name_1046_x: 2, long_coord_name_1047_x: 2, long_coord_name_1048_x: 2, long_coord_name_1049_x: 2, long_coord_name_104_x: 2, long_coord_name_1050_x: 2, long_coord_name_1051_x: 2, long_coord_name_1052_x: 2, long_coord_name_1053_x: 2, long_coord_name_1054_x: 2, long_coord_name_1055_x: 2, long_coord_name_1056_x: 2, long_coord_name_1057_x: 2, long_coord_name_1058_x: 2, long_coord_name_1059_x: 2, long_coord_name_105_x: 2, long_coord_name_1060_x: 2, long_coord_name_1061_x: 2, long_coord_name_1062_x: 2, long_coord_name_1063_x: 2, long_coord_name_1064_x: 2, long_coord_name_1065_x: 2, long_coord_name_1066_x: 2, long_coord_name_1067_x: 2, long_coord_name_1068_x: 2, long_coord_name_1069_x: 2, long_coord_name_106_x: 2, long_coord_name_1070_x: 2, long_coord_name_1071_x: 2, long_coord_name_1072_x: 2, long_coord_name_1073_x: 2, long_coord_name_1074_x: 2, long_coord_name_1075_x: 2, long_coord_name_1076_x: 2, long_coord_name_1077_x: 2, long_coord_name_1078_x: 2, long_coord_name_1079_x: 2, long_coord_name_107_x: 2, long_coord_name_1080_x: 2, long_coord_name_1081_x: 2, long_coord_name_1082_x: 2, long_coord_name_1083_x: 2, long_coord_name_1084_x: 2, long_coord_name_1085_x: 2, long_coord_name_1086_x: 2, long_coord_name_1087_x: 2, long_coord_name_1088_x: 2, long_coord_name_1089_x: 2, long_coord_name_108_x: 2, long_coord_name_1090_x: 2, long_coord_name_1091_x: 2, long_coord_name_1092_x: 2, long_coord_name_1093_x: 2, long_coord_name_1094_x: 2, long_coord_name_1095_x: 2, long_coord_name_1096_x: 2, long_coord_name_1097_x: 2, long_coord_name_1098_x: 2, long_coord_name_1099_x: 2, long_coord_name_109_x: 2, long_coord_name_10_x: 2, long_coord_name_1100_x: 2, long_coord_name_1101_x: 2, long_coord_name_1102_x: 2, long_coord_name_1103_x: 2, long_coord_name_1104_x: 2, long_coord_name_1105_x: 2, long_coord_name_1106_x: 2, long_coord_name_1107_x: 2, long_coord_name_1108_x: 2, long_coord_name_1109_x: 2, long_coord_name_110_x: 2, long_coord_name_1110_x: 2, long_coord_name_1111_x: 2, long_coord_name_1112_x: 2, long_coord_name_1113_x: 2, long_coord_name_1114_x: 2, long_coord_name_1115_x: 2, long_coord_name_1116_x: 2, long_coord_name_1117_x: 2, long_coord_name_1118_x: 2, long_coord_name_1119_x: 2, long_coord_name_111_x: 2, long_coord_name_1120_x: 2, long_coord_name_1121_x: 2, long_coord_name_1122_x: 2, long_coord_name_1123_x: 2, long_coord_name_1124_x: 2, long_coord_name_1125_x: 2, long_coord_name_1126_x: 2, long_coord_name_1127_x: 2, long_coord_name_1128_x: 2, long_coord_name_1129_x: 2, long_coord_name_112_x: 2, long_coord_name_1130_x: 2, long_coord_name_1131_x: 2, long_coord_name_1132_x: 2, long_coord_name_1133_x: 2, long_coord_name_1134_x: 2, long_coord_name_1135_x: 2, long_coord_name_1136_x: 2, long_coord_name_1137_x: 2, long_coord_name_1138_x: 2, long_coord_name_1139_x: 2, long_coord_name_113_x: 2, long_coord_name_1140_x: 2, long_coord_name_1141_x: 2, long_coord_name_1142_x: 2, long_coord_name_1143_x: 2, long_coord_name_1144_x: 2, long_coord_name_1145_x: 2, long_coord_name_1146_x: 2, long_coord_name_1147_x: 2, long_coord_name_1148_x: 2, long_coord_name_1149_x: 2, long_coord_name_114_x: 2, long_coord_name_1150_x: 2, long_coord_name_1151_x: 2, long_coord_name_1152_x: 2, long_coord_name_1153_x: 2, long_coord_name_1154_x: 2, long_coord_name_1155_x: 2, long_coord_name_1156_x: 2, long_coord_name_1157_x: 2, long_coord_name_1158_x: 2, long_coord_name_1159_x: 2, long_coord_name_115_x: 2, long_coord_name_1160_x: 2, long_coord_name_1161_x: 2, long_coord_name_1162_x: 2, long_coord_name_1163_x: 2, long_coord_name_1164_x: 2, long_coord_name_1165_x: 2, long_coord_name_1166_x: 2, long_coord_name_1167_x: 2, long_coord_name_1168_x: 2, long_coord_name_1169_x: 2, long_coord_name_116_x: 2, long_coord_name_1170_x: 2, long_coord_name_1171_x: 2, long_coord_name_1172_x: 2, long_coord_name_1173_x: 2, long_coord_name_1174_x: 2, long_coord_name_1175_x: 2, long_coord_name_1176_x: 2, long_coord_name_1177_x: 2, long_coord_name_1178_x: 2, long_coord_name_1179_x: 2, long_coord_name_117_x: 2, long_coord_name_1180_x: 2, long_coord_name_1181_x: 2, long_coord_name_1182_x: 2, long_coord_name_1183_x: 2, long_coord_name_1184_x: 2, long_coord_name_1185_x: 2, long_coord_name_1186_x: 2, long_coord_name_1187_x: 2, long_coord_name_1188_x: 2, long_coord_name_1189_x: 2, long_coord_name_118_x: 2, long_coord_name_1190_x: 2, long_coord_name_1191_x: 2, long_coord_name_1192_x: 2, long_coord_name_1193_x: 2, long_coord_name_1194_x: 2, long_coord_name_1195_x: 2, long_coord_name_1196_x: 2, long_coord_name_1197_x: 2, long_coord_name_1198_x: 2, long_coord_name_1199_x: 2, long_coord_name_119_x: 2, long_coord_name_11_x: 2, long_coord_name_1200_x: 2, long_coord_name_1201_x: 2, long_coord_name_1202_x: 2, long_coord_name_1203_x: 2, long_coord_name_1204_x: 2, long_coord_name_1205_x: 2, long_coord_name_1206_x: 2, long_coord_name_1207_x: 2, long_coord_name_1208_x: 2, long_coord_name_1209_x: 2, long_coord_name_120_x: 2, long_coord_name_1210_x: 2, long_coord_name_1211_x: 2, long_coord_name_1212_x: 2, long_coord_name_1213_x: 2, long_coord_name_1214_x: 2, long_coord_name_1215_x: 2, long_coord_name_1216_x: 2, long_coord_name_1217_x: 2, long_coord_name_1218_x: 2, long_coord_name_1219_x: 2, long_coord_name_121_x: 2, long_coord_name_1220_x: 2, long_coord_name_1221_x: 2, long_coord_name_1222_x: 2, long_coord_name_1223_x: 2, long_coord_name_1224_x: 2, long_coord_name_1225_x: 2, long_coord_name_1226_x: 2, long_coord_name_1227_x: 2, long_coord_name_1228_x: 2, long_coord_name_1229_x: 2, long_coord_name_122_x: 2, long_coord_name_1230_x: 2, long_coord_name_1231_x: 2, long_coord_name_1232_x: 2, long_coord_name_1233_x: 2, long_coord_name_1234_x: 2, long_coord_name_1235_x: 2, long_coord_name_1236_x: 2, long_coord_name_1237_x: 2, long_coord_name_1238_x: 2, long_coord_name_1239_x: 2, long_coord_name_123_x: 2, long_coord_name_1240_x: 2, long_coord_name_1241_x: 2, long_coord_name_1242_x: 2, long_coord_name_1243_x: 2, long_coord_name_1244_x: 2, long_coord_name_1245_x: 2, long_coord_name_1246_x: 2, long_coord_name_1247_x: 2, long_coord_name_1248_x: 2, long_coord_name_1249_x: 2, long_coord_name_124_x: 2, long_coord_name_1250_x: 2, long_coord_name_1251_x: 2, long_coord_name_1252_x: 2, long_coord_name_1253_x: 2, long_coord_name_1254_x: 2, long_coord_name_1255_x: 2, long_coord_name_1256_x: 2, long_coord_name_1257_x: 2, long_coord_name_1258_x: 2, long_coord_name_1259_x: 2, long_coord_name_125_x: 2, long_coord_name_1260_x: 2, long_coord_name_1261_x: 2, long_coord_name_1262_x: 2, long_coord_name_1263_x: 2, long_coord_name_1264_x: 2, long_coord_name_1265_x: 2, long_coord_name_1266_x: 2, long_coord_name_1267_x: 2, long_coord_name_1268_x: 2, long_coord_name_1269_x: 2, long_coord_name_126_x: 2, long_coord_name_1270_x: 2, long_coord_name_1271_x: 2, long_coord_name_1272_x: 2, long_coord_name_1273_x: 2, long_coord_name_1274_x: 2, long_coord_name_1275_x: 2, long_coord_name_1276_x: 2, long_coord_name_1277_x: 2, long_coord_name_1278_x: 2, long_coord_name_1279_x: 2, long_coord_name_127_x: 2, long_coord_name_1280_x: 2, long_coord_name_1281_x: 2, long_coord_name_1282_x: 2, long_coord_name_1283_x: 2, long_coord_name_1284_x: 2, long_coord_name_1285_x: 2, long_coord_name_1286_x: 2, long_coord_name_1287_x: 2, long_coord_name_1288_x: 2, long_coord_name_1289_x: 2, long_coord_name_128_x: 2, long_coord_name_1290_x: 2, long_coord_name_1291_x: 2, long_coord_name_1292_x: 2, long_coord_name_1293_x: 2, long_coord_name_1294_x: 2, long_coord_name_1295_x: 2, long_coord_name_1296_x: 2, long_coord_name_1297_x: 2, long_coord_name_1298_x: 2, long_coord_name_1299_x: 2, long_coord_name_129_x: 2, long_coord_name_12_x: 2, long_coord_name_1300_x: 2, long_coord_name_1301_x: 2, long_coord_name_1302_x: 2, long_coord_name_1303_x: 2, long_coord_name_1304_x: 2, long_coord_name_1305_x: 2, long_coord_name_1306_x: 2, long_coord_name_1307_x: 2, long_coord_name_1308_x: 2, long_coord_name_1309_x: 2, long_coord_name_130_x: 2, long_coord_name_1310_x: 2, long_coord_name_1311_x: 2, long_coord_name_1312_x: 2, long_coord_name_1313_x: 2, long_coord_name_1314_x: 2, long_coord_name_1315_x: 2, long_coord_name_1316_x: 2, long_coord_name_1317_x: 2, long_coord_name_1318_x: 2, long_coord_name_1319_x: 2, long_coord_name_131_x: 2, long_coord_name_1320_x: 2, long_coord_name_1321_x: 2, long_coord_name_1322_x: 2, long_coord_name_1323_x: 2, long_coord_name_1324_x: 2, long_coord_name_1325_x: 2, long_coord_name_1326_x: 2, long_coord_name_1327_x: 2, long_coord_name_1328_x: 2, long_coord_name_1329_x: 2, long_coord_name_132_x: 2, long_coord_name_1330_x: 2, long_coord_name_1331_x: 2, long_coord_name_1332_x: 2, long_coord_name_1333_x: 2, long_coord_name_1334_x: 2, long_coord_name_1335_x: 2, long_coord_name_1336_x: 2, long_coord_name_1337_x: 2, long_coord_name_1338_x: 2, long_coord_name_1339_x: 2, long_coord_name_133_x: 2, long_coord_name_1340_x: 2, long_coord_name_1341_x: 2, long_coord_name_1342_x: 2, long_coord_name_1343_x: 2, long_coord_name_1344_x: 2, long_coord_name_1345_x: 2, long_coord_name_1346_x: 2, long_coord_name_1347_x: 2, long_coord_name_1348_x: 2, long_coord_name_1349_x: 2, long_coord_name_134_x: 2, long_coord_name_1350_x: 2, long_coord_name_1351_x: 2, long_coord_name_1352_x: 2, long_coord_name_1353_x: 2, long_coord_name_1354_x: 2, long_coord_name_1355_x: 2, long_coord_name_1356_x: 2, long_coord_name_1357_x: 2, long_coord_name_1358_x: 2, long_coord_name_1359_x: 2, long_coord_name_135_x: 2, long_coord_name_1360_x: 2, long_coord_name_1361_x: 2, long_coord_name_1362_x: 2, long_coord_name_1363_x: 2, long_coord_name_1364_x: 2, long_coord_name_1365_x: 2, long_coord_name_1366_x: 2, long_coord_name_1367_x: 2, long_coord_name_1368_x: 2, long_coord_name_1369_x: 2, long_coord_name_136_x: 2, long_coord_name_1370_x: 2, long_coord_name_1371_x: 2, long_coord_name_1372_x: 2, long_coord_name_1373_x: 2, long_coord_name_1374_x: 2, long_coord_name_1375_x: 2, long_coord_name_1376_x: 2, long_coord_name_1377_x: 2, long_coord_name_1378_x: 2, long_coord_name_1379_x: 2, long_coord_name_137_x: 2, long_coord_name_1380_x: 2, long_coord_name_1381_x: 2, long_coord_name_1382_x: 2, long_coord_name_1383_x: 2, long_coord_name_1384_x: 2, long_coord_name_1385_x: 2, long_coord_name_1386_x: 2, long_coord_name_1387_x: 2, long_coord_name_1388_x: 2, long_coord_name_1389_x: 2, long_coord_name_138_x: 2, long_coord_name_1390_x: 2, long_coord_name_1391_x: 2, long_coord_name_1392_x: 2, long_coord_name_1393_x: 2, long_coord_name_1394_x: 2, long_coord_name_1395_x: 2, long_coord_name_1396_x: 2, long_coord_name_1397_x: 2, long_coord_name_1398_x: 2, long_coord_name_1399_x: 2, long_coord_name_139_x: 2, long_coord_name_13_x: 2, long_coord_name_1400_x: 2, long_coord_name_1401_x: 2, long_coord_name_1402_x: 2, long_coord_name_1403_x: 2, long_coord_name_1404_x: 2, long_coord_name_1405_x: 2, long_coord_name_1406_x: 2, long_coord_name_1407_x: 2, long_coord_name_1408_x: 2, long_coord_name_1409_x: 2, long_coord_name_140_x: 2, long_coord_name_1410_x: 2, long_coord_name_1411_x: 2, long_coord_name_1412_x: 2, long_coord_name_1413_x: 2, long_coord_name_1414_x: 2, long_coord_name_1415_x: 2, long_coord_name_1416_x: 2, long_coord_name_1417_x: 2, long_coord_name_1418_x: 2, long_coord_name_1419_x: 2, long_coord_name_141_x: 2, long_coord_name_1420_x: 2, long_coord_name_1421_x: 2, long_coord_name_1422_x: 2, long_coord_name_1423_x: 2, long_coord_name_1424_x: 2, long_coord_name_1425_x: 2, long_coord_name_1426_x: 2, long_coord_name_1427_x: 2, long_coord_name_1428_x: 2, long_coord_name_1429_x: 2, long_coord_name_142_x: 2, long_coord_name_1430_x: 2, long_coord_name_1431_x: 2, long_coord_name_1432_x: 2, long_coord_name_1433_x: 2, long_coord_name_1434_x: 2, long_coord_name_1435_x: 2, long_coord_name_1436_x: 2, long_coord_name_1437_x: 2, long_coord_name_1438_x: 2, long_coord_name_1439_x: 2, long_coord_name_143_x: 2, long_coord_name_1440_x: 2, long_coord_name_1441_x: 2, long_coord_name_1442_x: 2, long_coord_name_1443_x: 2, long_coord_name_1444_x: 2, long_coord_name_1445_x: 2, long_coord_name_1446_x: 2, long_coord_name_1447_x: 2, long_coord_name_1448_x: 2, long_coord_name_1449_x: 2, long_coord_name_144_x: 2, long_coord_name_1450_x: 2, long_coord_name_1451_x: 2, long_coord_name_1452_x: 2, long_coord_name_1453_x: 2, long_coord_name_1454_x: 2, long_coord_name_1455_x: 2, long_coord_name_1456_x: 2, long_coord_name_1457_x: 2, long_coord_name_1458_x: 2, long_coord_name_1459_x: 2, long_coord_name_145_x: 2, long_coord_name_1460_x: 2, long_coord_name_1461_x: 2, long_coord_name_1462_x: 2, long_coord_name_1463_x: 2, long_coord_name_1464_x: 2, long_coord_name_1465_x: 2, long_coord_name_1466_x: 2, long_coord_name_1467_x: 2, long_coord_name_1468_x: 2, long_coord_name_1469_x: 2, long_coord_name_146_x: 2, long_coord_name_1470_x: 2, long_coord_name_1471_x: 2, long_coord_name_1472_x: 2, long_coord_name_1473_x: 2, long_coord_name_1474_x: 2, long_coord_name_1475_x: 2, long_coord_name_1476_x: 2, long_coord_name_1477_x: 2, long_coord_name_1478_x: 2, long_coord_name_1479_x: 2, long_coord_name_147_x: 2, long_coord_name_1480_x: 2, long_coord_name_1481_x: 2, long_coord_name_1482_x: 2, long_coord_name_1483_x: 2, long_coord_name_1484_x: 2, long_coord_name_1485_x: 2, long_coord_name_1486_x: 2, long_coord_name_1487_x: 2, long_coord_name_1488_x: 2, long_coord_name_1489_x: 2, long_coord_name_148_x: 2, long_coord_name_1490_x: 2, long_coord_name_1491_x: 2, long_coord_name_1492_x: 2, long_coord_name_1493_x: 2, long_coord_name_1494_x: 2, long_coord_name_1495_x: 2, long_coord_name_1496_x: 2, long_coord_name_1497_x: 2, long_coord_name_1498_x: 2, long_coord_name_1499_x: 2, long_coord_name_149_x: 2, long_coord_name_14_x: 2, long_coord_name_1500_x: 2, long_coord_name_1501_x: 2, long_coord_name_1502_x: 2, long_coord_name_1503_x: 2, long_coord_name_1504_x: 2, long_coord_name_1505_x: 2, long_coord_name_1506_x: 2, long_coord_name_1507_x: 2, long_coord_name_1508_x: 2, long_coord_name_1509_x: 2, long_coord_name_150_x: 2, long_coord_name_1510_x: 2, long_coord_name_1511_x: 2, long_coord_name_1512_x: 2, long_coord_name_1513_x: 2, long_coord_name_1514_x: 2, long_coord_name_1515_x: 2, long_coord_name_1516_x: 2, long_coord_name_1517_x: 2, long_coord_name_1518_x: 2, long_coord_name_1519_x: 2, long_coord_name_151_x: 2, long_coord_name_1520_x: 2, long_coord_name_1521_x: 2, long_coord_name_1522_x: 2, long_coord_name_1523_x: 2, long_coord_name_1524_x: 2, long_coord_name_1525_x: 2, long_coord_name_1526_x: 2, long_coord_name_1527_x: 2, long_coord_name_1528_x: 2, long_coord_name_1529_x: 2, long_coord_name_152_x: 2, long_coord_name_1530_x: 2, long_coord_name_1531_x: 2, long_coord_name_1532_x: 2, long_coord_name_1533_x: 2, long_coord_name_1534_x: 2, long_coord_name_1535_x: 2, long_coord_name_1536_x: 2, long_coord_name_1537_x: 2, long_coord_name_1538_x: 2, long_coord_name_1539_x: 2, long_coord_name_153_x: 2, long_coord_name_1540_x: 2, long_coord_name_1541_x: 2, long_coord_name_1542_x: 2, long_coord_name_1543_x: 2, long_coord_name_1544_x: 2, long_coord_name_1545_x: 2, long_coord_name_1546_x: 2, long_coord_name_1547_x: 2, long_coord_name_1548_x: 2, long_coord_name_1549_x: 2, long_coord_name_154_x: 2, long_coord_name_1550_x: 2, long_coord_name_1551_x: 2, long_coord_name_1552_x: 2, long_coord_name_1553_x: 2, long_coord_name_1554_x: 2, long_coord_name_1555_x: 2, long_coord_name_1556_x: 2, long_coord_name_1557_x: 2, long_coord_name_1558_x: 2, long_coord_name_1559_x: 2, long_coord_name_155_x: 2, long_coord_name_1560_x: 2, long_coord_name_1561_x: 2, long_coord_name_1562_x: 2, long_coord_name_1563_x: 2, long_coord_name_1564_x: 2, long_coord_name_1565_x: 2, long_coord_name_1566_x: 2, long_coord_name_1567_x: 2, long_coord_name_1568_x: 2, long_coord_name_1569_x: 2, long_coord_name_156_x: 2, long_coord_name_1570_x: 2, long_coord_name_1571_x: 2, long_coord_name_1572_x: 2, long_coord_name_1573_x: 2, long_coord_name_1574_x: 2, long_coord_name_1575_x: 2, long_coord_name_1576_x: 2, long_coord_name_1577_x: 2, long_coord_name_1578_x: 2, long_coord_name_1579_x: 2, long_coord_name_157_x: 2, long_coord_name_1580_x: 2, long_coord_name_1581_x: 2, long_coord_name_1582_x: 2, long_coord_name_1583_x: 2, long_coord_name_1584_x: 2, long_coord_name_1585_x: 2, long_coord_name_1586_x: 2, long_coord_name_1587_x: 2, long_coord_name_1588_x: 2, long_coord_name_1589_x: 2, long_coord_name_158_x: 2, long_coord_name_1590_x: 2, long_coord_name_1591_x: 2, long_coord_name_1592_x: 2, long_coord_name_1593_x: 2, long_coord_name_1594_x: 2, long_coord_name_1595_x: 2, long_coord_name_1596_x: 2, long_coord_name_1597_x: 2, long_coord_name_1598_x: 2, long_coord_name_1599_x: 2, long_coord_name_159_x: 2, long_coord_name_15_x: 2, long_coord_name_1600_x: 2, long_coord_name_1601_x: 2, long_coord_name_1602_x: 2, long_coord_name_1603_x: 2, long_coord_name_1604_x: 2, long_coord_name_1605_x: 2, long_coord_name_1606_x: 2, long_coord_name_1607_x: 2, long_coord_name_1608_x: 2, long_coord_name_1609_x: 2, long_coord_name_160_x: 2, long_coord_name_1610_x: 2, long_coord_name_1611_x: 2, long_coord_name_1612_x: 2, long_coord_name_1613_x: 2, long_coord_name_1614_x: 2, long_coord_name_1615_x: 2, long_coord_name_1616_x: 2, long_coord_name_1617_x: 2, long_coord_name_1618_x: 2, long_coord_name_1619_x: 2, long_coord_name_161_x: 2, long_coord_name_1620_x: 2, long_coord_name_1621_x: 2, long_coord_name_1622_x: 2, long_coord_name_1623_x: 2, long_coord_name_1624_x: 2, long_coord_name_1625_x: 2, long_coord_name_1626_x: 2, long_coord_name_1627_x: 2, long_coord_name_1628_x: 2, long_coord_name_1629_x: 2, long_coord_name_162_x: 2, long_coord_name_1630_x: 2, long_coord_name_1631_x: 2, long_coord_name_1632_x: 2, long_coord_name_1633_x: 2, long_coord_name_1634_x: 2, long_coord_name_1635_x: 2, long_coord_name_1636_x: 2, long_coord_name_1637_x: 2, long_coord_name_1638_x: 2, long_coord_name_1639_x: 2, long_coord_name_163_x: 2, long_coord_name_1640_x: 2, long_coord_name_1641_x: 2, long_coord_name_1642_x: 2, long_coord_name_1643_x: 2, long_coord_name_1644_x: 2, long_coord_name_1645_x: 2, long_coord_name_1646_x: 2, long_coord_name_1647_x: 2, long_coord_name_1648_x: 2, long_coord_name_1649_x: 2, long_coord_name_164_x: 2, long_coord_name_1650_x: 2, long_coord_name_1651_x: 2, long_coord_name_1652_x: 2, long_coord_name_1653_x: 2, long_coord_name_1654_x: 2, long_coord_name_1655_x: 2, long_coord_name_1656_x: 2, long_coord_name_1657_x: 2, long_coord_name_1658_x: 2, long_coord_name_1659_x: 2, long_coord_name_165_x: 2, long_coord_name_1660_x: 2, long_coord_name_1661_x: 2, long_coord_name_1662_x: 2, long_coord_name_1663_x: 2, long_coord_name_1664_x: 2, long_coord_name_1665_x: 2, long_coord_name_1666_x: 2, long_coord_name_1667_x: 2, long_coord_name_1668_x: 2, long_coord_name_1669_x: 2, long_coord_name_166_x: 2, long_coord_name_1670_x: 2, long_coord_name_1671_x: 2, long_coord_name_1672_x: 2, long_coord_name_1673_x: 2, long_coord_name_1674_x: 2, long_coord_name_1675_x: 2, long_coord_name_1676_x: 2, long_coord_name_1677_x: 2, long_coord_name_1678_x: 2, long_coord_name_1679_x: 2, long_coord_name_167_x: 2, long_coord_name_1680_x: 2, long_coord_name_1681_x: 2, long_coord_name_1682_x: 2, long_coord_name_1683_x: 2, long_coord_name_1684_x: 2, long_coord_name_1685_x: 2, long_coord_name_1686_x: 2, long_coord_name_1687_x: 2, long_coord_name_1688_x: 2, long_coord_name_1689_x: 2, long_coord_name_168_x: 2, long_coord_name_1690_x: 2, long_coord_name_1691_x: 2, long_coord_name_1692_x: 2, long_coord_name_1693_x: 2, long_coord_name_1694_x: 2, long_coord_name_1695_x: 2, long_coord_name_1696_x: 2, long_coord_name_1697_x: 2, long_coord_name_1698_x: 2, long_coord_name_1699_x: 2, long_coord_name_169_x: 2, long_coord_name_16_x: 2, long_coord_name_1700_x: 2, long_coord_name_1701_x: 2, long_coord_name_1702_x: 2, long_coord_name_1703_x: 2, long_coord_name_1704_x: 2, long_coord_name_1705_x: 2, long_coord_name_1706_x: 2, long_coord_name_1707_x: 2, long_coord_name_1708_x: 2, long_coord_name_1709_x: 2, long_coord_name_170_x: 2, long_coord_name_1710_x: 2, long_coord_name_1711_x: 2, long_coord_name_1712_x: 2, long_coord_name_1713_x: 2, long_coord_name_1714_x: 2, long_coord_name_1715_x: 2, long_coord_name_1716_x: 2, long_coord_name_1717_x: 2, long_coord_name_1718_x: 2, long_coord_name_1719_x: 2, long_coord_name_171_x: 2, long_coord_name_1720_x: 2, long_coord_name_1721_x: 2, long_coord_name_1722_x: 2, long_coord_name_1723_x: 2, long_coord_name_1724_x: 2, long_coord_name_1725_x: 2, long_coord_name_1726_x: 2, long_coord_name_1727_x: 2, long_coord_name_1728_x: 2, long_coord_name_1729_x: 2, long_coord_name_172_x: 2, long_coord_name_1730_x: 2, long_coord_name_1731_x: 2, long_coord_name_1732_x: 2, long_coord_name_1733_x: 2, long_coord_name_1734_x: 2, long_coord_name_1735_x: 2, long_coord_name_1736_x: 2, long_coord_name_1737_x: 2, long_coord_name_1738_x: 2, long_coord_name_1739_x: 2, long_coord_name_173_x: 2, long_coord_name_1740_x: 2, long_coord_name_1741_x: 2, long_coord_name_1742_x: 2, long_coord_name_1743_x: 2, long_coord_name_1744_x: 2, long_coord_name_1745_x: 2, long_coord_name_1746_x: 2, long_coord_name_1747_x: 2, long_coord_name_1748_x: 2, long_coord_name_1749_x: 2, long_coord_name_174_x: 2, long_coord_name_1750_x: 2, long_coord_name_1751_x: 2, long_coord_name_1752_x: 2, long_coord_name_1753_x: 2, long_coord_name_1754_x: 2, long_coord_name_1755_x: 2, long_coord_name_1756_x: 2, long_coord_name_1757_x: 2, long_coord_name_1758_x: 2, long_coord_name_1759_x: 2, long_coord_name_175_x: 2, long_coord_name_1760_x: 2, long_coord_name_1761_x: 2, long_coord_name_1762_x: 2, long_coord_name_1763_x: 2, long_coord_name_1764_x: 2, long_coord_name_1765_x: 2, long_coord_name_1766_x: 2, long_coord_name_1767_x: 2, long_coord_name_1768_x: 2, long_coord_name_1769_x: 2, long_coord_name_176_x: 2, long_coord_name_1770_x: 2, long_coord_name_1771_x: 2, long_coord_name_1772_x: 2, long_coord_name_1773_x: 2, long_coord_name_1774_x: 2, long_coord_name_1775_x: 2, long_coord_name_1776_x: 2, long_coord_name_1777_x: 2, long_coord_name_1778_x: 2, long_coord_name_1779_x: 2, long_coord_name_177_x: 2, long_coord_name_1780_x: 2, long_coord_name_1781_x: 2, long_coord_name_1782_x: 2, long_coord_name_1783_x: 2, long_coord_name_1784_x: 2, long_coord_name_1785_x: 2, long_coord_name_1786_x: 2, long_coord_name_1787_x: 2, long_coord_name_1788_x: 2, long_coord_name_1789_x: 2, long_coord_name_178_x: 2, long_coord_name_1790_x: 2, long_coord_name_1791_x: 2, long_coord_name_1792_x: 2, long_coord_name_1793_x: 2, long_coord_name_1794_x: 2, long_coord_name_1795_x: 2, long_coord_name_1796_x: 2, long_coord_name_1797_x: 2, long_coord_name_1798_x: 2, long_coord_name_1799_x: 2, long_coord_name_179_x: 2, long_coord_name_17_x: 2, long_coord_name_1800_x: 2, long_coord_name_1801_x: 2, long_coord_name_1802_x: 2, long_coord_name_1803_x: 2, long_coord_name_1804_x: 2, long_coord_name_1805_x: 2, long_coord_name_1806_x: 2, long_coord_name_1807_x: 2, long_coord_name_1808_x: 2, long_coord_name_1809_x: 2, long_coord_name_180_x: 2, long_coord_name_1810_x: 2, long_coord_name_1811_x: 2, long_coord_name_1812_x: 2, long_coord_name_1813_x: 2, long_coord_name_1814_x: 2, long_coord_name_1815_x: 2, long_coord_name_1816_x: 2, long_coord_name_1817_x: 2, long_coord_name_1818_x: 2, long_coord_name_1819_x: 2, long_coord_name_181_x: 2, long_coord_name_1820_x: 2, long_coord_name_1821_x: 2, long_coord_name_1822_x: 2, long_coord_name_1823_x: 2, long_coord_name_1824_x: 2, long_coord_name_1825_x: 2, long_coord_name_1826_x: 2, long_coord_name_1827_x: 2, long_coord_name_1828_x: 2, long_coord_name_1829_x: 2, long_coord_name_182_x: 2, long_coord_name_1830_x: 2, long_coord_name_1831_x: 2, long_coord_name_1832_x: 2, long_coord_name_1833_x: 2, long_coord_name_1834_x: 2, long_coord_name_1835_x: 2, long_coord_name_1836_x: 2, long_coord_name_1837_x: 2, long_coord_name_1838_x: 2, long_coord_name_1839_x: 2, long_coord_name_183_x: 2, long_coord_name_1840_x: 2, long_coord_name_1841_x: 2, long_coord_name_1842_x: 2, long_coord_name_1843_x: 2, long_coord_name_1844_x: 2, long_coord_name_1845_x: 2, long_coord_name_1846_x: 2, long_coord_name_1847_x: 2, long_coord_name_1848_x: 2, long_coord_name_1849_x: 2, long_coord_name_184_x: 2, long_coord_name_1850_x: 2, long_coord_name_1851_x: 2, long_coord_name_1852_x: 2, long_coord_name_1853_x: 2, long_coord_name_1854_x: 2, long_coord_name_1855_x: 2, long_coord_name_1856_x: 2, long_coord_name_1857_x: 2, long_coord_name_1858_x: 2, long_coord_name_1859_x: 2, long_coord_name_185_x: 2, long_coord_name_1860_x: 2, long_coord_name_1861_x: 2, long_coord_name_1862_x: 2, long_coord_name_1863_x: 2, long_coord_name_1864_x: 2, long_coord_name_1865_x: 2, long_coord_name_1866_x: 2, long_coord_name_1867_x: 2, long_coord_name_1868_x: 2, long_coord_name_1869_x: 2, long_coord_name_186_x: 2, long_coord_name_1870_x: 2, long_coord_name_1871_x: 2, long_coord_name_1872_x: 2, long_coord_name_1873_x: 2, long_coord_name_1874_x: 2, long_coord_name_1875_x: 2, long_coord_name_1876_x: 2, long_coord_name_1877_x: 2, long_coord_name_1878_x: 2, long_coord_name_1879_x: 2, long_coord_name_187_x: 2, long_coord_name_1880_x: 2, long_coord_name_1881_x: 2, long_coord_name_1882_x: 2, long_coord_name_1883_x: 2, long_coord_name_1884_x: 2, long_coord_name_1885_x: 2, long_coord_name_1886_x: 2, long_coord_name_1887_x: 2, long_coord_name_1888_x: 2, long_coord_name_1889_x: 2, long_coord_name_188_x: 2, long_coord_name_1890_x: 2, long_coord_name_1891_x: 2, long_coord_name_1892_x: 2, long_coord_name_1893_x: 2, long_coord_name_1894_x: 2, long_coord_name_1895_x: 2, long_coord_name_1896_x: 2, long_coord_name_1897_x: 2, long_coord_name_1898_x: 2, long_coord_name_1899_x: 2, long_coord_name_189_x: 2, long_coord_name_18_x: 2, long_coord_name_1900_x: 2, long_coord_name_1901_x: 2, long_coord_name_1902_x: 2, long_coord_name_1903_x: 2, long_coord_name_1904_x: 2, long_coord_name_1905_x: 2, long_coord_name_1906_x: 2, long_coord_name_1907_x: 2, long_coord_name_1908_x: 2, long_coord_name_1909_x: 2, long_coord_name_190_x: 2, long_coord_name_1910_x: 2, long_coord_name_1911_x: 2, long_coord_name_1912_x: 2, long_coord_name_1913_x: 2, long_coord_name_1914_x: 2, long_coord_name_1915_x: 2, long_coord_name_1916_x: 2, long_coord_name_1917_x: 2, long_coord_name_1918_x: 2, long_coord_name_1919_x: 2, long_coord_name_191_x: 2, long_coord_name_1920_x: 2, long_coord_name_1921_x: 2, long_coord_name_1922_x: 2, long_coord_name_1923_x: 2, long_coord_name_1924_x: 2, long_coord_name_1925_x: 2, long_coord_name_1926_x: 2, long_coord_name_1927_x: 2, long_coord_name_1928_x: 2, long_coord_name_1929_x: 2, long_coord_name_192_x: 2, long_coord_name_1930_x: 2, long_coord_name_1931_x: 2, long_coord_name_1932_x: 2, long_coord_name_1933_x: 2, long_coord_name_1934_x: 2, long_coord_name_1935_x: 2, long_coord_name_1936_x: 2, long_coord_name_1937_x: 2, long_coord_name_1938_x: 2, long_coord_name_1939_x: 2, long_coord_name_193_x: 2, long_coord_name_1940_x: 2, long_coord_name_1941_x: 2, long_coord_name_1942_x: 2, long_coord_name_1943_x: 2, long_coord_name_1944_x: 2, long_coord_name_1945_x: 2, long_coord_name_1946_x: 2, long_coord_name_1947_x: 2, long_coord_name_1948_x: 2, long_coord_name_1949_x: 2, long_coord_name_194_x: 2, long_coord_name_1950_x: 2, long_coord_name_1951_x: 2, long_coord_name_1952_x: 2, long_coord_name_1953_x: 2, long_coord_name_1954_x: 2, long_coord_name_1955_x: 2, long_coord_name_1956_x: 2, long_coord_name_1957_x: 2, long_coord_name_1958_x: 2, long_coord_name_1959_x: 2, long_coord_name_195_x: 2, long_coord_name_1960_x: 2, long_coord_name_1961_x: 2, long_coord_name_1962_x: 2, long_coord_name_1963_x: 2, long_coord_name_1964_x: 2, long_coord_name_1965_x: 2, long_coord_name_1966_x: 2, long_coord_name_1967_x: 2, long_coord_name_1968_x: 2, long_coord_name_1969_x: 2, long_coord_name_196_x: 2, long_coord_name_1970_x: 2, long_coord_name_1971_x: 2, long_coord_name_1972_x: 2, long_coord_name_1973_x: 2, long_coord_name_1974_x: 2, long_coord_name_1975_x: 2, long_coord_name_1976_x: 2, long_coord_name_1977_x: 2, long_coord_name_1978_x: 2, long_coord_name_1979_x: 2, long_coord_name_197_x: 2, long_coord_name_1980_x: 2, long_coord_name_1981_x: 2, long_coord_name_1982_x: 2, long_coord_name_1983_x: 2, long_coord_name_1984_x: 2, long_coord_name_1985_x: 2, long_coord_name_1986_x: 2, long_coord_name_1987_x: 2, long_coord_name_1988_x: 2, long_coord_name_1989_x: 2, long_coord_name_198_x: 2, long_coord_name_1990_x: 2, long_coord_name_1991_x: 2, long_coord_name_1992_x: 2, long_coord_name_1993_x: 2, long_coord_name_1994_x: 2, long_coord_name_1995_x: 2, long_coord_name_1996_x: 2, long_coord_name_1997_x: 2, long_coord_name_1998_x: 2, long_coord_name_1999_x: 2, long_coord_name_199_x: 2, long_coord_name_19_x: 2, long_coord_name_1_x: 2, long_coord_name_200_x: 2, long_coord_name_201_x: 2, long_coord_name_202_x: 2, long_coord_name_203_x: 2, long_coord_name_204_x: 2, long_coord_name_205_x: 2, long_coord_name_206_x: 2, long_coord_name_207_x: 2, long_coord_name_208_x: 2, long_coord_name_209_x: 2, long_coord_name_20_x: 2, long_coord_name_210_x: 2, long_coord_name_211_x: 2, long_coord_name_212_x: 2, long_coord_name_213_x: 2, long_coord_name_214_x: 2, long_coord_name_215_x: 2, long_coord_name_216_x: 2, long_coord_name_217_x: 2, long_coord_name_218_x: 2, long_coord_name_219_x: 2, long_coord_name_21_x: 2, long_coord_name_220_x: 2, long_coord_name_221_x: 2, long_coord_name_222_x: 2, long_coord_name_223_x: 2, long_coord_name_224_x: 2, long_coord_name_225_x: 2, long_coord_name_226_x: 2, long_coord_name_227_x: 2, long_coord_name_228_x: 2, long_coord_name_229_x: 2, long_coord_name_22_x: 2, long_coord_name_230_x: 2, long_coord_name_231_x: 2, long_coord_name_232_x: 2, long_coord_name_233_x: 2, long_coord_name_234_x: 2, long_coord_name_235_x: 2, long_coord_name_236_x: 2, long_coord_name_237_x: 2, long_coord_name_238_x: 2, long_coord_name_239_x: 2, long_coord_name_23_x: 2, long_coord_name_240_x: 2, long_coord_name_241_x: 2, long_coord_name_242_x: 2, long_coord_name_243_x: 2, long_coord_name_244_x: 2, long_coord_name_245_x: 2, long_coord_name_246_x: 2, long_coord_name_247_x: 2, long_coord_name_248_x: 2, long_coord_name_249_x: 2, long_coord_name_24_x: 2, long_coord_name_250_x: 2, long_coord_name_251_x: 2, long_coord_name_252_x: 2, long_coord_name_253_x: 2, long_coord_name_254_x: 2, long_coord_name_255_x: 2, long_coord_name_256_x: 2, long_coord_name_257_x: 2, long_coord_name_258_x: 2, long_coord_name_259_x: 2, long_coord_name_25_x: 2, long_coord_name_260_x: 2, long_coord_name_261_x: 2, long_coord_name_262_x: 2, long_coord_name_263_x: 2, long_coord_name_264_x: 2, long_coord_name_265_x: 2, long_coord_name_266_x: 2, long_coord_name_267_x: 2, long_coord_name_268_x: 2, long_coord_name_269_x: 2, long_coord_name_26_x: 2, long_coord_name_270_x: 2, long_coord_name_271_x: 2, long_coord_name_272_x: 2, long_coord_name_273_x: 2, long_coord_name_274_x: 2, long_coord_name_275_x: 2, long_coord_name_276_x: 2, long_coord_name_277_x: 2, long_coord_name_278_x: 2, long_coord_name_279_x: 2, long_coord_name_27_x: 2, long_coord_name_280_x: 2, long_coord_name_281_x: 2, long_coord_name_282_x: 2, long_coord_name_283_x: 2, long_coord_name_284_x: 2, long_coord_name_285_x: 2, long_coord_name_286_x: 2, long_coord_name_287_x: 2, long_coord_name_288_x: 2, long_coord_name_289_x: 2, long_coord_name_28_x: 2, long_coord_name_290_x: 2, long_coord_name_291_x: 2, long_coord_name_292_x: 2, long_coord_name_293_x: 2, long_coord_name_294_x: 2, long_coord_name_295_x: 2, long_coord_name_296_x: 2, long_coord_name_297_x: 2, long_coord_name_298_x: 2, long_coord_name_299_x: 2, long_coord_name_29_x: 2, long_coord_name_2_x: 2, long_coord_name_300_x: 2, long_coord_name_301_x: 2, long_coord_name_302_x: 2, long_coord_name_303_x: 2, long_coord_name_304_x: 2, long_coord_name_305_x: 2, long_coord_name_306_x: 2, long_coord_name_307_x: 2, long_coord_name_308_x: 2, long_coord_name_309_x: 2, long_coord_name_30_x: 2, long_coord_name_310_x: 2, long_coord_name_311_x: 2, long_coord_name_312_x: 2, long_coord_name_313_x: 2, long_coord_name_314_x: 2, long_coord_name_315_x: 2, long_coord_name_316_x: 2, long_coord_name_317_x: 2, long_coord_name_318_x: 2, long_coord_name_319_x: 2, long_coord_name_31_x: 2, long_coord_name_320_x: 2, long_coord_name_321_x: 2, long_coord_name_322_x: 2, long_coord_name_323_x: 2, long_coord_name_324_x: 2, long_coord_name_325_x: 2, long_coord_name_326_x: 2, long_coord_name_327_x: 2, long_coord_name_328_x: 2, long_coord_name_329_x: 2, long_coord_name_32_x: 2, long_coord_name_330_x: 2, long_coord_name_331_x: 2, long_coord_name_332_x: 2, long_coord_name_333_x: 2, long_coord_name_334_x: 2, long_coord_name_335_x: 2, long_coord_name_336_x: 2, long_coord_name_337_x: 2, long_coord_name_338_x: 2, long_coord_name_339_x: 2, long_coord_name_33_x: 2, long_coord_name_340_x: 2, long_coord_name_341_x: 2, long_coord_name_342_x: 2, long_coord_name_343_x: 2, long_coord_name_344_x: 2, long_coord_name_345_x: 2, long_coord_name_346_x: 2, long_coord_name_347_x: 2, long_coord_name_348_x: 2, long_coord_name_349_x: 2, long_coord_name_34_x: 2, long_coord_name_350_x: 2, long_coord_name_351_x: 2, long_coord_name_352_x: 2, long_coord_name_353_x: 2, long_coord_name_354_x: 2, long_coord_name_355_x: 2, long_coord_name_356_x: 2, long_coord_name_357_x: 2, long_coord_name_358_x: 2, long_coord_name_359_x: 2, long_coord_name_35_x: 2, long_coord_name_360_x: 2, long_coord_name_361_x: 2, long_coord_name_362_x: 2, long_coord_name_363_x: 2, long_coord_name_364_x: 2, long_coord_name_365_x: 2, long_coord_name_366_x: 2, long_coord_name_367_x: 2, long_coord_name_368_x: 2, long_coord_name_369_x: 2, long_coord_name_36_x: 2, long_coord_name_370_x: 2, long_coord_name_371_x: 2, long_coord_name_372_x: 2, long_coord_name_373_x: 2, long_coord_name_374_x: 2, long_coord_name_375_x: 2, long_coord_name_376_x: 2, long_coord_name_377_x: 2, long_coord_name_378_x: 2, long_coord_name_379_x: 2, long_coord_name_37_x: 2, long_coord_name_380_x: 2, long_coord_name_381_x: 2, long_coord_name_382_x: 2, long_coord_name_383_x: 2, long_coord_name_384_x: 2, long_coord_name_385_x: 2, long_coord_name_386_x: 2, long_coord_name_387_x: 2, long_coord_name_388_x: 2, long_coord_name_389_x: 2, long_coord_name_38_x: 2, long_coord_name_390_x: 2, long_coord_name_391_x: 2, long_coord_name_392_x: 2, long_coord_name_393_x: 2, long_coord_name_394_x: 2, long_coord_name_395_x: 2, long_coord_name_396_x: 2, long_coord_name_397_x: 2, long_coord_name_398_x: 2, long_coord_name_399_x: 2, long_coord_name_39_x: 2, long_coord_name_3_x: 2, long_coord_name_400_x: 2, long_coord_name_401_x: 2, long_coord_name_402_x: 2, long_coord_name_403_x: 2, long_coord_name_404_x: 2, long_coord_name_405_x: 2, long_coord_name_406_x: 2, long_coord_name_407_x: 2, long_coord_name_408_x: 2, long_coord_name_409_x: 2, long_coord_name_40_x: 2, long_coord_name_410_x: 2, long_coord_name_411_x: 2, long_coord_name_412_x: 2, long_coord_name_413_x: 2, long_coord_name_414_x: 2, long_coord_name_415_x: 2, long_coord_name_416_x: 2, long_coord_name_417_x: 2, long_coord_name_418_x: 2, long_coord_name_419_x: 2, long_coord_name_41_x: 2, long_coord_name_420_x: 2, long_coord_name_421_x: 2, long_coord_name_422_x: 2, long_coord_name_423_x: 2, long_coord_name_424_x: 2, long_coord_name_425_x: 2, long_coord_name_426_x: 2, long_coord_name_427_x: 2, long_coord_name_428_x: 2, long_coord_name_429_x: 2, long_coord_name_42_x: 2, long_coord_name_430_x: 2, long_coord_name_431_x: 2, long_coord_name_432_x: 2, long_coord_name_433_x: 2, long_coord_name_434_x: 2, long_coord_name_435_x: 2, long_coord_name_436_x: 2, long_coord_name_437_x: 2, long_coord_name_438_x: 2, long_coord_name_439_x: 2, long_coord_name_43_x: 2, long_coord_name_440_x: 2, long_coord_name_441_x: 2, long_coord_name_442_x: 2, long_coord_name_443_x: 2, long_coord_name_444_x: 2, long_coord_name_445_x: 2, long_coord_name_446_x: 2, long_coord_name_447_x: 2, long_coord_name_448_x: 2, long_coord_name_449_x: 2, long_coord_name_44_x: 2, long_coord_name_450_x: 2, long_coord_name_451_x: 2, long_coord_name_452_x: 2, long_coord_name_453_x: 2, long_coord_name_454_x: 2, long_coord_name_455_x: 2, long_coord_name_456_x: 2, long_coord_name_457_x: 2, long_coord_name_458_x: 2, long_coord_name_459_x: 2, long_coord_name_45_x: 2, long_coord_name_460_x: 2, long_coord_name_461_x: 2, long_coord_name_462_x: 2, long_coord_name_463_x: 2, long_coord_name_464_x: 2, long_coord_name_465_x: 2, long_coord_name_466_x: 2, long_coord_name_467_x: 2, long_coord_name_468_x: 2, long_coord_name_469_x: 2, long_coord_name_46_x: 2, long_coord_name_470_x: 2, long_coord_name_471_x: 2, long_coord_name_472_x: 2, long_coord_name_473_x: 2, long_coord_name_474_x: 2, long_coord_name_475_x: 2, long_coord_name_476_x: 2, long_coord_name_477_x: 2, long_coord_name_478_x: 2, long_coord_name_479_x: 2, long_coord_name_47_x: 2, long_coord_name_480_x: 2, long_coord_name_481_x: 2, long_coord_name_482_x: 2, long_coord_name_483_x: 2, long_coord_name_484_x: 2, long_coord_name_485_x: 2, long_coord_name_486_x: 2, long_coord_name_487_x: 2, long_coord_name_488_x: 2, long_coord_name_489_x: 2, long_coord_name_48_x: 2, long_coord_name_490_x: 2, long_coord_name_491_x: 2, long_coord_name_492_x: 2, long_coord_name_493_x: 2, long_coord_name_494_x: 2, long_coord_name_495_x: 2, long_coord_name_496_x: 2, long_coord_name_497_x: 2, long_coord_name_498_x: 2, long_coord_name_499_x: 2, long_coord_name_49_x: 2, long_coord_name_4_x: 2, long_coord_name_500_x: 2, long_coord_name_501_x: 2, long_coord_name_502_x: 2, long_coord_name_503_x: 2, long_coord_name_504_x: 2, long_coord_name_505_x: 2, long_coord_name_506_x: 2, long_coord_name_507_x: 2, long_coord_name_508_x: 2, long_coord_name_509_x: 2, long_coord_name_50_x: 2, long_coord_name_510_x: 2, long_coord_name_511_x: 2, long_coord_name_512_x: 2, long_coord_name_513_x: 2, long_coord_name_514_x: 2, long_coord_name_515_x: 2, long_coord_name_516_x: 2, long_coord_name_517_x: 2, long_coord_name_518_x: 2, long_coord_name_519_x: 2, long_coord_name_51_x: 2, long_coord_name_520_x: 2, long_coord_name_521_x: 2, long_coord_name_522_x: 2, long_coord_name_523_x: 2, long_coord_name_524_x: 2, long_coord_name_525_x: 2, long_coord_name_526_x: 2, long_coord_name_527_x: 2, long_coord_name_528_x: 2, long_coord_name_529_x: 2, long_coord_name_52_x: 2, long_coord_name_530_x: 2, long_coord_name_531_x: 2, long_coord_name_532_x: 2, long_coord_name_533_x: 2, long_coord_name_534_x: 2, long_coord_name_535_x: 2, long_coord_name_536_x: 2, long_coord_name_537_x: 2, long_coord_name_538_x: 2, long_coord_name_539_x: 2, long_coord_name_53_x: 2, long_coord_name_540_x: 2, long_coord_name_541_x: 2, long_coord_name_542_x: 2, long_coord_name_543_x: 2, long_coord_name_544_x: 2, long_coord_name_545_x: 2, long_coord_name_546_x: 2, long_coord_name_547_x: 2, long_coord_name_548_x: 2, long_coord_name_549_x: 2, long_coord_name_54_x: 2, long_coord_name_550_x: 2, long_coord_name_551_x: 2, long_coord_name_552_x: 2, long_coord_name_553_x: 2, long_coord_name_554_x: 2, long_coord_name_555_x: 2, long_coord_name_556_x: 2, long_coord_name_557_x: 2, long_coord_name_558_x: 2, long_coord_name_559_x: 2, long_coord_name_55_x: 2, long_coord_name_560_x: 2, long_coord_name_561_x: 2, long_coord_name_562_x: 2, long_coord_name_563_x: 2, long_coord_name_564_x: 2, long_coord_name_565_x: 2, long_coord_name_566_x: 2, long_coord_name_567_x: 2, long_coord_name_568_x: 2, long_coord_name_569_x: 2, long_coord_name_56_x: 2, long_coord_name_570_x: 2, long_coord_name_571_x: 2, long_coord_name_572_x: 2, long_coord_name_573_x: 2, long_coord_name_574_x: 2, long_coord_name_575_x: 2, long_coord_name_576_x: 2, long_coord_name_577_x: 2, long_coord_name_578_x: 2, long_coord_name_579_x: 2, long_coord_name_57_x: 2, long_coord_name_580_x: 2, long_coord_name_581_x: 2, long_coord_name_582_x: 2, long_coord_name_583_x: 2, long_coord_name_584_x: 2, long_coord_name_585_x: 2, long_coord_name_586_x: 2, long_coord_name_587_x: 2, long_coord_name_588_x: 2, long_coord_name_589_x: 2, long_coord_name_58_x: 2, long_coord_name_590_x: 2, long_coord_name_591_x: 2, long_coord_name_592_x: 2, long_coord_name_593_x: 2, long_coord_name_594_x: 2, long_coord_name_595_x: 2, long_coord_name_596_x: 2, long_coord_name_597_x: 2, long_coord_name_598_x: 2, long_coord_name_599_x: 2, long_coord_name_59_x: 2, long_coord_name_5_x: 2, long_coord_name_600_x: 2, long_coord_name_601_x: 2, long_coord_name_602_x: 2, long_coord_name_603_x: 2, long_coord_name_604_x: 2, long_coord_name_605_x: 2, long_coord_name_606_x: 2, long_coord_name_607_x: 2, long_coord_name_608_x: 2, long_coord_name_609_x: 2, long_coord_name_60_x: 2, long_coord_name_610_x: 2, long_coord_name_611_x: 2, long_coord_name_612_x: 2, long_coord_name_613_x: 2, long_coord_name_614_x: 2, long_coord_name_615_x: 2, long_coord_name_616_x: 2, long_coord_name_617_x: 2, long_coord_name_618_x: 2, long_coord_name_619_x: 2, long_coord_name_61_x: 2, long_coord_name_620_x: 2, long_coord_name_621_x: 2, long_coord_name_622_x: 2, long_coord_name_623_x: 2, long_coord_name_624_x: 2, long_coord_name_625_x: 2, long_coord_name_626_x: 2, long_coord_name_627_x: 2, long_coord_name_628_x: 2, long_coord_name_629_x: 2, long_coord_name_62_x: 2, long_coord_name_630_x: 2, long_coord_name_631_x: 2, long_coord_name_632_x: 2, long_coord_name_633_x: 2, long_coord_name_634_x: 2, long_coord_name_635_x: 2, long_coord_name_636_x: 2, long_coord_name_637_x: 2, long_coord_name_638_x: 2, long_coord_name_639_x: 2, long_coord_name_63_x: 2, long_coord_name_640_x: 2, long_coord_name_641_x: 2, long_coord_name_642_x: 2, long_coord_name_643_x: 2, long_coord_name_644_x: 2, long_coord_name_645_x: 2, long_coord_name_646_x: 2, long_coord_name_647_x: 2, long_coord_name_648_x: 2, long_coord_name_649_x: 2, long_coord_name_64_x: 2, long_coord_name_650_x: 2, long_coord_name_651_x: 2, long_coord_name_652_x: 2, long_coord_name_653_x: 2, long_coord_name_654_x: 2, long_coord_name_655_x: 2, long_coord_name_656_x: 2, long_coord_name_657_x: 2, long_coord_name_658_x: 2, long_coord_name_659_x: 2, long_coord_name_65_x: 2, long_coord_name_660_x: 2, long_coord_name_661_x: 2, long_coord_name_662_x: 2, long_coord_name_663_x: 2, long_coord_name_664_x: 2, long_coord_name_665_x: 2, long_coord_name_666_x: 2, long_coord_name_667_x: 2, long_coord_name_668_x: 2, long_coord_name_669_x: 2, long_coord_name_66_x: 2, long_coord_name_670_x: 2, long_coord_name_671_x: 2, long_coord_name_672_x: 2, long_coord_name_673_x: 2, long_coord_name_674_x: 2, long_coord_name_675_x: 2, long_coord_name_676_x: 2, long_coord_name_677_x: 2, long_coord_name_678_x: 2, long_coord_name_679_x: 2, long_coord_name_67_x: 2, long_coord_name_680_x: 2, long_coord_name_681_x: 2, long_coord_name_682_x: 2, long_coord_name_683_x: 2, long_coord_name_684_x: 2, long_coord_name_685_x: 2, long_coord_name_686_x: 2, long_coord_name_687_x: 2, long_coord_name_688_x: 2, long_coord_name_689_x: 2, long_coord_name_68_x: 2, long_coord_name_690_x: 2, long_coord_name_691_x: 2, long_coord_name_692_x: 2, long_coord_name_693_x: 2, long_coord_name_694_x: 2, long_coord_name_695_x: 2, long_coord_name_696_x: 2, long_coord_name_697_x: 2, long_coord_name_698_x: 2, long_coord_name_699_x: 2, long_coord_name_69_x: 2, long_coord_name_6_x: 2, long_coord_name_700_x: 2, long_coord_name_701_x: 2, long_coord_name_702_x: 2, long_coord_name_703_x: 2, long_coord_name_704_x: 2, long_coord_name_705_x: 2, long_coord_name_706_x: 2, long_coord_name_707_x: 2, long_coord_name_708_x: 2, long_coord_name_709_x: 2, long_coord_name_70_x: 2, long_coord_name_710_x: 2, long_coord_name_711_x: 2, long_coord_name_712_x: 2, long_coord_name_713_x: 2, long_coord_name_714_x: 2, long_coord_name_715_x: 2, long_coord_name_716_x: 2, long_coord_name_717_x: 2, long_coord_name_718_x: 2, long_coord_name_719_x: 2, long_coord_name_71_x: 2, long_coord_name_720_x: 2, long_coord_name_721_x: 2, long_coord_name_722_x: 2, long_coord_name_723_x: 2, long_coord_name_724_x: 2, long_coord_name_725_x: 2, long_coord_name_726_x: 2, long_coord_name_727_x: 2, long_coord_name_728_x: 2, long_coord_name_729_x: 2, long_coord_name_72_x: 2, long_coord_name_730_x: 2, long_coord_name_731_x: 2, long_coord_name_732_x: 2, long_coord_name_733_x: 2, long_coord_name_734_x: 2, long_coord_name_735_x: 2, long_coord_name_736_x: 2, long_coord_name_737_x: 2, long_coord_name_738_x: 2, long_coord_name_739_x: 2, long_coord_name_73_x: 2, long_coord_name_740_x: 2, long_coord_name_741_x: 2, long_coord_name_742_x: 2, long_coord_name_743_x: 2, long_coord_name_744_x: 2, long_coord_name_745_x: 2, long_coord_name_746_x: 2, long_coord_name_747_x: 2, long_coord_name_748_x: 2, long_coord_name_749_x: 2, long_coord_name_74_x: 2, long_coord_name_750_x: 2, long_coord_name_751_x: 2, long_coord_name_752_x: 2, long_coord_name_753_x: 2, long_coord_name_754_x: 2, long_coord_name_755_x: 2, long_coord_name_756_x: 2, long_coord_name_757_x: 2, long_coord_name_758_x: 2, long_coord_name_759_x: 2, long_coord_name_75_x: 2, long_coord_name_760_x: 2, long_coord_name_761_x: 2, long_coord_name_762_x: 2, long_coord_name_763_x: 2, long_coord_name_764_x: 2, long_coord_name_765_x: 2, long_coord_name_766_x: 2, long_coord_name_767_x: 2, long_coord_name_768_x: 2, long_coord_name_769_x: 2, long_coord_name_76_x: 2, long_coord_name_770_x: 2, long_coord_name_771_x: 2, long_coord_name_772_x: 2, long_coord_name_773_x: 2, long_coord_name_774_x: 2, long_coord_name_775_x: 2, long_coord_name_776_x: 2, long_coord_name_777_x: 2, long_coord_name_778_x: 2, long_coord_name_779_x: 2, long_coord_name_77_x: 2, long_coord_name_780_x: 2, long_coord_name_781_x: 2, long_coord_name_782_x: 2, long_coord_name_783_x: 2, long_coord_name_784_x: 2, long_coord_name_785_x: 2, long_coord_name_786_x: 2, long_coord_name_787_x: 2, long_coord_name_788_x: 2, long_coord_name_789_x: 2, long_coord_name_78_x: 2, long_coord_name_790_x: 2, long_coord_name_791_x: 2, long_coord_name_792_x: 2, long_coord_name_793_x: 2, long_coord_name_794_x: 2, long_coord_name_795_x: 2, long_coord_name_796_x: 2, long_coord_name_797_x: 2, long_coord_name_798_x: 2, long_coord_name_799_x: 2, long_coord_name_79_x: 2, long_coord_name_7_x: 2, long_coord_name_800_x: 2, long_coord_name_801_x: 2, long_coord_name_802_x: 2, long_coord_name_803_x: 2, long_coord_name_804_x: 2, long_coord_name_805_x: 2, long_coord_name_806_x: 2, long_coord_name_807_x: 2, long_coord_name_808_x: 2, long_coord_name_809_x: 2, long_coord_name_80_x: 2, long_coord_name_810_x: 2, long_coord_name_811_x: 2, long_coord_name_812_x: 2, long_coord_name_813_x: 2, long_coord_name_814_x: 2, long_coord_name_815_x: 2, long_coord_name_816_x: 2, long_coord_name_817_x: 2, long_coord_name_818_x: 2, long_coord_name_819_x: 2, long_coord_name_81_x: 2, long_coord_name_820_x: 2, long_coord_name_821_x: 2, long_coord_name_822_x: 2, long_coord_name_823_x: 2, long_coord_name_824_x: 2, long_coord_name_825_x: 2, long_coord_name_826_x: 2, long_coord_name_827_x: 2, long_coord_name_828_x: 2, long_coord_name_829_x: 2, long_coord_name_82_x: 2, long_coord_name_830_x: 2, long_coord_name_831_x: 2, long_coord_name_832_x: 2, long_coord_name_833_x: 2, long_coord_name_834_x: 2, long_coord_name_835_x: 2, long_coord_name_836_x: 2, long_coord_name_837_x: 2, long_coord_name_838_x: 2, long_coord_name_839_x: 2, long_coord_name_83_x: 2, long_coord_name_840_x: 2, long_coord_name_841_x: 2, long_coord_name_842_x: 2, long_coord_name_843_x: 2, long_coord_name_844_x: 2, long_coord_name_845_x: 2, long_coord_name_846_x: 2, long_coord_name_847_x: 2, long_coord_name_848_x: 2, long_coord_name_849_x: 2, long_coord_name_84_x: 2, long_coord_name_850_x: 2, long_coord_name_851_x: 2, long_coord_name_852_x: 2, long_coord_name_853_x: 2, long_coord_name_854_x: 2, long_coord_name_855_x: 2, long_coord_name_856_x: 2, long_coord_name_857_x: 2, long_coord_name_858_x: 2, long_coord_name_859_x: 2, long_coord_name_85_x: 2, long_coord_name_860_x: 2, long_coord_name_861_x: 2, long_coord_name_862_x: 2, long_coord_name_863_x: 2, long_coord_name_864_x: 2, long_coord_name_865_x: 2, long_coord_name_866_x: 2, long_coord_name_867_x: 2, long_coord_name_868_x: 2, long_coord_name_869_x: 2, long_coord_name_86_x: 2, long_coord_name_870_x: 2, long_coord_name_871_x: 2, long_coord_name_872_x: 2, long_coord_name_873_x: 2, long_coord_name_874_x: 2, long_coord_name_875_x: 2, long_coord_name_876_x: 2, long_coord_name_877_x: 2, long_coord_name_878_x: 2, long_coord_name_879_x: 2, long_coord_name_87_x: 2, long_coord_name_880_x: 2, long_coord_name_881_x: 2, long_coord_name_882_x: 2, long_coord_name_883_x: 2, long_coord_name_884_x: 2, long_coord_name_885_x: 2, long_coord_name_886_x: 2, long_coord_name_887_x: 2, long_coord_name_888_x: 2, long_coord_name_889_x: 2, long_coord_name_88_x: 2, long_coord_name_890_x: 2, long_coord_name_891_x: 2, long_coord_name_892_x: 2, long_coord_name_893_x: 2, long_coord_name_894_x: 2, long_coord_name_895_x: 2, long_coord_name_896_x: 2, long_coord_name_897_x: 2, long_coord_name_898_x: 2, long_coord_name_899_x: 2, long_coord_name_89_x: 2, long_coord_name_8_x: 2, long_coord_name_900_x: 2, long_coord_name_901_x: 2, long_coord_name_902_x: 2, long_coord_name_903_x: 2, long_coord_name_904_x: 2, long_coord_name_905_x: 2, long_coord_name_906_x: 2, long_coord_name_907_x: 2, long_coord_name_908_x: 2, long_coord_name_909_x: 2, long_coord_name_90_x: 2, long_coord_name_910_x: 2, long_coord_name_911_x: 2, long_coord_name_912_x: 2, long_coord_name_913_x: 2, long_coord_name_914_x: 2, long_coord_name_915_x: 2, long_coord_name_916_x: 2, long_coord_name_917_x: 2, long_coord_name_918_x: 2, long_coord_name_919_x: 2, long_coord_name_91_x: 2, long_coord_name_920_x: 2, long_coord_name_921_x: 2, long_coord_name_922_x: 2, long_coord_name_923_x: 2, long_coord_name_924_x: 2, long_coord_name_925_x: 2, long_coord_name_926_x: 2, long_coord_name_927_x: 2, long_coord_name_928_x: 2, long_coord_name_929_x: 2, long_coord_name_92_x: 2, long_coord_name_930_x: 2, long_coord_name_931_x: 2, long_coord_name_932_x: 2, long_coord_name_933_x: 2, long_coord_name_934_x: 2, long_coord_name_935_x: 2, long_coord_name_936_x: 2, long_coord_name_937_x: 2, long_coord_name_938_x: 2, long_coord_name_939_x: 2, long_coord_name_93_x: 2, long_coord_name_940_x: 2, long_coord_name_941_x: 2, long_coord_name_942_x: 2, long_coord_name_943_x: 2, long_coord_name_944_x: 2, long_coord_name_945_x: 2, long_coord_name_946_x: 2, long_coord_name_947_x: 2, long_coord_name_948_x: 2, long_coord_name_949_x: 2, long_coord_name_94_x: 2, long_coord_name_950_x: 2, long_coord_name_951_x: 2, long_coord_name_952_x: 2, long_coord_name_953_x: 2, long_coord_name_954_x: 2, long_coord_name_955_x: 2, long_coord_name_956_x: 2, long_coord_name_957_x: 2, long_coord_name_958_x: 2, long_coord_name_959_x: 2, long_coord_name_95_x: 2, long_coord_name_960_x: 2, long_coord_name_961_x: 2, long_coord_name_962_x: 2, long_coord_name_963_x: 2, long_coord_name_964_x: 2, long_coord_name_965_x: 2, long_coord_name_966_x: 2, long_coord_name_967_x: 2, long_coord_name_968_x: 2, long_coord_name_969_x: 2, long_coord_name_96_x: 2, long_coord_name_970_x: 2, long_coord_name_971_x: 2, long_coord_name_972_x: 2, long_coord_name_973_x: 2, long_coord_name_974_x: 2, long_coord_name_975_x: 2, long_coord_name_976_x: 2, long_coord_name_977_x: 2, long_coord_name_978_x: 2, long_coord_name_979_x: 2, long_coord_name_97_x: 2, long_coord_name_980_x: 2, long_coord_name_981_x: 2, long_coord_name_982_x: 2, long_coord_name_983_x: 2, long_coord_name_984_x: 2, long_coord_name_985_x: 2, long_coord_name_986_x: 2, long_coord_name_987_x: 2, long_coord_name_988_x: 2, long_coord_name_989_x: 2, long_coord_name_98_x: 2, long_coord_name_990_x: 2, long_coord_name_991_x: 2, long_coord_name_992_x: 2, long_coord_name_993_x: 2, long_coord_name_994_x: 2, long_coord_name_995_x: 2, long_coord_name_996_x: 2, long_coord_name_997_x: 2, long_coord_name_998_x: 2, long_coord_name_999_x: 2, long_coord_name_99_x: 2, long_coord_name_9_x: 2) Coordinates: (12/2000) * long_coord_name_0_x (long_coord_name_0_x) int32 0 1 * long_coord_name_1_x (long_coord_name_1_x) int32 0 1 * long_coord_name_2_x (long_coord_name_2_x) int32 0 1 * long_coord_name_3_x (long_coord_name_3_x) int32 0 1 * long_coord_name_4_x (long_coord_name_4_x) int32 0 1 * long_coord_name_5_x (long_coord_name_5_x) int32 0 1 ... * long_coord_name_1994_x (long_coord_name_1994_x) int32 0 1 * long_coord_name_1995_x (long_coord_name_1995_x) int32 0 1 * long_coord_name_1996_x (long_coord_name_1996_x) int32 0 1 * long_coord_name_1997_x (long_coord_name_1997_x) int32 0 1 * long_coord_name_1998_x (long_coord_name_1998_x) int32 0 1 * long_coord_name_1999_x (long_coord_name_1999_x) int32 0 1 Data variables: (12/2000) long_variable_name_0 (long_coord_name_0_x) int32 3 4 long_variable_name_1 (long_coord_name_1_x) int32 3 4 long_variable_name_2 (long_coord_name_2_x) int32 3 4 long_variable_name_3 (long_coord_name_3_x) int32 3 4 long_variable_name_4 (long_coord_name_4_x) int32 3 4 long_variable_name_5 (long_coord_name_5_x) int32 3 4 ... long_variable_name_1994 (long_coord_name_1994_x) int32 3 4 long_variable_name_1995 (long_coord_name_1995_x) int32 3 4 long_variable_name_1996 (long_coord_name_1996_x) int32 3 4 long_variable_name_1997 (long_coord_name_1997_x) int32 3 4 long_variable_name_1998 (long_coord_name_1998_x) int32 3 4 long_variable_name_1999 (long_coord_name_1999_x) int32 3 4 Attributes: (12/2000) attr_0: 2 attr_1: 2 attr_2: 2 attr_3: 2 attr_4: 2 attr_5: 2 ... attr_1994: 2 attr_1995: 2 attr_1996: 2 attr_1997: 2 attr_1998: 2 attr_1999: 2

Anything else we need to know?:

Environment:

Output of <tt>xr.show_versions()</tt> INSTALLED VERSIONS ------------------ commit: None python: 3.8.8 | packaged by conda-forge | (default, Feb 20 2021, 15:50:08) [MSC v.1916 64 bit (AMD64)] python-bits: 64 OS: Windows OS-release: 10 byteorder: little LC_ALL: None LANG: en libhdf5: 1.10.6 libnetcdf: None xarray: 0.18.2 pandas: 1.2.4 numpy: 1.20.3 scipy: 1.6.3 netCDF4: None pydap: None h5netcdf: None h5py: 3.2.1 Nio: None zarr: None cftime: None nc_time_axis: None PseudoNetCDF: None rasterio: None cfgrib: None iris: None bottleneck: 1.3.2 dask: 2021.05.0 distributed: 2021.05.0 matplotlib: 3.4.2 cartopy: None seaborn: 0.11.1 numbagg: None pint: None setuptools: 49.6.0.post20210108 pip: 21.1.2 conda: 4.10.1 pytest: 6.2.4 IPython: 7.24.1 sphinx: 4.0.2
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5546/reactions",
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed xarray 13221727 issue
781168967 MDExOlB1bGxSZXF1ZXN0NTUwOTM4NDAy 4776 Speed up missing._get_interpolator Illviljan 14371165 closed 0     1 2021-01-07T09:32:40Z 2021-05-18T18:17:06Z 2021-01-08T15:55:39Z MEMBER   0 pydata/xarray/pulls/4776

Importing scipy.interpolate is slow and should only be done when necessary. Test case from 200ms to 6ms.

  • [x] Related to #4739
  • [x] Passes isort . && black . && mypy . && flake8

<sub>By default, the upstream dev CI is disabled on pull request and push events. You can override this behavior per commit by adding a [test-upstream] tag to the first line of the commit message.</sub>

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/4776/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
797453161 MDExOlB1bGxSZXF1ZXN0NTY0NDQ4Mzg3 4850 Allow "unit" in label_from_attrs Illviljan 14371165 closed 0     1 2021-01-30T16:02:34Z 2021-05-18T18:16:58Z 2021-01-30T16:26:04Z MEMBER   0 pydata/xarray/pulls/4850

It is also popular to call units unit. Allow both keys to be appended to labels in plots.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/4850/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
891165324 MDExOlB1bGxSZXF1ZXN0NjQ0MDc2NDg3 5297 Add whats new for dataset interpolation with non-numerics Illviljan 14371165 closed 0     1 2021-05-13T16:00:51Z 2021-05-18T18:15:35Z 2021-05-13T16:30:21Z MEMBER   0 pydata/xarray/pulls/5297

Follow up for #5008

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5297/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
892748525 MDExOlB1bGxSZXF1ZXN0NjQ1MzcyMjE3 5319 Convert new_shape from list to tuple in _unstack_once Illviljan 14371165 closed 0     1 2021-05-16T20:04:05Z 2021-05-18T18:14:00Z 2021-05-16T23:50:10Z MEMBER   0 pydata/xarray/pulls/5319

Having new_shape as a list broke some checks in sparse. .shape is usually a tuple so I changed new_shape to be a tuple as well. sparse arrays errors one step further down now instead, at the item assignment...

  • Related to #5315
  • [x] Passes pre-commit run --all-files
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5319/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
892411608 MDExOlB1bGxSZXF1ZXN0NjQ1MTIxMzQ0 5314 Add version variable for optional imports in pycompat Illviljan 14371165 closed 0     1 2021-05-15T10:43:35Z 2021-05-18T18:13:32Z 2021-05-16T23:50:31Z MEMBER   0 pydata/xarray/pulls/5314

It was difficult to do version checks with optional imports so I added variables in pycompat and removed some of the imports I found.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5314/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 pull
779938616 MDU6SXNzdWU3Nzk5Mzg2MTY= 4770 Interpolation always returns floats Illviljan 14371165 open 0     1 2021-01-06T03:16:43Z 2021-01-12T16:30:54Z   MEMBER      

What happened: When interpolating datasets integer arrays are forced to floats.

What you expected to happen: To retain the same dtype after interpolation.

Minimal Complete Verifiable Example:

```python import numpy as np import dask.array as da a = np.arange(0, 2) b = np.core.defchararray.add("long_variable_name", a.astype(str)) coords = dict(time=da.array([0, 1])) data_vars = dict() for v in b: data_vars[v] = xr.DataArray( name=v, data=da.array([0, 1], dtype=int), dims=["time"], coords=coords, ) ds1 = xr.Dataset(data_vars)

print(ds1) Out[35]: <xarray.Dataset> Dimensions: (time: 4) Coordinates: * time (time) float64 0.0 0.5 1.0 2.0 Data variables: long_variable_name0 (time) int32 dask.array<chunksize=(4,), meta=np.ndarray> long_variable_name1 (time) int32 dask.array<chunksize=(4,), meta=np.ndarray>

Interpolate:

ds1 = ds1.interp( time=da.array([0, 0.5, 1, 2]), assume_sorted=True, method="linear", kwargs=dict(fill_value="extrapolate"), )

dask array thinks it's an integer array:

print(ds1.long_variable_name0) Out[55]: <xarray.DataArray 'long_variable_name0' (time: 4)> dask.array<dask_aware_interpnd, shape=(4,), dtype=int32, chunksize=(4,), chunktype=numpy.ndarray> Coordinates: * time (time) float64 0.0 0.5 1.0 2.0

But once computed it turns out is a float:

print(ds1.long_variable_name0.compute()) Out[38]: <xarray.DataArray 'long_variable_name0' (time: 4)> array([0. , 0.5, 1. , 2. ]) Coordinates: * time (time) float64 0.0 0.5 1.0 2.0

```

Anything else we need to know?: An easy first step is to also force np.float_ in da.blockwise in missing.interp_func.

The more difficult way is to somehow be able to change back the dataarrays into the old dtype without affecting performance. I did a test simply adding .astype()to the returned value in missing.interp and it doubled the calculation time.

I was thinking the conversion to floats in scipy could be avoided altogether by adding a (non-)public option to ignore any dtype checks and just let the user handle the "unsafe" interpolations.

Related: https://github.com/scipy/scipy/issues/11093

Environment:

Output of <tt>xr.show_versions()</tt> xr.show_versions() INSTALLED VERSIONS ------------------ commit: None python: 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] python-bits: 64 OS: Windows libhdf5: 1.10.4 libnetcdf: None xarray: 0.16.2 pandas: 1.1.5 numpy: 1.17.5 scipy: 1.4.1 netCDF4: None pydap: None h5netcdf: None h5py: 2.10.0 Nio: None zarr: None cftime: None nc_time_axis: None PseudoNetCDF: None rasterio: None cfgrib: None iris: None bottleneck: 1.3.2 dask: 2020.12.0 distributed: 2020.12.0 matplotlib: 3.3.2 cartopy: None seaborn: 0.11.1 numbagg: None pint: None setuptools: 51.0.0.post20201207 pip: 20.3.3 conda: 4.9.2 pytest: 6.2.1 IPython: 7.19.0 sphinx: 3.4.0
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/4770/reactions",
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    xarray 13221727 issue

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issues] (
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [number] INTEGER,
   [title] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [state] TEXT,
   [locked] INTEGER,
   [assignee] INTEGER REFERENCES [users]([id]),
   [milestone] INTEGER REFERENCES [milestones]([id]),
   [comments] INTEGER,
   [created_at] TEXT,
   [updated_at] TEXT,
   [closed_at] TEXT,
   [author_association] TEXT,
   [active_lock_reason] TEXT,
   [draft] INTEGER,
   [pull_request] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [performed_via_github_app] TEXT,
   [state_reason] TEXT,
   [repo] INTEGER REFERENCES [repos]([id]),
   [type] TEXT
);
CREATE INDEX [idx_issues_repo]
    ON [issues] ([repo]);
CREATE INDEX [idx_issues_milestone]
    ON [issues] ([milestone]);
CREATE INDEX [idx_issues_assignee]
    ON [issues] ([assignee]);
CREATE INDEX [idx_issues_user]
    ON [issues] ([user]);
Powered by Datasette · Queries took 1118.524ms · About: xarray-datasette