From tabular data to binned data#

Overview#

Binned data in scipp is conceptually equivalent to an array of tables. In other words, it represents an array of records (table rows) sorted into an (often multi-dimensional) array of “bins”. In this tutorial we begin by learning how to setup tabular data appropriate for histogramming and binning with scipp. The main focus will then be binning the tabular data and basic usage of the resulting binned data.

We will use a file of a simulated neutron-scattering experiment — at the powder diffractometer DREAM at the European Spallation Source. The approach and techniques displayed here are however applicable far more generally and not specific to this scientific area.

Loading tabular data#

We will use a file created by a simulation for a diamond sample using McStas and Geant4. We can use pandas.read_table to load the table as a pandas.Dataframe. pandas.read_table is much faster than numpy.loadtxt and also slightly more convenient:

[1]:
import pandas as pd

filename = 'https://public.esss.dk/groups/scipp/scipp/1/data_dream_diamond.zip'
df = pd.read_table(filename)
df
[1]:
tof [ns] wavelength [Angstrom] module segment counter wire strip x_pos [mm] y_pos [mm] z_pos [mm] voxel_x [mm] voxel_y [mm] voxel_z [mm]
0 73035529 3.69426 12 6 2 22 20 956.990 -922.167 -1045.120 963.085 -920.410 -1049.580
1 72964368 3.70232 4 5 1 4 20 1106.620 255.398 -892.764 1103.670 248.977 -889.281
2 73056111 3.69120 14 5 2 27 20 703.154 -1204.100 -1102.690 704.337 -1196.640 -1094.100
3 73056111 3.69118 14 5 2 27 19 702.934 -1202.910 -1104.840 704.337 -1196.640 -1107.980
4 73024979 3.69372 10 1 1 21 19 1080.410 -766.272 -1051.010 1075.960 -768.968 -1053.870
... ... ... ... ... ... ... ... ... ... ... ... ... ...
999994 54289512 2.75436 2 5 2 31 154 1244.490 718.196 228.159 1239.600 720.253 226.852
999995 54250975 2.75877 10 2 1 15 153 1033.120 -722.267 192.328 1030.990 -715.544 190.343
999996 54261718 2.75799 14 2 2 19 154 569.039 -1165.440 201.670 573.491 -1164.860 205.394
999997 54261718 2.75797 14 2 2 19 153 572.311 -1164.580 200.893 573.491 -1164.860 197.211
999998 54254907 2.75829 13 3 2 17 153 726.378 -1053.590 193.689 727.408 -1048.180 193.777

999999 rows × 13 columns

scipp.compat.from_pandas can convert the pandas.Dataframe to a scipp.Dataset. The column names encode the physical units so we must extract them manually:

[2]:
import scipp as sc
%matplotlib widget

ds = sc.compat.from_pandas(df)
del ds.coords['row']  # we have no use for this row index
for key in list(ds):
    name, *remainder = key.split(' ')
    ds[name] = ds.pop(key)
    ds[name].unit = remainder[0][1:-1] if remainder else None
sc.table(ds[:10])
[2]:
countermodulesegmentstriptofvoxel_xvoxel_yvoxel_zwavelengthwirex_posy_posz_pos
DataDataDataDataDataDataDataDataDataDataDataDataData
[ns] [mm] [mm] [mm] [Å] [mm] [mm] [mm]
21262073035529963.085-920.410-1049.5803.69422956.990-922.167-1045.120
14520729643681103.670248.977-889.2813.70241106.620255.398-892.764
21452073056111704.337-1196.640-1094.1003.69127703.154-1204.100-1102.690
21451973056111704.337-1196.640-1107.9803.69127702.934-1202.910-1104.840
110119730249791075.960-768.968-1053.8703.694211080.410-766.272-1051.010
27519729647491160.890-179.184-936.6353.70081161.530-173.722-935.843
11331972964010634.259-963.880-918.5983.7016628.887-966.418-911.440
11332072964010634.259-963.880-907.0913.7016629.122-965.821-910.524
1141573099429972.847661.239-984.7373.7058970.896665.640-984.516
17219729619661134.810-263.814-927.6163.70071133.400-269.292-929.414

This 1-D dataset represents the tabular data that was read from the file. In the above table, each row (record) describes an event, in this case the detection of a neutron, with its associated metadata such as the detector module or the x, y, and z position.

To histogram or bin data by a column, scipp must know which columns are metadata and which column holds data values. The table is actually a table of metadata values for events with an implicit data value of “1 count” each. To continue we convert this into a data array:

[3]:
table = sc.DataArray(sc.ones(sizes=ds.sizes, unit='counts'))
for name in ds:
    table.coords[name] = ds[name].data
table
[3]:
Show/Hide data repr Show/Hide attributes
scipp.DataArray (106.82 MB)
    • row: 999999
    • counter
      (row)
      int64
      2, 1, ..., 2, 2
      Values:
      array([2, 1, 2, ..., 2, 2, 2])
    • module
      (row)
      int64
      12, 4, ..., 14, 13
      Values:
      array([12, 4, 14, ..., 14, 14, 13])
    • segment
      (row)
      int64
      6, 5, ..., 2, 3
      Values:
      array([6, 5, 5, ..., 2, 2, 3])
    • strip
      (row)
      int64
      20, 20, ..., 153, 153
      Values:
      array([ 20, 20, 20, ..., 154, 153, 153])
    • tof
      (row)
      int64
      ns
      73035529, 72964368, ..., 54261718, 54254907
      Values:
      array([73035529, 72964368, 73056111, ..., 54261718, 54261718, 54254907])
    • voxel_x
      (row)
      float64
      mm
      963.085, 1103.670, ..., 573.491, 727.408
      Values:
      array([ 963.085, 1103.67 , 704.337, ..., 573.491, 573.491, 727.408])
    • voxel_y
      (row)
      float64
      mm
      -920.410, 248.977, ..., -1164.860, -1048.180
      Values:
      array([ -920.41 , 248.977, -1196.64 , ..., -1164.86 , -1164.86 , -1048.18 ])
    • voxel_z
      (row)
      float64
      mm
      -1049.580, -889.281, ..., 197.211, 193.777
      Values:
      array([-1049.58 , -889.281, -1094.1 , ..., 205.394, 197.211, 193.777])
    • wavelength
      (row)
      float64
      Å
      3.694, 3.702, ..., 2.758, 2.758
      Values:
      array([3.69426, 3.70232, 3.6912 , ..., 2.75799, 2.75797, 2.75829])
    • wire
      (row)
      int64
      22, 4, ..., 19, 17
      Values:
      array([22, 4, 27, ..., 19, 19, 17])
    • x_pos
      (row)
      float64
      mm
      956.990, 1106.620, ..., 572.311, 726.378
      Values:
      array([ 956.99 , 1106.62 , 703.154, ..., 569.039, 572.311, 726.378])
    • y_pos
      (row)
      float64
      mm
      -922.167, 255.398, ..., -1164.580, -1053.590
      Values:
      array([ -922.167, 255.398, -1204.1 , ..., -1165.44 , -1164.58 , -1053.59 ])
    • z_pos
      (row)
      float64
      mm
      -1045.120, -892.764, ..., 200.893, 193.689
      Values:
      array([-1045.12 , -892.764, -1102.69 , ..., 201.67 , 200.893, 193.689])
    • (row)
      float64
      counts
      1.0, 1.0, ..., 1.0, 1.0
      Values:
      array([1., 1., 1., ..., 1., 1., 1.])

Histogramming and binning#

We are now ready to bin or histogram our data. Scipp uses the following terminology:

  • Binning preserves the original data records as a table associated with each bin.

  • Histogramming adds up the values from all contributing records into a single value per bin.

As an initial 1-D example, we will compute a wavelength histogram. The table can be histogrammed using sc.hist or the equivalent method provided by DataArray. Here we provide a desired bin count (1000). This will result in equally sized bins covering the full wavelength range:

