A python library for calculating/looking up various tissue properties for laser bioeffect calculations
To simulate the exposure of tissue (skin or retina) to laser radiation, several properties characterizing the thermo-optical response of the tissue are needed. These include absorption coefficients, transmission coefficients, conductivity, density, specific heat, etc. This library is a collection of tissue property data sets that have been reported in the literature.
Installing
Install with pip (or your favorite virtual environment manager)
pip install tissue-properties
Usage
All models accept wavelength as a pint Quantity object or a plain string such as
"532 nm". Results are always Quantity objects with appropriate units. Every model
also exposes a .get_reference() method that returns the source paper as a BibTeX
string.
from tissue_properties.units import Q_
Absorption Coefficient
Mainster (1970) — tabulated, 400–1361 nm
Data extracted from Figure 3 of Mainster et al., JOSA 60(2), 1970.
from tissue_properties.optical.absorption_coefficient import mainster
rpe = mainster.RPE()
choroid = mainster.Choroid()
print("# wavelength (nm) RPE (1/cm) Choroid (1/cm)")
for wavelength in range(400, 1405, 5):
l = Q_(wavelength, "nm")
print(l, rpe(l), choroid(l))
print(rpe.get_reference())
Schulmeister (2017) — analytic formulas
from tissue_properties.optical.absorption_coefficient import schulmeister
rpe = schulmeister.RPE() # melanin power-law
choroid = schulmeister.Choroid() # melanin + blood composite
henles = schulmeister.HenlesFiberLayer() # macular pigment
wavelength = Q_(532, "nm")
print(rpe(wavelength))
print(choroid(wavelength))
print(henles(wavelength))
Ocular Transmission
CIE 203 (2012) — tabulated
from tissue_properties.optical.ocular_transmission import cie203
total = cie203.TotalTransmission()
direct = cie203.DirectTransmission()
wavelength = Q_(532, "nm")
print(total(wavelength)) # dimensionless fraction
print(total(wavelength).to("percent"))
print(direct(wavelength))
Mainster (1970) — tabulated, 400–1400 nm
from tissue_properties.optical.ocular_transmission import mainster
transmission = mainster.Transmission()
print(transmission("532 nm"))
print(transmission("1064 nm"))
Schulmeister (2017) — effective transmission
Accounts for scattered light reaching the retina for finite beam spot sizes.
As spot_size → ∞ the result approaches total transmission; as spot_size → 0
it approaches direct transmission.
from tissue_properties.optical.ocular_transmission import schulmeister
T_eff = schulmeister.EffectiveTransmission()
wavelength = Q_(532, "nm")
print(T_eff(wavelength, Q_(0, "um"))) # zero spot → ~direct transmission
print(T_eff(wavelength, Q_(200, "um"))) # typical focused beam
print(T_eff(wavelength, Q_(10000, "um"))) # large spot → ~total transmission
Refractive Index
Navarro (1985) — analytic Herzberger dispersion
Four ocular media components from Navarro, Santamaría & Bescós, JOSA A 2(8), 1985.
from tissue_properties.optical.refractive_index import navarro
cornea = navarro.Cornea()
aqueous = navarro.Aqueous()
lens = navarro.Lens()
vitreous = navarro.Vitreous()
wavelength = Q_(550, "nm")
print(cornea(wavelength))
print(aqueous(wavelength))
print(lens(wavelength))
print(vitreous(wavelength))
Vincelette (2008) — Sellmeier formula for reduced eye
Validated for the 1150–1350 nm near-infrared region (Vincelette et al., JBO 13, 2008).
from tissue_properties.optical.refractive_index import vincelette
reduced_eye = vincelette.ReducedEye()
print(reduced_eye("1064 nm"))
print(reduced_eye("1200 nm"))
Metadata
Release files for tissue-properties 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tissue_properties-0.4.0.tar.gz | 79.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tissue_properties-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 159.4 kB
Release files / tissue_properties-0.4.0.tar.gz
| Download URL | tissue_properties-0.4.0.tar.gz |
|---|---|
| Size | 79.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea26bbfc335ef031276ddd0c3a7c59646d020b060fcb3724fcdc957e8c382086
|
|
BLAKE2b-256 checksum How to use checksums |
1e2217fc36d6e4f94d9081036ebb7df87f602c666934b5d1287ee84a82298bf3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / tissue_properties-0.4.0-py3-none-any.whl
| Download URL | tissue_properties-0.4.0-py3-none-any.whl |
|---|---|
| Size | 80.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bfe68afeb203589214a5ea334e8bf2d994e3e69783d85ff70b14680b69f066d4
|
|
BLAKE2b-256 checksum How to use checksums |
9c12e7e241240aa9ec3390900a1f37f45a60b5c9224e7d9837a75df8348114ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|