Convolution of xarray objects#
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import numpy as np
import xarray as xr
import xdggs
from xdggs.healpix import HealpixInfo
import healpix_convolution.xarray as hc
from healpix_convolution.plotting import xr_plot_healpix as plot_healpix
rng = np.random.default_rng(seed=0)
Global convolution#
We first have to define the data we want to convolve:
grid_info = HealpixInfo(level=3, indexing_scheme="nested")
cell_ids = np.arange(12 * 4**grid_info.level)
data1 = rng.normal(size=cell_ids.shape)
data2 = rng.normal(size=cell_ids.shape)
ds = xr.Dataset(
{"data1": ("cells", data1), "data2": ("cells", data2)},
coords={"cell_ids": ("cells", cell_ids, grid_info.to_dict())},
).pipe(xdggs.decode)
ds
<xarray.Dataset> Size: 18kB
Dimensions: (cells: 768)
Coordinates:
* cell_ids (cells) int64 6kB 0 1 2 3 4 5 6 7 ... 761 762 763 764 765 766 767
Dimensions without coordinates: cells
Data variables:
data1 (cells) float64 6kB 0.1257 -0.1321 0.6404 ... 0.008861 -0.1973
data2 (cells) float64 6kB -0.7557 0.5313 0.7384 ... -0.4298 1.775 -1.508
Indexes:
cell_ids HealpixIndex(level=3, indexing_scheme=nested, kind=pandas)xarray.Dataset
- cells: 768
- cell_ids(cells)int640 1 2 3 4 5 ... 763 764 765 766 767
- grid_name :
- healpix
- level :
- 3
- indexing_scheme :
- nested
array([ 0, 1, 2, ..., 765, 766, 767], shape=(768,))
- data1(cells)float640.1257 -0.1321 ... 0.008861 -0.1973
array([ 1.25730221e-01, -1.32104863e-01, 6.40422650e-01, 1.04900117e-01, -5.35669373e-01, 3.61595055e-01, 1.30400005e+00, 9.47080963e-01, -7.03735236e-01, -1.26542147e+00, -6.23274463e-01, 4.13259793e-02, -2.32503077e+00, -2.18791664e-01, -1.24591095e+00, -7.32267355e-01, -5.44258983e-01, -3.16300156e-01, 4.11630536e-01, 1.04251337e+00, -1.28534663e-01, 1.36646347e+00, -6.65194673e-01, 3.51510070e-01, 9.03470182e-01, 9.40122978e-02, -7.43499249e-01, -9.21725376e-01, -4.57725826e-01, 2.20195123e-01, -1.00961818e+00, -2.09175575e-01, -1.59225010e-01, 5.40845585e-01, 2.14659123e-01, 3.55372709e-01, -6.53828609e-01, -1.29613634e-01, 7.83975470e-01, 1.49343115e+00, -1.25906553e+00, 1.51392377e+00, 1.34587542e+00, 7.81311401e-01, 2.64455630e-01, -3.13922815e-01, 1.45802068e+00, 1.96025832e+00, 1.80163487e+00, 1.31510376e+00, 3.57380411e-01, -1.20831863e+00, -4.45413312e-03, 6.56474935e-01, -1.28836146e+00, 3.95122060e-01, 4.29863695e-01, 6.96042724e-01, -1.18411797e+00, -6.61702572e-01, -4.36435247e-01, -1.16980191e+00, 1.73936788e+00, -4.95910728e-01, 3.28969629e-01, -2.58572545e-01, 1.58347288e+00, 1.32036099e+00, 6.33352623e-01, -2.20350988e+00, 5.20289743e-02, 6.83686191e-01, 1.00396158e+00, -6.17907045e-01, 1.82201136e+00, -1.32043097e+00, -6.61528022e-01, 9.35049988e-01, 4.90546138e-02, 2.00239258e+00, ... 4.81245819e-01, 5.48729338e-01, -7.97009239e-01, -1.86572086e+00, -1.07480267e+00, 1.63052286e+00, 1.30068397e+00, -3.46921368e-01, -3.01676327e-01, 1.03660588e+00, -1.68409873e-01, -1.29925987e+00, 1.26554309e+00, 4.77178578e-01, -2.51633972e+00, -3.13190106e-01, 1.43670203e-01, 4.81246827e-01, 1.52151189e-01, -6.35741797e-01, -1.15759044e-01, 2.94800318e-01, -2.68004086e-01, -3.71900720e-01, 1.25208394e+00, -9.46607685e-01, -3.49463471e-01, -2.03126901e+00, 5.40969963e-01, 8.28264460e-01, 5.48486833e-01, 9.17672487e-01, 4.40706745e-01, 3.42515391e-01, 4.73947067e-01, -2.67308432e-01, 1.18832786e+00, -3.48572065e-01, -1.46235193e+00, 8.49783614e-01, 1.85070278e+00, -9.60151119e-01, -1.01631130e-01, -6.85442011e-01, -3.80583250e-01, 4.60929718e-02, -1.24180845e+00, -2.77653671e-01, -1.46596739e+00, -5.68227638e-01, -1.18606965e+00, -1.05906070e+00, -1.71991068e+00, 1.21935459e+00, 5.09059085e-01, -1.91746404e+00, -5.96827594e-01, -6.70438600e-01, -6.90944128e-01, -1.44688351e+00, 7.54385721e-01, -3.95863786e-01, 4.68148909e-01, 5.26755765e-01, 1.37544531e+00, -1.81487228e+00, 1.73860211e+00, 1.26881527e+00, 5.73065992e-01, 2.38359223e+00, 2.04978598e-01, 8.21478916e-01, -7.38413981e-01, 1.13435741e+00, 1.67825970e-01, -4.51200145e-01, 2.11693920e+00, -3.04799665e-01, 8.86132761e-03, -1.97279957e-01]) - data2(cells)float64-0.7557 0.5313 ... 1.775 -1.508
array([-7.55670913e-01, 5.31272401e-01, 7.38409604e-01, 3.54372528e-01, -2.36057826e+00, 1.00799700e+00, -3.50238350e-01, -1.21632341e+00, 6.03280959e-01, 5.62849420e-01, -1.04307370e+00, 2.47243568e+00, -1.20962655e+00, -1.73300270e+00, -1.15417143e+00, 1.42079984e+00, -1.75856726e-01, -3.72056688e-01, -6.21577211e-02, -5.96613908e-01, -6.90263413e-01, -6.41215494e-01, 7.07955523e-01, 1.02045589e+00, -1.05509256e+00, 2.39227972e-01, 7.88207241e-01, -1.08175195e+00, -5.02566592e-01, -1.03806416e+00, -1.29102854e+00, 1.01862869e-01, -7.36132371e-01, 6.31129089e-01, -2.94219226e-02, 4.12627355e-01, -2.92282913e-01, -6.34997383e-01, -9.06731351e-02, -4.99613028e-03, -7.05855495e-01, 4.26595455e-01, 7.46594856e-01, 1.58082705e-01, 1.71349089e+00, -6.32339010e-01, 5.20596418e-01, -4.08734801e-01, 2.34629504e-01, -8.29949340e-01, 1.11512338e+00, 1.76020906e-01, 1.19224450e+00, -1.26609558e+00, -4.93515209e-01, -8.92565800e-01, -5.31941865e-01, -6.92609697e-01, -1.20540934e-01, -1.72471437e-02, -4.09848647e-02, -5.55523874e-01, 1.87425178e-01, 8.75615496e-01, -9.02275566e-01, 8.88625002e-04, -7.40708892e-02, 4.68354634e-01, -6.38585848e-02, -1.56648036e-02, -9.91095782e-01, 2.17038391e-02, -9.21884489e-01, 5.15704248e-01, -1.03218934e-01, 3.98584176e-02, -8.91190367e-01, 8.03757580e-01, 6.92313909e-01, 8.61523929e-01, ... 2.82651321e-01, -1.86721258e+00, 1.09524662e+00, -3.30838739e-01, -2.58908029e+00, 1.06148355e+00, 1.67677373e+00, -8.76129516e-01, 1.21270989e+00, -7.49755451e-01, -2.26652063e+00, -3.57892474e-01, 3.26136452e-01, 1.33551129e-01, 1.03597949e-01, 2.96422858e-01, 2.16555664e-01, -2.16038303e-01, -6.01381373e-01, -2.65800848e-01, -3.51672566e-01, -3.02922623e-01, -1.10295343e+00, -5.42594385e-01, 8.22261888e-02, 3.09418910e-01, -6.40289475e-02, -1.83659914e-01, 5.34449874e-01, 8.14468661e-01, 6.80079879e-01, -1.74990909e+00, -4.55405091e-01, 7.05654587e-01, 5.15397324e-01, 6.79810601e-01, 3.14351508e-01, -8.53536802e-01, 1.22256453e+00, -1.35958887e+00, 9.85757792e-01, -1.63751312e-02, -1.47265422e+00, -3.96158801e-01, 1.20375175e+00, -5.88401670e-01, -1.21060240e+00, -2.88790284e-01, -8.18074959e-01, -1.25059998e+00, 4.37537752e-01, 7.98172308e-01, -5.51731417e-01, 5.23622924e-01, -3.87027015e-01, -9.97141292e-02, 1.23402411e-01, 1.49328354e+00, 5.07558865e-01, -9.99113109e-01, 5.15829236e-01, -2.21188270e-01, -4.66360409e-01, -8.39761358e-01, -2.62602626e-02, -6.01324353e-02, -4.02182365e-01, -1.39114734e+00, -1.70717229e+00, 1.27984492e-01, 1.78204753e-01, 2.18312869e+00, -1.78663009e-01, 1.02142408e+00, 1.19520372e+00, -6.10667554e-02, 7.68010034e-02, -4.29843737e-01, 1.77515921e+00, -1.50843217e+00])
- cell_idsHealpixIndex(level=3, indexing_scheme=nested, kind=pandas)
<xdggs.healpix.HealpixIndex object at 0x728d1ae66d20>
And configure the kernel:
kernel = hc.kernels.gaussian_kernel(
ds["cell_ids"], sigma=0.5, kernel_size=5, weights_threshold=1e-8
)
kernel
<xarray.DataArray (output_cells: 768, input_cells: 768)> Size: 456kB
<COO: shape=(768, 768), dtype=float64, nnz=18984, fill_value=0.0>
Coordinates:
output_cell_ids (output_cells) int64 6kB 0 1 2 3 4 ... 763 764 765 766 767
input_cell_ids (input_cells) int64 6kB 0 1 2 3 4 5 ... 763 764 765 766 767
Dimensions without coordinates: output_cells, input_cells
Attributes:
kernel_type: gaussian
method: continuous
sigma: 0.5
ring: 2
kernel_size: 5xarray.DataArray
- output_cells: 768
- input_cells: 768
- <COO: nnz=18984, fill_value=0.0>
Format coo Data Type float64 Shape (768, 768) nnz 18984 Density 0.032185872395833336 Read-only True Size 444.9K Storage ratio 0.10 - output_cell_ids(output_cells)int640 1 2 3 4 5 ... 763 764 765 766 767
- grid_name :
- healpix
- level :
- 3
- indexing_scheme :
- nested
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, ... 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767]) - input_cell_ids(input_cells)int640 1 2 3 4 5 ... 763 764 765 766 767
- grid_name :
- healpix
- level :
- 3
- indexing_scheme :
- nested
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, ... 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767])
- kernel_type :
- gaussian
- method :
- continuous
- sigma :
- 0.5
- ring :
- 2
- kernel_size :
- 5
The convolution is then just:
convolved = hc.convolve(ds, kernel).pipe(xdggs.decode)
convolved
<xarray.Dataset> Size: 18kB
Dimensions: (cells: 768)
Coordinates:
* cell_ids (cells) int64 6kB 0 1 2 3 4 5 6 7 ... 761 762 763 764 765 766 767
Dimensions without coordinates: cells
Data variables:
data1 (cells) float64 6kB -0.1657 -0.05277 -0.3286 ... 0.02172 0.01102
data2 (cells) float64 6kB -0.04611 -0.09172 -0.05156 ... 0.01582 -0.2399
Indexes:
cell_ids HealpixIndex(level=3, indexing_scheme=nested, kind=pandas)xarray.Dataset
- cells: 768
- cell_ids(cells)int640 1 2 3 4 5 ... 763 764 765 766 767
- grid_name :
- healpix
- level :
- 3
- indexing_scheme :
- nested
array([ 0, 1, 2, ..., 765, 766, 767], shape=(768,))
- data1(cells)float64-0.1657 -0.05277 ... 0.01102
array([-1.65742184e-01, -5.27721942e-02, -3.28615085e-01, -1.21763356e-01, -3.19559069e-02, 8.37310462e-02, -1.55666055e-01, -1.18504292e-01, -3.93480229e-01, -1.94321660e-01, -3.31960899e-01, -9.05820323e-02, -1.40237700e-01, -5.53056023e-02, -1.14506321e-04, 6.55028162e-02, -2.43454361e-02, 6.99878033e-02, -1.56271021e-01, 2.32137162e-03, 5.44997067e-02, -1.42461683e-01, -1.96630448e-02, -1.32296668e-01, -8.97787361e-02, 1.23978054e-01, -3.21546071e-02, 8.24752483e-02, 1.00711765e-01, -2.86491806e-02, -1.70904651e-02, -1.70733358e-01, -4.08826357e-01, -2.23946619e-01, -1.54496696e-02, 1.86166150e-01, -6.60764087e-02, 4.52979736e-02, 2.67766499e-01, 2.69082518e-01, 1.35003821e-01, 3.60419175e-01, 9.73921864e-02, 3.14302396e-01, 4.10916944e-01, 4.64254466e-01, 3.47429009e-01, 3.67545574e-01, -1.01334059e-01, -9.49568617e-03, 9.27643767e-02, 2.19965501e-02, -1.49807638e-01, -2.70293621e-01, -1.71448213e-01, -1.68172067e-01, 2.85109684e-01, 2.67194667e-01, 2.54128626e-01, 2.41170168e-01, -2.78582923e-02, -1.44084371e-01, -4.87378258e-02, -1.81083787e-01, 5.04851996e-01, 2.32175376e-01, 3.87443649e-01, 3.19697499e-01, 1.90147968e-01, 1.49372097e-01, 1.80112998e-01, 1.60496526e-01, 4.12624806e-01, 4.32062087e-01, 2.33557896e-01, 3.03855739e-01, 2.05061350e-01, 8.46710313e-02, 1.23790453e-01, 8.08660694e-02, ... 1.47037194e-01, 1.18876230e-01, 2.26944563e-02, -4.21051522e-02, 1.46509003e-01, 3.39943147e-01, -4.00362051e-03, 1.44522664e-01, -9.89657182e-02, -8.55984773e-02, -1.28346454e-01, -1.35999106e-01, -8.91904654e-02, 1.02293814e-04, -1.79251574e-01, -9.36131564e-02, -1.13821011e-01, -4.74336080e-02, -2.36195936e-01, -1.01113106e-01, 7.11548975e-02, 2.53320498e-02, 1.56395319e-01, 9.04680150e-02, -4.00357390e-01, -1.98720232e-01, -4.81327931e-01, -3.74497175e-01, 5.56701331e-02, -1.86331466e-02, -6.82541003e-02, -5.92166839e-02, 6.60428417e-02, 4.74002349e-02, 1.16847562e-01, 2.50673873e-02, -1.05967919e-02, 7.60926256e-03, -1.22422204e-01, -1.42983060e-01, 6.27420200e-02, 1.62739402e-01, 4.24839867e-02, 1.81558727e-01, -5.85196076e-02, -5.43814459e-02, 2.58928651e-02, -8.06539565e-02, -4.29844191e-01, -4.07859563e-01, -5.20384061e-01, -4.64168390e-01, -1.02080293e-01, -1.84861891e-02, -2.57631288e-01, -8.76802415e-02, -2.68621163e-01, -2.99514448e-01, -8.99634952e-02, -2.17093541e-01, -1.29720626e-01, 3.68807237e-02, -1.22109764e-01, 2.07305067e-02, 2.08690197e-01, 2.93469770e-01, 1.84976109e-01, 2.62702067e-01, 1.68687210e-01, 1.44129851e-02, 1.14627767e-01, 1.25410059e-02, 2.84879850e-01, 3.33720638e-01, 1.14502735e-01, 4.92471126e-03, 2.75146319e-01, 1.48578749e-01, 2.17181160e-02, 1.10240201e-02]) - data2(cells)float64-0.04611 -0.09172 ... -0.2399
array([-4.61111793e-02, -9.17218536e-02, -5.15642496e-02, -1.23061170e-01, -1.60069156e-01, -2.43111319e-01, -1.82342305e-01, -2.30831612e-01, -2.23944440e-01, -2.50462881e-01, -5.29467168e-02, -1.58443514e-01, -1.43674795e-01, -2.09347503e-01, -2.30644609e-02, -9.02157970e-02, -3.49917853e-01, -1.28540896e-01, -4.71154266e-01, -2.49143803e-01, -1.22909830e-01, -1.36561973e-01, -2.77819099e-01, -2.98724544e-01, -3.98536955e-01, -2.58595086e-01, -2.64797364e-01, -2.09105862e-01, -2.60182738e-01, -3.05653620e-01, -1.82566798e-01, -2.63791057e-01, -1.05056498e-01, -1.03683011e-01, 5.04013375e-02, 7.88148787e-02, 3.13756515e-02, 1.42555315e-02, 1.81339096e-01, 1.37293423e-01, -5.54845877e-02, -1.31035991e-01, 4.52837061e-02, -8.07819999e-02, -6.31904124e-02, -7.77788829e-02, -1.09473733e-01, -1.73965113e-01, -1.93626613e-01, -2.98039681e-01, -3.28760561e-02, -1.53383388e-01, -3.46184421e-01, -4.13051282e-01, -2.79069465e-01, -3.96474657e-01, -9.70330715e-02, -2.40559059e-01, -1.66697024e-01, -3.17096527e-01, -2.23741532e-01, -2.95273459e-01, -3.15316471e-01, -4.18895887e-01, 1.10704260e-01, -7.85729262e-03, 1.31066668e-01, 6.94919895e-02, -8.01045853e-02, -6.40670847e-04, 5.57977747e-02, 2.03421383e-01, 6.18948790e-02, 7.86475733e-02, 4.40082098e-02, 1.52342180e-01, 9.38974715e-02, 2.51459093e-01, 9.82443036e-02, 1.80794582e-01, ... 2.61564594e-01, 2.66267600e-01, 4.41348906e-02, 4.15206182e-02, 2.38656547e-01, 4.29077184e-02, 8.21347567e-02, -4.94119941e-02, 3.35698786e-02, -4.30266902e-02, 1.81246314e-01, 2.22872127e-02, 1.59550695e-01, 9.79780308e-03, 2.24526292e-01, 8.53870016e-02, -1.29243925e-01, 7.28480912e-03, 4.33077517e-02, -6.09130011e-03, 1.14644390e-01, 1.32437098e-01, 4.66135190e-02, 8.05886820e-02, -3.41161816e-02, -2.14769678e-01, -2.56494669e-02, -1.93392407e-01, -2.04799877e-01, -1.17423659e-01, -1.47966085e-01, -1.53096499e-01, 3.98046930e-01, 3.60574983e-01, 1.99287783e-01, 1.15133225e-01, 2.11487830e-01, 2.32566753e-01, 7.11748749e-02, 6.73323614e-02, -4.32334883e-02, -1.42740624e-01, -1.47714107e-01, -1.35283243e-01, -1.76548027e-01, -1.83271261e-01, -1.63629157e-01, -3.27630331e-01, 1.82310230e-01, -5.97820614e-03, 8.08093475e-02, -8.96148366e-02, -8.36935794e-03, -4.92720745e-02, -1.32609055e-01, -1.77674634e-01, -2.32279425e-02, -8.62939494e-02, -2.07630677e-02, -8.05713353e-02, -3.92808112e-02, -1.91489940e-01, -1.74026571e-02, -1.70332230e-01, -1.63937548e-01, -1.49536254e-01, -2.14195982e-01, -1.83129950e-01, -7.97422950e-02, -2.65846681e-01, -4.77649517e-02, -2.68311875e-01, -1.78389823e-01, -8.75469202e-02, -1.14739248e-01, -9.49434825e-02, -9.03845844e-02, -3.70847568e-01, 1.58235380e-02, -2.39876757e-01])
- cell_idsHealpixIndex(level=3, indexing_scheme=nested, kind=pandas)
<xdggs.healpix.HealpixIndex object at 0x728d23936c30>
And we can compare the two variables:
fig, axes = plt.subplots(
nrows=2, ncols=2, figsize=(14, 9), subplot_kw={"projection": ccrs.Robinson()}
)
plot_healpix(ds["data1"], ax=axes[0, 0], title="original1", features=["coastlines"])
plot_healpix(
convolved["data1"], ax=axes[0, 1], title="convolved1", features=["coastlines"]
)
plot_healpix(ds["data2"], ax=axes[1, 0], title="original2", features=["coastlines"])
plot_healpix(
convolved["data2"], ax=axes[1, 1], title="convolved2", features=["coastlines"]
)
fig.subplots_adjust(hspace=-0.15, wspace=0.1)
Regional convolution#
Similarly to above, we also first have to define the data:
grid_info = HealpixInfo(level=4, indexing_scheme="nested")
cell_ids = 4 * 4**grid_info.level + np.arange(4**grid_info.level)
data1 = rng.normal(size=cell_ids.shape)
data2 = rng.normal(size=cell_ids.shape)
ds = xr.Dataset(
{"data1": ("cells", data1), "data2": ("cells", data2)},
coords={"cell_ids": ("cells", cell_ids, grid_info.to_dict())},
).pipe(xdggs.decode)
ds
<xarray.Dataset> Size: 6kB
Dimensions: (cells: 256)
Coordinates:
* cell_ids (cells) int64 2kB 1024 1025 1026 1027 1028 ... 1276 1277 1278 1279
Dimensions without coordinates: cells
Data variables:
data1 (cells) float64 2kB -0.03965 1.384 -0.1077 ... -1.03 -1.511 -2.234
data2 (cells) float64 2kB -1.176 -0.8523 -0.05254 ... 0.1866 0.3077
Indexes:
cell_ids HealpixIndex(level=4, indexing_scheme=nested, kind=pandas)xarray.Dataset
- cells: 256
- cell_ids(cells)int641024 1025 1026 ... 1277 1278 1279
- grid_name :
- healpix
- level :
- 4
- indexing_scheme :
- nested
array([1024, 1025, 1026, ..., 1277, 1278, 1279], shape=(256,))
- data1(cells)float64-0.03965 1.384 ... -1.511 -2.234
array([-3.96461486e-02, 1.38412299e+00, -1.07680063e-01, -5.70937500e-01, 2.32882637e-01, 5.26988013e-01, 5.67443074e-01, 2.81643315e-01, 7.50091120e-01, 9.45701056e-01, -1.10688291e+00, -3.78891825e-01, 8.69691326e-01, 4.88620024e-01, 2.34600108e-01, 6.72478892e-01, 9.52153735e-01, -8.58047059e-01, -1.22694441e+00, -1.15368146e+00, 1.85867413e+00, -1.05443257e+00, -2.34587123e-01, -1.85478299e-01, 1.03106017e+00, -1.73832110e+00, -3.92682110e-02, 1.21438835e+00, 1.11489976e+00, 4.09311994e-01, -2.60939087e-01, 1.75768345e+00, -1.67194718e+00, 9.80985275e-01, 5.08177889e-01, 5.91036684e-01, 2.65808830e-01, 2.05180147e-01, 9.30787996e-01, -1.15304479e+00, -1.24655195e+00, 1.62453235e-01, 5.21507917e-02, 1.63660162e-01, 1.59043298e+00, -5.79309354e-01, 7.51318761e-01, 3.84447704e-01, 2.36656240e+00, -1.40218665e+00, -5.46007118e-01, -4.56790034e-01, 1.32060290e+00, -8.19918571e-01, 1.65794300e+00, 1.59810831e+00, 8.65612651e-01, 4.37376040e-01, -1.55617819e+00, 1.82149507e-01, -1.43067166e+00, -3.62626390e-01, 2.03100733e-01, -3.08871379e-01, 9.50805622e-01, -1.29176147e-01, -1.54858222e+00, -1.06005723e+00, -1.27390839e+00, -3.16430378e-01, 1.24758486e+00, 5.05746048e-01, 3.39509472e-01, -1.28538139e+00, 2.36916385e+00, -2.82631622e-02, 2.41691267e+00, -8.67421446e-01, -5.67846481e-01, 2.59966149e+00, ... 7.71073865e-01, -2.01186124e-01, -4.28389263e-01, 1.31697153e+00, -1.50377794e+00, -9.38143501e-02, 5.48758859e-01, 2.41347046e-02, -1.16327521e+00, -2.25675633e-02, 8.07512175e-01, 3.57249973e-01, 3.17691426e-01, 3.07448030e-01, 1.35191692e-01, -1.24126080e+00, -3.09102186e-01, 4.30837693e-01, -3.11450920e+00, 7.57177966e-01, 3.37424462e-01, -1.08417971e+00, -7.46350100e-01, -2.03841296e-01, 4.13434959e-01, -3.74026647e-01, 1.16700311e+00, 4.13125612e-01, -7.86571406e-01, -4.71181919e-01, 2.27579623e-01, 7.28374032e-01, 6.80015476e-01, -9.75937517e-02, 1.49495048e-01, -2.51010414e-02, 8.21989925e-01, -9.86244516e-01, 6.02842693e-01, -1.85240306e+00, 4.51032959e-01, 2.56212816e-01, -3.74151911e-04, -2.13260933e+00, 1.56672407e+00, 8.98411145e-01, 2.54483331e-02, 4.58707331e-01, -9.39382151e-01, 5.12273153e-01, 1.56008715e+00, -1.17808559e+00, 2.69275748e+00, -4.36928960e-01, 8.27407873e-01, -8.26110782e-01, 3.90405633e-01, -1.27393939e+00, -6.58994014e-01, -2.28577280e-01, -6.55821610e-01, -2.41429967e-01, 9.75952864e-01, -1.27708522e+00, -1.19575317e+00, 4.70592549e-02, -5.64189671e-01, -1.00374906e+00, 1.32032790e-01, -5.64366856e-01, 3.36140196e-01, -3.97600715e-02, -2.01214902e-01, -6.82399578e-02, 1.02324041e+00, 1.31410450e+00, -1.59604289e-01, -1.02996757e+00, -1.51129160e+00, -2.23357815e+00]) - data2(cells)float64-1.176 -0.8523 ... 0.1866 0.3077
array([-1.17595595e+00, -8.52319702e-01, -5.25355489e-02, -1.88053883e+00, 1.42969120e+00, 1.06355575e+00, 1.24517036e+00, -5.12890215e-01, 2.44001261e-01, -9.47364319e-01, 1.54980957e+00, -1.21302506e+00, -5.13625323e-01, 1.42341588e+00, 2.48981211e+00, -9.17264789e-02, -4.14234226e-01, -2.50713194e+00, 1.71045202e+00, 3.08182178e-01, -1.88394082e+00, 8.71356893e-01, 6.13881282e-01, -3.54399623e-01, -5.57836369e-01, 7.30125325e-01, 2.33945334e-01, 4.86833642e-01, 1.22649473e+00, 1.19318995e+00, 7.60513105e-01, 5.85284704e-01, -1.27818472e+00, -1.11545917e+00, 8.18522718e-01, 6.47202778e-01, 5.18181741e-01, 8.40347190e-01, -5.54003347e-01, 5.64923432e-01, -9.88881012e-01, 6.23801402e-02, 9.29325950e-01, -6.76864468e-01, 1.95290793e+00, 1.13407949e+00, 1.37210715e+00, -2.11156401e-01, -1.38894944e+00, -6.98589831e-01, 5.51666972e-01, -2.79003033e-01, 7.21365168e-01, 1.50454917e-01, -5.89753753e-01, 9.34215289e-01, 1.35174470e+00, -7.32149212e-01, 5.11907622e-01, 1.56594179e-01, 2.80879660e-01, -1.04107466e-01, -1.25268143e+00, 1.40952376e+00, -1.04359187e+00, -8.70626338e-01, 6.56270592e-01, 1.79874800e-01, -7.96037042e-01, -6.57547376e-01, -1.58697491e-01, -4.36082180e-01, 6.46526324e-01, -1.16421912e+00, 3.63320679e-01, 1.53053482e+00, 2.01362193e-01, -8.88293408e-01, -7.23038482e-01, 4.36644761e-02, ... -6.83254494e-01, 7.84800952e-01, -1.83591170e+00, 1.25039568e+00, -2.43353864e-01, -3.16866355e-01, -8.96681417e-01, -1.45451328e-01, 1.47039352e+00, 2.12852386e-01, -9.32540192e-01, -3.47355163e-01, 5.34453067e-01, 8.53250722e-02, -2.57310592e-01, 6.04572913e-01, 3.61086685e-01, -1.07771601e+00, -1.91491635e+00, 5.00488203e-01, 1.85744412e+00, -8.20731394e-01, -1.41011717e-01, 1.35408138e+00, 1.73963397e+00, 6.52358877e-02, 1.24972527e+00, 7.50633971e-01, -5.55815730e-01, -2.01881162e+00, -9.09427562e-01, 3.69229331e-01, 4.19254834e-01, -5.02244552e-01, -8.57699959e-01, -1.60030524e+00, -1.68033368e+00, -1.22120120e-01, -1.57473392e+00, -1.51059897e-02, -7.97980872e-01, -4.26164543e-01, 2.12536769e+00, 4.82625296e-02, -3.43552918e-01, -1.73335833e-01, -1.47365721e+00, 1.33914926e+00, 8.47816419e-01, -5.31995132e-01, 2.29288169e-01, -6.71577726e-01, 3.96281230e-01, -1.34297272e+00, 2.67470703e-01, 1.50126984e+00, 4.46281274e-01, -5.90089387e-01, 9.49769979e-01, 1.95054300e+00, 7.30934033e-01, 9.72340129e-02, -8.02218327e-01, 4.35639029e-01, 1.92226674e+00, -2.01688017e+00, 9.77289422e-01, 1.47791874e-01, 1.51335668e+00, -1.27935016e-01, -2.16372250e+00, 1.99143739e+00, -1.15938289e+00, 8.00320222e-01, -1.27570284e-01, -3.95862956e-02, 1.37623857e-01, -5.45866068e-01, 1.86583857e-01, 3.07675020e-01])
- cell_idsHealpixIndex(level=4, indexing_scheme=nested, kind=pandas)
<xdggs.healpix.HealpixIndex object at 0x728d18fc93a0>
and we can define the kernel:
kernel = hc.kernels.gaussian_kernel(
ds["cell_ids"], sigma=0.5, kernel_size=5, weights_threshold=1e-8
)
kernel
<xarray.DataArray (output_cells: 256, input_cells: 392)> Size: 153kB
<COO: shape=(256, 392), dtype=float64, nnz=6382, fill_value=0.0>
Coordinates:
output_cell_ids (output_cells) int64 2kB 1024 1025 1026 ... 1277 1278 1279
input_cell_ids (input_cells) int64 3kB 0 1 2 3 8 ... 3068 3069 3070 3071
Dimensions without coordinates: output_cells, input_cells
Attributes:
kernel_type: gaussian
method: continuous
sigma: 0.5
ring: 2
kernel_size: 5xarray.DataArray
- output_cells: 256
- input_cells: 392
- <COO: nnz=6382, fill_value=0.0>
Format coo Data Type float64 Shape (256, 392) nnz 6382 Density 0.06359614158163265 Read-only True Size 149.6K Storage ratio 0.19 - output_cell_ids(output_cells)int641024 1025 1026 ... 1277 1278 1279
- grid_name :
- healpix
- level :
- 4
- indexing_scheme :
- nested
array([1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279]) - input_cell_ids(input_cells)int640 1 2 3 8 ... 3068 3069 3070 3071
- grid_name :
- healpix
- level :
- 4
- indexing_scheme :
- nested
array([ 0, 1, 2, 3, 8, 9, 10, 11, 32, 33, 34, 35, 40, 41, 42, 43, 128, 129, 130, 131, 136, 137, 138, 139, 160, 161, 162, 163, 168, 169, 170, 171, 768, 769, 770, 771, 772, 773, 774, 775, 784, 785, 786, 787, 788, 789, 790, 791, 832, 833, 834, 835, 836, 837, 838, 839, 848, 849, 850, 851, 852, 853, 854, 855, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1448, 1449, 1450, 1451, 1876, 1877, 1878, 1879, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2900, 2901, 2902, 2903, 2908, 2909, 2910, 2911, 2932, 2933, 2934, 2935, 2940, 2941, 2942, 2943, 3028, 3029, 3030, 3031, 3036, 3037, 3038, 3039, 3060, 3061, 3062, 3063, 3068, 3069, 3070, 3071])
- kernel_type :
- gaussian
- method :
- continuous
- sigma :
- 0.5
- ring :
- 2
- kernel_size :
- 5
However, since we now have boundaries we have to pad the data before convolving:
padding = hc.pad(
ds["cell_ids"],
ring=kernel.attrs["ring"],
mode="constant",
constant_value=0,
)
padded_ds = padding.apply(ds)
padded_ds
<xarray.Dataset> Size: 9kB
Dimensions: (cells: 392)
Coordinates:
* cell_ids (cells) int64 3kB 0 1 2 3 8 9 10 ... 3062 3063 3068 3069 3070 3071
Dimensions without coordinates: cells
Data variables:
data1 (cells) float64 3kB 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0
data2 (cells) float64 3kB 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0
Indexes:
cell_ids HealpixIndex(level=4, indexing_scheme=nested, kind=pandas)xarray.Dataset
- cells: 392
- cell_ids(cells)int640 1 2 3 8 ... 3068 3069 3070 3071
- grid_name :
- healpix
- level :
- 4
- indexing_scheme :
- nested
array([ 0, 1, 2, ..., 3069, 3070, 3071], shape=(392,))
- data1(cells)float640.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
array([ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -3.96461486e-02, 1.38412299e+00, -1.07680063e-01, -5.70937500e-01, 2.32882637e-01, 5.26988013e-01, 5.67443074e-01, 2.81643315e-01, 7.50091120e-01, 9.45701056e-01, -1.10688291e+00, -3.78891825e-01, 8.69691326e-01, 4.88620024e-01, 2.34600108e-01, 6.72478892e-01, ... -2.01214902e-01, -6.82399578e-02, 1.02324041e+00, 1.31410450e+00, -1.59604289e-01, -1.02996757e+00, -1.51129160e+00, -2.23357815e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]) - data2(cells)float640.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
array([ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.17595595e+00, -8.52319702e-01, -5.25355489e-02, -1.88053883e+00, 1.42969120e+00, 1.06355575e+00, 1.24517036e+00, -5.12890215e-01, 2.44001261e-01, -9.47364319e-01, 1.54980957e+00, -1.21302506e+00, -5.13625323e-01, 1.42341588e+00, 2.48981211e+00, -9.17264789e-02, ... -1.15938289e+00, 8.00320222e-01, -1.27570284e-01, -3.95862956e-02, 1.37623857e-01, -5.45866068e-01, 1.86583857e-01, 3.07675020e-01, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00])
- cell_idsHealpixIndex(level=4, indexing_scheme=nested, kind=pandas)
<xdggs.healpix.HealpixIndex object at 0x728d190ad250>
After that, convolving works as before (but on the padded dataset):
convolved = hc.convolve(padded_ds, kernel).pipe(xdggs.decode)
convolved
<xarray.Dataset> Size: 6kB
Dimensions: (cells: 256)
Coordinates:
* cell_ids (cells) int64 2kB 1024 1025 1026 1027 1028 ... 1276 1277 1278 1279
Dimensions without coordinates: cells
Data variables:
data1 (cells) float64 2kB 0.1892 0.2312 0.1216 ... -0.182 -0.2131
data2 (cells) float64 2kB -0.1219 -0.02719 0.006069 ... 0.02166 0.03977
Indexes:
cell_ids HealpixIndex(level=4, indexing_scheme=nested, kind=pandas)xarray.Dataset
- cells: 256
- cell_ids(cells)int641024 1025 1026 ... 1277 1278 1279
- grid_name :
- healpix
- level :
- 4
- indexing_scheme :
- nested
array([1024, 1025, 1026, ..., 1277, 1278, 1279], shape=(256,))
- data1(cells)float640.1892 0.2312 ... -0.182 -0.2131
array([ 0.18917519, 0.23124201, 0.12159683, 0.19965354, 0.2440822 , 0.07251083, 0.22271715, 0.13894768, 0.09301603, 0.18195246, 0.10861435, 0.13315423, 0.30529059, 0.23569742, 0.20008887, 0.12636993, 0.10572773, 0.00623887, 0.17793624, 0.13709293, -0.05471424, -0.17909096, 0.14268506, 0.01836877, 0.28672614, 0.20618886, 0.20021829, 0.19817056, 0.24117199, 0.05802575, 0.28235268, 0.13673254, 0.13168862, 0.12250937, 0.07055764, 0.05592404, 0.27014517, 0.30356643, 0.10363301, 0.23555133, -0.00170952, -0.05059437, 0.08897551, 0.11622012, -0.06538889, -0.01171794, 0.01428799, -0.00813126, 0.30432851, 0.25565492, 0.23120582, 0.15711959, 0.47886306, 0.36923012, 0.35182897, 0.30882843, 0.02043955, -0.11353545, 0.08322825, -0.08980536, 0.01042258, 0.04248436, -0.19935217, -0.08239776, 0.05615261, -0.07594746, 0.18921868, 0.16397466, -0.13699946, -0.21758428, -0.0358015 , -0.24079791, 0.31222635, 0.24803098, 0.39060187, 0.32220935, 0.16271921, -0.07826473, 0.21515442, -0.06505782, 0.00473267, -0.06447882, -0.0257094 , -0.08251276, -0.03346297, 0.06300632, -0.14791055, 0.01921319, -0.00663938, -0.09281959, -0.05293155, -0.09783074, -0.17119118, -0.08615244, -0.16903837, -0.1605371 , 0.53949824, 0.45944382, 0.3430748 , 0.31429445, ... -0.36494619, -0.37212578, -0.29019884, -0.33499622, -0.40586525, -0.31576614, -0.35105091, -0.30968378, -0.15635014, -0.19175632, -0.1090363 , -0.12887606, -0.19700983, -0.16009637, -0.16230652, -0.13112291, -0.28244041, -0.17263824, -0.32226228, -0.25553816, -0.06683472, -0.10175334, -0.16033444, -0.21528227, -0.18198575, -0.03003275, -0.1143978 , 0.02425691, 0.01299333, -0.07371833, 0.0875994 , 0.01292186, -0.07136049, -0.23997456, -0.1929046 , -0.30564195, -0.22072416, -0.15322108, -0.20844004, -0.16882236, -0.08750064, -0.13008757, -0.02673654, -0.02809647, -0.02708695, 0.00222331, -0.0325277 , -0.11255552, -0.05140415, -0.19256534, -0.037325 , -0.11163553, -0.07481769, -0.0419088 , -0.05594351, -0.0447785 , 0.05537218, -0.08448886, -0.01906901, -0.14460288, -0.02766835, -0.03170014, -0.0960068 , -0.04894061, 0.02210345, 0.07040782, -0.03265263, -0.03786936, 0.01241664, -0.20533641, 0.03283873, -0.10160369, 0.01610663, -0.07087927, -0.00961961, -0.14087225, -0.06844657, -0.07313804, -0.0956129 , -0.13273312, -0.06318956, -0.16479237, -0.0815571 , -0.37384028, -0.1132299 , -0.0508701 , -0.29485638, -0.25647354, -0.03642062, -0.33673705, -0.08092278, -0.25674487, -0.23907378, -0.21218866, -0.18200581, -0.21310962]) - data2(cells)float64-0.1219 -0.02719 ... 0.03977
array([-0.12186034, -0.02719403, 0.00606929, 0.0868633 , 0.00933708, -0.00670876, 0.12731023, 0.07084339, -0.06610094, 0.04436362, -0.00379533, 0.0858023 , 0.03649868, 0.00270818, 0.10924961, 0.08492884, 0.13193207, 0.10957264, 0.28679575, 0.193042 , 0.04298871, -0.05776448, 0.1448819 , 0.09362393, 0.29020352, 0.18245258, 0.36780419, 0.34139012, 0.09296151, 0.13468816, 0.28513153, 0.294992 , 0.06379676, 0.21830687, 0.17444058, 0.26797822, 0.23035105, 0.19867264, 0.32148375, 0.24182109, 0.11480051, 0.18895139, 0.21162166, 0.24688688, 0.15667325, 0.1245823 , 0.2138098 , 0.1468045 , 0.38775413, 0.34127127, 0.31995616, 0.20853186, 0.14212347, 0.15855682, 0.09725557, 0.15170119, 0.10051935, 0.01438626, -0.04595163, -0.19594267, -0.07484457, -0.03610602, -0.30626403, -0.28589045, -0.03066843, -0.10846227, 0.07286931, -0.03617635, -0.30536796, -0.24511329, -0.27199491, -0.2466372 , 0.16376036, 0.0029698 , 0.20903777, 0.01965084, -0.22475167, -0.19915508, -0.19755384, -0.22563217, -0.36987004, -0.29087842, -0.52305035, -0.37278486, -0.21045188, -0.08250519, -0.29210594, -0.14758934, -0.59308991, -0.39295668, -0.522801 , -0.34676958, -0.28985719, -0.15762217, -0.26635621, -0.14603076, 0.11917273, -0.043572 , 0.12019666, 0.06200705, ... 0.07051964, 0.17976906, -0.04865936, 0.03742308, 0.09607673, 0.1280348 , -0.06602315, -0.07846886, -0.18172184, -0.11094811, -0.17144237, -0.11551882, -0.18811552, -0.1611629 , -0.16498917, -0.13923187, -0.07524283, -0.00751015, -0.10390317, 0.05173156, 0.06134617, 0.11201212, 0.11248709, 0.25500114, -0.1431751 , 0.04960816, -0.1180843 , 0.05225027, 0.07098596, 0.15682503, 0.05621423, 0.13644438, -0.16520233, -0.0489027 , -0.00702812, 0.10811787, -0.0967421 , -0.28518487, 0.09615699, -0.14701128, -0.08650709, -0.03807535, -0.147804 , -0.0160621 , 0.11391602, -0.14950126, 0.17951017, -0.05509282, -0.42246098, -0.60981038, -0.4099018 , -0.43815614, -0.52276362, -0.45395341, -0.37121795, -0.37837995, -0.28310375, -0.27502564, -0.21923413, -0.06999358, -0.18077007, -0.28393733, -0.06255372, -0.19067254, 0.05966216, 0.08066389, 0.22092151, 0.26179164, 0.20477499, -0.0280842 , 0.35791664, 0.1734216 , 0.10630895, 0.16865918, 0.10183503, 0.20446572, 0.21954186, 0.08155738, 0.16953087, 0.14051328, -0.08161097, 0.01799632, 0.06937248, 0.19284226, 0.07111883, -0.04972924, 0.1498128 , 0.00642408, 0.05928602, 0.09871858, 0.04016286, 0.09807239, 0.07279418, 0.01160196, 0.02165551, 0.03977376])
- cell_idsHealpixIndex(level=4, indexing_scheme=nested, kind=pandas)
<xdggs.healpix.HealpixIndex object at 0x728d191e3650>
Again, we can look at the result:
fig, axes = plt.subplots(
nrows=2, ncols=2, figsize=(14, 9), subplot_kw={"projection": ccrs.Robinson()}
)
plot_healpix(
ds["data1"], ax=axes[0, 0], title="original1", features=["coastlines"], xsize=1000
)
plot_healpix(
convolved["data1"],
ax=axes[0, 1],
title="convolved1",
features=["coastlines"],
xsize=1000,
)
plot_healpix(
ds["data2"], ax=axes[1, 0], title="original2", features=["coastlines"], xsize=1000
)
plot_healpix(
convolved["data2"],
ax=axes[1, 1],
title="convolved2",
features=["coastlines"],
xsize=1000,
)
fig.subplots_adjust(hspace=0.1, wspace=-0.55)