[4]:
histogrammed = table.hist(wavelength=1000)
histogrammed
[4]:
Show/Hide data repr Show/Hide attributes
scipp.DataArray (16.63 KB)
    • wavelength: 1000
    • wavelength
      (wavelength [bin-edge])
      float64
      Å
      0.566, 0.570, ..., 4.070, 4.073
      Values:
      array([0.566368 , 0.56987505, 0.5733821 , ..., 4.0664059 , 4.06991295, 4.07342 ])
    • (wavelength)
      float64
      counts
      8.0, 4.0, ..., 1.0, 2.0
      Values:
      array([8.000e+00, 4.000e+00, 1.200e+01, 1.800e+01, 1.700e+01, 8.000e+00, 4.100e+01, 1.900e+01, 3.500e+01, 4.100e+01, 4.300e+01, 5.500e+01, 7.300e+01, 6.900e+01, 7.800e+01, 7.700e+01, 7.400e+01, 7.900e+01, 8.700e+01, 1.020e+02, 6.800e+01, 8.800e+01, 7.700e+01, 8.000e+01, 7.400e+01, 6.500e+01, 9.600e+01, 1.410e+02, 1.460e+02, 1.330e+02, 1.710e+02, 1.650e+02, 1.360e+02, 2.060e+02, 1.490e+02, 1.830e+02, 1.410e+02, 1.540e+02, 1.190e+02, 1.450e+02, 1.570e+02, 2.160e+02, 2.070e+02, 1.360e+02, 1.170e+02, 2.070e+02, 2.420e+02, 1.730e+02, 1.710e+02, 1.750e+02, 1.990e+02, 2.070e+02, 1.810e+02, 1.900e+02, 2.550e+02, 2.450e+02, 2.380e+02, 2.440e+02, 2.000e+02, 2.420e+02, 2.200e+02, 2.970e+02, 2.280e+02, 2.670e+02, 2.450e+02, 2.020e+02, 2.150e+02, 2.820e+02, 3.170e+02, 2.340e+02, 2.540e+02, 2.920e+02, 2.510e+02, 3.290e+02, 3.420e+02, 2.800e+02, 3.090e+02, 3.420e+02, 2.890e+02, 3.290e+02, 2.970e+02, 2.680e+02, 3.600e+02, 3.310e+02, 3.540e+02, 2.950e+02, 2.220e+02, 3.250e+02, 3.210e+02, 2.960e+02, 4.300e+02, 3.810e+02, 3.560e+02, 4.240e+02, 4.040e+02, 4.060e+02, 3.600e+02, 4.260e+02, 3.260e+02, 3.090e+02, 4.400e+02, 3.120e+02, 3.800e+02, 4.850e+02, 3.680e+02, 5.250e+02, 4.310e+02, 4.870e+02, 4.380e+02, 3.770e+02, 3.740e+02, 4.640e+02, 5.320e+02, 5.290e+02, 5.400e+02, 3.860e+02, 4.110e+02, 3.900e+02, 4.190e+02, 4.710e+02, 4.070e+02, 5.540e+02, 5.670e+02, 5.200e+02, 5.470e+02, 5.990e+02, 4.870e+02, 5.210e+02, 4.620e+02, 6.190e+02, 5.700e+02, 5.050e+02, 4.630e+02, 5.760e+02, 5.960e+02, 5.390e+02, 5.560e+02, 4.750e+02, 4.860e+02, 5.340e+02, 4.810e+02, 5.190e+02, 6.300e+02, 5.600e+02, 4.700e+02, 4.190e+02, 4.660e+02, 4.120e+02, 5.380e+02, 5.490e+02, 4.700e+02, 3.410e+02, 3.850e+02, 4.530e+02, 4.140e+02, 3.320e+02, 4.490e+02, 4.390e+02, 5.150e+02, 5.200e+02, 4.990e+02, 4.990e+02, 4.240e+02, 3.870e+02, 4.090e+02, 4.680e+02, 4.860e+02, 4.740e+02, 4.650e+02, 4.280e+02, 5.330e+02, 5.110e+02, 4.930e+02, 5.210e+02, 5.150e+02, 5.690e+02, 5.550e+02, 6.590e+02, 6.340e+02, 4.750e+02, 5.630e+02, 4.040e+02, 4.010e+02, 4.510e+02, 5.880e+02, 6.050e+02, 5.850e+02, 5.670e+02, 6.900e+02, 6.080e+02, 7.190e+02, 5.590e+02, 5.200e+02, 4.710e+02, 5.510e+02, 5.560e+02, 7.490e+02, 6.130e+02, 4.910e+02, 4.630e+02, 4.700e+02, 5.160e+02, 5.740e+02, 6.640e+02, 7.030e+02, 6.010e+02, 6.070e+02, 6.630e+02, 6.090e+02, 6.260e+02, 6.960e+02, 6.510e+02, 5.940e+02, 5.640e+02, 5.620e+02, 6.550e+02, 6.850e+02, 6.840e+02, 6.870e+02, 6.480e+02, 4.920e+02, 3.700e+02, 5.120e+02, 4.690e+02, 4.570e+02, 3.930e+02, 4.230e+02, 4.720e+02, 4.600e+02, 4.420e+02, 4.640e+02, 4.620e+02, 4.920e+02, 5.310e+02, 4.580e+02, 4.830e+02, 5.100e+02, 4.910e+02, 5.030e+02, 4.740e+02, 3.810e+02, 4.240e+02, 4.440e+02, 5.700e+02, 5.110e+02, 5.880e+02, 5.820e+02, 5.590e+02, 6.560e+02, 6.130e+02, 7.640e+02, 6.590e+02, 6.340e+02, 6.820e+02, 5.580e+02, 6.090e+02, 8.470e+02, 5.630e+02, 5.470e+02, 6.170e+02, 7.420e+02, 7.300e+02, 6.360e+02, 5.770e+02, 6.860e+02, 6.330e+02, 6.070e+02, 7.740e+02, 7.300e+02, 7.280e+02, 7.820e+02, 7.820e+02, 6.960e+02, 7.800e+02, 8.940e+02, 8.570e+02, 9.190e+02, 9.440e+02, 8.780e+02, 9.720e+02, 8.810e+02, 6.490e+02, 6.200e+02, 5.070e+02, 5.190e+02, 5.830e+02, 5.420e+02, 5.320e+02, 5.240e+02, 4.530e+02, 5.670e+02, 6.140e+02, 7.440e+02, 6.350e+02, 6.720e+02, 7.800e+02, 7.310e+02, 6.940e+02, 8.300e+02, 9.680e+02, 8.510e+02, 8.640e+02, 7.920e+02, 8.140e+02, 8.620e+02, 7.940e+02, 9.510e+02, 9.170e+02, 8.600e+02, 8.360e+02, 7.970e+02, 7.960e+02, 8.140e+02, 8.770e+02, 9.520e+02, 1.012e+03, 9.580e+02, 9.570e+02, 7.560e+02, 7.850e+02, 8.070e+02, 7.480e+02, 7.510e+02, 9.050e+02, 8.470e+02, 6.960e+02, 7.310e+02, 7.290e+02, 7.080e+02, 8.230e+02, 7.840e+02, 7.640e+02, 7.610e+02, 6.850e+02, 6.590e+02, 7.800e+02, 8.750e+02, 8.500e+02, 8.840e+02, 8.730e+02, 8.780e+02, 9.050e+02, 7.600e+02, 8.150e+02, 8.010e+02, 7.680e+02, 7.920e+02, 7.900e+02, 7.960e+02, 8.530e+02, 8.440e+02, 8.830e+02, 9.350e+02, 1.107e+03, 1.079e+03, 1.176e+03, 1.026e+03, 8.820e+02, 9.560e+02, 1.037e+03, 1.082e+03, 1.089e+03, 1.008e+03, 9.940e+02, 9.110e+02, 9.230e+02, 1.079e+03, 1.106e+03, 1.114e+03, 1.050e+03, 1.041e+03, 1.101e+03, 1.032e+03, 1.042e+03, 1.210e+03, 1.142e+03, 1.035e+03, 1.140e+03, 1.195e+03, 1.169e+03, 1.178e+03, 9.940e+02, 9.300e+02, 8.510e+02, 7.580e+02, 9.380e+02, 8.460e+02, 7.100e+02, 6.440e+02, 6.150e+02, 7.610e+02, 6.340e+02, 6.380e+02, 7.470e+02, 6.310e+02, 7.100e+02, 7.710e+02, 7.790e+02, 7.920e+02, 7.790e+02, 9.520e+02, 9.750e+02, 8.370e+02, 7.370e+02, 6.310e+02, 4.900e+02, 3.070e+02, 4.060e+02, 3.660e+02, 3.650e+02, 3.590e+02, 3.950e+02, 3.900e+02, 4.390e+02, 3.960e+02, 3.480e+02, 3.010e+02, 3.140e+02, 3.050e+02, 3.130e+02, 3.930e+02, 4.020e+02, 3.470e+02, 3.670e+02, 3.250e+02, 4.160e+02, 5.200e+02, 4.890e+02, 6.120e+02, 6.240e+02, 4.740e+02, 4.710e+02, 5.530e+02, 5.510e+02, 4.590e+02, 5.010e+02, 5.070e+02, 5.240e+02, 5.650e+02, 4.990e+02, 5.560e+02, 5.240e+02, 5.120e+02, 6.800e+02, 6.070e+02, 5.220e+02, 5.460e+02, 6.850e+02, 6.340e+02, 7.170e+02, 8.080e+02, 8.300e+02, 8.420e+02, 8.610e+02, 9.450e+02, 8.350e+02, 9.140e+02, 8.830e+02, 8.430e+02, 8.680e+02, 9.100e+02, 8.830e+02, 8.180e+02, 8.120e+02, 8.130e+02, 7.670e+02, 8.810e+02, 7.420e+02, 8.890e+02, 7.790e+02, 8.620e+02, 8.000e+02, 7.890e+02, 8.660e+02, 7.870e+02, 7.400e+02, 7.260e+02, 7.780e+02, 8.050e+02, 8.160e+02, 7.550e+02, 8.160e+02, 7.760e+02, 8.670e+02, 8.320e+02, 9.110e+02, 9.020e+02, 8.330e+02, 6.500e+02, 5.900e+02, 7.360e+02, 7.680e+02, 8.760e+02, 8.460e+02, 8.920e+02, 8.660e+02, 7.270e+02, 7.240e+02, 7.620e+02, 7.080e+02, 6.870e+02, 8.140e+02, 7.990e+02, 8.690e+02, 7.450e+02, 8.200e+02, 6.570e+02, 6.090e+02, 7.170e+02, 8.100e+02, 8.070e+02, 7.430e+02, 6.770e+02, 7.160e+02, 7.420e+02, 7.170e+02, 6.890e+02, 6.290e+02, 7.490e+02, 7.710e+02, 7.400e+02, 7.450e+02, 7.050e+02, 8.160e+02, 8.010e+02, 7.630e+02, 8.630e+02, 7.330e+02, 8.720e+02, 6.970e+02, 7.720e+02, 8.830e+02, 9.250e+02, 7.810e+02, 8.510e+02, 7.500e+02, 8.770e+02, 8.040e+02, 8.360e+02, 8.360e+02, 7.340e+02, 6.580e+02, 7.320e+02, 8.940e+02, 8.590e+02, 9.340e+02, 8.500e+02, 8.560e+02, 8.260e+02, 7.570e+02, 6.720e+02, 7.830e+02, 8.240e+02, 7.020e+02, 8.000e+02, 7.390e+02, 7.060e+02, 8.000e+02, 8.840e+02, 8.780e+02, 7.430e+02, 7.020e+02, 8.720e+02, 9.310e+02, 8.370e+02, 6.480e+02, 7.700e+02, 8.730e+02, 8.060e+02, 9.660e+02, 7.970e+02, 8.110e+02, 8.880e+02, 9.650e+02, 9.490e+02, 8.460e+02, 8.210e+02, 8.740e+02, 8.990e+02, 7.320e+02, 7.630e+02, 8.390e+02, 7.290e+02, 8.440e+02, 7.410e+02, 7.880e+02, 8.100e+02, 1.285e+03, 1.764e+03, 1.500e+03, 1.479e+03, 1.554e+03, 1.692e+03, 1.531e+03, 1.449e+03, 1.502e+03, 1.585e+03, 1.610e+03, 1.713e+03, 1.857e+03, 1.610e+03, 1.802e+03, 1.756e+03, 1.648e+03, 1.659e+03, 1.431e+03, 1.441e+03, 1.724e+03, 1.786e+03, 1.422e+03, 1.510e+03, 1.473e+03, 1.627e+03, 1.684e+03, 1.585e+03, 1.695e+03, 1.742e+03, 1.637e+03, 1.957e+03, 1.842e+03, 1.894e+03, 1.887e+03, 1.686e+03, 1.569e+03, 1.663e+03, 1.779e+03, 1.619e+03, 1.527e+03, 1.549e+03, 1.782e+03, 1.919e+03, 1.955e+03, 2.084e+03, 2.005e+03, 1.949e+03, 1.698e+03, 1.682e+03, 1.732e+03, 1.802e+03, 1.817e+03, 1.749e+03, 1.470e+03, 1.656e+03, 1.667e+03, 1.638e+03, 1.816e+03, 1.819e+03, 1.494e+03, 1.559e+03, 1.668e+03, 1.789e+03, 1.531e+03, 1.485e+03, 1.522e+03, 1.975e+03, 1.699e+03, 1.512e+03, 1.634e+03, 1.882e+03, 1.835e+03, 1.715e+03, 1.746e+03, 1.852e+03, 1.920e+03, 1.984e+03, 1.951e+03, 1.666e+03, 1.706e+03, 1.592e+03, 1.330e+03, 1.380e+03, 1.581e+03, 1.571e+03, 1.662e+03, 1.774e+03, 1.701e+03, 1.791e+03, 1.667e+03, 1.510e+03, 1.680e+03, 1.755e+03, 1.788e+03, 1.748e+03, 1.894e+03, 2.036e+03, 1.901e+03, 2.027e+03, 1.899e+03, 1.945e+03, 1.984e+03, 1.869e+03, 2.013e+03, 1.737e+03, 1.763e+03, 1.794e+03, 1.902e+03, 1.733e+03, 1.714e+03, 1.799e+03, 2.039e+03, 1.845e+03, 1.643e+03, 1.834e+03, 2.027e+03, 1.760e+03, 1.862e+03, 1.810e+03, 1.986e+03, 1.836e+03, 1.838e+03, 1.880e+03, 1.756e+03, 1.878e+03, 1.837e+03, 2.127e+03, 2.031e+03, 2.192e+03, 1.819e+03, 1.915e+03, 1.889e+03, 1.909e+03, 1.984e+03, 2.145e+03, 1.825e+03, 1.836e+03, 1.873e+03, 2.023e+03, 1.993e+03, 1.917e+03, 1.879e+03, 1.927e+03, 1.775e+03, 1.811e+03, 1.787e+03, 1.900e+03, 2.116e+03, 2.098e+03, 2.165e+03, 2.273e+03, 2.095e+03, 1.900e+03, 2.080e+03, 1.898e+03, 2.131e+03, 2.082e+03, 2.321e+03, 2.223e+03, 2.009e+03, 1.737e+03, 1.894e+03, 1.669e+03, 1.735e+03, 1.845e+03, 1.922e+03, 1.993e+03, 2.085e+03, 2.030e+03, 2.209e+03, 1.961e+03, 1.782e+03, 1.839e+03, 1.879e+03, 1.905e+03, 1.848e+03, 1.743e+03, 1.878e+03, 2.059e+03, 1.930e+03, 1.961e+03, 2.081e+03, 2.204e+03, 2.042e+03, 1.868e+03, 2.023e+03, 1.984e+03, 1.838e+03, 1.857e+03, 1.831e+03, 1.712e+03, 1.865e+03, 1.880e+03, 1.968e+03, 1.741e+03, 1.858e+03, 2.045e+03, 2.190e+03, 2.267e+03, 2.057e+03, 2.132e+03, 1.964e+03, 2.038e+03, 2.002e+03, 2.175e+03, 2.183e+03, 2.037e+03, 2.087e+03, 2.061e+03, 1.884e+03, 1.823e+03, 1.826e+03, 1.812e+03, 2.040e+03, 2.017e+03, 1.946e+03, 1.983e+03, 1.862e+03, 2.122e+03, 2.180e+03, 2.136e+03, 2.145e+03, 2.081e+03, 2.219e+03, 2.113e+03, 2.026e+03, 2.253e+03, 2.254e+03, 2.095e+03, 2.168e+03, 1.902e+03, 1.854e+03, 1.901e+03, 1.837e+03, 1.978e+03, 1.991e+03, 2.125e+03, 2.203e+03, 2.246e+03, 2.084e+03, 2.046e+03, 2.059e+03, 2.108e+03, 2.201e+03, 2.398e+03, 2.497e+03, 2.270e+03, 2.267e+03, 2.067e+03, 2.331e+03, 2.178e+03, 2.290e+03, 1.898e+03, 1.984e+03, 2.160e+03, 1.965e+03, 1.919e+03, 1.989e+03, 2.319e+03, 2.003e+03, 2.164e+03, 2.004e+03, 1.835e+03, 2.255e+03, 2.205e+03, 2.126e+03, 1.957e+03, 1.908e+03, 2.186e+03, 2.229e+03, 2.201e+03, 2.178e+03, 2.310e+03, 2.291e+03, 2.298e+03, 2.043e+03, 2.144e+03, 2.295e+03, 2.418e+03, 2.514e+03, 2.370e+03, 2.252e+03, 2.174e+03, 2.117e+03, 2.108e+03, 2.079e+03, 2.387e+03, 2.367e+03, 2.508e+03, 2.416e+03, 2.153e+03, 2.094e+03, 2.208e+03, 2.015e+03, 2.043e+03, 2.027e+03, 2.141e+03, 2.375e+03, 2.363e+03, 2.192e+03, 2.284e+03, 2.270e+03, 2.363e+03, 2.317e+03, 2.237e+03, 2.114e+03, 2.120e+03, 2.110e+03, 2.328e+03, 2.424e+03, 2.341e+03, 2.336e+03, 2.307e+03, 2.247e+03, 2.007e+03, 2.286e+03, 2.015e+03, 2.210e+03, 2.267e+03, 2.114e+03, 2.288e+03, 2.226e+03, 2.371e+03, 2.137e+03, 2.541e+03, 2.220e+03, 2.281e+03, 2.005e+03, 1.496e+03, 8.520e+02, 4.030e+02, 2.170e+02, 1.080e+02, 1.010e+02, 6.500e+01, 8.300e+01, 8.000e+01, 8.200e+01, 3.900e+01, 2.200e+01, 2.200e+01, 1.400e+01, 7.000e+00, 2.000e+01, 1.600e+01, 2.000e+01, 1.800e+01, 3.200e+01, 1.200e+01, 1.700e+01, 3.300e+01, 2.100e+01, 2.700e+01, 2.800e+01, 3.600e+01, 2.000e+01, 1.400e+01, 1.200e+01, 3.800e+01, 2.200e+01, 1.900e+01, 2.800e+01, 5.000e+01, 2.800e+01, 5.900e+01, 3.800e+01, 3.000e+01, 4.400e+01, 6.600e+01, 5.100e+01, 3.900e+01, 5.400e+01, 7.900e+01, 2.500e+01, 1.900e+01, 2.200e+01, 2.800e+01, 2.200e+01, 1.400e+01, 1.500e+01, 8.000e+00, 2.100e+01, 1.300e+01, 1.400e+01, 1.400e+01, 1.600e+01, 1.100e+01, 1.200e+01, 9.000e+00, 1.900e+01, 1.600e+01, 1.800e+01, 5.800e+01, 5.600e+01, 7.000e+00, 6.000e+00, 6.000e+00, 5.000e+00, 2.400e+01, 2.000e+01, 1.700e+01, 1.000e+01, 5.000e+00, 4.000e+00, 1.000e+00, 1.000e+00, 0.000e+00, 3.000e+00, 1.000e+00, 4.000e+00, 1.000e+00, 2.000e+00])

