iad

Forward and Inverse Radiative Transport using the Adding-Doubling method

https://github.com/scottprahl/iad

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    3 of 5 committers (60.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.6%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Forward and Inverse Radiative Transport using the Adding-Doubling method

Basic Info
  • Host: GitHub
  • Owner: scottprahl
  • License: mit
  • Language: CWeb
  • Default Branch: main
  • Homepage:
  • Size: 48.5 MB
Statistics
  • Stars: 23
  • Watchers: 3
  • Forks: 9
  • Open Issues: 3
  • Releases: 24
Created over 8 years ago · Last pushed 8 months ago
Metadata Files
Readme Changelog License Citation

README.md

Inverse Adding-Doubling

GitHub tag (latest by date) MIT License GitHub Actions DOI

by Scott Prahl

April 2024

Overview

Inverse Adding-Doubling is a command-line program that determines the intrinsic optical properties of a flat scattering and absoption sample using measurements of the total reflection and transmission. Basically, optical properties are repeatedly guessed until the calculated reflection and transmission match the measured values. The program accounts for realistic measurement constraints associated with integrating sphere effects.

This package provides two executables ad and iad. The first does a forward adding-doubling calculation (i.e., given the albedo, optical thickness, and anisotropy it returns the total reflection and transmission). The second does the reverse.

This program Prahl et al., Applied Optics, 32, 559-568, 1993 uses the Adding-Doubling method of van de Hulst Multiple Light Scattering, Academic Press, 1978. I extended the Adding-Doubling method to account for Fresnel reflection at boundaries as well as corrections that must accompany integrating sphere experiments.

Finally, integrating spheres do not always collect all the light that exits from the front or back surface of a sample. Since this is impossible to account for the 1D adding-doubling technique, a Monte Carlo simulation is embedded in the inverse calculation.

Details about using the program are documented in the accompanying manual.

Installation

Obtaining executables from source entails unzipping and running make (See INSTALL.md for more details.) Windows executables are available in the iad-win-3-16-2.zip releases.

Usage

Inverting a single measurement on the command line

To find the optical properties of a 1mm thick sample with 40% total reflectance and 10% total transmission

bash ./iad -r 0.4 -t 0.1 -d 1

which will generate output that ends with

```

Measured MR Measured MT Estimated Estimated Estimated

wave MR fit MT fit mua mus' g

[nm] [---] [---] [---] [---] 1/mm 1/mm [---]

 1   0.4000   0.4000    0.1000   0.0999    0.4673   3.9317    0.0000    *

```

The process can be reversed by doing a forward calculation with the -z option. Here -A 0.4673 sets the absorption coefficient, and -j 3.9317 sets the reduced scattering coefficient). Specifying the thickness -d 1 is necessary because the default thickness is infinite.

bash ./iad -z -A 0.4673 -j 3.9317 -d 1

produces output that ends with

```

Measured MR Measured MT Estimated Estimated Estimated

wave MR fit MT fit mua mus' g

[nm] [---] [---] [---] [---] 1/mm 1/mm [---]

 0   0.0000   0.4000    0.0000   0.0999    0.4673    3.9317     0.0000    * 

```

For Windows, there are executable binaries ad.exe and iad.exe compiled using MinGW-w64. These apps can be run using the Command Prompt application cmd.exe. These binaries are packaged in the separate iad-win distributions on github or omlc.

Inverting spectral data

Often one wants the optical properties over an entire spectrum. A good example was recently provide by @anishabahl. This measurement was made with a spectrophotometer equipped with a dual beam integrating sphere. The input data looks includes the total reflection and transmission as well a header that describes the experiment. The reflection and transmission data look like this

r and t graph

The input file is processed with

bash iad -X -i 8 -g 0.9 phantom-with-no-slides.rxt

The option i 8 indicates that light is incident on the sample at an angle of 8°, -X indicates that a sphere with dual beams was used, and -g 0.9 indicates the default scattering anisotropy. Note that in the PDMS file, the refractive index of the sample changes with each data point

This command will produce an output file that when plotted looks like

calculated mua

which matches the intrinsic absorption of Wacker PDMS found in Cai's 2008 Disseration

calculated mus

This is an excellent set of measurements because there is almost no influence of the absorption coefficient on the scattering coefficient.

Jupyter support

As of March 2024, there is now a python command-line script iadplus that will analyze an .rxt input file and graph the results. Everything is assembled into a Jupyter notebook for convenience. You may need to install some python modules to be able to use iadplus

iadplus -options '-i 8 -X ' file.rxt

will run iad and produce file-notebook/file.ipynb along with a bunch of .svg files used in the Jupyter notebook file.ipynb

Author

Scott Prahl

http://omlc.org/~prahl

Owner

  • Name: Scott Prahl
  • Login: scottprahl
  • Kind: user
  • Location: Portland, Oregon
  • Company: Oregon Institute of Technology

Citation (CITATION.cff)

cff-version: 1.2.0
title: 'iad: C code for Forward and Inverse Radiative Transport using the Adding-Doubling method'
message: 'Code is citable as below.  Article is  Prahl et al., Applied Optics, 32, 559-568, 1993.'

authors:
  - given-names: Scott
    family-names: Prahl
    orcid: 'https://orcid.org/0000-0003-1468-6851'
doi: 10.5281/zenodo.102147394
url: 'https://doi.org/10.5281/zenodo.102147394'

GitHub Events

Total
  • Issues event: 2
  • Watch event: 3
  • Delete event: 1
  • Push event: 3
  • Fork event: 1
  • Create event: 1
Last Year
  • Issues event: 2
  • Watch event: 3
  • Delete event: 1
  • Push event: 3
  • Fork event: 1
  • Create event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 592
  • Total Committers: 5
  • Avg Commits per committer: 118.4
  • Development Distribution Score (DDS): 0.147
Past Year
  • Commits: 35
  • Committers: 1
  • Avg Commits per committer: 35.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Scott Prahl s****t@p****m 505
Work Prahl p****l@b****u 53
Tom Vercauteren t****n@k****k 18
Scott Prahl p****s@o****u 10
Andreas Scherer a****b@f****e 6
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 24
  • Total pull requests: 3
  • Average time to close issues: 10 months
  • Average time to close pull requests: 3 days
  • Total issue authors: 13
  • Total pull request authors: 2
  • Average comments per issue: 2.5
  • Average comments per pull request: 1.33
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 5
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 3
  • Pull request authors: 0
  • Average comments per issue: 2.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Yijing-KCL (2)
  • alexpattyn (2)
  • shanghongY (1)
  • eduardosprp (1)
  • fredchen00 (1)
  • anishabahl (1)
  • Grieverheart (1)
  • xiaoxuinchina (1)
  • YiyuanLinXX (1)
  • Jaasim99 (1)
  • RashidLadj (1)
  • fengzefeng (1)
  • jgroehl (1)
Pull Request Authors
  • tvercaut (1)
  • ascherer (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/make.yml actions
  • actions/checkout v3 composite