| 479 | number = 5 |
| 480 | |
| 481 | def make_datatree(self, nchildren=10): |
| 482 | # multiple Dataset |
| 483 | self.ds = xr.Dataset() |
| 484 | self.nt = 1000 |
| 485 | self.nx = 90 |
| 486 | self.ny = 45 |
| 487 | self.nchildren = nchildren |
| 488 | |
| 489 | self.block_chunks = { |
| 490 | "time": self.nt / 4, |
| 491 | "lon": self.nx / 3, |
| 492 | "lat": self.ny / 3, |
| 493 | } |
| 494 | |
| 495 | self.time_chunks = {"time": int(self.nt / 36)} |
| 496 | |
| 497 | times = pd.date_range("1970-01-01", periods=self.nt, freq="D") |
| 498 | lons = xr.DataArray( |
| 499 | np.linspace(0, 360, self.nx), |
| 500 | dims=("lon",), |
| 501 | attrs={"units": "degrees east", "long_name": "longitude"}, |
| 502 | ) |
| 503 | lats = xr.DataArray( |
| 504 | np.linspace(-90, 90, self.ny), |
| 505 | dims=("lat",), |
| 506 | attrs={"units": "degrees north", "long_name": "latitude"}, |
| 507 | ) |
| 508 | self.ds["foo"] = xr.DataArray( |
| 509 | randn((self.nt, self.nx, self.ny), frac_nan=0.2), |
| 510 | coords={"lon": lons, "lat": lats, "time": times}, |
| 511 | dims=("time", "lon", "lat"), |
| 512 | name="foo", |
| 513 | attrs={"units": "foo units", "description": "a description"}, |
| 514 | ) |
| 515 | self.ds["bar"] = xr.DataArray( |
| 516 | randn((self.nt, self.nx, self.ny), frac_nan=0.2), |
| 517 | coords={"lon": lons, "lat": lats, "time": times}, |
| 518 | dims=("time", "lon", "lat"), |
| 519 | name="bar", |
| 520 | attrs={"units": "bar units", "description": "a description"}, |
| 521 | ) |
| 522 | self.ds["baz"] = xr.DataArray( |
| 523 | randn((self.nx, self.ny), frac_nan=0.2).astype(np.float32), |
| 524 | coords={"lon": lons, "lat": lats}, |
| 525 | dims=("lon", "lat"), |
| 526 | name="baz", |
| 527 | attrs={"units": "baz units", "description": "a description"}, |
| 528 | ) |
| 529 | |
| 530 | self.ds.attrs = {"history": "created for xarray benchmarking"} |
| 531 | |
| 532 | self.oinds = { |
| 533 | "time": randint(0, self.nt, 120), |
| 534 | "lon": randint(0, self.nx, 20), |
| 535 | "lat": randint(0, self.ny, 10), |
| 536 | } |
| 537 | self.vinds = { |
| 538 | "time": xr.DataArray(randint(0, self.nt, 120), dims="x"), |