Instead of specifying bin count we may also specify a bin size, given by a 0-D variable:

[5]:
table.hist(wavelength=sc.scalar(0.02, unit='Angstrom'))
[5]:
Show/Hide data repr Show/Hide attributes
scipp.DataArray (3.76 KB)
    • wavelength: 176
    • wavelength
      (wavelength [bin-edge])
      float64
      Å
      0.566, 0.586, ..., 4.066, 4.086
      Values:
      array([0.566368, 0.586368, 0.606368, 0.626368, 0.646368, 0.666368, 0.686368, 0.706368, 0.726368, 0.746368, 0.766368, 0.786368, 0.806368, 0.826368, 0.846368, 0.866368, 0.886368, 0.906368, 0.926368, 0.946368, 0.966368, 0.986368, 1.006368, 1.026368, 1.046368, 1.066368, 1.086368, 1.106368, 1.126368, 1.146368, 1.166368, 1.186368, 1.206368, 1.226368, 1.246368, 1.266368, 1.286368, 1.306368, 1.326368, 1.346368, 1.366368, 1.386368, 1.406368, 1.426368, 1.446368, 1.466368, 1.486368, 1.506368, 1.526368, 1.546368, 1.566368, 1.586368, 1.606368, 1.626368, 1.646368, 1.666368, 1.686368, 1.706368, 1.726368, 1.746368, 1.766368, 1.786368, 1.806368, 1.826368, 1.846368, 1.866368, 1.886368, 1.906368, 1.926368, 1.946368, 1.966368, 1.986368, 2.006368, 2.026368, 2.046368, 2.066368, 2.086368, 2.106368, 2.126368, 2.146368, 2.166368, 2.186368, 2.206368, 2.226368, 2.246368, 2.266368, 2.286368, 2.306368, 2.326368, 2.346368, 2.366368, 2.386368, 2.406368, 2.426368, 2.446368, 2.466368, 2.486368, 2.506368, 2.526368, 2.546368, 2.566368, 2.586368, 2.606368, 2.626368, 2.646368, 2.666368, 2.686368, 2.706368, 2.726368, 2.746368, 2.766368, 2.786368, 2.806368, 2.826368, 2.846368, 2.866368, 2.886368, 2.906368, 2.926368, 2.946368, 2.966368, 2.986368, 3.006368, 3.026368, 3.046368, 3.066368, 3.086368, 3.106368, 3.126368, 3.146368, 3.166368, 3.186368, 3.206368, 3.226368, 3.246368, 3.266368, 3.286368, 3.306368, 3.326368, 3.346368, 3.366368, 3.386368, 3.406368, 3.426368, 3.446368, 3.466368, 3.486368, 3.506368, 3.526368, 3.546368, 3.566368, 3.586368, 3.606368, 3.626368, 3.646368, 3.666368, 3.686368, 3.706368, 3.726368, 3.746368, 3.766368, 3.786368, 3.806368, 3.826368, 3.846368, 3.866368, 3.886368, 3.906368, 3.926368, 3.946368, 3.966368, 3.986368, 4.006368, 4.026368, 4.046368, 4.066368, 4.086368])
    • (wavelength)
      float64
      counts
      65.0, 197.0, ..., 10.0, 3.0
      Values:
      array([6.5000e+01, 1.9700e+02, 4.1800e+02, 4.7600e+02, 5.4100e+02, 9.2300e+02, 8.4500e+02, 9.6300e+02, 1.1160e+03, 1.2600e+03, 1.3560e+03, 1.4030e+03, 1.5980e+03, 1.7850e+03, 1.8320e+03, 1.8070e+03, 2.2260e+03, 2.0790e+03, 2.6000e+03, 2.5700e+03, 2.5030e+03, 2.9640e+03, 3.0830e+03, 3.0480e+03, 2.9300e+03, 2.7660e+03, 2.5630e+03, 2.5050e+03, 2.5730e+03, 2.7120e+03, 3.0030e+03, 3.0630e+03, 3.1310e+03, 3.3800e+03, 3.2710e+03, 3.3450e+03, 3.5870e+03, 3.5100e+03, 3.2860e+03, 2.5650e+03, 2.7080e+03, 2.7890e+03, 2.6710e+03, 3.5740e+03, 3.7480e+03, 3.7470e+03, 3.7040e+03, 4.2160e+03, 5.1630e+03, 3.8140e+03, 3.0510e+03, 3.9140e+03, 4.7340e+03, 4.8830e+03, 4.7390e+03, 5.2210e+03, 4.5890e+03, 4.2370e+03, 4.2180e+03, 5.0200e+03, 4.4970e+03, 5.0470e+03, 5.8720e+03, 5.8180e+03, 6.0110e+03, 6.2870e+03, 6.3560e+03, 4.7940e+03, 3.8260e+03, 4.2050e+03, 4.7020e+03, 2.2090e+03, 2.1810e+03, 1.9600e+03, 2.3030e+03, 3.1170e+03, 2.9350e+03, 3.2170e+03, 3.6010e+03, 4.9170e+03, 5.0470e+03, 4.6310e+03, 4.6910e+03, 4.4350e+03, 4.6200e+03, 4.3680e+03, 4.8110e+03, 4.1940e+03, 4.3410e+03, 4.2400e+03, 4.0110e+03, 4.3240e+03, 4.4720e+03, 4.7480e+03, 4.5500e+03, 4.8350e+03, 4.4230e+03, 4.3790e+03, 4.7140e+03, 4.6820e+03, 4.9970e+03, 4.6910e+03, 4.6270e+03, 8.9700e+03, 8.8450e+03, 9.8880e+03, 8.9380e+03, 9.1020e+03, 1.0341e+04, 9.5860e+03, 1.0348e+04, 1.0244e+04, 9.6770e+03, 9.5020e+03, 9.4880e+03, 9.7980e+03, 1.0598e+04, 8.6440e+03, 9.7080e+03, 1.0047e+04, 1.1202e+04, 1.0550e+04, 1.0310e+04, 1.0458e+04, 1.0634e+04, 1.1324e+04, 1.1082e+04, 1.0995e+04, 1.0649e+04, 1.2097e+04, 1.2034e+04, 1.0328e+04, 1.1601e+04, 1.0616e+04, 1.1044e+04, 1.1489e+04, 1.0458e+04, 1.1474e+04, 1.1666e+04, 1.1710e+04, 1.0927e+04, 1.1841e+04, 1.2206e+04, 1.1442e+04, 1.1800e+04, 1.2163e+04, 1.3052e+04, 1.1826e+04, 1.1831e+04, 1.1687e+04, 1.2507e+04, 1.2762e+04, 1.2974e+04, 1.3274e+04, 1.1913e+04, 1.2870e+04, 1.2765e+04, 1.3189e+04, 1.2381e+04, 1.2832e+04, 1.0350e+04, 8.8900e+02, 2.7200e+02, 9.1000e+01, 1.3300e+02, 1.3800e+02, 1.7700e+02, 2.7000e+02, 2.3300e+02, 1.0200e+02, 8.1000e+01, 1.2800e+02, 9.5000e+01, 6.6000e+01, 1.0000e+01, 3.0000e+00])

Instead of hist, we can use sc.bin (or the equivalent method provided by DataArray), which keeps the underlying events and their metadata:

[6]:
binned = table.bin(wavelength=1000)
binned
[6]:
Show/Hide data repr Show/Hide attributes
scipp.DataArray (106.84 MB)
    • wavelength: 1000
    • wavelength
      (wavelength [bin-edge])
      float64
      Å
      0.566, 0.570, ..., 4.070, 4.073
      Values:
      array([0.566368 , 0.56987505, 0.5733821 , ..., 4.0664059 , 4.06991295, 4.07342 ])
    • (wavelength)
      DataArrayView
      binned data [len=8, len=4, ..., len=1, len=2]
      Values:
      [<scipp.DataArray> Dimensions: Sizes[row:8, ] Coordinates: counter int64 <no unit> (row) [2, 2, ..., 2, 2] module int64 <no unit> (row) [4, 5, ..., 12, 2] segment int64 <no unit> (row) [2, 5, ..., 1, 6] strip int64 <no unit> (row) [246, 254, ..., 254, 253] tof int64 [ns] (row) [11246370, 11248846, ..., 11228774, 11241113] voxel_x float64 [mm] (row) [1168.05, 1167.92, ..., 806.974, 958.018] voxel_y float64 [mm] (row) [204.802, 125.451, ..., -973.658, 532.491] voxel_z float64 [mm] (row) [1044.81, 1141.88, ..., 1229.83, 1051.93] wavelength float64 [Å] (row) [0.569678, 0.569364, ..., 0.567461, 0.569784] wire int64 <no unit> (row) [9, 8, ..., 16, 1] x_pos float64 [mm] (row) [1165.5, 1166.16, ..., 805.081, 958.379] y_pos float64 [mm] (row) [209.158, 119.966, ..., -977.268, 539.914] z_pos float64 [mm] (row) [1043.95, 1145.2, ..., 1223.85, 1059.86] Data: float64 [counts] (row) [1, 1, ..., 1, 1] , <scipp.DataArray> Dimensions: Sizes[row:4, ] Coordinates: counter int64 <no unit> (row) [2, 1, 2, 1] module int64 <no unit> (row) [12, 3, 1, 5] segment int64 <no unit> (row) [4, 1, 3, 3] strip int64 <no unit> (row) [244, 245, 253, 245] tof int64 [ns] (row) [11328714, 11326239, 11290108, 11284314] voxel_x float64 [mm] (row) [913.329, 1195.04, 979.995, 1096.74] voxel_y float64 [mm] (row) [-954.267, 344.575, 647.592, 47.389] voxel_z float64 [mm] (row) [1135.89, 1081.17, 1127.96, 953.231] wavelength float64 [Å] (row) [0.572659, 0.573236, 0.571536, 0.572525] wire int64 <no unit> (row) [21, 14, 8, 1] x_pos float64 [mm] (row) [915.89, 1192.78, 983.249, 1095.83] y_pos float64 [mm] (row) [-948.517, 337.347, 644.185, 41.5285] z_pos float64 [mm] (row) [1136.57, 1081.36, 1125.47, 952.289] Data: float64 [counts] (row) [1, 1, 1, 1] , ..., <scipp.DataArray> Dimensions: Sizes[row:1, ] Coordinates: counter int64 <no unit> (row) [1] module int64 <no unit> (row) [5] segment int64 <no unit> (row) [6] strip int64 <no unit> (row) [96] tof int64 [ns] (row) [79899091] voxel_x float64 [mm] (row) [1145.98] voxel_y float64 [mm] (row) [134.488] voxel_z float64 [mm] (row) [-233.373] wavelength float64 [Å] (row) [4.06818] wire int64 <no unit> (row) [6] x_pos float64 [mm] (row) [1146.23] y_pos float64 [mm] (row) [128.539] z_pos float64 [mm] (row) [-231.906] Data: float64 [counts] (row) [1] , <scipp.DataArray> Dimensions: Sizes[row:2, ] Coordinates: counter int64 <no unit> (row) [1, 2] module int64 <no unit> (row) [10, 9] segment int64 <no unit> (row) [2, 1] strip int64 <no unit> (row) [172, 83] tof int64 [ns] (row) [80152036, 79981755] voxel_x float64 [mm] (row) [1102.61, 977.183] voxel_y float64 [mm] (row) [-750.45, -544.188] voxel_z float64 [mm] (row) [365.383, -321.319] wavelength float64 [Å] (row) [4.07025, 4.07342] wire int64 <no unit> (row) [22, 3] x_pos float64 [mm] (row) [1105.34, 974.095] y_pos float64 [mm] (row) [-746.237, -537.544] z_pos float64 [mm] (row) [365.699, -316.846] Data: float64 [counts] (row) [1, 1] ]

