55obtaining the :term:`resolution function` of an :term:`instrument`, please use the
66`resolution_functions.instrument.Instrument.get_resolution_function` method.
77"""
8+
89from __future__ import annotations
910
1011from dataclasses import dataclass
@@ -38,6 +39,7 @@ class ScaledTabulatedModelData(ModelData):
3839 restrictions
3940 defaults
4041 """
42+
4143 npz : str
4244
4345
@@ -66,25 +68,33 @@ class ScaledTabulatedModel(SimpleBroaden1DMixin, InstrumentModel):
6668 The .npz file containing the model data
6769 citation
6870 """
69- input = ('energy_transfer' ,)
71+
72+ input = ("energy_transfer" ,)
7073
7174 data_class : ClassVar [type [ScaledTabulatedModelData ]] = ScaledTabulatedModelData
7275
7376 def __init__ (self , model_data : ScaledTabulatedModelData , ** _ ):
7477 super ().__init__ (model_data )
75- self .data = np .load (importlib .resources .files ("resins.instrument_data" ) / model_data .npz )
76-
77- self .polynomial = Polynomial (coef = self .data ["coef" ],
78- domain = self .data ["domain" ],
79- window = self .data ["window" ])
80- self ._interp = RegularGridInterpolator ((self .data ["energy_transfer" ], self .data ["kernel_energies" ]),
81- self .data ["table" ],
82- method = "linear" ,
83- bounds_error = False ,
84- fill_value = 0. )
85-
86- def get_characteristics (self , omega_q : Float [np .ndarray , 'energy_transfer dimension=1' ]
87- ) -> dict [str , Float [np .ndarray , 'sigma' ]]:
78+ self .data = np .load (
79+ importlib .resources .files ("resins.instrument_data" ) / model_data .npz
80+ )
81+
82+ self .polynomial = Polynomial (
83+ coef = self .data ["coef" ],
84+ domain = self .data ["domain" ],
85+ window = self .data ["window" ],
86+ )
87+ self ._interp = RegularGridInterpolator (
88+ (self .data ["energy_transfer" ], self .data ["kernel_energies" ]),
89+ self .data ["table" ],
90+ method = "linear" ,
91+ bounds_error = False ,
92+ fill_value = 0.0 ,
93+ )
94+
95+ def get_characteristics (
96+ self , omega_q : Float [np .ndarray , "energy_transfer dimension=1" ]
97+ ) -> dict [str , Float [np .ndarray , "sigma" ]]:
8898 """
8999 Computes the broadening width at each value of energy transfer (`omega_q`).
90100
@@ -103,13 +113,13 @@ def get_characteristics(self, omega_q: Float[np.ndarray, 'energy_transfer dimens
103113 characteristics
104114 The characteristics of the broadening function, i.e. the Gaussian width as sigma.
105115 """
106- return {'sigma' : self .polynomial (omega_q [:, 0 ])}
107-
108- def get_kernel (self ,
109- points : Float [np .ndarray , 'sample dimension=1' ],
110- mesh : Float [np .ndarray , 'mesh' ],
111- ) -> Float [np .ndarray , 'sample mesh' ]:
116+ return {"sigma" : self .polynomial (omega_q [:, 0 ])}
112117
118+ def get_kernel (
119+ self ,
120+ points : Float [np .ndarray , "sample dimension=1" ],
121+ mesh : Float [np .ndarray , "mesh" ],
122+ ) -> Float [np .ndarray , "sample mesh" ]:
113123 assert len (omega_q .shape ) == 2 and omega_q .shape [1 ] == 1
114124 energy = omega_q
115125
@@ -125,10 +135,11 @@ def get_kernel(self,
125135 interp_kernels = self ._interp (lookup_mesh ) / scale_factors
126136 return interp_kernels
127137
128- def get_peak (self ,
129- points : Float [np .ndarray , 'sample dimension=1' ],
130- mesh : Float [np .ndarray , 'mesh' ],
131- ) -> Float [np .ndarray , 'sample mesh' ]:
138+ def get_peak (
139+ self ,
140+ points : Float [np .ndarray , "sample dimension=1" ],
141+ mesh : Float [np .ndarray , "mesh" ],
142+ ) -> Float [np .ndarray , "sample mesh" ]:
132143 shifted_meshes = [mesh - energy for energy in omega_q [:, 0 ]]
133144
134145 shifted_kernels = [
0 commit comments