skinoptics 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- skinoptics/__init__.py +47 -0
- skinoptics/absorption_coefficient.py +893 -0
- skinoptics/anisotropy_factor.py +955 -0
- skinoptics/colors.py +1403 -0
- skinoptics/dataframes.py +98 -0
- skinoptics/datasets/colors/Lab_Alaluf2002.txt +11 -0
- skinoptics/datasets/colors/Lab_Xiao2017.txt +25 -0
- skinoptics/datasets/colors/cmfs.txt +472 -0
- skinoptics/datasets/colors/rspds_A_D50_D65.txt +532 -0
- skinoptics/datasets/colors/rspds_D55_D75.txt +98 -0
- skinoptics/datasets/optical_properties/DE_Salomatina.txt +279 -0
- skinoptics/datasets/optical_properties/DE_Shimojo.txt +10 -0
- skinoptics/datasets/optical_properties/EP_Salomatina.txt +279 -0
- skinoptics/datasets/optical_properties/EP_Shimojo.txt +10 -0
- skinoptics/datasets/optical_properties/HY_Salomatina.txt +278 -0
- skinoptics/datasets/optical_properties/HY_Shimojo.txt +10 -0
- skinoptics/datasets/optical_properties/SCC_Salomatina.txt +279 -0
- skinoptics/datasets/optical_properties/beta_oxy_Friebel.txt +85 -0
- skinoptics/datasets/optical_properties/ext_and_molarext_eum_Sarna.txt +32 -0
- skinoptics/datasets/optical_properties/ext_and_molarext_oxy_and_deo_Prahl.txt +377 -0
- skinoptics/datasets/optical_properties/ext_and_molarext_phe_Sarna.txt +50 -0
- skinoptics/datasets/optical_properties/iBCC_Salomatina.txt +279 -0
- skinoptics/datasets/optical_properties/molarext_bil_Li.txt +1843 -0
- skinoptics/datasets/optical_properties/mua_fat_vanVeen.txt +671 -0
- skinoptics/datasets/optical_properties/mua_wat_Hale.txt +232 -0
- skinoptics/datasets/optical_properties/mua_wat_Segelstein.txt +1262 -0
- skinoptics/datasets/optical_properties/nBCC_Salomatina.txt +279 -0
- skinoptics/datasets/optical_properties/n_AT_Matiatou.txt +6 -0
- skinoptics/datasets/optical_properties/n_HY_Matiatou.txt +6 -0
- skinoptics/datasets/optical_properties/n_and_k_DE_Ding.txt +9 -0
- skinoptics/datasets/optical_properties/n_and_k_EP_Ding.txt +9 -0
- skinoptics/datasets/optical_properties/n_and_k_wat_Hale.txt +170 -0
- skinoptics/datasets/optical_properties/n_and_k_wat_Segelstein.txt +1262 -0
- skinoptics/datasets/optical_properties/oxy_and_deo_Bosschaart.txt +456 -0
- skinoptics/datasets/spectra/Xiao2016/skindatabaseSpectra/readmeSpectra.docx +0 -0
- skinoptics/datasets/spectra/Xiao2016/skindatabaseSpectra/skin spectra data.xlsx +0 -0
- skinoptics/refractive_index.py +414 -0
- skinoptics/scattering_coefficient.py +403 -0
- skinoptics/utils.py +420 -0
- skinoptics-0.0.1.dist-info/METADATA +31 -0
- skinoptics-0.0.1.dist-info/RECORD +44 -0
- skinoptics-0.0.1.dist-info/WHEEL +5 -0
- skinoptics-0.0.1.dist-info/licenses/LICENSE.txt +674 -0
- skinoptics-0.0.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,893 @@
|
|
|
1
|
+
'''
|
|
2
|
+
| SkinOptics
|
|
3
|
+
| Copyright (C) 2024-2025 Victor Lima
|
|
4
|
+
|
|
5
|
+
| This program is free software: you can redistribute it and/or modify
|
|
6
|
+
| it under the terms of the GNU General Public License as published by
|
|
7
|
+
| the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
| (at your option) any later version.
|
|
9
|
+
|
|
10
|
+
| This program is distributed in the hope that it will be useful,
|
|
11
|
+
| but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
| GNU General Public License for more details.
|
|
14
|
+
|
|
15
|
+
| You should have received a copy of the GNU General Public License
|
|
16
|
+
| along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
|
|
18
|
+
| Victor Lima
|
|
19
|
+
| victorporto\@ifsc.usp.br
|
|
20
|
+
| victor.lima\@ufscar.br
|
|
21
|
+
| victorportog.github.io
|
|
22
|
+
|
|
23
|
+
| Release date:
|
|
24
|
+
| October 2024
|
|
25
|
+
| Last modification:
|
|
26
|
+
| October 2024
|
|
27
|
+
|
|
28
|
+
| References:
|
|
29
|
+
|
|
30
|
+
| [HQ73] Hale & Querry 1973.
|
|
31
|
+
| Optical Constants of Water in the 200-nm to 200-μm Wavelength Region.
|
|
32
|
+
| https://doi.org/10.1364/AO.12.000555
|
|
33
|
+
|
|
34
|
+
| [S81] Segelstein 1981.
|
|
35
|
+
| The complex refractive index of water.
|
|
36
|
+
| https://mospace.umsystem.edu/xmlui/handle/10355/11599
|
|
37
|
+
|
|
38
|
+
| [AF90] Agati & Fusi 1990.
|
|
39
|
+
| New trends in photobiology recent advances in bilirubin photophysics.
|
|
40
|
+
| https://doi.org/10.1016/1011-1344(90)85138-M
|
|
41
|
+
|
|
42
|
+
| [B90] Billett 1990.
|
|
43
|
+
| Hemoglobin and Hematocrit.
|
|
44
|
+
| https://www.ncbi.nlm.nih.gov/books/NBK259/
|
|
45
|
+
|
|
46
|
+
| [v*05] van Veen, Sterenborg, Pifferi, Torricelli, Chikoidze & Cubeddu 2005.
|
|
47
|
+
| Determination of visible near-IR absorption coefficients of mammalian fat using time- and spatially resolved
|
|
48
|
+
| diffuse reflectance and transmission spectroscopy.
|
|
49
|
+
| https://doi.org/10.1117/1.2085149
|
|
50
|
+
|
|
51
|
+
| [H02] Hecht 2002.
|
|
52
|
+
| Optics. (4th Edition)
|
|
53
|
+
|
|
54
|
+
| [S*06] Salomatina, Jiang, Novak & Yaroslavsky 2006.
|
|
55
|
+
| Optical properties of normal and cancerous human skin in the visible and near-infrared spectral range.
|
|
56
|
+
| https://doi.org/10.1117/1.2398928
|
|
57
|
+
|
|
58
|
+
| [SS06] Sarna & Swartz 2006.
|
|
59
|
+
| The Physical Properties of Melanins.
|
|
60
|
+
| https://doi.org/10.1002/9780470987100.ch16
|
|
61
|
+
|
|
62
|
+
| [DJV11] Delgado Atencio, Jacques & Vázquez y Montiel 2011.
|
|
63
|
+
| Monte Carlo Modeling of Light Propagation in Neonatal Skin.
|
|
64
|
+
| https://doi.org/10.5772/15853
|
|
65
|
+
|
|
66
|
+
| [J13] Jacques 2013.
|
|
67
|
+
| Optical properties of biological tissues: a review.
|
|
68
|
+
| https://doi.org/10.1088/0031-9155/58/14/5007
|
|
69
|
+
|
|
70
|
+
| [B*14] Bosschaart, Edelman, Aalders, van Leeuwen & Faber 2014.
|
|
71
|
+
| A literature review and novel theoretical approach on the optical properties of whole blood.
|
|
72
|
+
| https://doi.org/10.1007/s10103-013-1446-7
|
|
73
|
+
|
|
74
|
+
| [G17] Griffiths 2017.
|
|
75
|
+
| Introduction to Electrodynamics. (4th Edition)
|
|
76
|
+
| https://doi.org/10.1017/9781108333511
|
|
77
|
+
|
|
78
|
+
| [TL23] Taniguchi & Lindsey 2023.
|
|
79
|
+
| Absorption and fluorescence spectra of open-chain tetrapyrrole pigments – bilirubins, biliverdins, phycobilins, and synthetic analogues.
|
|
80
|
+
| https://doi.org/10.1016/j.jphotochemrev.2023.100585
|
|
81
|
+
|
|
82
|
+
| [S*23] Sá, Bacal, Gomes, Silva, Gonçalves & Malta 2023.
|
|
83
|
+
| Blood count reference intervals for the Brazilian adult population: National Health Survey.
|
|
84
|
+
| https://doi.org/10.1590/1980-549720230004.supl.1
|
|
85
|
+
'''
|
|
86
|
+
|
|
87
|
+
import numpy as np
|
|
88
|
+
from scipy.interpolate import interp1d
|
|
89
|
+
|
|
90
|
+
from skinoptics.utils import *
|
|
91
|
+
from skinoptics.dataframes import *
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def Cmass_from_Cmolar(Cmolar, molar_mass):
|
|
95
|
+
r'''
|
|
96
|
+
Calculate the mass concentration from the molar concentration and the molar mass.
|
|
97
|
+
|
|
98
|
+
:math:`C_{mass} = M \mbox{ } C_{molar}`
|
|
99
|
+
|
|
100
|
+
:param Cmolar: molar concentration [M]
|
|
101
|
+
:type Cmolar: float or np.ndarray
|
|
102
|
+
|
|
103
|
+
:param molar_mass: molar mass [g mol^-1]
|
|
104
|
+
:type molar_mass: float
|
|
105
|
+
|
|
106
|
+
:return: - **Cmass** (*float or np.ndarray*) – mass concentration [g L^-1]
|
|
107
|
+
'''
|
|
108
|
+
|
|
109
|
+
return Cmolar*molar_mass
|
|
110
|
+
|
|
111
|
+
def Cmolar_from_Cmass(Cmass, molar_mass):
|
|
112
|
+
r'''
|
|
113
|
+
Calculate the molar concentration from the mass concentration and the molar mass.
|
|
114
|
+
|
|
115
|
+
:math:`C_{molar} = \frac{C_{mass}}{M}`
|
|
116
|
+
|
|
117
|
+
:param Cmass: mass concentration [g L^-1]
|
|
118
|
+
:type Cmass: float or np.ndarray
|
|
119
|
+
|
|
120
|
+
:param molar_mass: molar mass [g mol^-1]
|
|
121
|
+
:type molar_mass: float
|
|
122
|
+
|
|
123
|
+
:return: - **Cmolar** (*float or np.ndarray*) – molar concentration [M]
|
|
124
|
+
'''
|
|
125
|
+
|
|
126
|
+
return Cmass/molar_mass
|
|
127
|
+
|
|
128
|
+
def ext_from_Abs_and_Cmass(Abs, Cmass, pathlength):
|
|
129
|
+
r'''
|
|
130
|
+
| Calculate the extinction coefficient from the absorbance, the mass concentration
|
|
131
|
+
| and the pathlength.
|
|
132
|
+
|
|
133
|
+
:math:`\varepsilon_{mass}(\lambda) = \frac{Abs(\lambda)}{L \mbox{ } C_{mass}}`
|
|
134
|
+
|
|
135
|
+
:param Abs: absorbance [-]
|
|
136
|
+
:type Abs: float or np.ndarray
|
|
137
|
+
|
|
138
|
+
:param Cmass: mass concentration [g L^-1]
|
|
139
|
+
:type Cmass: float
|
|
140
|
+
|
|
141
|
+
:param pathlength: pathlength [cm]
|
|
142
|
+
:type pathlength: float
|
|
143
|
+
|
|
144
|
+
:return: - **ext** (*float or np.ndarray*) – extinction coefficient [cm^-1 mL mg^-1]
|
|
145
|
+
'''
|
|
146
|
+
|
|
147
|
+
return Abs/Cmass/pathlength
|
|
148
|
+
|
|
149
|
+
def molarext_from_Abs_and_Cmolar(Abs, Cmolar, pathlength):
|
|
150
|
+
r'''
|
|
151
|
+
| Calculate the molar extinction coefficient from the absorbance, the molar concentration
|
|
152
|
+
| and the pathlength.
|
|
153
|
+
|
|
154
|
+
:math:`\varepsilon_{molar}(\lambda) = \frac{Abs(\lambda)}{L \mbox{ } C_{molar}}`
|
|
155
|
+
|
|
156
|
+
:param Abs: absorbance [-]
|
|
157
|
+
:type Abs: float or np.ndarray
|
|
158
|
+
|
|
159
|
+
:param Cmolar: molar concentration [g L^-1]
|
|
160
|
+
:type Cmolar: float
|
|
161
|
+
|
|
162
|
+
:param pathlength: pathlength [cm]
|
|
163
|
+
:type pathlength: float
|
|
164
|
+
|
|
165
|
+
:return: - **molarext** (*float or np.ndarray*) – molar extinction coefficient [cm^-1 M^-1]
|
|
166
|
+
'''
|
|
167
|
+
|
|
168
|
+
return Abs/Cmolar/pathlength
|
|
169
|
+
|
|
170
|
+
def ext_from_molarext(molarext, molar_mass):
|
|
171
|
+
r'''
|
|
172
|
+
| Calculate the extinction coefficient from the molar extinction coefficient
|
|
173
|
+
| and the molar mass.
|
|
174
|
+
|
|
175
|
+
:math:`\varepsilon_{mass}(\lambda) = \frac{\varepsilon_{molar}(\lambda)}{M}`
|
|
176
|
+
|
|
177
|
+
:param molarext: molar extinction coefficient [cm^-1 M^-1]
|
|
178
|
+
:type molarext: float or np.ndarray
|
|
179
|
+
|
|
180
|
+
:param molar_mass: molar mass [g mol^-1]
|
|
181
|
+
:type molar_mass: float
|
|
182
|
+
|
|
183
|
+
:return: - **ext** (*float or np.ndarray*) – extinction coefficient [cm^-1 mL mg^-1]
|
|
184
|
+
'''
|
|
185
|
+
|
|
186
|
+
return molarext/molar_mass
|
|
187
|
+
|
|
188
|
+
def molarext_from_ext(ext, molar_mass):
|
|
189
|
+
r'''
|
|
190
|
+
| Calculate the molar extinction coefficient from the extinction coefficient
|
|
191
|
+
| and the molar mass.
|
|
192
|
+
|
|
193
|
+
:math:`\varepsilon_{molar}(\lambda) = M \mbox{ } \varepsilon_{mass}(\lambda)`
|
|
194
|
+
|
|
195
|
+
:param ext: extinction coefficient [cm^-1 mL mg^-1]
|
|
196
|
+
:type ext: float or np.ndarray
|
|
197
|
+
|
|
198
|
+
:param molar_mass: molar mass [g mol^-1]
|
|
199
|
+
:type molar_mass: float
|
|
200
|
+
|
|
201
|
+
:return: - **molarext** (*float or np.ndarray*) – molar extinction coefficient [cm^-1 M^-1]
|
|
202
|
+
'''
|
|
203
|
+
|
|
204
|
+
return ext*molar_mass
|
|
205
|
+
|
|
206
|
+
def mua_from_ext_and_Cmass(ext, Cmass):
|
|
207
|
+
r'''
|
|
208
|
+
| Calculate the absorption coefficient from the extinction coefficient and the mass concentration.
|
|
209
|
+
| For details please check Jacques 2013 [J13].
|
|
210
|
+
|
|
211
|
+
:math:`\mu_a(\lambda) = \mbox{ln}(10) \mbox{ } C_{mass} \mbox{ } \varepsilon_{mass}(\lambda)`
|
|
212
|
+
|
|
213
|
+
:param ext: extinction coefficient [cm^-1 mL mg^-1]
|
|
214
|
+
:type ext: float or np.ndarray
|
|
215
|
+
|
|
216
|
+
:param Cmass: mass concentration [g L^-1]
|
|
217
|
+
:type Cmass: float
|
|
218
|
+
|
|
219
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
220
|
+
'''
|
|
221
|
+
|
|
222
|
+
return np.log(10)*ext*Cmass/10
|
|
223
|
+
|
|
224
|
+
def mua_from_molarext_and_Cmolar(molarext, Cmolar):
|
|
225
|
+
r'''
|
|
226
|
+
| Calculate the absorption coefficient from the molar extinction coefficient
|
|
227
|
+
| and the molar concentration.
|
|
228
|
+
| For details please check Jacques 2013 [J13].
|
|
229
|
+
|
|
230
|
+
:math:`\mu_a(\lambda) = \mbox{ln}(10) \mbox{ } C_{molar} \mbox{ } \varepsilon_{molar}(\lambda)`
|
|
231
|
+
|
|
232
|
+
:param molarext: molar extinction coefficient [cm^-1 M^-1]
|
|
233
|
+
:type molarext: float or np.ndarray
|
|
234
|
+
|
|
235
|
+
:param Cmolar: molar concentration [M]
|
|
236
|
+
:type Cmolar: float
|
|
237
|
+
|
|
238
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
239
|
+
'''
|
|
240
|
+
|
|
241
|
+
return np.log(10)*molarext*Cmolar/10
|
|
242
|
+
|
|
243
|
+
def ext_from_mua_and_Cmass(mua, Cmass):
|
|
244
|
+
r'''
|
|
245
|
+
| Calculate the extinction coefficient from the absorption coefficient
|
|
246
|
+
| and the mass concentration.
|
|
247
|
+
| For details please check Jacques 2013 [J13].
|
|
248
|
+
|
|
249
|
+
:math:`\varepsilon_{mass}(\lambda) = \frac{1}{\mbox{ln}(10)}\frac{\mu_a(\lambda)}{C_{mass}}`
|
|
250
|
+
|
|
251
|
+
:param mua: absorption coefficient [mm^-1]
|
|
252
|
+
:type mua: float or np.ndarray
|
|
253
|
+
|
|
254
|
+
:param Cmass: mass concentration [g L^-1]
|
|
255
|
+
:type Cmass: float
|
|
256
|
+
|
|
257
|
+
:return: - **ext** (*float or np.ndarray*) – extinction coefficient [cm^-1 mL mg^-1]
|
|
258
|
+
'''
|
|
259
|
+
|
|
260
|
+
return 10*mua/np.log(10)/Cmass
|
|
261
|
+
|
|
262
|
+
def molarext_from_mua_Cmolar(mua, Cmolar):
|
|
263
|
+
r'''
|
|
264
|
+
| Calculate the molar extinction coefficient from the absorption coefficient
|
|
265
|
+
| and the molar concentration.
|
|
266
|
+
| For details please check Jacques 2013 [J13].
|
|
267
|
+
|
|
268
|
+
:math:`\varepsilon_{molar}(\lambda) = \frac{1}{\mbox{ln}(10)}\frac{\mu_a(\lambda)}{C_{molar}}`
|
|
269
|
+
|
|
270
|
+
:param mua: absorption coefficient [mm^-1]
|
|
271
|
+
:type mua: float or np.ndarray
|
|
272
|
+
|
|
273
|
+
:param Cmolar: molar concentration [M]
|
|
274
|
+
:type Cmolar: float
|
|
275
|
+
|
|
276
|
+
:return: - **molarext** (*float or np.ndarray*) – molar extinction coefficient [cm^-1 M^-1]
|
|
277
|
+
'''
|
|
278
|
+
|
|
279
|
+
return 10*mua/np.log(10)/Cmolar
|
|
280
|
+
|
|
281
|
+
def mua_from_k(k, lambda0):
|
|
282
|
+
r'''
|
|
283
|
+
| Calculate the absorption coefficient from the imaginary part of the complex refractive index
|
|
284
|
+
| and the wavelength.
|
|
285
|
+
| For details please check Hecht 2002 [H02], Jacques 2013 [J13] and Griffiths 2017 [G17].
|
|
286
|
+
|
|
287
|
+
:math:`\mu_a(\lambda) = 4\pi \frac{k(\lambda)}{\lambda}`
|
|
288
|
+
|
|
289
|
+
:param k: imaginary part of the complex refractive index [-]
|
|
290
|
+
:type k: float or np.ndarray
|
|
291
|
+
|
|
292
|
+
:param lambda0: wavelength [nm]
|
|
293
|
+
:type lambda0: float or np.ndarray
|
|
294
|
+
|
|
295
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
296
|
+
'''
|
|
297
|
+
|
|
298
|
+
return 4*np.pi*k/lambda0/1E-6
|
|
299
|
+
|
|
300
|
+
def k_from_mua(mua, lambda0):
|
|
301
|
+
r'''
|
|
302
|
+
| Calculate the imaginary part of the complex refractive index from the absorption coefficient
|
|
303
|
+
| and the wavelength.
|
|
304
|
+
| For details please check Hecht 2002 [H02], Jacques 2013 [J13] and Griffiths 2017 [G17].
|
|
305
|
+
|
|
306
|
+
:math:`k(\lambda) = \frac{\mu_a(\lambda)}{4\pi}\lambda`
|
|
307
|
+
|
|
308
|
+
:param mua: absorption coefficient [mm^-1]
|
|
309
|
+
:type mua: float or np.ndarray
|
|
310
|
+
|
|
311
|
+
:param lambda0: wavelength [nm]
|
|
312
|
+
:type lambda0: float or np.ndarray
|
|
313
|
+
|
|
314
|
+
:return: - **k** (*float or np.ndarray*) – imaginary part of the complex refractive index [-]
|
|
315
|
+
'''
|
|
316
|
+
return mua*lambda0*1E-6/4/np.pi
|
|
317
|
+
|
|
318
|
+
def k_wat_Hale(lambda0):
|
|
319
|
+
r'''
|
|
320
|
+
| The imaginary part of the complex refractive index of WATER as a function of wavelength.
|
|
321
|
+
| Linear interpolation of data from Hale & Querry 1973 [HQ73] (see their Table I).
|
|
322
|
+
|
|
323
|
+
| wavelength range: [200 nm, 200 μm]
|
|
324
|
+
| temperature: 25 ºC
|
|
325
|
+
|
|
326
|
+
:param lambda0: wavelength [nm]
|
|
327
|
+
:type lambda0: float or np.ndarray
|
|
328
|
+
|
|
329
|
+
:return: - **k** (*float or np.ndarray*) – imaginary part of the complex refractive index [-]
|
|
330
|
+
'''
|
|
331
|
+
|
|
332
|
+
return interp1d(np.array(n_and_k_wat_Hale_dataframe)[:,0],
|
|
333
|
+
np.array(n_and_k_wat_Hale_dataframe)[:,1],
|
|
334
|
+
bounds_error = False,
|
|
335
|
+
fill_value = (np.array(n_and_k_wat_Hale_dataframe)[0,1],
|
|
336
|
+
np.array(n_and_k_wat_Hale_dataframe)[-1,1]))(lambda0)
|
|
337
|
+
|
|
338
|
+
def k_wat_Segelstein(lambda0):
|
|
339
|
+
r'''
|
|
340
|
+
| The imaginary part of the complex refractive index of WATER as a function of wavelength.
|
|
341
|
+
| Linear interpolation of data from D. J. Segelstein's M.S. Thesis 1981 [S81] collected
|
|
342
|
+
| by S. Prahl and publicly available at <https://omlc.org/spectra/water/abs/index.html>.
|
|
343
|
+
|
|
344
|
+
| wavelength range: [10 nm, 10 m]
|
|
345
|
+
|
|
346
|
+
:param lambda0: wavelength [nm]
|
|
347
|
+
:type lambda0: float or np.ndarray
|
|
348
|
+
|
|
349
|
+
:return: - **k** (*float or np.ndarray*) – imaginary part of the complex refractive index [-]
|
|
350
|
+
'''
|
|
351
|
+
|
|
352
|
+
return interp1d(np.array(n_and_k_wat_Segelstein_dataframe)[:,0]*1E3,
|
|
353
|
+
np.array(n_and_k_wat_Segelstein_dataframe)[:,2],
|
|
354
|
+
bounds_error = False,
|
|
355
|
+
fill_value = (np.array(n_and_k_wat_Segelstein_dataframe)[0,2],
|
|
356
|
+
np.array(n_and_k_wat_Segelstein_dataframe)[-1,2]))(lambda0)
|
|
357
|
+
|
|
358
|
+
def ext_eum_Sarna(lambda0):
|
|
359
|
+
r'''
|
|
360
|
+
| The extinction coefficient of EUMELANIN in phosphate buffer as a function of wavelength.
|
|
361
|
+
| Linear interpolation of data from Sarna & Swartz 2006 [SS06] (see their Fig. 16.3-a)
|
|
362
|
+
| graphically deduced by Jacques and publicly available at
|
|
363
|
+
| <https://omlc.org/spectra/melanin/extcoeff.html>.
|
|
364
|
+
|
|
365
|
+
| wavelength range: [210 nm, 820 nm]
|
|
366
|
+
|
|
367
|
+
:param lambda0: wavelength [nm]
|
|
368
|
+
:type lambda0: float or np.ndarray
|
|
369
|
+
|
|
370
|
+
:return: - **ext** (*float or np.ndarray*) – extinction coefficient [cm^-1 mL mg^-1]
|
|
371
|
+
'''
|
|
372
|
+
|
|
373
|
+
return interp1d(np.array(ext_and_molarext_eum_Sarna_dataframe)[:,0],
|
|
374
|
+
np.array(ext_and_molarext_eum_Sarna_dataframe)[:,1],
|
|
375
|
+
bounds_error = False,
|
|
376
|
+
fill_value = (np.array(ext_and_molarext_eum_Sarna_dataframe)[0,1],
|
|
377
|
+
np.array(ext_and_molarext_eum_Sarna_dataframe)[-1,1]))(lambda0)
|
|
378
|
+
|
|
379
|
+
def molarext_eum_Sarna(lambda0):
|
|
380
|
+
r'''
|
|
381
|
+
| The molar extinction coefficient of EUMELANIN in phosphate buffer as a function of wavelength.
|
|
382
|
+
| Linear interpolation of data from Sarna & Swartz 2006 [SS06] (see their Fig. 16.3-a)
|
|
383
|
+
| graphically deduced by Jacques and publicly available at
|
|
384
|
+
| <https://omlc.org/spectra/melanin/extcoeff.html>.
|
|
385
|
+
|
|
386
|
+
| wavelength range: [210 nm, 820 nm]
|
|
387
|
+
|
|
388
|
+
:param lambda0: wavelength [nm]
|
|
389
|
+
:type lambda0: float or np.ndarray
|
|
390
|
+
|
|
391
|
+
:return: - **molarext** (*float or np.ndarray*) – molar extinction coefficient [cm^-1 M^-1]
|
|
392
|
+
'''
|
|
393
|
+
|
|
394
|
+
return interp1d(np.array(ext_and_molarext_eum_Sarna_dataframe)[:,0],
|
|
395
|
+
np.array(ext_and_molarext_eum_Sarna_dataframe)[:,2],
|
|
396
|
+
bounds_error = False,
|
|
397
|
+
fill_value = (np.array(ext_and_molarext_eum_Sarna_dataframe)[0,2],
|
|
398
|
+
np.array(ext_and_molarext_eum_Sarna_dataframe)[-1,2]))(lambda0)
|
|
399
|
+
|
|
400
|
+
def ext_phe_Sarna(lambda0):
|
|
401
|
+
r'''
|
|
402
|
+
| The extinction coefficient of PHEOMELANIN in phosphate buffer as a function of wavelength.
|
|
403
|
+
| Linear interpolation of data from Sarna & Swartz 2006 [SS06] (see their Fig. 16.3-a)
|
|
404
|
+
| graphically deduced by Jacques and publicly available at
|
|
405
|
+
| <https://omlc.org/spectra/melanin/extcoeff.html>.
|
|
406
|
+
|
|
407
|
+
| wavelength range: [210 nm, 820 nm]
|
|
408
|
+
|
|
409
|
+
:param lambda0: wavelength [nm]
|
|
410
|
+
:type lambda0: float or np.ndarray
|
|
411
|
+
|
|
412
|
+
:return: - **ext** (*float or np.ndarray*) – extinction coefficient [cm^-1 mL mg^-1]
|
|
413
|
+
'''
|
|
414
|
+
|
|
415
|
+
return interp1d(np.array(ext_and_molarext_phe_Sarna_dataframe)[:,0],
|
|
416
|
+
np.array(ext_and_molarext_phe_Sarna_dataframe)[:,1],
|
|
417
|
+
bounds_error = False,
|
|
418
|
+
fill_value = (np.array(ext_and_molarext_phe_Sarna_dataframe)[0,1],
|
|
419
|
+
np.array(ext_and_molarext_phe_Sarna_dataframe)[-1,1]))(lambda0)
|
|
420
|
+
|
|
421
|
+
def molarext_phe_Sarna(lambda0):
|
|
422
|
+
r'''
|
|
423
|
+
| The molar extinction coefficient of PHEOMELANIN in phosphate buffer as a function of wavelength.
|
|
424
|
+
| Linear interpolation of data from Sarna & Swartz 2006 [SS06] (see their Fig. 16.3-a)
|
|
425
|
+
| graphically deduced by Jacques and publicly available at
|
|
426
|
+
| <https://omlc.org/spectra/melanin/extcoeff.html>.
|
|
427
|
+
|
|
428
|
+
| wavelength range: [210 nm, 820 nm]
|
|
429
|
+
|
|
430
|
+
:param lambda0: wavelength [nm]
|
|
431
|
+
:type lambda0: float or np.ndarray
|
|
432
|
+
|
|
433
|
+
:return: - **molarext** (*float or np.ndarray*) – molar extinction coefficient [cm^-1 M^-1]
|
|
434
|
+
'''
|
|
435
|
+
|
|
436
|
+
return interp1d(np.array(ext_and_molarext_phe_Sarna_dataframe)[:,0],
|
|
437
|
+
np.array(ext_and_molarext_phe_Sarna_dataframe)[:,2],
|
|
438
|
+
bounds_error = False,
|
|
439
|
+
fill_value = (np.array(ext_and_molarext_phe_Sarna_dataframe)[0,2],
|
|
440
|
+
np.array(ext_and_molarext_phe_Sarna_dataframe)[-1,2]))(lambda0)
|
|
441
|
+
|
|
442
|
+
def molarext_oxy_Prahl(lambda0):
|
|
443
|
+
r'''
|
|
444
|
+
| The molar extinction coefficient of OXYHEMOGLOBIN in water as a function of wavelength.
|
|
445
|
+
| Linear interpolation of data from various sources compiled by S. Prahl and publicly
|
|
446
|
+
| available at <https://omlc.org/spectra/hemoglobin/>.
|
|
447
|
+
|
|
448
|
+
| wavelength range: [250 nm, 1000 nm]
|
|
449
|
+
|
|
450
|
+
:param lambda0: wavelength [nm]
|
|
451
|
+
:type lambda0: float or np.ndarray
|
|
452
|
+
|
|
453
|
+
:return: - **molarext** (*float or np.ndarray*) – molar extinction coefficient [cm^-1 M^-1]
|
|
454
|
+
'''
|
|
455
|
+
|
|
456
|
+
return interp1d(np.array(ext_and_molarext_oxy_and_deo_Prahl_dataframe)[:,0],
|
|
457
|
+
np.array(ext_and_molarext_oxy_and_deo_Prahl_dataframe)[:,1],
|
|
458
|
+
bounds_error = False,
|
|
459
|
+
fill_value = (np.array(ext_and_molarext_oxy_and_deo_Prahl_dataframe)[0,1],
|
|
460
|
+
np.array(ext_and_molarext_oxy_and_deo_Prahl_dataframe)[-1,1]))(lambda0)
|
|
461
|
+
|
|
462
|
+
def molarext_deo_Prahl(lambda0):
|
|
463
|
+
r'''
|
|
464
|
+
| The molar extinction coefficient for DEOXYHEMOGLOBIN in water as a function of wavelength.
|
|
465
|
+
| Linear interpolation of data from various sources compiled by S. Prahl and publicly
|
|
466
|
+
| available at <https://omlc.org/spectra/hemoglobin/>.
|
|
467
|
+
|
|
468
|
+
| wavelength range: [250 nm, 1000 nm]
|
|
469
|
+
|
|
470
|
+
:param lambda0: wavelength [nm]
|
|
471
|
+
:type lambda0: float or np.ndarray
|
|
472
|
+
|
|
473
|
+
:return: - **molarext** (*float or np.ndarray*) – molar extinction coefficient [cm^-1 M^-1]
|
|
474
|
+
'''
|
|
475
|
+
|
|
476
|
+
return interp1d(np.array(ext_and_molarext_oxy_and_deo_Prahl_dataframe)[:,0],
|
|
477
|
+
np.array(ext_and_molarext_oxy_and_deo_Prahl_dataframe)[:,2],
|
|
478
|
+
bounds_error = False,
|
|
479
|
+
fill_value = (np.array(ext_and_molarext_oxy_and_deo_Prahl_dataframe)[0,2],
|
|
480
|
+
np.array(ext_and_molarext_oxy_and_deo_Prahl_dataframe)[-1,2]))(lambda0)
|
|
481
|
+
|
|
482
|
+
def molarext_bil_Li(lambda0):
|
|
483
|
+
r'''
|
|
484
|
+
| The molar extinction coefficient of BILIRUBIN in chloroform as a function of wavelength.
|
|
485
|
+
| Linear interpolation of experimental data obtained with a Cary 3 by J. Li on 1997,
|
|
486
|
+
| scaled to match 55,000 cm^-1 M^-1 at 450.8 nm [AF90] and publicly available by S. Prahl
|
|
487
|
+
| at <https://omlc.org/spectra/PhotochemCAD/html/119.html>.
|
|
488
|
+
| The data is also available at PhotochemCAD [TL23]
|
|
489
|
+
| <https://www.photochemcad.com/databases/common-compounds/oligopyrroles/bilirubin>.
|
|
490
|
+
|
|
491
|
+
| wavelength range: [239.75 nm, 700 nm]
|
|
492
|
+
|
|
493
|
+
:param lambda0: wavelength [nm]
|
|
494
|
+
:type lambda0: float or np.ndarray
|
|
495
|
+
|
|
496
|
+
:return: - **molarext** (*float or np.ndarray*) – molar extinction coefficient [cm^-1 M^-1]
|
|
497
|
+
'''
|
|
498
|
+
|
|
499
|
+
return interp1d(np.array(molarext_bil_Li_dataframe)[:,0],
|
|
500
|
+
np.array(molarext_bil_Li_dataframe)[:,1],
|
|
501
|
+
bounds_error = False,
|
|
502
|
+
fill_value = (np.array(molarext_bil_Li_dataframe)[0,1],
|
|
503
|
+
np.array(molarext_bil_Li_dataframe)[-1,1]))(lambda0)
|
|
504
|
+
|
|
505
|
+
def mua_baseline(lambda0):
|
|
506
|
+
r'''
|
|
507
|
+
| The baseline absorption coefficient as a function of wavelength.
|
|
508
|
+
| Equation proposed by S. Jacques based on data for bloodless rat skin.
|
|
509
|
+
| For details please check <https://omlc.org/news/jan98/skinoptics.html>.
|
|
510
|
+
|
|
511
|
+
:math:`\mu_a^{bas}(\lambda) = 0.0244 + 8.53\mbox{ exp}(-(\lambda-154)/66.2)`
|
|
512
|
+
|
|
513
|
+
| wavelength range: [350 nm, 1100 nm]
|
|
514
|
+
|
|
515
|
+
:param lambda0: wavelength [nm]
|
|
516
|
+
:type lambda0: float or np.ndarray
|
|
517
|
+
|
|
518
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
519
|
+
'''
|
|
520
|
+
return (0.244 + 85.3*np.exp(-(lambda0 - 154.)/66.2))/10
|
|
521
|
+
|
|
522
|
+
def mua_baseline2(lambda0):
|
|
523
|
+
r'''
|
|
524
|
+
| The baseline absorption coefficient as a function of wavelength.
|
|
525
|
+
| Equation based on data for neonatal skin.
|
|
526
|
+
| For details please check <https://omlc.org/news/jan98/skinoptics.html>.
|
|
527
|
+
|
|
528
|
+
:math:`\mu_a^{bas}(\lambda) = 7.84 \times 10^7 \times \lambda^{-3.255}`
|
|
529
|
+
|
|
530
|
+
| wavelength range: [450 nm, 750 nm]
|
|
531
|
+
|
|
532
|
+
:param lambda0: wavelength [nm]
|
|
533
|
+
:type lambda0: float or np.ndarray
|
|
534
|
+
|
|
535
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
536
|
+
'''
|
|
537
|
+
return 7.84E7*lambda0**(-3.255)
|
|
538
|
+
|
|
539
|
+
def mua_wat_Hale(lambda0):
|
|
540
|
+
r'''
|
|
541
|
+
| The absorption coefficient of WATER as a function of wavelength.
|
|
542
|
+
| Linear interpolation of data from Hale & Querry 1973 [HQ73] collected and processed
|
|
543
|
+
| by S. Prahl and publicly available at <https://omlc.org/spectra/water/abs/index.html>.
|
|
544
|
+
|
|
545
|
+
wavelength range: [200 nm, 200 μm]
|
|
546
|
+
|
|
547
|
+
:param lambda0: wavelength [nm]
|
|
548
|
+
:type lambda0: float or np.ndarray
|
|
549
|
+
|
|
550
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
551
|
+
'''
|
|
552
|
+
|
|
553
|
+
return interp1d(np.array(mua_wat_Hale_dataframe)[:,0],
|
|
554
|
+
np.array(mua_wat_Hale_dataframe)[:,1]/10,
|
|
555
|
+
bounds_error = False,
|
|
556
|
+
fill_value = (np.array(mua_wat_Hale_dataframe)[0,1]/10,
|
|
557
|
+
np.array(mua_wat_Hale_dataframe)[-1,1]/10))(lambda0)
|
|
558
|
+
|
|
559
|
+
def mua_wat_Segelstein(lambda0):
|
|
560
|
+
r'''
|
|
561
|
+
| The absorption coefficient of WATER as a function of wavelength.
|
|
562
|
+
| Linear interpolation of data from D. J. Segelstein's M.S. Thesis 1981 [S81],
|
|
563
|
+
| collected by S. Prahl and publicly available at <https://omlc.org/spectra/water/abs/index.html>.
|
|
564
|
+
|
|
565
|
+
| wavelength range: [10 nm, 10 m].
|
|
566
|
+
|
|
567
|
+
:param lambda0: wavelength [nm]
|
|
568
|
+
:type lambda0: float or np.ndarray
|
|
569
|
+
|
|
570
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
571
|
+
'''
|
|
572
|
+
|
|
573
|
+
return interp1d(np.array(mua_wat_Segelstein_dataframe)[:,0],
|
|
574
|
+
np.array(mua_wat_Segelstein_dataframe)[:,1]/10,
|
|
575
|
+
bounds_error = False,
|
|
576
|
+
fill_value = (np.array(mua_wat_Segelstein_dataframe)[0,1]/10,
|
|
577
|
+
np.array(mua_wat_Segelstein_dataframe)[-1,1]/10))(lambda0)
|
|
578
|
+
|
|
579
|
+
def mua_mel_Jacques(lambda0):
|
|
580
|
+
r'''
|
|
581
|
+
| The absoption coefficient of a MELANOSOME as a function of wavelength.
|
|
582
|
+
| Equation proposed by S. Jacques based on data from various sources.
|
|
583
|
+
| For details please check <https://omlc.org/news/jan98/skinoptics.html>.
|
|
584
|
+
|
|
585
|
+
:math:`\mu_a^{mel} (\lambda) = 6.6 \times 10^{10} \times \lambda^{-3.33}`
|
|
586
|
+
|
|
587
|
+
:param lambda0: wavelength [nm]
|
|
588
|
+
:type lambda0: float or np.ndarray
|
|
589
|
+
|
|
590
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
591
|
+
'''
|
|
592
|
+
|
|
593
|
+
return 6.6E10*lambda0**(-3.33)
|
|
594
|
+
|
|
595
|
+
def mua_oxy_Prahl(lambda0, Cmass_oxy = 150, molar_mass_oxy = 64500):
|
|
596
|
+
r'''
|
|
597
|
+
| The absorption coefficient of OXYHEMOGLOBIN in water as a function of wavelength.
|
|
598
|
+
| Calculated from :meth:`skinoptics.absorption_coefficient.molarext_oxy_Prahl` for a specific
|
|
599
|
+
| oxyhemoglobin mass concentration.
|
|
600
|
+
|
|
601
|
+
| wavelength range: [250 nm, 1000 nm]
|
|
602
|
+
|
|
603
|
+
:param lambda0: wavelength [nm]
|
|
604
|
+
:type lambda0: float or np.ndarray
|
|
605
|
+
|
|
606
|
+
:param Cmass_oxy: oxyhemoglobin mass concentration [g/L] (default to 150. [S*23])
|
|
607
|
+
:type Cmass_oxy: float
|
|
608
|
+
|
|
609
|
+
:param molar_mass_oxy: molar mass of oxyhemoglobin [g/mol] (default to 64500. [B90])
|
|
610
|
+
:type molar_mass_oxy: float
|
|
611
|
+
|
|
612
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
613
|
+
'''
|
|
614
|
+
|
|
615
|
+
return mua_from_molarext_and_Cmolar(molarext_oxy_Prahl(lambda0),
|
|
616
|
+
Cmolar = Cmolar_from_Cmass(Cmass = Cmass_oxy, molar_mass = molar_mass_oxy))
|
|
617
|
+
|
|
618
|
+
def mua_deo_Prahl(lambda0, Cmass_deo = 150, molar_mass_deo = 64500):
|
|
619
|
+
r'''
|
|
620
|
+
| The absorption coefficient of DEOXYHEMOGLOBIN in water as a function of wavelength.
|
|
621
|
+
| Calculated from :meth:`skinoptics.absorption_coefficient.molarext_deo_Prahl` for a specific
|
|
622
|
+
| deoxyhemoglobin mass concentration.
|
|
623
|
+
|
|
624
|
+
| wavelength range: [250 nm, 1000 nm]
|
|
625
|
+
|
|
626
|
+
:param lambda0: wavelength [nm]
|
|
627
|
+
:type lambda0: float or np.ndarray.
|
|
628
|
+
|
|
629
|
+
:param Cmass_oxy: deoxyhemoglobin mass concentration [g/L] (default to 150. [S*23])
|
|
630
|
+
:type Cmass_oxy: float
|
|
631
|
+
|
|
632
|
+
:param molar_mass_deo: molar mass of deoxyhemoglobin [g/mol] (default to 64500. [B90])
|
|
633
|
+
:type molar_mass_deo: float
|
|
634
|
+
|
|
635
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
636
|
+
'''
|
|
637
|
+
|
|
638
|
+
return mua_from_molarext_and_Cmolar(molarext_deo_Prahl(lambda0),
|
|
639
|
+
Cmolar = Cmolar_from_Cmass(Cmass = Cmass_deo, molar_mass = molar_mass_deo))
|
|
640
|
+
|
|
641
|
+
def mua_oxy_Bosschaart(lambda0):
|
|
642
|
+
r'''
|
|
643
|
+
| The absorption coefficient of OXYGENIZED BLOOD (saturation > 98%) as a function of wavelength.
|
|
644
|
+
| Linear interpolation of data from Bosschaart et. al. 2014 [B*14].
|
|
645
|
+
|
|
646
|
+
| wavelength range: [251 nm, 1995 nm]
|
|
647
|
+
|
|
648
|
+
:param lambda0: wavelength [nm]
|
|
649
|
+
:type lambda0: float or np.ndarray
|
|
650
|
+
|
|
651
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
652
|
+
'''
|
|
653
|
+
return interp1d(np.array(oxy_and_deo_Bosschaart_dataframe)[:,0],
|
|
654
|
+
np.array(oxy_and_deo_Bosschaart_dataframe)[:,1],
|
|
655
|
+
bounds_error = False,
|
|
656
|
+
fill_value = (np.array(oxy_and_deo_Bosschaart_dataframe)[0,1],
|
|
657
|
+
np.array(oxy_and_deo_Bosschaart_dataframe)[-1,1]))(lambda0)
|
|
658
|
+
|
|
659
|
+
def mua_deo_Bosschaart(lambda0):
|
|
660
|
+
r'''
|
|
661
|
+
| The absorption coefficient of DEOXIGENIZED BLOOD (saturation = 0%) as a function of wavelength.
|
|
662
|
+
| Linear interpolation of data from Bosschaart et. al. 2014 [B*14].
|
|
663
|
+
|
|
664
|
+
| wavelength range: [251 nm, 1995 nm]
|
|
665
|
+
|
|
666
|
+
:param lambda0: wavelength [nm]
|
|
667
|
+
:type lambda0: float or np.ndarray
|
|
668
|
+
|
|
669
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
670
|
+
'''
|
|
671
|
+
return interp1d(np.array(oxy_and_deo_Bosschaart_dataframe)[:,0],
|
|
672
|
+
np.array(oxy_and_deo_Bosschaart_dataframe)[:,2],
|
|
673
|
+
bounds_error = False,
|
|
674
|
+
fill_value = (np.array(oxy_and_deo_Bosschaart_dataframe)[0,2],
|
|
675
|
+
np.array(oxy_and_deo_Bosschaart_dataframe)[-1,2]))(lambda0)
|
|
676
|
+
|
|
677
|
+
def mua_bil_Li(lambda0, Cmass_bil, molar_mass_bil = 585):
|
|
678
|
+
r'''
|
|
679
|
+
| The absorption coefficient of BILIRUBIN in chloroform as a function of wavelength.
|
|
680
|
+
| Calculated from :meth:`skinoptics.absorption_coefficient.molarext_bil_Li` for a specific
|
|
681
|
+
| bilirubin mass concentration.
|
|
682
|
+
|
|
683
|
+
| wavelength range: [239.75 nm, 700 nm]
|
|
684
|
+
|
|
685
|
+
:param lambda0: wavelength [nm]
|
|
686
|
+
:type lambda0: float or np.ndarray
|
|
687
|
+
|
|
688
|
+
:param Cmass_bil: bilirubin mass concentration [g/L]
|
|
689
|
+
:type Cmass_bil: float
|
|
690
|
+
|
|
691
|
+
:param molarmass_bil: molar mass of bilirubin [g/mol] (default to 585. [DJV11])
|
|
692
|
+
:type molarmass_bil: float
|
|
693
|
+
|
|
694
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
695
|
+
'''
|
|
696
|
+
return mua_from_molarext_and_Cmolar(molarext_bil_Li(lambda0),
|
|
697
|
+
Cmolar = Cmolar_from_Cmass(Cmass = Cmass_bil, molar_mass = molar_mass_bil))
|
|
698
|
+
|
|
699
|
+
def mua_fat_vanVeen(lambda0):
|
|
700
|
+
r'''
|
|
701
|
+
| The absorption coefficient of (pig lard) FAT as a function of wavelength.
|
|
702
|
+
| Linear interpolation of data from van Veen et al. 2005 [v*05] collected and processed
|
|
703
|
+
| by S. Prahl and publicly available at <https://omlc.org/spectra/fat/>.
|
|
704
|
+
|
|
705
|
+
| wavelength range: [429 nm, 1098 nm]
|
|
706
|
+
|
|
707
|
+
:param lambda0: wavelength [nm]
|
|
708
|
+
:type lambda0: float or np.ndarray
|
|
709
|
+
|
|
710
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
711
|
+
'''
|
|
712
|
+
return interp1d(np.array(mua_fat_vanVeen_dataframe)[:,0],
|
|
713
|
+
np.array(mua_fat_vanVeen_dataframe)[:,1]/1E3,
|
|
714
|
+
bounds_error = False,
|
|
715
|
+
fill_value = (np.array(mua_fat_vanVeen_dataframe)[0,1]/1E3,
|
|
716
|
+
np.array(mua_fat_vanVeen_dataframe)[-1,1]/1E3))(lambda0)
|
|
717
|
+
|
|
718
|
+
def mua_EP_Salomatina(lambda0):
|
|
719
|
+
r'''
|
|
720
|
+
| The absoption coefficient of human EPIDERMIS as a function of wavelength.
|
|
721
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
722
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
723
|
+
|
|
724
|
+
| wavelength range: [370 nm, 1600 nm]
|
|
725
|
+
|
|
726
|
+
:param lambda0: wavelength [nm]
|
|
727
|
+
:type lambda0: float or np.ndarray
|
|
728
|
+
|
|
729
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
730
|
+
'''
|
|
731
|
+
|
|
732
|
+
return interp1d(np.array(EP_Salomatina_dataframe)[:,0],
|
|
733
|
+
np.array(EP_Salomatina_dataframe)[:,1],
|
|
734
|
+
bounds_error = False,
|
|
735
|
+
fill_value = (np.array(EP_Salomatina_dataframe)[0,1],
|
|
736
|
+
np.array(EP_Salomatina_dataframe)[-1,1]))(lambda0)
|
|
737
|
+
|
|
738
|
+
def mua_DE_Salomatina(lambda0):
|
|
739
|
+
r'''
|
|
740
|
+
| The absoption coefficient of human DERMIS as a function of wavelength.
|
|
741
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
742
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
743
|
+
|
|
744
|
+
| wavelength range: [370 nm, 1600 nm]
|
|
745
|
+
|
|
746
|
+
:param lambda0: wavelength [nm]
|
|
747
|
+
:type lambda0: float or np.ndarray
|
|
748
|
+
|
|
749
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
750
|
+
'''
|
|
751
|
+
return interp1d(np.array(DE_Salomatina_dataframe)[:,0],
|
|
752
|
+
np.array(DE_Salomatina_dataframe)[:,1],
|
|
753
|
+
bounds_error = False,
|
|
754
|
+
fill_value = (np.array(DE_Salomatina_dataframe)[0,1],
|
|
755
|
+
np.array(DE_Salomatina_dataframe)[-1,1]))(lambda0)
|
|
756
|
+
|
|
757
|
+
def mua_HY_Salomatina(lambda0):
|
|
758
|
+
r'''
|
|
759
|
+
| The absoption coefficient of human HYPODERMIS as a function of wavelength.
|
|
760
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
761
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
762
|
+
|
|
763
|
+
| wavelength range: [374 nm, 1600 nm]
|
|
764
|
+
|
|
765
|
+
:param lambda0: wavelength [nm]
|
|
766
|
+
:type lambda0: float or np.ndarray
|
|
767
|
+
|
|
768
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
769
|
+
'''
|
|
770
|
+
return interp1d(np.array(HY_Salomatina_dataframe)[:,0],
|
|
771
|
+
np.array(HY_Salomatina_dataframe)[:,1],
|
|
772
|
+
bounds_error = False,
|
|
773
|
+
fill_value = (np.array(HY_Salomatina_dataframe)[0,1],
|
|
774
|
+
np.array(HY_Salomatina_dataframe)[-1,1]))(lambda0)
|
|
775
|
+
|
|
776
|
+
def mua_iBCC_Salomatina(lambda0):
|
|
777
|
+
r'''
|
|
778
|
+
| The absoption coefficient of INFILTRATIVE BASAL CELL CARCINOMA as a function of wavelength.
|
|
779
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
780
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
781
|
+
|
|
782
|
+
| wavelength range: [370 nm, 1600 nm]
|
|
783
|
+
|
|
784
|
+
:param lambda0: wavelength [nm]
|
|
785
|
+
:type lambda0: float or np.ndarray
|
|
786
|
+
|
|
787
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
788
|
+
'''
|
|
789
|
+
return interp1d(np.array(iBCC_Salomatina_dataframe)[:,0],
|
|
790
|
+
np.array(iBCC_Salomatina_dataframe)[:,1],
|
|
791
|
+
bounds_error = False,
|
|
792
|
+
fill_value = (np.array(iBCC_Salomatina_dataframe)[0,1],
|
|
793
|
+
np.array(iBCC_Salomatina_dataframe)[-1,1]))(lambda0)
|
|
794
|
+
|
|
795
|
+
def mua_nBCC_Salomatina(lambda0):
|
|
796
|
+
r'''
|
|
797
|
+
| The absoption coefficient of NODULAR BASAL CELL CARCINOMA as a function of wavelength.
|
|
798
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
799
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
800
|
+
|
|
801
|
+
| wavelength range: [370 nm, 1600 nm]
|
|
802
|
+
|
|
803
|
+
:param lambda0: wavelength [nm]
|
|
804
|
+
:type lambda0: float or np.ndarray
|
|
805
|
+
|
|
806
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
807
|
+
'''
|
|
808
|
+
|
|
809
|
+
return interp1d(np.array(nBCC_Salomatina_dataframe)[:,0],
|
|
810
|
+
np.array(nBCC_Salomatina_dataframe)[:,1],
|
|
811
|
+
bounds_error = False,
|
|
812
|
+
fill_value = (np.array(nBCC_Salomatina_dataframe)[0,1],
|
|
813
|
+
np.array(nBCC_Salomatina_dataframe)[-1,1]))(lambda0)
|
|
814
|
+
|
|
815
|
+
def mua_SCC_Salomatina(lambda0):
|
|
816
|
+
r'''
|
|
817
|
+
| The absoption coefficient of SQUAMOUS CELL CARCINOMA as a function of wavelength.
|
|
818
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
819
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
820
|
+
|
|
821
|
+
| wavelength range: [370 nm, 1600 nm]
|
|
822
|
+
|
|
823
|
+
:param lambda0: wavelength [nm]
|
|
824
|
+
:type lambda0: float or np.ndarray
|
|
825
|
+
|
|
826
|
+
:return: - **mua** (*float or np.ndarray*) – absorption coefficient [mm^-1]
|
|
827
|
+
'''
|
|
828
|
+
|
|
829
|
+
return interp1d(np.array(SCC_Salomatina_dataframe)[:,0],
|
|
830
|
+
np.array(SCC_Salomatina_dataframe)[:,1],
|
|
831
|
+
bounds_error = False,
|
|
832
|
+
fill_value = (np.array(SCC_Salomatina_dataframe)[0,1],
|
|
833
|
+
np.array(SCC_Salomatina_dataframe)[-1,1]))(lambda0)
|
|
834
|
+
|
|
835
|
+
def std_mua_EP_Salomatina(lambda0):
|
|
836
|
+
r'''
|
|
837
|
+
| The standard deviation respective to :meth:`skinoptics.absorption_coefficient.mua_EP_Salomatina`.
|
|
838
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
839
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
840
|
+
|
|
841
|
+
| wavelength range: [370 nm, 1600 nm]
|
|
842
|
+
|
|
843
|
+
:param lambda0: wavelength [nm]
|
|
844
|
+
:type lambda0: float or np.ndarray
|
|
845
|
+
|
|
846
|
+
:return: - **std_mua** (*float or np.ndarray*) – standard deviation of the absorption coefficient [mm^-1]
|
|
847
|
+
'''
|
|
848
|
+
|
|
849
|
+
return interp1d(np.array(EP_Salomatina_dataframe)[:,0],
|
|
850
|
+
np.array(EP_Salomatina_dataframe)[:,2],
|
|
851
|
+
bounds_error = False,
|
|
852
|
+
fill_value = (np.array(EP_Salomatina_dataframe)[0,2],
|
|
853
|
+
np.array(EP_Salomatina_dataframe)[-1,2]))(lambda0)
|
|
854
|
+
|
|
855
|
+
def std_mua_DE_Salomatina(lambda0):
|
|
856
|
+
r'''
|
|
857
|
+
| The standard deviation respective to :meth:`skinoptics.absorption_coefficient.mua_DE_Salomatina`.
|
|
858
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
859
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
860
|
+
|
|
861
|
+
| wavelength range: [370 nm, 1600 nm]
|
|
862
|
+
|
|
863
|
+
:param lambda0: wavelength [nm]
|
|
864
|
+
:type lambda0: float or np.ndarray
|
|
865
|
+
|
|
866
|
+
:return: - **std_mua** (*float or np.ndarray*) – standard deviation of the absorption coefficient [mm^-1]
|
|
867
|
+
'''
|
|
868
|
+
|
|
869
|
+
return interp1d(np.array(DE_Salomatina_dataframe)[:,0],
|
|
870
|
+
np.array(DE_Salomatina_dataframe)[:,2],
|
|
871
|
+
bounds_error = False,
|
|
872
|
+
fill_value = (np.array(DE_Salomatina_dataframe)[0,2],
|
|
873
|
+
np.array(DE_Salomatina_dataframe)[-1,2]))(lambda0)
|
|
874
|
+
|
|
875
|
+
def std_mua_HY_Salomatina(lambda0):
|
|
876
|
+
r'''
|
|
877
|
+
| The standard deviation respective to :meth:`skinoptics.absorption_coefficient.mua_HY_Salomatina`.
|
|
878
|
+
| Linear interpolation of experimental data from Salomatina et al. 2006 [S*06],
|
|
879
|
+
| publicly available at <https://sites.uml.edu/abl/optical-properties-2/>.
|
|
880
|
+
|
|
881
|
+
| wavelength range: [370 nm, 1600 nm]
|
|
882
|
+
|
|
883
|
+
:param lambda0: wavelength [nm]
|
|
884
|
+
:type lambda0: float or np.ndarray
|
|
885
|
+
|
|
886
|
+
:return: - **std_mua** (*float or np.ndarray*) – standard deviation of the absorption coefficient [mm^-1]
|
|
887
|
+
'''
|
|
888
|
+
|
|
889
|
+
return interp1d(np.array(HY_Salomatina_dataframe)[:,0],
|
|
890
|
+
np.array(HY_Salomatina_dataframe)[:,2],
|
|
891
|
+
bounds_error = False,
|
|
892
|
+
fill_value = (np.array(HY_Salomatina_dataframe)[0,2],
|
|
893
|
+
np.array(HY_Salomatina_dataframe)[-1,2]))(lambda0)
|