Since we used the same bin count (resulting in the same bin edges) for histogramming and binning, computing the sum of values within each bin (given by binned.hist(), a shorthand for binned.bins.sum()) yields the same result as histogramming directly. Therefore only a single line is visible in the following plot:

[7]:
bin_sums = binned.hist()  # same as binned.bins.sum()
sc.plot({'histogrammed': histogrammed, 'binned': bin_sums})
[7]:

While the result of histogramming may appear similar or identical, the internal structure is very different. The histogrammed data consists of essentially two arrays, one for the values (yellow) and one for the wavelengths (green):

[8]:
sc.show(histogrammed)
(dims=('wavelength',), shape=(1000,), unit=counts, variances=False)values wavelength wavelengthwavelength(dims=('wavelength',), shape=(1001,), unit=Å, variances=False)values wavelength

The top level structure of the binned data is the same, i.e., we have and array of values and an array of wavelengths. The difference is that each value (bin) stores all contributing table rows:

[9]:
sc.show(binned)
(dims=('wavelength',), shape=(1000,), unit=None, variances=False)values wavelength (dims=('row',), shape=(999999,), unit=counts, variances=False)values row countercounter(dims=('row',), shape=(999999,), unit=None, variances=False)values row modulemodule(dims=('row',), shape=(999999,), unit=None, variances=False)values row segmentsegment(dims=('row',), shape=(999999,), unit=None, variances=False)values row stripstrip(dims=('row',), shape=(999999,), unit=None, variances=False)values row toftof(dims=('row',), shape=(999999,), unit=ns, variances=False)values row voxel_xvoxel_x(dims=('row',), shape=(999999,), unit=mm, variances=False)values row voxel_yvoxel_y(dims=('row',), shape=(999999,), unit=mm, variances=False)values row voxel_zvoxel_z(dims=('row',), shape=(999999,), unit=mm, variances=False)values row wavelengthwavelength(dims=('row',), shape=(999999,), unit=Å, variances=False)values row wirewire(dims=('row',), shape=(999999,), unit=None, variances=False)values row x_posx_pos(dims=('row',), shape=(999999,), unit=mm, variances=False)values row y_posy_pos(dims=('row',), shape=(999999,), unit=mm, variances=False)values row z_posz_pos(dims=('row',), shape=(999999,), unit=mm, variances=False)values row wavelengthwavelength(dims=('wavelength',), shape=(1001,), unit=Å, variances=False)values wavelength

Exercise 1#

  • Histogram and bin table by z_pos. Plot the results.

  • Use bin on the result of the binning from the first bullet with a different value for z_pos (for example with more bins), i.e., not on the original table table. Why is this possible?

Solution#

[10]:
binned_z = table.bin(z_pos=100)
solution1 = dict()
solution1['histogrammed'] = table.hist(z_pos=100)
solution1['binned'] = binned_z.hist()
solution1['binned_high_resolution'] = binned_z.bin(z_pos=300).hist()
sc.plot(solution1)
[10]:

Multi-dimensional spatial binning#

bin can handle multiple dimensions:

[11]:
binned_xyz = table.bin(z_pos=31, y_pos=31, x_pos=31)  # 31**3 bins
binned_xyz['z_pos', 20:].hist().plot(norm='log', aspect='equal')
[11]:

Above we can see a cut through the detector assembly, which has the shape of a thick cylinder mantle.

The advantage of binned data over histogrammed data is that metadata for each underlying event is still present. We can therefore change the binning, or bin in additional dimensions. For example, we can select the slice containing \(z = 0\) and turn it into a higher-resolution cut.

Here we show an example of how, e.g., scipp.linspace can be used to create custom bin-edges instead of relying on the edges bin determines automatically based on a requested bin-count:

[12]:
x_edges = sc.linspace('x_pos', 400, 1500, num=41, unit='mm')
z_slice = binned_xyz['z_pos', sc.scalar(0.0, unit='mm')]
xy_cut = z_slice.bin(y_pos=100, x_pos=x_edges)
xy_cut
[12]:
Show/Hide data repr Show/Hide attributes
scipp.DataArray (6.72 MB)
    • y_pos: 100
    • x_pos: 40
    • x_pos
      (x_pos [bin-edge])
      float64
      mm
      400.0, 427.5, ..., 1472.500, 1500.000
      Values:
      array([ 400. , 427.5, 455. , 482.5, 510. , 537.5, 565. , 592.5, 620. , 647.5, 675. , 702.5, 730. , 757.5, 785. , 812.5, 840. , 867.5, 895. , 922.5, 950. , 977.5, 1005. , 1032.5, 1060. , 1087.5, 1115. , 1142.5, 1170. , 1197.5, 1225. , 1252.5, 1280. , 1307.5, 1335. , 1362.5, 1390. , 1417.5, 1445. , 1472.5, 1500. ])
    • y_pos
      (y_pos [bin-edge])
      float64
      mm
      -1314.930, -1292.619, ..., 893.817, 916.128
      Values:
      array([-1314.93 , -1292.61942, -1270.30884, -1247.99826, -1225.68768, -1203.3771 , -1181.06652, -1158.75594, -1136.44536, -1114.13478, -1091.8242 , -1069.51362, -1047.20304, -1024.89246, -1002.58188, -980.2713 , -957.96072, -935.65014, -913.33956, -891.02898, -868.7184 , -846.40782, -824.09724, -801.78666, -779.47608, -757.1655 , -734.85492, -712.54434, -690.23376, -667.92318, -645.6126 , -623.30202, -600.99144, -578.68086, -556.37028, -534.0597 , -511.74912, -489.43854, -467.12796, -444.81738, -422.5068 , -400.19622, -377.88564, -355.57506, -333.26448, -310.9539 , -288.64332, -266.33274, -244.02216, -221.71158, -199.401 , -177.09042, -154.77984, -132.46926, -110.15868, -87.8481 , -65.53752, -43.22694, -20.91636, 1.39422, 23.7048 , 46.01538, 68.32596, 90.63654, 112.94712, 135.2577 , 157.56828, 179.87886, 202.18944, 224.50002, 246.8106 , 269.12118, 291.43176, 313.74234, 336.05292, 358.3635 , 380.67408, 402.98466, 425.29524, 447.60582, 469.9164 , 492.22698, 514.53756, 536.84814, 559.15872, 581.4693 , 603.77988, 626.09046, 648.40104, 670.71162, 693.0222 , 715.33278, 737.64336, 759.95394, 782.26452, 804.5751 , 826.88568, 849.19626, 871.50684, 893.81742, 916.128 ])
    • (y_pos, x_pos)
      DataArrayView
      binned data [len=0, len=0, ..., len=0, len=0]
      Values:
      [<scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: counter int64 <no unit> (row) [] module int64 <no unit> (row) [] segment int64 <no unit> (row) [] strip int64 <no unit> (row) [] tof int64 [ns] (row) [] voxel_x float64 [mm] (row) [] voxel_y float64 [mm] (row) [] voxel_z float64 [mm] (row) [] wavelength float64 [Å] (row) [] wire int64 <no unit> (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] , <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: counter int64 <no unit> (row) [] module int64 <no unit> (row) [] segment int64 <no unit> (row) [] strip int64 <no unit> (row) [] tof int64 [ns] (row) [] voxel_x float64 [mm] (row) [] voxel_y float64 [mm] (row) [] voxel_z float64 [mm] (row) [] wavelength float64 [Å] (row) [] wire int64 <no unit> (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] , ..., <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: counter int64 <no unit> (row) [] module int64 <no unit> (row) [] segment int64 <no unit> (row) [] strip int64 <no unit> (row) [] tof int64 [ns] (row) [] voxel_x float64 [mm] (row) [] voxel_y float64 [mm] (row) [] voxel_z float64 [mm] (row) [] wavelength float64 [Å] (row) [] wire int64 <no unit> (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] , <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: counter int64 <no unit> (row) [] module int64 <no unit> (row) [] segment int64 <no unit> (row) [] strip int64 <no unit> (row) [] tof int64 [ns] (row) [] voxel_x float64 [mm] (row) [] voxel_y float64 [mm] (row) [] voxel_z float64 [mm] (row) [] wavelength float64 [Å] (row) [] wire int64 <no unit> (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] ]
    • z_pos
      (z_pos)
      float64
      mm
      -48.870, 44.790
      Values:
      array([-48.86967742, 44.78967742])
[13]:
xy_cut.hist().transpose().plot(aspect='equal')
[13]:

Using custom bin edges has advantages and disadvantages:

  • If a bin-count is provided, bin and histogram need to compute the minimum and maximum over the coordinate, which adds extra cost to the operation.

  • Automatic bin-edges based on a bin-count rarely yield “nice” (rounded) bounds, which may not be desirable for plots.

  • Automatic bin-counts avoids two common pitfalls:

    • To obtain, say, 100 bins we must provide 101 edges.

    • Intervals in scipp are closed on the left but open on the right, i.e., \([...)\). If custom bin edges are computed naively from the max() of the corresponding coordinate, e.g., using scipp.linspace, then the data value at the maximum will not be included.

Exercise 2#

  • The detector assembly is cylindrical, aligned with the z-axis. Compute the distance from the z-axis (from the x_pos and y_pos coordinates) and store it as a new coordinate in table. This is the radius in cylinder coordinates.

  • Define bin edges for the radius using scipp.linspace.

  • Bin table by z_pos and the radius.

  • Plot the result.

Solution#

[14]:
radius = sc.sqrt(table.coords['x_pos'] ** 2 + table.coords['y_pos'] ** 2)
table.coords['radius'] = radius
radius_edges = sc.linspace(
    'radius', radius.min(), radius.max() + sc.scalar(1, unit='mm'), num=13
)
binned_zr = table.bin(z_pos=31, radius=radius_edges)
binned_zr.hist().plot()
[14]:

Multi-dimensional logical binning#

Above we binned according to x, y, and z. This reflects neither the physics nor the logical structure of the detectors and is generally not very useful. The original table additionally contains information about the logical structure of the detector array. In this case it is divided into modules, segments, counters, wires, and strips. We can use group to perform a binning based on discrete values. The result is 5-D:

[15]:
binned_logical = table.group('module', 'segment', 'counter', 'wire', 'strip')
binned_logical
[15]:
Show/Hide data repr Show/Hide attributes
scipp.DataArray (97.30 MB)
    • module: 14
    • segment: 6
    • counter: 2
    • wire: 32
    • strip: 256
    • counter
      (counter)
      int64
      1, 2
      Values:
      array([1, 2])
    • module
      (module)
      int64
      1, 2, ..., 13, 14
      Values:
      array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
    • segment
      (segment)
      int64
      1, 2, ..., 5, 6
      Values:
      array([1, 2, 3, 4, 5, 6])
    • strip
      (strip)
      int64
      1, 2, ..., 255, 256
      Values:
      array([ 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])
    • wire
      (wire)
      int64
      1, 2, ..., 31, 32
      Values:
      array([ 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])
    • (module, segment, counter, wire, strip)
      DataArrayView
      binned data [len=1, len=0, ..., len=0, len=0]
      Values:
      [<scipp.DataArray> Dimensions: Sizes[row:1, ] Coordinates: radius float64 [mm] (row) [1094.31] tof int64 [ns] (row) [74730691] voxel_x float64 [mm] (row) [952.598] voxel_y float64 [mm] (row) [545.569] voxel_z float64 [mm] (row) [-1091.35] wavelength float64 [Å] (row) [3.787] x_pos float64 [mm] (row) [952.559] y_pos float64 [mm] (row) [538.643] z_pos float64 [mm] (row) [-1092.5] Data: float64 [counts] (row) [1] , <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: radius float64 [mm] (row) [] tof int64 [ns] (row) [] voxel_x float64 [mm] (row) [] voxel_y float64 [mm] (row) [] voxel_z float64 [mm] (row) [] wavelength float64 [Å] (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] , ..., <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: radius float64 [mm] (row) [] tof int64 [ns] (row) [] voxel_x float64 [mm] (row) [] voxel_y float64 [mm] (row) [] voxel_z float64 [mm] (row) [] wavelength float64 [Å] (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] , <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: radius float64 [mm] (row) [] tof int64 [ns] (row) [] voxel_x float64 [mm] (row) [] voxel_y float64 [mm] (row) [] voxel_z float64 [mm] (row) [] wavelength float64 [Å] (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] ]

Above we used automatic group setup. This will create a group for each unique value. Explicit custom groups (given as a variable) should often be favored in practice, for two reasons:

  • If only a group label is provided, group needs to determine all unique values in the corresponding coordinate. This can be very costly if the input data is large.

  • Automatic grouping can be “unstable”, in the sense that the actual groups that are created can vary randomly if the input changes. This can lead to incompatibilities between grouped data obtained with different inputs. If the set of possible coordinate values is known in advance it is therefore beneficial to provide these explicitly.

