Neutron Powder Diffraction#
In this tutorial demonstrates how neutron-scattering data can be loaded, visualized, and manipulated with generic functionality from scipp
as well as neutron-specific functionality from scippneutron
. It focuses on reducing data from the ORNL POWGEN neutron diffractometer.
[1]:
import numpy as np
import scipp as sc
import scippneutron as scn
import scippneutron.data
Loading Nexus files#
Loading Nexus files requires Mantid. See, e.g., Installation on how to install scipp and Mantid with conda
.
We start by loading two files: the sample and the vanadium runs.
[2]:
raw_sample = scn.load_with_mantid(
scn.data.get_path('PG3_4844_event.nxs'),
load_pulse_times=False,
mantid_args={'LoadMonitors': True},
)
raw_vanadium = scn.load_with_mantid(
scn.data.get_path('PG3_4866_event.nxs'), load_pulse_times=False
)
FrameworkManager-[Notice] Welcome to Mantid 6.11.0
FrameworkManager-[Notice] Please cite: http://dx.doi.org/10.1016/j.nima.2014.07.029 and this release: http://dx.doi.org/10.5286/Software/Mantid6.11
DownloadInstrument-[Notice] All instrument definitions up to date
Load-[Notice] Load started
Load-[Notice] Load successful, Duration 1.64 seconds
ExtractSpectra-[Notice] ExtractSpectra started
ExtractSpectra-[Notice] ExtractSpectra successful, Duration 0.00 seconds
DeleteWorkspace-[Notice] DeleteWorkspace started
DeleteWorkspace-[Notice] DeleteWorkspace successful, Duration 0.00 seconds
DeleteWorkspace-[Notice] DeleteWorkspace started
DeleteWorkspace-[Notice] DeleteWorkspace successful, Duration 0.00 seconds
DeleteWorkspace-[Notice] DeleteWorkspace started
DeleteWorkspace-[Notice] DeleteWorkspace successful, Duration 0.00 seconds
Load-[Notice] Load started
Load-[Notice] Load successful, Duration 4.22 seconds
DeleteWorkspace-[Notice] DeleteWorkspace started
DeleteWorkspace-[Notice] DeleteWorkspace successful, Duration 0.00 seconds
The optional mantid_args
dict is forwarded to the Mantid algorithm used for loading the files – in this case LoadEventNexus – and can be used to control, e.g., which part of a file to load. Here we request loading monitors, which Mantid does not load by default. The resulting dataset looks as follows:
[3]:
raw_sample
[3]:
- datascippDataArray(spectrum: 24794, tof: 1)DataArrayViewbinned data [len=0, len=0, ..., len=0, len=0]
- samplescippVariable()PyObject<mantid.api._api.Sample object at 0x7f0d7cfa0270>
- instrument_namestr()POWGEN
- start_timescippVariable()string𝟙2011-08-12T15:50:17
- end_timescippVariable()string𝟙2011-08-12T17:22:05
- ChopperStatus1scippDataArray(time: 2)float64𝟙4.0, 4.0
- ChopperStatus2scippDataArray(time: 2)float64𝟙4.0, 4.0
- ChopperStatus3scippDataArray(time: 2)float64𝟙4.0, 4.0
- CurrentSPscippDataArray(time: 2)float64𝟙300.0, 300.0
- EnergyRequestscippDataArray(time: 2)float64meV287.955, 287.955
- LKSRampRatescippDataArray(time: 2)float64𝟙0.0, 0.0
- LambdaRequestscippDataArray(time: 2)float64Å0.533, 0.533
- Phase1scippDataArray(time: 1794)float64µs8166.720, 8165.158, ..., 8163.853, 8163.853
- Phase2scippDataArray(time: 1793)float64µs8335.626, 8334.088, ..., 8332.859, 8332.859
- Phase3scippDataArray(time: 1777)float64µs1.400e+04, 1.400e+04, ..., 1.400e+04, 1.400e+04
- PhaseRequest1scippDataArray(time: 2)float64µs8164.075, 8164.075
- PhaseRequest2scippDataArray(time: 2)float64µs8332.893, 8332.893
- PhaseRequest3scippDataArray(time: 2)float64µs1.400e+04, 1.400e+04
- SampleTempscippDataArray(time: 467)float64𝟙299.352, 299.446, ..., 300.0, 300.0
- Speed1scippDataArray(time: 2)float64Hz60.0, 60.0
- Speed2scippDataArray(time: 2)float64Hz60.0, 60.0
- Speed3scippDataArray(time: 2)float64Hz60.0, 60.0
- SpeedRequest1scippDataArray(time: 2)float64Hz60.0, 60.0
- SpeedRequest2scippDataArray(time: 2)float64Hz60.0, 60.0
- SpeedRequest3scippDataArray(time: 2)float64Hz60.0, 60.0
- TolRequestscippDataArray(time: 2)float64𝟙20.0, 20.0
- currentsamplescippDataArray(time: 2)float64𝟙4.0, 4.0
- fernsstatusscippDataArray(time: 2)float64𝟙3.0, 3.0
- frequencyscippDataArray(time: 330473)float64Hz0.0, 60.024, ..., 60.002, 59.999
- proton_chargescippDataArray(time: 330473)float64pC1.484e+07, 1.484e+07, ..., 1.487e+07, 1.484e+07
- samplerequestscippDataArray(time: 2)float64𝟙4.0, 4.0
- S1HCenterscippDataArray(time: 2)float64mm0.0, 0.0
- S1HCenterOffsetscippDataArray(time: 2)float64𝟙0.0, 0.0
- S1HWidthscippDataArray(time: 2)float64mm10.0, 10.0
- S1VCenterscippDataArray(time: 2)float64mm5.0, 5.0
- S1VCenterOffsetscippDataArray(time: 2)float64𝟙0.0, 0.0
- S1VHeightscippDataArray(time: 2)float64mm30.0, 30.0
- commErrsscippDataArray(time: 2)float64𝟙0.0, 0.0
- guidescippDataArray(time: 2)float64mm-55.463, -55.463
- s1bscippDataArray(time: 2)float64mm20.0, 20.0
- s1lscippDataArray(time: 2)float64mm5.0, 5.0
- s1rscippDataArray(time: 2)float64mm-5.0, -5.0
- s1tscippDataArray(time: 2)float64mm-10.0, -10.0
- vGuidescippDataArray(time: 2)float64𝟙2.0, 2.0
- veto_pulse_timescippDataArray(time: 1)float64𝟙0.0
- gd_prtn_chrgscippVariable()float64µAh1171.953902925
- run_startscippVariable()string𝟙2011-08-12T15:50:17
- run_titlescippVariable()string𝟙diamond cw0.533 4.22e12 60Hz [10x30]
- file_notesscippVariable()string𝟙NONE
- run_numberscippVariable()string𝟙4844
- experiment_identifierscippVariable()string𝟙IPTS-2767
- durationscippVariable()float64s5508.0
- runningscippDataArray(time: 1)bool𝟙True
- FilenamescippVariable()string𝟙/home/runner/.cache/scippneutron/5/PG3_4844_event.nxs
- scippDataGroup(tof: 200001)
- scippDataGroup(tof: 200001)
- datascippDataArray(tof: 200001)float64counts25.0, 10.0, ..., 0.0, 0.0
- instrument_namestr()POWGEN
Extract the actual events.
[4]:
sample = raw_sample['data']
vanadium = raw_vanadium['data']
[5]:
sc.plot(sample.hist(spectrum=500, tof=400))
[5]:
Instrument view#
Scipp provides a simple 3D instrument view inspired by Mantid’s own instrument view, which can be used to take a quick look at the neutron counts on the detector panels in 3D space or using various cylindrical and spherical projections
[6]:
scn.instrument_view(sample.hist())
[6]:
Plot against scattering angle \(\theta\) using bin
#
This is not an essential step and can be skipped.
Plotting raw data directly yields a hard-to-interpret figure. We can obtain something more useful by binning the spectrum axis based on its \(\theta\) value:
[7]:
sample.coords['two_theta'] = scn.two_theta(sample)
vanadium.coords['two_theta'] = scn.two_theta(vanadium)
two_theta = sc.linspace(dim='two_theta', unit='rad', start=0.0, stop=np.pi, num=2001)
We concatenate events lists from different spectra that fall into a given \(2\theta\) range into longer combined lists:
[8]:
theta_sample = sample.bin(two_theta=two_theta)
[9]:
theta_sample
[9]:
- tof: 1
- two_theta: 2000
- sample_position()vector3m[0. 0. 0.]
Values:
array([0., 0., 0.]) - source_position()vector3m[ 0. 0. -60.]
Values:
array([ 0., 0., -60.]) - tof(tof [bin-edge])float64µs20.0, 1.669e+04
Values:
array([ 20. , 16694.30078125]) - two_theta(two_theta [bin-edge])float64rad0.0, 0.002, ..., 3.140, 3.142
Values:
array([0.00000000e+00, 1.57079633e-03, 3.14159265e-03, ..., 3.13845106e+00, 3.14002186e+00, 3.14159265e+00])
- (tof, two_theta)DataArrayViewbinned data [len=0, len=0, ..., len=0, len=0]
dim='event', content=DataArray( dims=(event: 17926980), data=float32[counts], coords={'tof':float64[µs]})
[10]:
sc.plot(theta_sample.hist(tof=400))
[10]:
Coordinate transformation#
Note: We are back to working with ``sample``, not ``theta_sample``.
scippneutron
provides building blocks for scipp.transform_coords to convert between coordinates related to time-of-flight. The loaded raw data has dimension tof
, and we convert to interplanar lattice spacing (dspacing):
[11]:
dspacing_graph = {
**scn.conversion.graph.beamline.beamline(scatter=True),
**scn.conversion.graph.tof.elastic_dspacing('tof'),
}
[12]:
dspacing_vanadium = vanadium.transform_coords('dspacing', graph=dspacing_graph)
dspacing_sample = sample.transform_coords('dspacing', graph=dspacing_graph)
dspacing_sample
[12]:
- spectrum: 24794
- dspacing: 1
- L1()float64m60.0
Values:
array(60.) - L2(spectrum)float64m2.560, 2.556, ..., 4.251, 4.252
Values:
array([2.56027902, 2.55590928, 2.55268677, ..., 4.25113991, 4.25116338, 4.25188 ]) - Ltotal(spectrum)float64m62.560, 62.556, ..., 64.251, 64.252
Values:
array([62.56027902, 62.55590928, 62.55268677, ..., 64.25113991, 64.25116338, 64.25188 ]) - dspacing(spectrum, dspacing [bin-edge])float64Å0.001, 0.557, ..., 0.003, 2.343
Values:
array([[6.67304241e-04, 5.57008885e-01], [6.65984678e-04, 5.55907426e-01], [6.64723344e-04, 5.54854572e-01], ..., [2.81392374e-03, 2.34882447e+00], [2.81147797e-03, 2.34678294e+00], [2.80685688e-03, 2.34292565e+00]]) - incident_beam()vector3m[ 0. 0. 60.]
Values:
array([ 0., 0., 60.]) - position(spectrum)vector3m[ 1.17451004 -1.01106149 -2.03796699], [ 1.18147634 -0.95946649 -2.05334117], ..., [1.81428985 0.09565841 3.84338287], [1.81375055 0.1499371 3.84269584]
Values:
array([[ 1.17451004, -1.01106149, -2.03796699], [ 1.18147634, -0.95946649, -2.05334117], [ 1.18844265, -0.90787149, -2.06871534], ..., [ 1.81482915, 0.04137972, 3.8440699 ], [ 1.81428985, 0.09565841, 3.84338287], [ 1.81375055, 0.1499371 , 3.84269584]]) - sample_position()vector3m[0. 0. 0.]
Values:
array([0., 0., 0.]) - scattered_beam(spectrum)vector3m[ 1.17451004 -1.01106149 -2.03796699], [ 1.18147634 -0.95946649 -2.05334117], ..., [1.81428985 0.09565841 3.84338287], [1.81375055 0.1499371 3.84269584]
Values:
array([[ 1.17451004, -1.01106149, -2.03796699], [ 1.18147634, -0.95946649, -2.05334117], [ 1.18844265, -0.90787149, -2.06871534], ..., [ 1.81482915, 0.04137972, 3.8440699 ], [ 1.81428985, 0.09565841, 3.84338287], [ 1.81375055, 0.1499371 , 3.84269584]]) - source_position()vector3m[ 0. 0. -60.]
Values:
array([ 0., 0., -60.]) - spectrum(spectrum)int321, 2, ..., 24793, 24794
Values:
array([ 1, 2, 3, ..., 24792, 24793, 24794], dtype=int32) - tof(dspacing [bin-edge])float64µs20.0, 1.669e+04
Values:
array([ 20. , 16694.30078125]) - two_theta(spectrum)float64rad2.491, 2.504, ..., 0.442, 0.442
Values:
array([2.49144445, 2.50372965, 2.51564288, ..., 0.44118918, 0.44157918, 0.44231324])
- (spectrum, dspacing)DataArrayViewbinned data [len=0, len=0, ..., len=0, len=0]
dim='event', content=DataArray( dims=(event: 17926980), data=float32[counts], coords={'tof':float64[µs], 'dspacing':float64[Å]})
Neutron monitors#
This is an optional section. The next section does not use the monitor-normalized data produced here. This section could thus be skipped.
If available, neutron monitors are stored as attributes of a data array:
[13]:
mon = raw_sample['monitors']['monitor1']['data']
mon
[13]:
- tof: 200001
- position()vector3m[ 0. 0. -1.]
Values:
array([ 0., 0., -1.]) - sample_position()vector3m[0. 0. 0.]
Values:
array([0., 0., 0.]) - source_position()vector3m[ 0. 0. -60.]
Values:
array([ 0., 0., -60.]) - spectrum()int321
Values:
array(1, dtype=int32) - tof(tof [bin-edge])float64µs0.0, 1.0, ..., 2.000e+05, 2.000e+05
Values:
array([0.00000e+00, 1.00000e+00, 2.00000e+00, ..., 1.99999e+05, 2.00000e+05, 2.00001e+05])
- (tof)float64counts25.0, 10.0, ..., 0.0, 0.0σ = 5.0, 3.162, ..., 0.0, 0.0
Values:
array([25., 10., 12., ..., 0., 0., 0.])
Variances (σ²):
array([25., 10., 12., ..., 0., 0., 0.])
The monitor could, e.g., be used to normalize the data. To do so, both data and monitor need to be converted to a unit that accounts for differing flight paths, e.g., wavelength or energy:
[14]:
wavelength_graph = {
**scn.conversion.graph.beamline.beamline(scatter=True),
**scn.conversion.graph.tof.elastic_wavelength('tof'),
}
wavelength_graph_monitor = {
**scn.conversion.graph.beamline.beamline(scatter=False),
**scn.conversion.graph.tof.elastic_wavelength('tof'),
}
[15]:
sample_lambda = sample.transform_coords('wavelength', graph=wavelength_graph)
mon = mon.transform_coords('wavelength', graph=wavelength_graph_monitor)
The sample data is in event-mode, i.e., is not histogrammed. Event data can be divided by a histogram (such as mon
in this case), using a specialized function for scaling (see Binned data). First we rebin the monitor since the original binning is very fine:
[16]:
edges = sc.linspace(dim='wavelength', unit='Angstrom', start=0.0, stop=1.0, num=1001)
mon = sc.rebin(mon, wavelength=edges)
mon
[16]:
- wavelength: 1000
- Ltotal()float64m59.0
Values:
array(59.) - position()vector3m[ 0. 0. -1.]
Values:
array([ 0., 0., -1.]) - sample_position()vector3m[0. 0. 0.]
Values:
array([0., 0., 0.]) - source_position()vector3m[ 0. 0. -60.]
Values:
array([ 0., 0., -60.]) - spectrum()int321
Values:
array(1, dtype=int32) - wavelength(wavelength [bin-edge])float64Å0.0, 0.001, ..., 0.999, 1.0
Values:
array([0. , 0.001, 0.002, ..., 0.998, 0.999, 1. ])
- (wavelength)float64counts194.397, 214.709, ..., 206.055, 193.213σ = 13.943, 14.653, ..., 14.355, 13.900
Values:
array([194.39748464, 214.70889565, 215.31141101, 221.66343536, 195.61509218, 184.13926377, 210.34429449, 204.1798771 , 202.92165623, 221.50386493, 224.95938667, 219.86073623, 204.61024521, 226.93908 , 215.93423304, 224.13926377, 225.8965026 , 214.2833745 , 191.96711652, 228.3597542 , 261.99711711, 196.54447826, 218.12956985, 205.67312928, 227.49128811, 199.62282203, 200.59478551, 198.8810429 , 193.91196231, 217.1034974 , 214.63251595, 218.10441622, 201.85497045, 194.31141101, 194.24852695, 238.97969333, 229.6740481 , 198.44779189, 212.49325218, 195.1527594 , 225.12576813, 204.21852636, 205.06000118, 191.28822146, 209.86361912, 180.46901738, 199.70889565, 214.97196348, 190.09865044, 223.87816001, 201.05607304, 210.87043015, 233.6923907 , 207.69055306, 191.67889506, 231.44294493, 239.33368175, 222.01454088, 192.32687072, 212.6402458 , 195.73012114, 225.54447826, 197.52705448, 196.09773162, 217.38097968, 217.17411132, 226.09576755, 214.34717738, 232.00288289, 203.68374202, 226.62282203, 193.41202552, 208.68374202, 226.40325042, 213.7254006 , 214.05607304, 212.33944753, 198.02607245, 217.73601335, 233.8810429 , 198.79693334, 201.08122666, 180.75619359, 196.50110846, 208.58601041, 213.16245332, 214.35294317, 193.81147423, 224.55993796, 202.69540002, 198.89349328, 222.45656699, 207.79012231, 197.07257799, 221.69920173, 187.82877157, 200.5367484 , 197.27760871, 205.9661977 , 208.93698951, 216.43337744, 220.74662609, 223.72527418, 199.4294493 , 223.81619476, 214.3752139 , 200.87043015, 228.7349681 , 251.89270089, 229.2407971 , 219.9478551 , 218.57828056, 203.70024698, 197.32687072, 211.2562568 , 193.94288172, 225.39552057, 236.89453853, 209.77675311, 221.08018141, 204.5367484 , 219.03576637, 200.38595307, 210.24668931, 210.0338023 , 235.7437432 , 187.63723648, 246.6740481 , 219.43325101, 215.77767193, 219.50190086, 218.51932463, 212.79496927, 212.32883479, 200.12092117, 209.2291391 , 221.0851548 , 223.21079651, 215.00956749, 228.4294493 , 227.5367484 , 227.7592029 , 212.62282203, 214.41202552, 214.31429391, 217.14214666, 215.23411249, 212.79484285, 212.01454088, 221.18092235, 232.90122314, 181.77767193, 217.4720267 , 205.37324983, 209.17398489, 223.88576343, 224.66473346, 205.60042486, 216.65177737, 198.45067478, 215.73994149, 205.049262 , 224.77282497, 214.28533857, 208.01245039, 209.28533857, 191.8810429 , 199.19809327, 220.83178089, 231.61325453, 187.59963247, 191.35779013, 232.12275881, 213.3280424 , 209.99699068, 189.32791597, 224.0838567 , 215.55246097, 201.96711652, 205.95362089, 180.87724119, 183.07048749, 226.97300873, 203.44858428, 208.40337685, 201.02410838, 210.60343418, 205.16834553, 199.07729852, 213.62282203, 198.18275999, 187.79810502, 194.88760107, 181.41595366, 195.53582958, 203.08281145, 188.23921231, 200.05319014, 213.31049219, 220.01061274, 227.93607068, 201.79496927, 257.74086031, 208.17202082, 186.76221222, 204.96711652, 187.88091647, 219.24668931, 230.79496927, 195.56858663, 223.18288642, 194.63343477, 186.46233277, 200.44858428, 206.97981976, 203.43245861, 187.00760342, 201.61876746, 202.31546558, 190.83951075, 204.93882715, 202.01466731, 196.90895299, 184.13362441, 189.50085561, 214.62282203, 193.70024698, 206.17018318, 199.28717621, 212.92754844, 188.14594837, 208.44399018, 211.46404399, 237.98466672, 163.84540296, 171.76601394, 207.71361618, 228.56846021, 208.50896474, 191.87790715, 197.91313398, 193.98821558, 216.36656523, 194.54853283, 202.96515245, 216.92244862, 208.5321543 , 176.71545383, 191.40141278, 201.70889565, 208.31337508, 206.41386316, 204.39944871, 194.25809444, 225.00601864, 211.00196407, 188.53687483, 195.36251066, 202.03643233, 185.89780071, 214.57146953, 169.81147423, 204.96895416, 184.79313163, 184.8810429 , 200.29870777, 170.37166505, 204.76956279, 196.23804063, 185.56833378, 216.38804357, 200.35699773, 170.555091 , 185.96711652, 199.31834847, 187.61588457, 175.9127547 , 193.16454382, 217.85313281, 190.23373321, 205.41817059, 187.94760225, 194.01035989, 187.53136191, 195.1014069 , 204.8810429 , 164.28730264, 188.10717268, 199.24865338, 199.0742892 , 197.87749404, 197.42434948, 181.70889565, 175.32018612, 176.09760519, 171.23110317, 196.31442033, 189.93122372, 192.30288877, 184.76484226, 202.15785922, 184.24263474, 189.20804004, 187.05895593, 149.40153921, 203.50728735, 199.11214607, 187.96135074, 185.5530005 , 191.88614272, 202.09117344, 187.89152921, 160.84920467, 172.00367528, 192.38804357, 164.02607245, 188.7099409 , 181.71152569, 160.08135309, 198.33643821, 150.33852871, 191.51067596, 184.28638382, 174.36355591, 177.96711652, 181.08711887, 179.26281497, 177.78356414, 181.7349681 , 190.18000353, 171.67718385, 163.46771927, 168.55600982, 174.7032563 , 209.5571815 , 197.54919879, 175.03956808, 162.50950428, 182.78945635, 173.93435947, 157.69527359, 169.03944165, 177.41123313, 160.22533739, 179.92073741, 180.18551645, 178.83466378, 184.86767369, 172.15931758, 154.75527476, 178.21865279, 169.45669342, 155.24551763, 169.13926377, 177.47085502, 182.8810429 , 172.60932639, 163.41018788, 157.92232219, 178.56883949, 173.24133663, 189.16885125, 170.49116168, 158.3055188 , 169.04558672, 167.56202846, 176.54435183, 178.37809679, 163.20594955, 174.3393211 , 152.35607891, 143.06405574, 170.1865617 , 168.0338023 , 164.30643762, 186.97208991, 177.23975185, 154.57460527, 168.46914381, 168.85760049, 167.79091471, 155.90356649, 183.00405457, 160.22220164, 170.05319014, 159.72644585, 159.00091882, 175.43220576, 162.08791127, 170.8810429 , 148.8810429 , 167.36276352, 169.18785981, 156.39656582, 163.57238835, 162.885637 , 174.8810429 , 159.62374085, 181.07809091, 194.37074623, 172.4515936 , 174.8810429 , 160.63172356, 167.90410603, 161.10729911, 174.61049807, 179.2474817 , 184.95888096, 167.29908706, 176.28926671, 146.26737526, 175.95704331, 157.61233571, 141.59085737, 159.97760284, 153.75394284, 157.79354474, 163.90461174, 148.33146482, 167.92349387, 160.29018553, 160.20084973, 181.2136794 , 157.50804592, 136.37834965, 187.73012114, 145.81828526, 144.24894006, 167.16467025, 166.0020905 , 154.93214254, 161.70233748, 162.15238012, 182.53829937, 147.12760578, 156.25876041, 157.79496927, 174.19546323, 144.53975772, 178.75644644, 160.52208109, 145.96109788, 149.05619946, 181.88367293, 152.1698965 , 152.40312399, 162.36159184, 157.13926377, 159.49220693, 135.58692923, 152.7850225 , 163.59817411, 163.2858781 , 158.47449648, 169.07913616, 142.56269442, 177.72448178, 145.22533739, 182.70195819, 181.34258328, 160.6314707 , 147.45932345, 143.547614 , 142.10194644, 149.69552645, 150.54289347, 152.61195643, 148.18301285, 139.92336744, 155.1439843 , 145.8810429 , 141.38804357, 157.5125136 , 150.7370586 , 142.31141101, 161.28245568, 145.82630179, 133.39589985, 154.36539355, 153.31768251, 161.47649437, 161.07821734, 146.45460292, 117.98821558, 150.92884654, 152.98428744, 164.63853459, 160.30355473, 134.22926553, 142.57748816, 156.08673959, 148.01178442, 153.05385611, 164.43755843, 138.97171063, 149.4382244 , 159.22533739, 124.81933051, 136.82839229, 154.91785452, 149.45865749, 126.89349328, 149.31939372, 150.43470936, 147.19650848, 152.6064435 , 151.97522566, 135.85250067, 131.02448766, 136.90974538, 157.950738 , 161.47136073, 160.63501956, 143.02055952, 167.39748464, 152.4995575 , 140.79522213, 142.96699009, 137.32816882, 133.63920055, 145.93398019, 129.34099849, 158.64274941, 149.12275881, 163.13926377, 134.86453794, 141.77478904, 153.11908353, 140.19980448, 126.97614448, 149.90122314, 153.30393402, 130.72907589, 135.42146659, 155.4482976 , 116.65808269, 168.4962615 , 139.53294669, 156.52404516, 128.65950722, 136.31651083, 164.44177325, 149.40128635, 154.52534327, 125.95190967, 153.70892948, 166.69749052, 145.22400546, 141.95704331, 148.32908764, 152.31141101, 159.33669107, 145.48355826, 159.11398371, 142.85313281, 144.34049278, 147.02556674, 147.9682882 , 154.25441916, 141.22533739, 135.22533739, 143.85196113, 142.9770633 , 130.30146424, 144.87606951, 151.24944577, 144.11474228, 131.75752551, 151.67442739, 141.28730264, 131.86729441, 130.4578651 , 152.92925965, 162.36618594, 153.45944988, 130.63159713, 152.80374438, 146.22312046, 141.06418217, 128.38870954, 151.22533739, 138.22533739, 126.76810443, 143.48355826, 122.48355826, 139.5312693 , 136.28454617, 139.52195467, 157.80700655, 170.78895064, 143.40299756, 140.18142806, 142.85041017, 149.98346122, 119.41452913, 131.95282849, 151.53950487, 136.13926377, 149.11636089, 137.45051453, 128.77190615, 153.85091588, 139.09225251, 149.55363264, 121.28834789, 120.79325806, 135.08949605, 150.72213843, 140.31609772, 136.14097498, 124.21551704, 145.54827997, 144.61300168, 142.36393519, 122.24668931, 135.31207698, 154.73091353, 148.56896592, 128.30054541, 135.07492134, 156.13888448, 129.26946575, 133.91250184, 133.84920467, 139.02135191, 148.8397636 , 141.87857312, 137.05319014, 159.63226309, 115.51156095, 149.0783776 , 138.18614859, 137.24982505, 120.80231984, 148.5388389 , 154.68336274, 140.94050454, 134.90870013, 126.05632589, 162.96293552, 149.833079 , 141.10115404, 123.34847549, 143.29151746, 145.33130457, 131.10428979, 141.38072683, 131.77634 , 127.98428744, 151.4157008 , 143.20712122, 152.43141337, 151.98533269, 147.22533739, 134.09066773, 140.8243039 , 147.66029961, 142.50741378, 150.93407279, 117.29230985, 144.84695392, 133.60815472, 147.92979919, 129.55939842, 137.46429684, 137.03617948, 164.29778895, 135.10872364, 145.63644409, 126.13128106, 141.39184528, 133.05319014, 142.12564171, 134.9398724 , 126.59253476, 135.55471172, 160.86871894, 115.66932757, 129.72945517, 143.29493988, 152.55192143, 146.50256682, 137.69682455, 128.86048338, 126.22533739, 134.31834847, 137.73458881, 133.84172767, 147.56887331, 143.88154861, 158.09944283, 134.00693746, 151.75514834, 153.35123195, 136.5166946 , 127.58968569, 137.02645173, 153.76237248, 124.53620887, 138.13926377, 152.47687366, 155.6490209 , 160.27238247, 162.58379348, 156.35043956, 158.19913852, 164.29724942, 140.1055879 , 152.24029138, 146.1055879 , 136.64822851, 143.74257152, 160.13926377, 179.3129958 , 150.22137543, 150.73984888, 158.42719854, 140.59662315, 132.42447591, 155.44126754, 169.65491311, 146.4185837 , 153.15535561, 137.04308311, 163.62193703, 147.71057304, 169.05908235, 144.60004558, 144.81017612, 150.62871424, 191.72068007, 151.05319014, 138.05319014, 149.05319014, 128.9019817 , 149.6051454 , 150.34366235, 155.83963717, 168.00915439, 160.78644703, 157.98352887, 175.42247801, 138.3501867 , 153.9794743 , 175.48824497, 161.3501867 , 142.71032018, 130.97421423, 147.39890917, 174.70747112, 154.6944812 , 150.32135779, 128.51685485, 163.57957866, 166.16809268, 158.68047985, 167.20014994, 176.77691336, 150.20056305, 149.39343007, 172.53899916, 151.50788567, 140.78686014, 152.18025638, 164.02252359, 135.21501133, 139.0838567 , 121.50829878, 155.0162521 , 157.9486475 , 132.8647908 , 154.41373673, 152.13926377, 175.38123254, 142.31141101, 143.93201612, 146.57001117, 137.95302257, 163.58518419, 139.51682102, 166.52341302, 159.17068889, 163.24013113, 162.34796978, 156.57146953, 175.39932228, 170.66682396, 145.74545441, 169.01653878, 164.43781129, 153.30589809, 145.31141101, 136.02949488, 167.22349975, 176.25270794, 140.166921 , 154.8810429 , 156.94129693, 154.3664388 , 161.77098733, 156.11528182, 162.33539296, 154.34245685, 171.12418335, 154.34157185, 164.4657552 , 157.8527197 , 188.77282497, 152.41072742, 172.49245979, 143.97396138, 190.8013672 , 142.87853929, 156.43926965, 158.58354063, 176.14749933, 147.43103408, 175.09814472, 167.21459822, 171.26579047, 161.31141101, 158.30133781, 152.4828923 , 154.07466849, 153.31157127, 176.09614683, 167.50453089, 171.33288936, 166.67718385, 154.69815648, 174.9444665 , 164.70889565, 171.10755197, 167.8810429 , 155.72432153, 154.8255094 , 159.13692041, 166.35620534, 166.00956749, 171.53557673, 192.35503366, 172.10520861, 156.80149363, 175.31445416, 152.52718091, 168.15418394, 154.22533739, 142.26360737, 156.18706741, 164.06275764, 154.89599689, 172.37834965, 170.98504601, 157.77703979, 195.69514716, 161.74596013, 153.7925921 , 157.99280968, 166.24146306, 187.81828526, 148.09982211, 190.09855783, 185.85243302, 161.20857958, 172.05319014, 185.51343242, 173.84461056, 175.51343242, 188.73522096, 168.00709771, 190.58585016, 200.11648732, 173.54029726, 170.16558907, 178.50988356, 191.25467201, 174.87857312, 157.4536841 , 185.62583135, 180.79797859, 179.97012584, 191.97291613, 177.47474934, 184.60476611, 181.32344829, 185.22834671, 164.48431683, 156.62206346, 179.5726412 , 194.13926377, 181.52246038, 175.31236366, 208.85547616, 214.117659 , 175.85246684, 193.44335804, 184.45498221, 180.67300285, 201.8810429 , 170.94852107, 171.02290288, 170.75648027, 181.52074916, 167.58822734, 204.82915086, 168.50126872, 178.08737173, 176.44896357, 172.31141101, 207.65741672, 210.55233454, 202.22533739, 185.64011937, 192.46797213, 204.78109436, 206.42121373, 198.23921231, 184.61537886, 186.31071123, 173.76379701, 171.33615153, 171.95796214, 175.49914439, 194.07520802, 181.58521802, 200.94066479, 182.58521802, 199.2520758 , 181.547614 , 186.18272617, 191.13812591, 166.72590632, 194.82642822, 215.49442386, 211.44452972, 174.18773338, 200.35988063, 174.21732086, 187.37261769, 180.70417512, 189.8668813 , 186.56979214, 217.5367484 , 222.28324807, 212.46939666, 183.11407632, 193.79199378, 187.01400135, 195.76069509, 175.17353796, 169.83102232, 205.21903207, 173.90762106, 199.99689808, 192.48038869, 198.64943401, 210.94050454, 172.62909352, 197.96084503, 238.74954281, 201.84039574, 185.99214372, 184.04219812, 182.37559319, 231.95308135, 186.34743024, 198.45853106, 193.11873807, 189.90942488, 191.50051015, 167.1394828 , 209.57109024, 182.1343242 , 205.44921642, 196.21602275, 198.74817705, 183.38782454, 208.99068536, 201.17674135, 214.70610536, 192.87318662, 173.70103937, 171.52889212, 191.96385435, 196.57748816, 214.66948782, 210.91126252, 210.85867956, 222.07023463, 192.89554996, 203.77792478, 198.06443503, 195.85855313, 189.03735116, 210.31020551, 209.50845903, 184.24117638, 196.03843023, 206.05549967, 193.21288701])
Variances (σ²):
array([194.39748464, 214.70889565, 215.31141101, 221.66343536, 195.61509218, 184.13926377, 210.34429449, 204.1798771 , 202.92165623, 221.50386493, 224.95938667, 219.86073623, 204.61024521, 226.93908 , 215.93423304, 224.13926377, 225.8965026 , 214.2833745 , 191.96711652, 228.3597542 , 261.99711711, 196.54447826, 218.12956985, 205.67312928, 227.49128811, 199.62282203, 200.59478551, 198.8810429 , 193.91196231, 217.1034974 , 214.63251595, 218.10441622, 201.85497045, 194.31141101, 194.24852695, 238.97969333, 229.6740481 , 198.44779189, 212.49325218, 195.1527594 , 225.12576813, 204.21852636, 205.06000118, 191.28822146, 209.86361912, 180.46901738, 199.70889565, 214.97196348, 190.09865044, 223.87816001, 201.05607304, 210.87043015, 233.6923907 , 207.69055306, 191.67889506, 231.44294493, 239.33368175, 222.01454088, 192.32687072, 212.6402458 , 195.73012114, 225.54447826, 197.52705448, 196.09773162, 217.38097968, 217.17411132, 226.09576755, 214.34717738, 232.00288289, 203.68374202, 226.62282203, 193.41202552, 208.68374202, 226.40325042, 213.7254006 , 214.05607304, 212.33944753, 198.02607245, 217.73601335, 233.8810429 , 198.79693334, 201.08122666, 180.75619359, 196.50110846, 208.58601041, 213.16245332, 214.35294317, 193.81147423, 224.55993796, 202.69540002, 198.89349328, 222.45656699, 207.79012231, 197.07257799, 221.69920173, 187.82877157, 200.5367484 , 197.27760871, 205.9661977 , 208.93698951, 216.43337744, 220.74662609, 223.72527418, 199.4294493 , 223.81619476, 214.3752139 , 200.87043015, 228.7349681 , 251.89270089, 229.2407971 , 219.9478551 , 218.57828056, 203.70024698, 197.32687072, 211.2562568 , 193.94288172, 225.39552057, 236.89453853, 209.77675311, 221.08018141, 204.5367484 , 219.03576637, 200.38595307, 210.24668931, 210.0338023 , 235.7437432 , 187.63723648, 246.6740481 , 219.43325101, 215.77767193, 219.50190086, 218.51932463, 212.79496927, 212.32883479, 200.12092117, 209.2291391 , 221.0851548 , 223.21079651, 215.00956749, 228.4294493 , 227.5367484 , 227.7592029 , 212.62282203, 214.41202552, 214.31429391, 217.14214666, 215.23411249, 212.79484285, 212.01454088, 221.18092235, 232.90122314, 181.77767193, 217.4720267 , 205.37324983, 209.17398489, 223.88576343, 224.66473346, 205.60042486, 216.65177737, 198.45067478, 215.73994149, 205.049262 , 224.77282497, 214.28533857, 208.01245039, 209.28533857, 191.8810429 , 199.19809327, 220.83178089, 231.61325453, 187.59963247, 191.35779013, 232.12275881, 213.3280424 , 209.99699068, 189.32791597, 224.0838567 , 215.55246097, 201.96711652, 205.95362089, 180.87724119, 183.07048749, 226.97300873, 203.44858428, 208.40337685, 201.02410838, 210.60343418, 205.16834553, 199.07729852, 213.62282203, 198.18275999, 187.79810502, 194.88760107, 181.41595366, 195.53582958, 203.08281145, 188.23921231, 200.05319014, 213.31049219, 220.01061274, 227.93607068, 201.79496927, 257.74086031, 208.17202082, 186.76221222, 204.96711652, 187.88091647, 219.24668931, 230.79496927, 195.56858663, 223.18288642, 194.63343477, 186.46233277, 200.44858428, 206.97981976, 203.43245861, 187.00760342, 201.61876746, 202.31546558, 190.83951075, 204.93882715, 202.01466731, 196.90895299, 184.13362441, 189.50085561, 214.62282203, 193.70024698, 206.17018318, 199.28717621, 212.92754844, 188.14594837, 208.44399018, 211.46404399, 237.98466672, 163.84540296, 171.76601394, 207.71361618, 228.56846021, 208.50896474, 191.87790715, 197.91313398, 193.98821558, 216.36656523, 194.54853283, 202.96515245, 216.92244862, 208.5321543 , 176.71545383, 191.40141278, 201.70889565, 208.31337508, 206.41386316, 204.39944871, 194.25809444, 225.00601864, 211.00196407, 188.53687483, 195.36251066, 202.03643233, 185.89780071, 214.57146953, 169.81147423, 204.96895416, 184.79313163, 184.8810429 , 200.29870777, 170.37166505, 204.76956279, 196.23804063, 185.56833378, 216.38804357, 200.35699773, 170.555091 , 185.96711652, 199.31834847, 187.61588457, 175.9127547 , 193.16454382, 217.85313281, 190.23373321, 205.41817059, 187.94760225, 194.01035989, 187.53136191, 195.1014069 , 204.8810429 , 164.28730264, 188.10717268, 199.24865338, 199.0742892 , 197.87749404, 197.42434948, 181.70889565, 175.32018612, 176.09760519, 171.23110317, 196.31442033, 189.93122372, 192.30288877, 184.76484226, 202.15785922, 184.24263474, 189.20804004, 187.05895593, 149.40153921, 203.50728735, 199.11214607, 187.96135074, 185.5530005 , 191.88614272, 202.09117344, 187.89152921, 160.84920467, 172.00367528, 192.38804357, 164.02607245, 188.7099409 , 181.71152569, 160.08135309, 198.33643821, 150.33852871, 191.51067596, 184.28638382, 174.36355591, 177.96711652, 181.08711887, 179.26281497, 177.78356414, 181.7349681 , 190.18000353, 171.67718385, 163.46771927, 168.55600982, 174.7032563 , 209.5571815 , 197.54919879, 175.03956808, 162.50950428, 182.78945635, 173.93435947, 157.69527359, 169.03944165, 177.41123313, 160.22533739, 179.92073741, 180.18551645, 178.83466378, 184.86767369, 172.15931758, 154.75527476, 178.21865279, 169.45669342, 155.24551763, 169.13926377, 177.47085502, 182.8810429 , 172.60932639, 163.41018788, 157.92232219, 178.56883949, 173.24133663, 189.16885125, 170.49116168, 158.3055188 , 169.04558672, 167.56202846, 176.54435183, 178.37809679, 163.20594955, 174.3393211 , 152.35607891, 143.06405574, 170.1865617 , 168.0338023 , 164.30643762, 186.97208991, 177.23975185, 154.57460527, 168.46914381, 168.85760049, 167.79091471, 155.90356649, 183.00405457, 160.22220164, 170.05319014, 159.72644585, 159.00091882, 175.43220576, 162.08791127, 170.8810429 , 148.8810429 , 167.36276352, 169.18785981, 156.39656582, 163.57238835, 162.885637 , 174.8810429 , 159.62374085, 181.07809091, 194.37074623, 172.4515936 , 174.8810429 , 160.63172356, 167.90410603, 161.10729911, 174.61049807, 179.2474817 , 184.95888096, 167.29908706, 176.28926671, 146.26737526, 175.95704331, 157.61233571, 141.59085737, 159.97760284, 153.75394284, 157.79354474, 163.90461174, 148.33146482, 167.92349387, 160.29018553, 160.20084973, 181.2136794 , 157.50804592, 136.37834965, 187.73012114, 145.81828526, 144.24894006, 167.16467025, 166.0020905 , 154.93214254, 161.70233748, 162.15238012, 182.53829937, 147.12760578, 156.25876041, 157.79496927, 174.19546323, 144.53975772, 178.75644644, 160.52208109, 145.96109788, 149.05619946, 181.88367293, 152.1698965 , 152.40312399, 162.36159184, 157.13926377, 159.49220693, 135.58692923, 152.7850225 , 163.59817411, 163.2858781 , 158.47449648, 169.07913616, 142.56269442, 177.72448178, 145.22533739, 182.70195819, 181.34258328, 160.6314707 , 147.45932345, 143.547614 , 142.10194644, 149.69552645, 150.54289347, 152.61195643, 148.18301285, 139.92336744, 155.1439843 , 145.8810429 , 141.38804357, 157.5125136 , 150.7370586 , 142.31141101, 161.28245568, 145.82630179, 133.39589985, 154.36539355, 153.31768251, 161.47649437, 161.07821734, 146.45460292, 117.98821558, 150.92884654, 152.98428744, 164.63853459, 160.30355473, 134.22926553, 142.57748816, 156.08673959, 148.01178442, 153.05385611, 164.43755843, 138.97171063, 149.4382244 , 159.22533739, 124.81933051, 136.82839229, 154.91785452, 149.45865749, 126.89349328, 149.31939372, 150.43470936, 147.19650848, 152.6064435 , 151.97522566, 135.85250067, 131.02448766, 136.90974538, 157.950738 , 161.47136073, 160.63501956, 143.02055952, 167.39748464, 152.4995575 , 140.79522213, 142.96699009, 137.32816882, 133.63920055, 145.93398019, 129.34099849, 158.64274941, 149.12275881, 163.13926377, 134.86453794, 141.77478904, 153.11908353, 140.19980448, 126.97614448, 149.90122314, 153.30393402, 130.72907589, 135.42146659, 155.4482976 , 116.65808269, 168.4962615 , 139.53294669, 156.52404516, 128.65950722, 136.31651083, 164.44177325, 149.40128635, 154.52534327, 125.95190967, 153.70892948, 166.69749052, 145.22400546, 141.95704331, 148.32908764, 152.31141101, 159.33669107, 145.48355826, 159.11398371, 142.85313281, 144.34049278, 147.02556674, 147.9682882 , 154.25441916, 141.22533739, 135.22533739, 143.85196113, 142.9770633 , 130.30146424, 144.87606951, 151.24944577, 144.11474228, 131.75752551, 151.67442739, 141.28730264, 131.86729441, 130.4578651 , 152.92925965, 162.36618594, 153.45944988, 130.63159713, 152.80374438, 146.22312046, 141.06418217, 128.38870954, 151.22533739, 138.22533739, 126.76810443, 143.48355826, 122.48355826, 139.5312693 , 136.28454617, 139.52195467, 157.80700655, 170.78895064, 143.40299756, 140.18142806, 142.85041017, 149.98346122, 119.41452913, 131.95282849, 151.53950487, 136.13926377, 149.11636089, 137.45051453, 128.77190615, 153.85091588, 139.09225251, 149.55363264, 121.28834789, 120.79325806, 135.08949605, 150.72213843, 140.31609772, 136.14097498, 124.21551704, 145.54827997, 144.61300168, 142.36393519, 122.24668931, 135.31207698, 154.73091353, 148.56896592, 128.30054541, 135.07492134, 156.13888448, 129.26946575, 133.91250184, 133.84920467, 139.02135191, 148.8397636 , 141.87857312, 137.05319014, 159.63226309, 115.51156095, 149.0783776 , 138.18614859, 137.24982505, 120.80231984, 148.5388389 , 154.68336274, 140.94050454, 134.90870013, 126.05632589, 162.96293552, 149.833079 , 141.10115404, 123.34847549, 143.29151746, 145.33130457, 131.10428979, 141.38072683, 131.77634 , 127.98428744, 151.4157008 , 143.20712122, 152.43141337, 151.98533269, 147.22533739, 134.09066773, 140.8243039 , 147.66029961, 142.50741378, 150.93407279, 117.29230985, 144.84695392, 133.60815472, 147.92979919, 129.55939842, 137.46429684, 137.03617948, 164.29778895, 135.10872364, 145.63644409, 126.13128106, 141.39184528, 133.05319014, 142.12564171, 134.9398724 , 126.59253476, 135.55471172, 160.86871894, 115.66932757, 129.72945517, 143.29493988, 152.55192143, 146.50256682, 137.69682455, 128.86048338, 126.22533739, 134.31834847, 137.73458881, 133.84172767, 147.56887331, 143.88154861, 158.09944283, 134.00693746, 151.75514834, 153.35123195, 136.5166946 , 127.58968569, 137.02645173, 153.76237248, 124.53620887, 138.13926377, 152.47687366, 155.6490209 , 160.27238247, 162.58379348, 156.35043956, 158.19913852, 164.29724942, 140.1055879 , 152.24029138, 146.1055879 , 136.64822851, 143.74257152, 160.13926377, 179.3129958 , 150.22137543, 150.73984888, 158.42719854, 140.59662315, 132.42447591, 155.44126754, 169.65491311, 146.4185837 , 153.15535561, 137.04308311, 163.62193703, 147.71057304, 169.05908235, 144.60004558, 144.81017612, 150.62871424, 191.72068007, 151.05319014, 138.05319014, 149.05319014, 128.9019817 , 149.6051454 , 150.34366235, 155.83963717, 168.00915439, 160.78644703, 157.98352887, 175.42247801, 138.3501867 , 153.9794743 , 175.48824497, 161.3501867 , 142.71032018, 130.97421423, 147.39890917, 174.70747112, 154.6944812 , 150.32135779, 128.51685485, 163.57957866, 166.16809268, 158.68047985, 167.20014994, 176.77691336, 150.20056305, 149.39343007, 172.53899916, 151.50788567, 140.78686014, 152.18025638, 164.02252359, 135.21501133, 139.0838567 , 121.50829878, 155.0162521 , 157.9486475 , 132.8647908 , 154.41373673, 152.13926377, 175.38123254, 142.31141101, 143.93201612, 146.57001117, 137.95302257, 163.58518419, 139.51682102, 166.52341302, 159.17068889, 163.24013113, 162.34796978, 156.57146953, 175.39932228, 170.66682396, 145.74545441, 169.01653878, 164.43781129, 153.30589809, 145.31141101, 136.02949488, 167.22349975, 176.25270794, 140.166921 , 154.8810429 , 156.94129693, 154.3664388 , 161.77098733, 156.11528182, 162.33539296, 154.34245685, 171.12418335, 154.34157185, 164.4657552 , 157.8527197 , 188.77282497, 152.41072742, 172.49245979, 143.97396138, 190.8013672 , 142.87853929, 156.43926965, 158.58354063, 176.14749933, 147.43103408, 175.09814472, 167.21459822, 171.26579047, 161.31141101, 158.30133781, 152.4828923 , 154.07466849, 153.31157127, 176.09614683, 167.50453089, 171.33288936, 166.67718385, 154.69815648, 174.9444665 , 164.70889565, 171.10755197, 167.8810429 , 155.72432153, 154.8255094 , 159.13692041, 166.35620534, 166.00956749, 171.53557673, 192.35503366, 172.10520861, 156.80149363, 175.31445416, 152.52718091, 168.15418394, 154.22533739, 142.26360737, 156.18706741, 164.06275764, 154.89599689, 172.37834965, 170.98504601, 157.77703979, 195.69514716, 161.74596013, 153.7925921 , 157.99280968, 166.24146306, 187.81828526, 148.09982211, 190.09855783, 185.85243302, 161.20857958, 172.05319014, 185.51343242, 173.84461056, 175.51343242, 188.73522096, 168.00709771, 190.58585016, 200.11648732, 173.54029726, 170.16558907, 178.50988356, 191.25467201, 174.87857312, 157.4536841 , 185.62583135, 180.79797859, 179.97012584, 191.97291613, 177.47474934, 184.60476611, 181.32344829, 185.22834671, 164.48431683, 156.62206346, 179.5726412 , 194.13926377, 181.52246038, 175.31236366, 208.85547616, 214.117659 , 175.85246684, 193.44335804, 184.45498221, 180.67300285, 201.8810429 , 170.94852107, 171.02290288, 170.75648027, 181.52074916, 167.58822734, 204.82915086, 168.50126872, 178.08737173, 176.44896357, 172.31141101, 207.65741672, 210.55233454, 202.22533739, 185.64011937, 192.46797213, 204.78109436, 206.42121373, 198.23921231, 184.61537886, 186.31071123, 173.76379701, 171.33615153, 171.95796214, 175.49914439, 194.07520802, 181.58521802, 200.94066479, 182.58521802, 199.2520758 , 181.547614 , 186.18272617, 191.13812591, 166.72590632, 194.82642822, 215.49442386, 211.44452972, 174.18773338, 200.35988063, 174.21732086, 187.37261769, 180.70417512, 189.8668813 , 186.56979214, 217.5367484 , 222.28324807, 212.46939666, 183.11407632, 193.79199378, 187.01400135, 195.76069509, 175.17353796, 169.83102232, 205.21903207, 173.90762106, 199.99689808, 192.48038869, 198.64943401, 210.94050454, 172.62909352, 197.96084503, 238.74954281, 201.84039574, 185.99214372, 184.04219812, 182.37559319, 231.95308135, 186.34743024, 198.45853106, 193.11873807, 189.90942488, 191.50051015, 167.1394828 , 209.57109024, 182.1343242 , 205.44921642, 196.21602275, 198.74817705, 183.38782454, 208.99068536, 201.17674135, 214.70610536, 192.87318662, 173.70103937, 171.52889212, 191.96385435, 196.57748816, 214.66948782, 210.91126252, 210.85867956, 222.07023463, 192.89554996, 203.77792478, 198.06443503, 195.85855313, 189.03735116, 210.31020551, 209.50845903, 184.24117638, 196.03843023, 206.05549967, 193.21288701])
Normalizing by (that is dividing by) the monitor would introduce correlations between different detector pixels if the monitor has variances. This is because the same monitor bin is applied to many detector bins. Scipp would reject such an operation. To work around this, we drop the variances of the monitor. In practice, we have to carefully examine the uncertainties to find out if they really can be neglected!
[17]:
mon = sc.values(mon)
We intend to normalize each event to the relative monitor counts (compared to the total monitor counts). We use sum
to compute the total monitor counts and obtain the relative counts using division:
[18]:
mon /= mon.sum('wavelength')
The sample data is event data in bins and the monitor is a histogram. Multiplication and division operations for such cases are supported by modifying the weights (values) for each event using the operators of the bins
property, in combination with the sc.lookup
helper, a wrapper for a discrete “function”, given by the monitor:
[19]:
sample_over_mon = sample_lambda.bins / sc.lookup(func=mon, dim='wavelength')
sample_over_mon
[19]:
- spectrum: 24794
- wavelength: 1
- L1()float64m60.0
Values:
array(60.) - L2(spectrum)float64m2.560, 2.556, ..., 4.251, 4.252
Values:
array([2.56027902, 2.55590928, 2.55268677, ..., 4.25113991, 4.25116338, 4.25188 ]) - Ltotal(spectrum)float64m62.560, 62.556, ..., 64.251, 64.252
Values:
array([62.56027902, 62.55590928, 62.55268677, ..., 64.25113991, 64.25116338, 64.25188 ]) - incident_beam()vector3m[ 0. 0. 60.]
Values:
array([ 0., 0., 60.]) - position(spectrum)vector3m[ 1.17451004 -1.01106149 -2.03796699], [ 1.18147634 -0.95946649 -2.05334117], ..., [1.81428985 0.09565841 3.84338287], [1.81375055 0.1499371 3.84269584]
Values:
array([[ 1.17451004, -1.01106149, -2.03796699], [ 1.18147634, -0.95946649, -2.05334117], [ 1.18844265, -0.90787149, -2.06871534], ..., [ 1.81482915, 0.04137972, 3.8440699 ], [ 1.81428985, 0.09565841, 3.84338287], [ 1.81375055, 0.1499371 , 3.84269584]]) - sample_position()vector3m[0. 0. 0.]
Values:
array([0., 0., 0.]) - scattered_beam(spectrum)vector3m[ 1.17451004 -1.01106149 -2.03796699], [ 1.18147634 -0.95946649 -2.05334117], ..., [1.81428985 0.09565841 3.84338287], [1.81375055 0.1499371 3.84269584]
Values:
array([[ 1.17451004, -1.01106149, -2.03796699], [ 1.18147634, -0.95946649, -2.05334117], [ 1.18844265, -0.90787149, -2.06871534], ..., [ 1.81482915, 0.04137972, 3.8440699 ], [ 1.81428985, 0.09565841, 3.84338287], [ 1.81375055, 0.1499371 , 3.84269584]]) - source_position()vector3m[ 0. 0. -60.]
Values:
array([ 0., 0., -60.]) - spectrum(spectrum)int321, 2, ..., 24793, 24794
Values:
array([ 1, 2, 3, ..., 24792, 24793, 24794], dtype=int32) - tof(wavelength [bin-edge])float64µs20.0, 1.669e+04
Values:
array([ 20. , 16694.30078125]) - two_theta(spectrum)float64rad2.491, 2.504, ..., 0.442, 0.442
Values:
array([2.49144445, 2.50372965, 2.51564288, ..., 0.44118918, 0.44157918, 0.44231324]) - wavelength(spectrum, wavelength [bin-edge])float64Å0.001, 1.056, ..., 0.001, 1.028
Values:
array([[0.00126471, 1.05567339], [0.0012648 , 1.05574713], [0.00126486, 1.05580152], ..., [0.00123143, 1.02789183], [0.00123143, 1.02789145], [0.00123141, 1.02787999]])
- (spectrum, wavelength)DataArrayViewbinned data [len=0, len=0, ..., len=0, len=0]
dim='event', content=DataArray( dims=(event: 17926980), data=float64[counts], coords={'tof':float64[µs], 'wavelength':float64[Å]})
Finally, we can plot the data, which needs to be histogrammed before being plotted. By default, .hist()
uses the coordinates of the binned data to define histogram edges, which, in this case, would give a single bin along the 'wavelength'
dimension. For a better representation of the data, we supply a finer binning, yielding a more meaningful figure:
[20]:
sc.plot(sample_over_mon.hist(wavelength=400, dim='wavelength').hist(spectrum=500).transpose())
[20]:
[21]:
del sample_lambda
del sample_over_mon
del sample
del vanadium
From events to histogram#
Note: We are continuing here with data that has not been normalized to the monitors.
We histogram the event data:
[22]:
dspacing = sc.arange(dim='dspacing', start=0.3, stop=2.0, step=0.001, unit='Angstrom')
hist = sc.Dataset(
data={
'sample': dspacing_sample.hist(dspacing=dspacing, dim='dspacing'),
'vanadium': dspacing_vanadium.hist(dspacing=dspacing, dim='dspacing'),
}
)
sc.show(hist['spectrum', 0:3]['dspacing', 0:7])
[23]:
sc.plot(hist['sample'].hist(spectrum=500).transpose())
[23]:
Summing (focussing) and normalizing#
After conversion to 'dspacing'
, generic sum
and /
operations can be used to “focus” and normalize the diffraction data to the vanadium run:
[24]:
summed = sc.sum(hist, 'spectrum')
sc.plot(summed)
[24]:
[25]:
normalized = summed['sample'] / summed['vanadium']
sc.plot(normalized)
[25]:
Focussing with \(\theta\) dependence in event-mode#
The approach used above combines reflections from all crystallographic planes and is therefore of limited use. We can use bin
to focus each of multiple groups of spectra into a distinct output spectrum. Here we define groups based on a range of scattering angles – a simple \(\theta\)-dependent binning. This also demonstrates how we can postpone histogramming until after the focussing step.
[26]:
two_theta = sc.linspace(dim='two_theta', unit='rad', start=0.0, stop=np.pi, num=16)
focussed_sample = dspacing_sample.bin(two_theta=two_theta)
focussed_vanadium = dspacing_vanadium.bin(two_theta=two_theta)
norm = focussed_vanadium.hist(dspacing=dspacing)
Similarly as when normalizing by monitor, we have to drop the variances of the normalization term. Otherwise, the normalization would be broadcast to focussed_sample
which would introduce correlations. In practice, we have to make sure that the uncertainties of the vanadium measurement can be neglected!
[27]:
norm = sc.values(norm)
[28]:
focussed_sample.bins /= sc.lookup(func=norm, dim='dspacing')
normalized = focussed_sample.hist(dspacing=dspacing)
The normalized output looks as follows:
[29]:
normalized.plot(vmin=sc.scalar(0), vmax=sc.scalar(0.4))
[29]:
As a bonus, we can use slicing and a dict-comprehension to quickly create of plot comparing the spectra for different scattering angle bins:
[30]:
# compute centers of theta bins
angle = normalized.coords['two_theta'].values
angle = 0.5 * (angle[1:] + angle[:-1])
results = {
f'{round(angle[group], 3)} rad': normalized['dspacing', 300:500]['two_theta', group]
for group in range(2, 6)
}
sc.plot(results)
[30]: