knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval=FALSE
)

Running prospect in forward mode

Input variables

The function PROSPECT runs the model PROSPECT to simulate leaf directional-hemispherical reflectance and transmittance from a set of chemical constituents and a structure parameter. The leaf optical properties are simulated over a spectral domain defined between 400 nm and 2500 nm, with a maximum spectral sampling of 1 nm.

PROSPECT uses the following input variables:

* `N` (default = 1.5) * `CHL` (default = 40.0 $\mu g.cm^2$) * `CAR` (default = 8.0 $\mu g.cm^2$) * `ANT` (default = 0.0 $\mu g.cm^2$) * `BROWN` (default = 0.0 arbitrary units) * `EWT` (default = 0.01 $g.cm^2$) * `LMA` (default = 0.008 $g.cm^2$) * `PROT` (default = 0.0 $g.cm^2$) * `CBC` (default = 0.0 $g.cm^2$) * `alpha` (default = 40.0 degrees)

Output variables

The PROSPECT function returns a data frame containing leaf directional-hemispherical reflectance and transmittance (reflectance and transmittance) and the corresponding wavelengths (wvl) as defined in SpecPROSPECT.

run PROSPECT using default parameters over the full range from 400 nm to 2500 nm

When run without input parameters, PROSPECT is run with default values: SpecPROSPECT is defined by prospect::SpecPROSPECT_FullRange the default values of the structural and chemical parameters are set.

library(prospect)
LRT_default <- PROSPECT()
# the following command is equivalent when simulating over the full spectral domain 
LRT_default <- PROSPECT(SpecPROSPECT = prospect::SpecPROSPECT_FullRange)

run PROSPECT with user defined parameters over the 400-2500 nm range

Part or all of the input parameters can be provided as input parameters. Default values are set for undeclared parameters. This example simulates leaf optics over the full visible to shortwave infrared domain defined in PROSPECT.

LRT_VSWIR <- PROSPECT(N = 1.4, CHL = 30, CAR = 6, EWT = 0.02, LMA = 0.01)

run PROSPECT with user defined spectral domain

The spectral range in SpecPROSPECT$lambda defines the simulated spectral domain. It can be adjusted with the function FitSpectralData.

FitSpectralData can also be used to match the spectral range and sampling of input data with those of the optical constants.

# define the spectral range for simulations in the VNIR from 400 to 1000 nm
wvlRange <- seq(400,1000)
# adjust spectral properties used in PROSPECT to VNIR domain
Adjust_VNIR <- FitSpectralData(lambda = wvlRange)
LRT_VNIR <- PROSPECT(SpecPROSPECT = Adjust_VNIR$SpecPROSPECT,
                     N = 1.4, CHL = 30, CAR = 6, EWT = 0.02, LMA = 0.01)

Comparison between PROSPECT-PRO and PROSPECT-D

PROSPECT-D is the most commonly used version of PROSPECT, combining all dry matter constituents in a unique chemical constituent. The absorption of this chemical constituent is accounted for through the variable LMA.

PROSPECT-PRO is the latest official version released. The only difference between PROSPECT-PRO and PROSPECT-D is that LMA is divided into proteins and CBC. Therefore, the default values in prospect correspond to calling PROSPECT-D, as PROT and CBC are set to 0. When calling PROSPECT, either LMA or PROT and CBC should be set to 0, or undefined. A message will be displayed if it is not the case:

LRT_confusion_version <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, 
                                  LMA = 0.01, PROT = 0.001, N =1.3)
'PROT and/or CBC are not set to 0
LMA is not set to 0 neither, which is physically incorrect
(LMA = PROT + CBC)
We assume that PROSPECT-PRO was called and set LMA to 0
Please correct input parameters LMA, PROT and/or CBC if needed'

PROSPECT-D

Here is an example to run PROSPECT-D:

LRT_D <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, 
                  EWT = 0.012, LMA = 0.01, N =1.3)

and another one with PROSPECT-PRO, which should lead to very similar leaf optics:

LRT_PRO <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, 
                    PROT = 0.001, CBC = 0.009, N =1.3)

The resulting leaf optical properties are, indeed, very similar:

 

Fig. 1. Comparison between PROSPECT-D and PROSPECT-PRO, stoichiometry respected

 

while using proteins only instead of proteins + CBC to simulate LMA leads to different results:

LRT_PRO2 <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, 
                     PROT = 0.010, CBC = 0.0, N = 1.3)

 

Fig. 2. Comparison between PROSPECT-D and PROSPECT-PRO, Proteins only, no CBC

 

On the other hand, using CBC only instead of proteins + CBC to simulate LMA leads to very similar results compared to simulation with PROSPECT-D.

This is explained by the low proportion of proteins compared to CBC in the total contribution to LMA, and the very similar specific absorption coefficient between LMA and CBC. This also highlights the challenges for the proper estimation of proteins from LOP.

LRT_PRO3 <- PROSPECT(CHL = 45, CAR = 10, ANT = 0.2, EWT = 0.012, 
                     PROT = 0.000, CBC = 0.010, N = 1.3)

 

Fig. 3. Comparison between PROSPECT-D and PROSPECT-PRO, CBC only, no Proteins

 

Run previous versions from PROSPECT-PRO

If you want to run previous versions of PROSPECT:

Computing a Look-Up-Table with prospect

Look-Up-Tables (LUT) are widely used in order to infer leaf characteristics from PROSPECT, based on minimization techniques. The function PROSPECT_LUT allows computation of a LUT directly based on a data frame of input parameters.

The following example produces LUTs in the VSWIR and VNIR domains with the function PROSPECT_LUT of prospect. Undefined parameters will be automatically set to their default value.

Input_PROSPECT <- data.frame('CHL' = 100*runif(1000), 
                             'CAR' = 25*runif(1000), 
                             'ANT' = 2*runif(1000), 
                             'EWT' = 0.04*runif(1000), 
                             'LMA' = 0.02*runif(1000), 
                             'N' = 1+2*runif(1000))
# produce a LUT defined over the VSWIR domain covered by PROSPECT
LUT <- PROSPECT_LUT(Input_PROSPECT = Input_PROSPECT)

# produce a LUT defined over the VNIR domain defined previously
LUT_VNIR <- PROSPECT_LUT(SpecPROSPECT = Adjust_VNIR$SpecPROSPECT,
                         Input_PROSPECT = Input_PROSPECT)


jbferet/prospect documentation built on Feb. 10, 2025, 9:35 a.m.