Explicit custom groups can also be used to extract a subset of the data:

[16]:
wire1234 = table.group(sc.array(dims=['wire'], values=[1, 2, 3, 4], unit=None))
wire1234.hist().plot()
[16]:

Exercise 3#

  • Group table but only by strip and wire.

  • Plot the result.

Solution#

[17]:
binned_strip_wire = table.group('strip', 'wire')
print(
    'Neutrons arrive from the "left" in the following figure (low wire index).'
    'They are gradually absorbed so the intensity decreases as we reach deeper '
    'voxel layers:'
)
binned_strip_wire.hist().plot()
Neutrons arrive from the "left" in the following figure (low wire index).They are gradually absorbed so the intensity decreases as we reach deeper voxel layers:
[17]:

From event-based metadata to bin-based metadata#

For each detected neutron our data records the position of the associated voxel. After the logical grouping above, every bin corresponds to a voxel.

It can be more practical to store the voxel position for every bin (voxel) instead of for every event. This can be achieved, e.g., by computing the mean for every bin. Note that in this case all events in a voxel record the same voxel position so this proceedure is wasteful — in practice we may prefer loading the voxel positions directly from a file.

We can also combine the x, y, and z components into a single array of position vectors:

[18]:
pos = sc.zeros(sizes=binned_logical.sizes, dtype=sc.DType.vector3, unit='mm')
# We 'pop' the coordinates. If desired they could be kept by using
# __getitem__ instead
pos.fields.x = binned_logical.bins.coords.pop('voxel_x').bins.mean()
pos.fields.y = binned_logical.bins.coords.pop('voxel_y').bins.mean()
pos.fields.z = binned_logical.bins.coords.pop('voxel_z').bins.mean()
binned_logical.coords['position'] = pos
binned_logical
[18]:
Show/Hide data repr Show/Hide attributes
scipp.DataArray (105.91 MB)
    • module: 14
    • segment: 6
    • counter: 2
    • wire: 32
    • strip: 256
    • counter
      (counter)
      int64
      1, 2
      Values:
      array([1, 2])
    • module
      (module)
      int64
      1, 2, ..., 13, 14
      Values:
      array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
    • position
      (module, segment, counter, wire, strip)
      vector3
      mm
      [ 952.598 545.569 -1091.35 ], [nan nan nan], ..., [nan nan nan], [nan nan nan]
      Values:
      array([[[[[[ 952.598, 545.569, -1091.35 ], [ nan, nan, nan], [ 952.598, 545.569, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 961.336, 552.861, -1102.61 ], [ 961.336, 552.861, -1089.18 ], [ 961.336, 552.861, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 970.074, 560.153, -1100.31 ], [ 970.074, 560.153, -1086.9 ], ..., [ nan, nan, nan], [ 970.074, 560.153, 1100.31 ], [ 970.074, 560.153, 1113.88 ]], ..., [[ 1206. , 757.048, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1206. , 757.048, 1418.1 ]], [[ 1214.74 , 764.34 , -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1214.74 , 764.34 , 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 946.25 , 553.133, -1091.35 ], [ 946.25 , 553.133, -1078.05 ], [ 946.25 , 553.133, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 954.949, 560.472, -1102.61 ], [ 954.949, 560.472, -1089.18 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ 954.949, 560.472, 1089.18 ], [ nan, nan, nan]], [[ 963.648, 567.811, -1113.88 ], [ 963.648, 567.811, -1100.31 ], [ 963.648, 567.811, -1086.9 ], ..., [ nan, nan, nan], [ 963.648, 567.811, 1100.31 ], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1207.22 , 773.305, -1429.36 ], [ 1207.22 , 773.305, -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1215.92 , 780.644, -1440.63 ], [ 1215.92 , 780.644, -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 940.548, 566.09 , -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 949.126, 573.57 , -1102.61 ], [ 949.126, 573.57 , -1089.18 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 949.126, 573.57 , 1102.61 ]], [[ 957.704, 581.05 , -1113.88 ], [ 957.704, 581.05 , -1100.31 ], [ 957.704, 581.05 , -1086.9 ], ..., [ 957.704, 581.05 , 1086.9 ], [ nan, nan, nan], [ 957.704, 581.05 , 1113.88 ]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 1189.31 , 783.013, 1400.82 ], [ 1189.31 , 783.013, 1418.1 ]], [[ 1197.89 , 790.493, -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1197.89 , 790.493, 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1206.46 , 797.973, 1405.74 ], [ nan, nan, nan], [ nan, nan, nan]]], [[[ nan, nan, nan], [ 934.038, 573.515, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 934.038, 573.515, 1091.35 ]], [[ 942.575, 581.041, -1102.61 ], [ 942.575, 581.041, -1089.18 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ 942.575, 581.041, 1089.18 ], [ 942.575, 581.041, 1102.61 ]], [[ 951.113, 588.567, -1113.88 ], [ 951.113, 588.567, -1100.31 ], [ 951.113, 588.567, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ 1181.63 , 791.767, -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1190.17 , 799.293, -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1190.17 , 799.293, 1429.36 ]], [[ 1198.71 , 806.819, -1440.63 ], [ 1198.71 , 806.819, -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 928.055, 586.345, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 928.055, 586.345, 1091.35 ]], [[ nan, nan, nan], [ 936.469, 594.01 , -1089.18 ], [ 936.469, 594.01 , -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 944.883, 601.674, -1113.88 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 944.883, 601.674, 1113.88 ]], ..., [[ nan, nan, nan], [ 1172.06 , 808.61 , -1400.82 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1180.47 , 816.274, -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 921.386, 593.628, -1091.35 ], [ 921.386, 593.628, -1078.05 ], [ 921.386, 593.628, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 921.386, 593.628, 1091.35 ]], [[ 929.759, 601.337, -1102.61 ], [ 929.759, 601.337, -1089.18 ], [ nan, nan, nan], ..., [ 929.759, 601.337, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 938.131, 609.046, -1100.31 ], [ nan, nan, nan], ..., [ 938.131, 609.046, 1086.9 ], [ 938.131, 609.046, 1100.31 ], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1180.94 , 832.614, 1405.74 ], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 915.127, 606.325, -1091.35 ], [ 915.127, 606.325, -1078.05 ], [ 915.127, 606.325, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 923.373, 614.17 , -1102.61 ], [ 923.373, 614.17 , -1089.18 ], [ 923.373, 614.17 , -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 931.618, 622.015, -1113.88 ], [ 931.618, 622.015, -1100.31 ], [ 931.618, 622.015, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 908.301, 613.461, -1091.35 ], [ 908.301, 613.461, -1078.05 ], [ 908.301, 613.461, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 908.301, 613.461, 1091.35 ]], [[ 916.505, 621.35 , -1102.61 ], [ 916.505, 621.35 , -1089.18 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ 916.505, 621.35 , 1089.18 ], [ 916.505, 621.35 , 1102.61 ]], [[ 924.708, 629.239, -1113.88 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ 924.708, 629.239, 1086.9 ], [ nan, nan, nan], [ 924.708, 629.239, 1113.88 ]], ..., [[ nan, nan, nan], [ 1146.21 , 842.24 , -1400.82 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1154.41 , 850.128, -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1154.41 , 850.128, 1394.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 901.769, 626.02 , -1091.35 ], [ 901.769, 626.02 , -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 901.769, 626.02 , 1091.35 ]], [[ 909.842, 634.042, -1102.61 ], [ 909.842, 634.042, -1089.18 ], [ nan, nan, nan], ..., [ 909.842, 634.042, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 917.916, 642.064, -1113.88 ], [ 917.916, 642.064, -1100.31 ], [ 917.916, 642.064, -1086.9 ], ..., [ 917.916, 642.064, 1086.9 ], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 1135.91 , 858.651, -1418.1 ], [ 1135.91 , 858.651, -1400.82 ], [ 1135.91 , 858.651, -1383.75 ], ..., [ nan, nan, nan], [ 1135.91 , 858.651, 1400.82 ], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1152.05 , 874.695, -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ nan, nan, nan], [ 894.79 , 633.007, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ 894.79 , 633.007, 1078.05 ], [ nan, nan, nan]], [[ 902.82 , 641.071, -1102.61 ], [ 902.82 , 641.071, -1089.18 ], [ 902.82 , 641.071, -1075.91 ], ..., [ nan, nan, nan], [ 902.82 , 641.071, 1089.18 ], [ 902.82 , 641.071, 1102.61 ]], [[ 910.851, 649.136, -1113.88 ], [ 910.851, 649.136, -1100.31 ], [ 910.851, 649.136, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 910.851, 649.136, 1113.88 ]], ..., [[ 1127.68 , 866.888, -1418.1 ], [ nan, nan, nan], [ 1127.68 , 866.888, -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1135.71 , 874.953, -1429.36 ], [ nan, nan, nan], [ 1135.71 , 874.953, -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1143.74 , 883.018, 1405.74 ], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 887.986, 645.421, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 895.884, 653.616, -1102.61 ], [ 895.884, 653.616, -1089.18 ], [ 895.884, 653.616, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 903.782, 661.811, -1113.88 ], [ 903.782, 661.811, -1100.31 ], [ 903.782, 661.811, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 1117.03 , 883.073, -1418.1 ], [ nan, nan, nan], [ 1117.03 , 883.073, -1383.75 ], ..., [ nan, nan, nan], [ 1117.03 , 883.073, 1400.82 ], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1124.92 , 891.268, -1394.75 ], ..., [ 1124.92 , 891.268, 1394.75 ], [ 1124.92 , 891.268, 1411.95 ], [ 1124.92 , 891.268, 1429.36 ]], [[ 1132.82 , 899.463, -1440.63 ], [ nan, nan, nan], [ 1132.82 , 899.463, -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1132.82 , 899.463, 1440.63 ]]], [[[ 880.858, 652.254, -1091.35 ], [ 880.858, 652.254, -1078.05 ], [ 880.858, 652.254, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 888.712, 660.491, -1102.61 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 888.712, 660.491, 1102.61 ]], [[ 896.566, 668.728, -1113.88 ], [ 896.566, 668.728, -1100.31 ], [ 896.566, 668.728, -1086.9 ], ..., [ 896.566, 668.728, 1086.9 ], [ nan, nan, nan], [ 896.566, 668.728, 1113.88 ]], ..., [[ 1108.62 , 891.129, -1418.1 ], [ 1108.62 , 891.129, -1400.82 ], [ 1108.62 , 891.129, -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1116.48 , 899.366, -1429.36 ], [ nan, nan, nan], [ 1116.48 , 899.366, -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1116.48 , 899.366, 1429.36 ]], [[ 1124.33 , 907.603, -1440.63 ], [ 1124.33 , 907.603, -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]]], [[[[[ 1015.31 , 417.402, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1015.31 , 417.402, 1064.91 ], [ nan, nan, nan], [ 1015.31 , 417.402, 1091.35 ]], [[ 1024.92 , 423.499, -1102.61 ], [ 1024.92 , 423.499, -1089.18 ], [ 1024.92 , 423.499, -1075.91 ], ..., [ 1024.92 , 423.499, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 1034.54 , 429.596, -1113.88 ], [ nan, nan, nan], [ 1034.54 , 429.596, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 1294.01 , 594.226, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1303.62 , 600.323, -1429.36 ], [ nan, nan, nan], [ 1303.62 , 600.323, -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1313.23 , 606.421, -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 1010. , 425.726, -1091.35 ], [ 1010. , 425.726, -1078.05 ], [ 1010. , 425.726, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1019.58 , 431.875, -1102.61 ], [ 1019.58 , 431.875, -1089.18 ], [ 1019.58 , 431.875, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1029.16 , 438.023, -1113.88 ], [ 1029.16 , 438.023, -1100.31 ], [ 1029.16 , 438.023, -1086.9 ], ..., [ nan, nan, nan], [ 1029.16 , 438.023, 1100.31 ], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1287.75 , 604.04 , 1383.75 ], [ 1287.75 , 604.04 , 1400.82 ], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 1006.03 , 439.313, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1015.5 , 445.617, -1102.61 ], [ 1015.5 , 445.617, -1089.18 ], [ 1015.5 , 445.617, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1024.98 , 451.921, -1113.88 ], [ 1024.98 , 451.921, -1100.31 ], [ 1024.98 , 451.921, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 1280.83 , 622.137, -1418.1 ], [ nan, nan, nan], [ 1280.83 , 622.137, -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1290.3 , 628.441, -1429.36 ], [ nan, nan, nan], [ 1290.3 , 628.441, -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1290.3 , 628.441, 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1299.78 , 634.745, 1405.74 ], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 1000.54 , 447.52 , -1091.35 ], [ 1000.54 , 447.52 , -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1009.98 , 453.875, -1102.61 ], [ 1009.98 , 453.875, -1089.18 ], [ 1009.98 , 453.875, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1009.98 , 453.875, 1102.61 ]], [[ nan, nan, nan], [ nan, nan, nan], [ 1019.42 , 460.23 , -1086.9 ], ..., [ 1019.42 , 460.23 , 1086.9 ], [ nan, nan, nan], [ 1019.42 , 460.23 , 1113.88 ]], ..., [[ 1274.35 , 631.812, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 1283.79 , 638.167, 1411.95 ], [ nan, nan, nan]], [[ nan, nan, nan], [ 1293.23 , 644.522, -1423.08 ], [ 1293.23 , 644.522, -1405.74 ], ..., [ nan, nan, nan], [ 1293.23 , 644.522, 1423.08 ], [ nan, nan, nan]]]], [[[[ 996.268, 461.017, -1091.35 ], [ nan, nan, nan], [ 996.268, 461.017, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1005.61 , 467.526, -1102.61 ], [ nan, nan, nan], [ 1005.61 , 467.526, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1005.61 , 467.526, 1102.61 ]], [[ 1014.94 , 474.034, -1113.88 ], [ 1014.94 , 474.034, -1100.31 ], [ 1014.94 , 474.034, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1276.37 , 656.263, -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1285.71 , 662.772, -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 990.6 , 469.103, -1091.35 ], [ nan, nan, nan], [ 990.6 , 469.103, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 999.902, 475.661, -1102.61 ], [ 999.902, 475.661, -1089.18 ], [ 999.902, 475.661, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 999.902, 475.661, 1102.61 ]], [[ nan, nan, nan], [ 1009.2 , 482.22 , -1100.31 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ 1260.36 , 659.288, -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1278.96 , 672.404, -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1278.96 , 672.404, 1440.63 ]]]], [[[[ 986.041, 482.505, -1091.35 ], [ 986.041, 482.505, -1078.05 ], [ nan, nan, nan], ..., [ 986.041, 482.505, 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 995.234, 489.214, -1102.61 ], [ 995.234, 489.214, -1089.18 ], [ 995.234, 489.214, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 995.234, 489.214, 1102.61 ]], [[ 1004.43 , 495.923, -1113.88 ], [ 1004.43 , 495.923, -1100.31 ], [ 1004.43 , 495.923, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1004.43 , 495.923, 1113.88 ]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1261.85 , 683.777, 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ 1271.04 , 690.486, -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 980.198, 490.466, -1091.35 ], [ 980.198, 490.466, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 989.356, 497.225, -1102.61 ], [ 989.356, 497.225, -1089.18 ], [ 989.356, 497.225, -1075.91 ], ..., [ nan, nan, nan], [ 989.356, 497.225, 1089.18 ], [ nan, nan, nan]], [[ 998.513, 503.983, -1113.88 ], [ 998.513, 503.983, -1100.31 ], [ 998.513, 503.983, -1086.9 ], ..., [ nan, nan, nan], [ 998.513, 503.983, 1100.31 ], [ nan, nan, nan]], ..., [[ 1245.77 , 686.454, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1254.92 , 693.212, -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1264.08 , 699.971, -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1264.08 , 699.971, 1440.63 ]]]], [[[[ 975.35 , 503.766, -1091.35 ], [ 975.35 , 503.766, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 984.396, 510.673, -1102.61 ], [ 984.396, 510.673, -1089.18 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 993.442, 517.58 , -1113.88 ], [ 993.442, 517.58 , -1100.31 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 1237.68 , 704.063, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1246.73 , 710.97 , 1394.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1255.78 , 717.877, -1405.74 ], ..., [ 1255.78 , 717.877, 1405.74 ], [ 1255.78 , 717.877, 1423.08 ], [ nan, nan, nan]]], [[[ 969.336, 511.599, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 969.336, 511.599, 1078.05 ], [ 969.336, 511.599, 1091.35 ]], [[ 978.345, 518.554, -1102.61 ], [ 978.345, 518.554, -1089.18 ], [ 978.345, 518.554, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 987.354, 525.509, -1113.88 ], [ 987.354, 525.509, -1100.31 ], [ 987.354, 525.509, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 987.354, 525.509, 1113.88 ]], ..., [[ nan, nan, nan], [ 1230.59 , 713.298, -1400.82 ], [ 1230.59 , 713.298, -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1248.61 , 727.208, -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 964.2 , 524.791, -1091.35 ], [ 964.2 , 524.791, -1078.05 ], [ 964.2 , 524.791, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 973.094, 531.892, -1102.61 ], [ 973.094, 531.892, -1089.18 ], [ 973.094, 531.892, -1075.91 ], ..., [ nan, nan, nan], [ 973.094, 531.892, 1089.18 ], [ 973.094, 531.892, 1102.61 ]], [[ 981.989, 538.993, -1113.88 ], [ 981.989, 538.993, -1100.31 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ 981.989, 538.993, 1100.31 ], [ nan, nan, nan]], ..., [[ 1222.13 , 730.727, -1418.1 ], [ 1222.13 , 730.727, -1400.82 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1231.03 , 737.829, -1429.36 ], [ 1231.03 , 737.829, -1411.95 ], [ 1231.03 , 737.829, -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1239.92 , 744.93 , -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 1239.92 , 744.93 , 1423.08 ], [ nan, nan, nan]]], [[[ 958.018, 532.491, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 966.874, 539.64 , -1102.61 ], [ 966.874, 539.64 , -1089.18 ], [ 966.874, 539.64 , -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 975.73 , 546.789, -1086.9 ], ..., [ 975.73 , 546.789, 1086.9 ], [ 975.73 , 546.789, 1100.31 ], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1223.7 , 746.955, -1394.75 ], ..., [ nan, nan, nan], [ 1223.7 , 746.955, 1411.95 ], [ 1223.7 , 746.955, 1429.36 ]], [[ 1232.55 , 754.103, -1440.63 ], [ nan, nan, nan], [ 1232.55 , 754.103, -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]]], [[[[[ 1060.88 , 282.183, -1091.35 ], [ nan, nan, nan], [ 1060.88 , 282.183, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1071.2 , 286.982, -1102.61 ], [ 1071.2 , 286.982, -1089.18 ], [ 1071.2 , 286.982, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1071.2 , 286.982, 1102.61 ]], [[ 1081.52 , 291.781, -1113.88 ], [ 1081.52 , 291.781, -1100.31 ], [ 1081.52 , 291.781, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1370.47 , 426.164, -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1370.47 , 426.164, 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 1056.69 , 291.126, -1091.35 ], [ nan, nan, nan], [ 1056.69 , 291.126, -1064.91 ], ..., [ nan, nan, nan], [ 1056.69 , 291.126, 1078.05 ], [ nan, nan, nan]], [[ 1066.98 , 295.98 , -1102.61 ], [ 1066.98 , 295.98 , -1089.18 ], [ 1066.98 , 295.98 , -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1077.28 , 300.835, -1113.88 ], [ 1077.28 , 300.835, -1100.31 ], [ 1077.28 , 300.835, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1365.51 , 436.762, -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1375.8 , 441.617, -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 1054.51 , 305.113, -1091.35 ], [ 1054.51 , 305.113, -1078.05 ], [ 1054.51 , 305.113, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1064.72 , 310.135, -1102.61 ], [ 1064.72 , 310.135, -1089.18 ], [ 1064.72 , 310.135, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1074.94 , 315.157, -1113.88 ], [ nan, nan, nan], [ 1074.94 , 315.157, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 1350.7 , 450.75 , -1418.1 ], [ 1350.7 , 450.75 , -1400.82 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1371.13 , 460.794, 1440.63 ]]], [[[ 1050.13 , 313.963, -1091.35 ], [ 1050.13 , 313.963, -1078.05 ], [ 1050.13 , 313.963, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1060.32 , 319.04 , -1102.61 ], [ 1060.32 , 319.04 , -1089.18 ], [ 1060.32 , 319.04 , -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1060.32 , 319.04 , 1102.61 ]], [[ 1070.5 , 324.116, -1113.88 ], [ nan, nan, nan], [ 1070.5 , 324.116, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1070.5 , 324.116, 1113.88 ]], ..., [[ nan, nan, nan], [ 1345.54 , 461.184, -1400.82 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1355.72 , 466.26 , -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1365.91 , 471.337, -1440.63 ], [ 1365.91 , 471.337, -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ nan, nan, nan], [ 1047.65 , 327.9 , -1078.05 ], [ 1047.65 , 327.9 , -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1057.75 , 333.142, -1089.18 ], [ 1057.75 , 333.142, -1075.91 ], ..., [ nan, nan, nan], [ 1057.75 , 333.142, 1089.18 ], [ 1057.75 , 333.142, 1102.61 ]], [[ 1067.85 , 338.385, -1113.88 ], [ 1067.85 , 338.385, -1100.31 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1067.85 , 338.385, 1113.88 ]], ..., [[ 1340.61 , 479.923, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1350.71 , 485.165, -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1360.82 , 490.408, -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 1043.08 , 336.653, -1091.35 ], [ 1043.08 , 336.653, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1053.15 , 341.949, -1102.61 ], [ 1053.15 , 341.949, -1089.18 ], [ 1053.15 , 341.949, -1075.91 ], ..., [ 1053.15 , 341.949, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 1063.22 , 347.246, -1113.88 ], [ 1063.22 , 347.246, -1100.31 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 1335.22 , 490.243, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1335.22 , 490.243, 1418.1 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 1040.3 , 350.533, -1091.35 ], [ nan, nan, nan], [ 1040.3 , 350.533, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1050.28 , 355.993, -1102.61 ], [ nan, nan, nan], [ 1050.28 , 355.993, -1075.91 ], ..., [ 1050.28 , 355.993, 1075.91 ], [ 1050.28 , 355.993, 1089.18 ], [ 1050.28 , 355.993, 1102.61 ]], [[ 1060.27 , 361.453, -1113.88 ], [ 1060.27 , 361.453, -1100.31 ], [ 1060.27 , 361.453, -1086.9 ], ..., [ 1060.27 , 361.453, 1086.9 ], [ nan, nan, nan], [ 1060.27 , 361.453, 1113.88 ]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1339.88 , 514.331, -1429.36 ], [ 1339.88 , 514.331, -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1349.87 , 519.791, -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 1035.54 , 359.185, -1091.35 ], [ 1035.54 , 359.185, -1078.05 ], [ 1035.54 , 359.185, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1045.49 , 364.698, -1102.61 ], [ 1045.49 , 364.698, -1089.18 ], [ 1045.49 , 364.698, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1045.49 , 364.698, 1102.61 ]], [[ 1055.45 , 370.212, -1113.88 ], [ 1055.45 , 370.212, -1100.31 ], [ 1055.45 , 370.212, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1055.45 , 370.212, 1113.88 ]], ..., [[ 1324.28 , 519.071, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1334.24 , 524.585, -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1344.19 , 530.098, -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 1032.45 , 373.002, -1091.35 ], [ 1032.45 , 373.002, -1078.05 ], [ 1032.45 , 373.002, -1064.91 ], ..., [ 1032.45 , 373.002, 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 1042.32 , 378.677, -1102.61 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1052.18 , 384.352, -1113.88 ], [ 1052.18 , 384.352, -1100.31 ], [ 1052.18 , 384.352, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ 1318.55 , 537.58 , -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1338.28 , 548.93 , -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 1027.51 , 381.548, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1037.34 , 387.276, -1089.18 ], [ nan, nan, nan], ..., [ 1037.34 , 387.276, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 1047.17 , 393.004, -1113.88 ], [ nan, nan, nan], [ 1047.17 , 393.004, -1086.9 ], ..., [ 1047.17 , 393.004, 1086.9 ], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1312.72 , 547.656, 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 1024.12 , 395.295, -1091.35 ], [ 1024.12 , 395.295, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1033.86 , 401.182, -1102.61 ], [ 1033.86 , 401.182, -1089.18 ], [ 1033.86 , 401.182, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1033.86 , 401.182, 1102.61 ]], [[ 1043.6 , 407.07 , -1113.88 ], [ 1043.6 , 407.07 , -1100.31 ], [ 1043.6 , 407.07 , -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1306.59 , 566.036, 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 1018.99 , 403.732, -1091.35 ], [ 1018.99 , 403.732, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1028.7 , 409.671, -1102.61 ], [ 1028.7 , 409.671, -1089.18 ], [ 1028.7 , 409.671, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 1028.7 , 409.671, 1102.61 ]], [[ 1038.41 , 415.611, -1113.88 ], [ 1038.41 , 415.611, -1100.31 ], [ 1038.41 , 415.611, -1086.9 ], ..., [ 1038.41 , 415.611, 1086.9 ], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 1300.54 , 575.983, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]]], ..., [[[[[ 673.153, -867.152, -1091.35 ], [ nan, nan, nan], [ 673.153, -867.152, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 681.593, -874.787, -1075.91 ], ..., [ 681.593, -874.787, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 690.033, -882.422, -1113.88 ], [ 690.033, -882.422, -1100.31 ], [ 690.033, -882.422, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 690.033, -882.422, 1113.88 ]], ..., [[ 917.922, -1088.57 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 926.363, -1096.2 , -1429.36 ], [ nan, nan, nan], [ 926.363, -1096.2 , -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 679.758, -859.811, -1091.35 ], [ 679.758, -859.811, -1078.05 ], [ 679.758, -859.811, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 688.239, -867.401, -1102.61 ], [ 688.239, -867.401, -1089.18 ], [ 688.239, -867.401, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 696.72 , -874.991, -1113.88 ], [ 696.72 , -874.991, -1100.31 ], [ 696.72 , -874.991, -1086.9 ], ..., [ 696.72 , -874.991, 1086.9 ], [ nan, nan, nan], [ 696.72 , -874.991, 1113.88 ]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 925.709, -1079.91 , 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 934.19 , -1087.51 , -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 934.19 , -1087.51 , 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 691.792, -852.356, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ 691.792, -852.356, 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 700.396, -859.807, -1102.61 ], [ 700.396, -859.807, -1089.18 ], [ 700.396, -859.807, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 700.396, -859.807, 1102.61 ]], [[ 709. , -867.257, -1113.88 ], [ 709. , -867.257, -1100.31 ], [ 709. , -867.257, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 698.236, -844.874, -1091.35 ], [ nan, nan, nan], [ 698.236, -844.874, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 706.88 , -852.278, -1102.61 ], [ 706.88 , -852.278, -1089.18 ], [ 706.88 , -852.278, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 706.88 , -852.278, 1102.61 ]], [[ 715.524, -859.682, -1113.88 ], [ 715.524, -859.682, -1100.31 ], [ 715.524, -859.682, -1086.9 ], ..., [ nan, nan, nan], [ 715.524, -859.682, 1100.31 ], [ nan, nan, nan]], ..., [[ 948.901, -1059.6 , -1418.1 ], [ nan, nan, nan], [ 948.901, -1059.6 , -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 957.545, -1067. , -1429.36 ], [ 957.545, -1067. , -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 966.188, -1074.4 , -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 710.106, -837.16 , -1091.35 ], [ 710.106, -837.16 , -1078.05 ], [ nan, nan, nan], ..., [ 710.106, -837.16 , 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 718.869, -844.422, -1102.61 ], [ 718.869, -844.422, -1089.18 ], [ nan, nan, nan], ..., [ 718.869, -844.422, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 727.633, -851.684, -1113.88 ], [ nan, nan, nan], [ 727.633, -851.684, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 727.633, -851.684, 1113.88 ]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 964.243, -1047.76 , 1418.1 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 973.006, -1055.02 , 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 716.387, -829.54 , -1091.35 ], [ 716.387, -829.54 , -1078.05 ], [ 716.387, -829.54 , -1064.91 ], ..., [ 716.387, -829.54 , 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 725.189, -836.755, -1102.61 ], [ 725.189, -836.755, -1089.18 ], [ 725.189, -836.755, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 725.189, -836.755, 1102.61 ]], [[ 733.991, -843.97 , -1113.88 ], [ 733.991, -843.97 , -1100.31 ], [ 733.991, -843.97 , -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 971.647, -1038.78 , 1418.1 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 980.449, -1045.99 , 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 728.087, -821.57 , -1091.35 ], [ 728.087, -821.57 , -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ 728.087, -821.57 , 1078.05 ], [ nan, nan, nan]], [[ 737.005, -828.641, -1102.61 ], [ 737.005, -828.641, -1089.18 ], [ 737.005, -828.641, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 737.005, -828.641, 1102.61 ]], [[ 745.924, -835.711, -1113.88 ], [ 745.924, -835.711, -1100.31 ], [ 745.924, -835.711, -1086.9 ], ..., [ 745.924, -835.711, 1086.9 ], [ nan, nan, nan], [ 745.924, -835.711, 1113.88 ]], ..., [[ 986.729, -1026.61 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 986.729, -1026.61 , 1418.1 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 734.2 , -813.816, -1091.35 ], [ 734.2 , -813.816, -1078.05 ], [ 734.2 , -813.816, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 743.157, -820.838, -1089.18 ], [ 743.157, -820.838, -1075.91 ], ..., [ nan, nan, nan], [ 743.157, -820.838, 1089.18 ], [ 743.157, -820.838, 1102.61 ]], [[ 752.113, -827.861, -1113.88 ], [ nan, nan, nan], [ 752.113, -827.861, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 1011.85 , -1031.52 , -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 745.725, -805.594, -1091.35 ], [ 745.725, -805.594, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 754.795, -812.47 , -1102.61 ], [ 754.795, -812.47 , -1089.18 ], [ 754.795, -812.47 , -1075.91 ], ..., [ 754.795, -812.47 , 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 763.864, -819.345, -1113.88 ], [ 763.864, -819.345, -1100.31 ], [ 763.864, -819.345, -1086.9 ], ..., [ nan, nan, nan], [ 763.864, -819.345, 1100.31 ], [ 763.864, -819.345, 1113.88 ]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1017.82 , -1011.86 , -1411.95 ], [ nan, nan, nan], ..., [ 1017.82 , -1011.86 , 1394.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ nan, nan, nan], [ 751.669, -797.709, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 760.776, -804.536, -1102.61 ], [ 760.776, -804.536, -1089.18 ], [ 760.776, -804.536, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 769.882, -811.362, -1113.88 ], [ nan, nan, nan], [ 769.882, -811.362, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 769.882, -811.362, 1113.88 ]], ..., [[ 1015.76 , -995.685, -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 1015.76 , -995.685, 1400.82 ], [ nan, nan, nan]], [[ 1024.87 , -1002.51 , -1429.36 ], [ nan, nan, nan], [ 1024.87 , -1002.51 , -1394.75 ], ..., [ nan, nan, nan], [ 1024.87 , -1002.51 , 1411.95 ], [ nan, nan, nan]], [[ 1033.97 , -1009.34 , -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 763.012, -789.24 , -1091.35 ], [ 763.012, -789.24 , -1078.05 ], [ 763.012, -789.24 , -1064.91 ], ..., [ 763.012, -789.24 , 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 772.229, -795.917, -1102.61 ], [ 772.229, -795.917, -1089.18 ], [ 772.229, -795.917, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 781.446, -802.594, -1113.88 ], [ 781.446, -802.594, -1100.31 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 1030.3 , -982.878, 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1039.52 , -989.556, -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 1048.73 , -996.233, -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ nan, nan, nan], [ nan, nan, nan], [ 768.784, -781.227, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 768.784, -781.227, 1091.35 ]], [[ 778.037, -787.855, -1102.61 ], [ nan, nan, nan], [ 778.037, -787.855, -1075.91 ], ..., [ 778.037, -787.855, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 787.289, -794.483, -1113.88 ], [ 787.289, -794.483, -1100.31 ], [ nan, nan, nan], ..., [ 787.289, -794.483, 1086.9 ], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ 1037.1 , -973.432, -1400.82 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1046.36 , -980.06 , -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 1055.61 , -986.688, -1423.08 ], [ 1055.61 , -986.688, -1405.74 ], ..., [ nan, nan, nan], [ 1055.61 , -986.688, 1423.08 ], [ nan, nan, nan]]]]], [[[[[ 554.991, -947.139, -1091.35 ], [ nan, nan, nan], [ 554.991, -947.139, -1064.91 ], ..., [ 554.991, -947.139, 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 562.37 , -955.805, -1102.61 ], [ 562.37 , -955.805, -1089.18 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 569.748, -964.47 , -1086.9 ], ..., [ 569.748, -964.47 , 1086.9 ], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 768.973, -1198.43 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ 768.973, -1198.43 , 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 776.352, -1207.1 , -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 776.352, -1207.1 , 1411.95 ], [ 776.352, -1207.1 , 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 562.492, -940.717, -1091.35 ], [ 562.492, -940.717, -1078.05 ], [ 562.492, -940.717, -1064.91 ], ..., [ 562.492, -940.717, 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 569.917, -949.343, -1102.61 ], [ 569.917, -949.343, -1089.18 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 577.342, -957.968, -1113.88 ], [ 577.342, -957.968, -1100.31 ], [ 577.342, -957.968, -1086.9 ], ..., [ nan, nan, nan], [ 577.342, -957.968, 1100.31 ], [ 577.342, -957.968, 1113.88 ]], ..., [[ 777.817, -1190.86 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 785.242, -1199.49 , 1429.36 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 575.392, -934.886, -1091.35 ], [ 575.392, -934.886, -1078.05 ], [ nan, nan, nan], ..., [ 575.392, -934.886, 1064.91 ], [ 575.392, -934.886, 1078.05 ], [ 575.392, -934.886, 1091.35 ]], [[ 582.957, -943.389, -1102.61 ], [ 582.957, -943.389, -1089.18 ], [ 582.957, -943.389, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 590.521, -951.893, -1113.88 ], [ nan, nan, nan], [ 590.521, -951.893, -1086.9 ], ..., [ 590.521, -951.893, 1086.9 ], [ nan, nan, nan], [ 590.521, -951.893, 1113.88 ]], ..., [[ 794.771, -1181.48 , -1418.1 ], [ nan, nan, nan], [ 794.771, -1181.48 , -1383.75 ], ..., [ 794.771, -1181.48 , 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 802.336, -1189.99 , -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ 802.336, -1189.99 , 1394.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 809.901, -1198.49 , -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 809.901, -1198.49 , 1440.63 ]]], [[[ 582.752, -928.303, -1091.35 ], [ 582.752, -928.303, -1078.05 ], [ 582.752, -928.303, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 590.362, -936.765, -1102.61 ], [ 590.362, -936.765, -1089.18 ], [ 590.362, -936.765, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 597.973, -945.228, -1113.88 ], [ nan, nan, nan], [ 597.973, -945.228, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 803.449, -1173.72 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 818.669, -1190.65 , -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 595.522, -922.194, -1091.35 ], [ 595.522, -922.194, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 603.27 , -930.531, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 611.017, -938.868, -1113.88 ], [ 611.017, -938.868, -1100.31 ], [ 611.017, -938.868, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 820.196, -1163.98 , 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 827.943, -1172.32 , -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 602.738, -915.452, -1091.35 ], [ 602.738, -915.452, -1078.05 ], [ 602.738, -915.452, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 610.53 , -923.748, -1102.61 ], [ 610.53 , -923.748, -1089.18 ], [ 610.53 , -923.748, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 618.322, -932.044, -1113.88 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ 828.703, -1156.03 , -1400.82 ], [ nan, nan, nan], ..., [ 828.703, -1156.03 , 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 836.495, -1164.33 , -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 615.373, -909.068, -1091.35 ], [ nan, nan, nan], [ 615.373, -909.068, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 623.299, -917.235, -1102.61 ], [ 623.299, -917.235, -1089.18 ], [ 623.299, -917.235, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 623.299, -917.235, 1102.61 ]], [[ 631.225, -925.403, -1113.88 ], [ nan, nan, nan], [ 631.225, -925.403, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 845.235, -1145.92 , 1418.1 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 622.441, -902.171, -1091.35 ], [ 622.441, -902.171, -1078.05 ], [ 622.441, -902.171, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 622.441, -902.171, 1091.35 ]], [[ 630.411, -910.296, -1102.61 ], [ 630.411, -910.296, -1089.18 ], [ 630.411, -910.296, -1075.91 ], ..., [ 630.411, -910.296, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 638.381, -918.421, -1113.88 ], [ 638.381, -918.421, -1100.31 ], [ 638.381, -918.421, -1086.9 ], ..., [ 638.381, -918.421, 1086.9 ], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 861.538, -1145.92 , -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 861.538, -1145.92 , 1429.36 ]], [[ nan, nan, nan], [ 869.507, -1154.05 , -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 869.507, -1154.05 , 1440.63 ]]]], [[[[ 634.934, -895.514, -1091.35 ], [ 634.934, -895.514, -1078.05 ], [ 634.934, -895.514, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 643.036, -903.508, -1089.18 ], [ 643.036, -903.508, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 651.137, -911.502, -1113.88 ], [ 651.137, -911.502, -1100.31 ], [ 651.137, -911.502, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ 869.877, -1127.33 , -1400.82 ], [ 869.877, -1127.33 , -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 877.978, -1135.33 , -1411.95 ], [ 877.978, -1135.33 , -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 641.851, -888.467, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 641.851, -888.467, 1091.35 ]], [[ 649.995, -896.417, -1102.61 ], [ 649.995, -896.417, -1089.18 ], [ 649.995, -896.417, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 658.139, -904.367, -1100.31 ], [ 658.139, -904.367, -1086.9 ], ..., [ 658.139, -904.367, 1086.9 ], [ 658.139, -904.367, 1100.31 ], [ nan, nan, nan]], ..., [[ 878.031, -1119.02 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 654.197, -881.54 , -1091.35 ], [ 654.197, -881.54 , -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 654.197, -881.54 , 1091.35 ]], [[ 662.47 , -889.357, -1102.61 ], [ 662.47 , -889.357, -1089.18 ], [ 662.47 , -889.357, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 670.743, -897.173, -1113.88 ], [ 670.743, -897.173, -1100.31 ], [ 670.743, -897.173, -1086.9 ], ..., [ nan, nan, nan], [ 670.743, -897.173, 1100.31 ], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ 894.109, -1108.21 , -1383.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 902.382, -1116.03 , 1394.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 910.655, -1123.85 , -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 910.655, -1123.85 , 1440.63 ]]], [[[ nan, nan, nan], [ 660.96 , -874.344, -1078.05 ], [ 660.96 , -874.344, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 669.274, -882.116, -1102.61 ], [ 669.274, -882.116, -1089.18 ], [ 669.274, -882.116, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 677.589, -889.888, -1113.88 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 677.589, -889.888, 1100.31 ], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 902.082, -1099.73 , 1418.1 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 918.711, -1115.27 , -1440.63 ], [ 918.711, -1115.27 , -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]]], [[[[[ 427.452, -1011.12 , -1091.35 ], [ nan, nan, nan], [ 427.452, -1011.12 , -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 433.645, -1020.67 , -1102.61 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 433.645, -1020.67 , 1089.18 ], [ 433.645, -1020.67 , 1102.61 ]], [[ 439.837, -1030.22 , -1113.88 ], [ 439.837, -1030.22 , -1100.31 ], [ 439.837, -1030.22 , -1086.9 ], ..., [ nan, nan, nan], [ 439.837, -1030.22 , 1100.31 ], [ nan, nan, nan]], ..., [[ 607.032, -1288.05 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 619.417, -1307.15 , 1423.08 ], [ nan, nan, nan]]], [[[ 435.723, -1005.73 , -1091.35 ], [ 435.723, -1005.73 , -1078.05 ], [ 435.723, -1005.73 , -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 441.967, -1015.25 , -1102.61 ], [ nan, nan, nan], [ 441.967, -1015.25 , -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 448.21 , -1024.76 , -1100.31 ], [ 448.21 , -1024.76 , -1086.9 ], ..., [ nan, nan, nan], [ 448.21 , -1024.76 , 1100.31 ], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 616.784, -1281.69 , 1418.1 ]], [[ nan, nan, nan], [ nan, nan, nan], [ 623.027, -1291.21 , -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 629.27 , -1300.72 , -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 449.27 , -1001.62 , -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 455.668, -1011.03 , -1102.61 ], [ 455.668, -1011.03 , -1089.18 ], [ 455.668, -1011.03 , -1075.91 ], ..., [ 455.668, -1011.03 , 1075.91 ], [ nan, nan, nan], [ 455.668, -1011.03 , 1102.61 ]], [[ 462.066, -1020.45 , -1113.88 ], [ 462.066, -1020.45 , -1100.31 ], [ 462.066, -1020.45 , -1086.9 ], ..., [ 462.066, -1020.45 , 1086.9 ], [ 462.066, -1020.45 , 1100.31 ], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ 634.811, -1274.59 , -1400.82 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ 634.811, -1274.59 , 1418.1 ]], [[ nan, nan, nan], [ 641.209, -1284. , -1411.95 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 647.607, -1293.42 , -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 457.422, -996.048, -1091.35 ], [ 457.422, -996.048, -1078.05 ], [ 457.422, -996.048, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 463.871, -1005.43 , -1102.61 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 470.319, -1014.8 , -1113.88 ], [ 470.319, -1014.8 , -1100.31 ], [ 470.319, -1014.8 , -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ 644.422, -1268.02 , 1383.75 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 650.87 , -1277.4 , -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 657.319, -1286.78 , -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 470.877, -991.646, -1091.35 ], [ nan, nan, nan], [ 470.877, -991.646, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 477.477, -1000.92 , -1102.61 ], [ 477.477, -1000.92 , -1089.18 ], [ 477.477, -1000.92 , -1075.91 ], ..., [ nan, nan, nan], [ 477.477, -1000.92 , 1089.18 ], [ nan, nan, nan]], [[ nan, nan, nan], [ 484.078, -1010.19 , -1100.31 ], [ 484.078, -1010.19 , -1086.9 ], ..., [ nan, nan, nan], [ 484.078, -1010.19 , 1100.31 ], [ 484.078, -1010.19 , 1113.88 ]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ 668.892, -1269.8 , -1411.95 ], [ 668.892, -1269.8 , -1394.75 ], ..., [ nan, nan, nan], [ 668.892, -1269.8 , 1411.95 ], [ nan, nan, nan]], [[ 675.492, -1279.07 , -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 478.906, -985.898, -1091.35 ], [ nan, nan, nan], [ 478.906, -985.898, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 485.556, -995.134, -1102.61 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 492.206, -1004.37 , -1113.88 ], [ 492.206, -1004.37 , -1100.31 ], [ 492.206, -1004.37 , -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 671.758, -1253.75 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 492.262, -981.206, -1091.35 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 492.262, -981.206, 1078.05 ], [ 492.262, -981.206, 1091.35 ]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 499.062, -990.333, 1089.18 ], [ nan, nan, nan]], [[ 505.862, -999.459, -1113.88 ], [ nan, nan, nan], [ 505.862, -999.459, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 505.862, -999.459, 1113.88 ]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 689.461, -1245.88 , 1400.82 ], [ 689.461, -1245.88 , 1418.1 ]], [[ nan, nan, nan], [ nan, nan, nan], [ 696.26 , -1255. , -1394.75 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ 703.06 , -1264.13 , -1405.74 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 500.165, -975.285, -1091.35 ], [ 500.165, -975.285, -1078.05 ], [ 500.165, -975.285, -1064.91 ], ..., [ 500.165, -975.285, 1064.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 507.014, -984.375, -1102.61 ], [ 507.014, -984.375, -1089.18 ], [ 507.014, -984.375, -1075.91 ], ..., [ 507.014, -984.375, 1075.91 ], [ nan, nan, nan], [ 507.014, -984.375, 1102.61 ]], [[ 513.863, -993.465, -1113.88 ], [ 513.863, -993.465, -1100.31 ], [ 513.863, -993.465, -1086.9 ], ..., [ 513.863, -993.465, 1086.9 ], [ nan, nan, nan], [ 513.863, -993.465, 1113.88 ]], ..., [[ 698.778, -1238.9 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 513.416, -970.305, -1091.35 ], [ 513.416, -970.305, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 520.413, -979.282, -1102.61 ], [ 520.413, -979.282, -1089.18 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 527.409, -988.259, -1113.88 ], [ 527.409, -988.259, -1100.31 ], [ 527.409, -988.259, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 716.306, -1230.64 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 723.302, -1239.62 , -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 730.298, -1248.59 , -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]], [[[ 521.189, -964.214, -1091.35 ], [ 521.189, -964.214, -1078.05 ], [ 521.189, -964.214, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 521.189, -964.214, 1091.35 ]], [[ 528.233, -973.153, -1102.61 ], [ 528.233, -973.153, -1089.18 ], [ 528.233, -973.153, -1075.91 ], ..., [ 528.233, -973.153, 1075.91 ], [ nan, nan, nan], [ nan, nan, nan]], [[ 535.277, -982.093, -1113.88 ], [ nan, nan, nan], [ 535.277, -982.093, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ 535.277, -982.093, 1113.88 ]], ..., [[ 725.469, -1223.46 , -1418.1 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 739.557, -1241.34 , -1440.63 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]], [[[[ 534.329, -958.947, -1091.35 ], [ 534.329, -958.947, -1078.05 ], [ 534.329, -958.947, -1064.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 541.518, -967.771, -1102.61 ], [ 541.518, -967.771, -1089.18 ], [ 541.518, -967.771, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 548.708, -976.594, -1113.88 ], [ 548.708, -976.594, -1100.31 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ 742.814, -1214.82 , -1418.1 ], [ 742.814, -1214.82 , -1400.82 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 750.003, -1223.65 , 1411.95 ], [ nan, nan, nan]], [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ 757.192, -1232.47 , 1423.08 ], [ nan, nan, nan]]], [[[ nan, nan, nan], [ 541.968, -952.689, -1078.05 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ 541.968, -952.689, 1078.05 ], [ nan, nan, nan]], [[ nan, nan, nan], [ 549.204, -961.474, -1089.18 ], [ 549.204, -961.474, -1075.91 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 556.441, -970.258, -1113.88 ], [ 556.441, -970.258, -1100.31 ], [ 556.441, -970.258, -1086.9 ], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], ..., [[ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 759.056, -1216.23 , -1429.36 ], [ nan, nan, nan], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]], [[ 766.292, -1225.01 , -1440.63 ], [ 766.292, -1225.01 , -1423.08 ], [ nan, nan, nan], ..., [ nan, nan, nan], [ nan, nan, nan], [ nan, nan, nan]]]]]])
    • segment
      (segment)
      int64
      1, 2, ..., 5, 6
      Values:
      array([1, 2, 3, 4, 5, 6])
    • strip
      (strip)
      int64
      1, 2, ..., 255, 256
      Values:
      array([ 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])
    • wire
      (wire)
      int64
      1, 2, ..., 31, 32
      Values:
      array([ 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])
    • (module, segment, counter, wire, strip)
      DataArrayView
      binned data [len=1, len=0, ..., len=0, len=0]
      Values:
      [<scipp.DataArray> Dimensions: Sizes[row:1, ] Coordinates: radius float64 [mm] (row) [1094.31] tof int64 [ns] (row) [74730691] wavelength float64 [Å] (row) [3.787] x_pos float64 [mm] (row) [952.559] y_pos float64 [mm] (row) [538.643] z_pos float64 [mm] (row) [-1092.5] Data: float64 [counts] (row) [1] , <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: radius float64 [mm] (row) [] tof int64 [ns] (row) [] wavelength float64 [Å] (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] , ..., <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: radius float64 [mm] (row) [] tof int64 [ns] (row) [] wavelength float64 [Å] (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] , <scipp.DataArray> Dimensions: Sizes[row:0, ] Coordinates: radius float64 [mm] (row) [] tof int64 [ns] (row) [] wavelength float64 [Å] (row) [] x_pos float64 [mm] (row) [] y_pos float64 [mm] (row) [] z_pos float64 [mm] (row) [] Data: float64 [counts] (row) [] ]

