From tabular data to binned data
Contents
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]:
%matplotlib widget
import scipp as sc
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]:
counter | module | segment | strip | tof | voxel_x | voxel_y | voxel_z | wavelength | wire | x_pos | y_pos | z_pos |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data |
[ns] | [mm] | [mm] | [mm] | [Å] | [mm] | [mm] | [mm] | |||||
2 | 12 | 6 | 20 | 73035529 | 963.085 | -920.410 | -1049.580 | 3.694 | 22 | 956.990 | -922.167 | -1045.120 |
1 | 4 | 5 | 20 | 72964368 | 1103.670 | 248.977 | -889.281 | 3.702 | 4 | 1106.620 | 255.398 | -892.764 |
2 | 14 | 5 | 20 | 73056111 | 704.337 | -1196.640 | -1094.100 | 3.691 | 27 | 703.154 | -1204.100 | -1102.690 |
2 | 14 | 5 | 19 | 73056111 | 704.337 | -1196.640 | -1107.980 | 3.691 | 27 | 702.934 | -1202.910 | -1104.840 |
1 | 10 | 1 | 19 | 73024979 | 1075.960 | -768.968 | -1053.870 | 3.694 | 21 | 1080.410 | -766.272 | -1051.010 |
2 | 7 | 5 | 19 | 72964749 | 1160.890 | -179.184 | -936.635 | 3.700 | 8 | 1161.530 | -173.722 | -935.843 |
1 | 13 | 3 | 19 | 72964010 | 634.259 | -963.880 | -918.598 | 3.701 | 6 | 628.887 | -966.418 | -911.440 |
1 | 13 | 3 | 20 | 72964010 | 634.259 | -963.880 | -907.091 | 3.701 | 6 | 629.122 | -965.821 | -910.524 |
1 | 1 | 4 | 15 | 73099429 | 972.847 | 661.239 | -984.737 | 3.705 | 8 | 970.896 | 665.640 | -984.516 |
1 | 7 | 2 | 19 | 72961966 | 1134.810 | -263.814 | -927.616 | 3.700 | 7 | 1133.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]:
- row: 999999
- counter(row)int642, 1, ..., 2, 2
Values:
array([2, 1, 2, ..., 2, 2, 2]) - module(row)int6412, 4, ..., 14, 13
Values:
array([12, 4, 14, ..., 14, 14, 13]) - segment(row)int646, 5, ..., 2, 3
Values:
array([6, 5, 5, ..., 2, 2, 3]) - strip(row)int6420, 20, ..., 153, 153
Values:
array([ 20, 20, 20, ..., 154, 153, 153]) - tof(row)int64ns73035529, 72964368, ..., 54261718, 54254907
Values:
array([73035529, 72964368, 73056111, ..., 54261718, 54261718, 54254907]) - voxel_x(row)float64mm963.085, 1103.670, ..., 573.491, 727.408
Values:
array([ 963.085, 1103.67 , 704.337, ..., 573.491, 573.491, 727.408]) - voxel_y(row)float64mm-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)float64mm-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)int6422, 4, ..., 19, 17
Values:
array([22, 4, 27, ..., 19, 19, 17]) - x_pos(row)float64mm956.990, 1106.620, ..., 572.311, 726.378
Values:
array([ 956.99 , 1106.62 , 703.154, ..., 569.039, 572.311, 726.378]) - y_pos(row)float64mm-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)float64mm-1045.120, -892.764, ..., 200.893, 193.689
Values:
array([-1045.12 , -892.764, -1102.69 , ..., 201.67 , 200.893, 193.689])
- (row)float64counts1.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]:
- 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)float64counts8.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]:
- 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)float64counts65.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]:
- 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)DataArrayViewbinned 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)
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)
Exercise 1#
Histogram and bin
table
byz_pos
. Plot the results.Use
bin
on the result of the binning from the first bullet with a different value forz_pos
(for example with more bins), i.e., not on the original tabletable
. 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
sc.plotting.plot(binned_xyz['z_pos', 20:].hist(), 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]:
- y_pos: 100
- x_pos: 40
- x_pos(x_pos [bin-edge])float64mm400.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])float64mm-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)DataArrayViewbinned 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)float64mm-48.870, 44.790
Values:
array([-48.86967742, 44.78967742])
[13]:
sc.plotting.plot(xy_cut.hist().transpose(), aspect='equal')
[13]:
Using custom bin edges has advantages and disadvantages:
If a bin-count is provided,
bin
andhistogram
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., usingscipp.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
andy_pos
coordinates) and store it as a new coordinate intable
. This is the radius in cylinder coordinates.Define bin edges for the radius using
scipp.linspace
.Bin
table
byz_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]:
- module: 14
- segment: 6
- counter: 2
- wire: 32
- strip: 256
- counter(counter)int641, 2
Values:
array([1, 2]) - module(module)int641, 2, ..., 13, 14
Values:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]) - segment(segment)int641, 2, ..., 5, 6
Values:
array([1, 2, 3, 4, 5, 6]) - strip(strip)int641, 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)int641, 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)DataArrayViewbinned 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]:
- module: 14
- segment: 6
- counter: 2
- wire: 32
- strip: 256
- counter(counter)int641, 2
Values:
array([1, 2]) - module(module)int641, 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)vector3mm[ 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)int641, 2, ..., 5, 6
Values:
array([1, 2, 3, 4, 5, 6]) - strip(strip)int641, 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)int641, 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)DataArrayViewbinned 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())
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]
sc.plotting.plot(counts_per_voxel, 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()
sc.plotting.plot(strip_counts, 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 ofmean
.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')
sc.plotting.plot(proj.hist(), 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]: