home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 259022083

This data as json

html_url issue_url id node_id user created_at updated_at author_association body reactions performed_via_github_app issue
https://github.com/pydata/xarray/issues/1094#issuecomment-259022083 https://api.github.com/repos/pydata/xarray/issues/1094 259022083 MDEyOklzc3VlQ29tbWVudDI1OTAyMjA4Mw== 1217238 2016-11-08T01:52:40Z 2016-11-08T01:52:40Z MEMBER

For unstructured meshes of points, pandas.MultiIndex is not the right abstraction.

Suppose you have a (very long) list of sorted points (x, y, z) in a multi-index. You can efficiently query within fixed bounds along x by doing binary search. But for queries in y and z, you cannot do any better than looking through the entire list. Moreover, pandas.MultiIndex factorizes each level into unique values, which is a complete waste on an unstructured grid where few coordinate overlap.

For unstructured meshes, you need something like a KDTree (see discussion in https://github.com/pydata/xarray/issues/475), with ideally with nearby points in space stored in contiguous array chunks.

I would start with trying to get an in-memory KDTree working, and then switch to something out of core only when/if necessary. For example, SciPy's cKDTree can load 1e7 points in 3-dimensions in only a few seconds:

``` x = np.random.rand(int(1e7), 3) %time tree = scipy.spatial.cKDTree(x, leafsize=100)

CPU times: user 2.58 s, sys: 0 ns, total: 2.58 s

Wall time: 2.55 s

```

The might be good enough.

{
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  187873247
Powered by Datasette · Queries took 0.668ms · About: xarray-datasette