We have removed three event-based coordinates (voxel_x, voxel_y, and voxel_z) and replaced it by a single bin-coordinate, position. Note how the contents of the bins have changed compared to ealier in this tutorial:

[19]:
# Extra dimensions sliced out for display purposes, sc.show cannot deal with 5-D data
sc.show(binned_logical['strip', 0]['counter', 0]['segment', 0]['module', :5].transpose())
(dims=('wire', 'module'), shape=(32, 5), unit=None, variances=False)values wiremodule (dims=('row',), shape=(999999,), unit=counts, variances=False)values row radiusradius(dims=('row',), shape=(999999,), unit=mm, variances=False)values row toftof(dims=('row',), shape=(999999,), unit=ns, variances=False)values row wavelengthwavelength(dims=('row',), shape=(999999,), unit=Å, variances=False)values row x_posx_pos(dims=('row',), shape=(999999,), unit=mm, variances=False)values row y_posy_pos(dims=('row',), shape=(999999,), unit=mm, variances=False)values row z_posz_pos(dims=('row',), shape=(999999,), unit=mm, variances=False)values row wirewire(dims=('wire',), shape=(32,), unit=None, variances=False)values wire positionposition(dims=('module', 'wire'), shape=(5, 32), unit=mm, variances=False)values module wire stripstrip(dims=(), shape=(), unit=None, variances=False)values segme..segment(dims=(), shape=(), unit=None, variances=False)values count..counter(dims=(), shape=(), unit=None, variances=False)values modulemodule(dims=('module',), shape=(5,), unit=None, variances=False)values module

