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"))
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tissue_properties-0.4.0.tar.gz.
File metadata
- Download URL: tissue_properties-0.4.0.tar.gz
- Upload date:
- Size: 79.2 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea26bbfc335ef031276ddd0c3a7c59646d020b060fcb3724fcdc957e8c382086
|
|
| MD5 |
8c9a74cd9b0d8268102c6783884781ac
|
|
| BLAKE2b-256 |
1e2217fc36d6e4f94d9081036ebb7df87f602c666934b5d1287ee84a82298bf3
|
File details
Details for the file tissue_properties-0.4.0-py3-none-any.whl.
File metadata
- Download URL: tissue_properties-0.4.0-py3-none-any.whl
- Upload date:
- Size: 80.2 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfe68afeb203589214a5ea334e8bf2d994e3e69783d85ff70b14680b69f066d4
|
|
| MD5 |
bbaa7065447f49aa13698bfc80bb2bde
|
|
| BLAKE2b-256 |
9c12e7e241240aa9ec3390900a1f37f45a60b5c9224e7d9837a75df8348114ae
|