Equipped with the position of every voxel, we can compute the number of neutrons counted per voxel and create a 3-D scatter plot. The “scatter points” correspond to the voxel positions. In this particular case some voxels had no associated neutrons so the computed position is invalid (binned.coords['position'] contains NaN) and no scatter point is shown:

[20]:
counts_per_voxel = binned_logical.hist()
# The following line selects a subset of voxels based on a stride. This is to keep the size
# of the documentation HTML small. You can comment or remove it to plot all voxels.
counts_per_voxel = counts_per_voxel['counter', 0]['strip', ::4]['wire', ::2]
counts_per_voxel.plot(projection='3d', positions='position', pixel_size=20)
[20]:

We can also inspect an individual component such as a strip:

[21]:
strip_counts = binned_logical['strip', 200].hist()
strip_counts.plot(projection='3d', positions='position', pixel_size=10)
[21]:

Exercise 4#

Above, in Logical binning, we grouped by voxel (based on 5 distinct logical indices) and then computed voxel positions.

  • Repeat this without binning by wire, i.e., use only module, segment, counter, and strip.

  • Compute the resulting mean positions from event positions analogously to before. Alternatively, you can compute these directly from the voxel positions, but note that some voxels have NaN positions, so nanmean must be used instead of mean.

  • Create a scatter plot as before. This should yield a rough projection onto a cylinder.

Solution#

[22]:
proj = table.group('module', 'segment', 'counter', 'strip')
proj_pos = pos.nanmean('wire')
proj.hist().plot(projection='3d', positions=proj_pos, pixel_size=10, norm='log')
[22]:

Binning with edges and groups combined#

It is also possible to combine binning and grouping. Since strips roughly correspond to scattering angle, a plot against wavelength and strip may be useful.

Exercise 5#

  • Use group table by ‘strip’ and bin by ‘wavelength’.

  • Plot the result.

Solution#

[23]:
binned_strip_wavelength = table.group('strip').bin(wavelength=1000)
binned_strip_wavelength.hist().plot(norm='log')
[23]: