Skip to content

Experimental Helpers ​

These exported helpers are available to callers, but they do not yet have a documented end-to-end product workflow. In particular, SIF fixture policy is a product decision rather than a documentation decision.

SIF Data Helpers ​

vSmartMOM.sif_data_path Function
julia
sif_data_path(filename) -> String

Absolute path to filename inside the SIF data directory. The directory is src/SIF_emission/ by default and can be overridden with VSMARTMOM_SIF_DATA_DIR when the external CSV/DAT resources are intentionally kept out of a source-only checkout. Benchmark scripts should use this helper rather than hardcoded absolute paths.

source
vSmartMOM.load_sif_spectrum Function
julia
load_sif_spectrum(path=sif_data_path("sif-spectra.csv"); column=:SIF_OLD,
                  rescale_to_peak=true) -> (ν::Vector, jSIF::Vector)

Load a SIF emission spectrum from a CSV file and return (ν, jSIF) sorted by increasing wavenumber (cm⁻¹).

  • ν is the wavenumber grid in cm⁻¹ (converted from the file's nm column).

  • jSIF is the SIF flux in mW/m²/cm⁻¹ (converted from mW/m²/nm via the dλ/dν = 1e7/ν² Jacobian).

column selects which SIF spectrum to read. The externally supplied study SIF table (sif-spectra.csv) provides three columns: :SIF_OLD, :SIF_NEW, :SIF_DEF. Defaults to :SIF_OLD to match the benchmark scripts.

With rescale_to_peak=true, the wavelength-space spectrum is normalized to a peak of 0.5π before conversion to wavenumber density. This is a shape normalization, not a calibration of physical SIF amplitude. Use rescale_to_peak=false to preserve the supplied amplitude, or sif_reference_state for the explicit 760-nm campaign convention.

source
vSmartMOM.load_ficus_reflectance Function
julia
load_ficus_reflectance(path=sif_data_path("ficus_refl_600to800nm.dat")) ->
    (λ_μm::Vector, R::Vector)

Load a leaf-reflectance sample from a simple two-column file (λ in μm, reflectance in %). The 600-800 nm file has no header; the full-range ficus_refl.dat file has a metadata header and the numeric block starts after the first blank line. Both are handled. Returned reflectance is dimensionless (the % is divided out).

source
vSmartMOM.build_sif_source Function
julia
build_sif_source(SIF₀, ν_model, ν_sif, jSIF; pol_component=1)
build_sif_source(RS_type, ν_model, ν_sif, jSIF; pol_component=1)

Interpolate (ν_sif, jSIF) onto ν_model (both in cm⁻¹) and write the result into SIF₀[pol_component, :]. Other Stokes components are left untouched (default-zero for Lambertian/unpolarized SIF).

The matrix method is the preferred path: pass the returned matrix into SurfaceSIF(SIF₀=SIF₀). The RS_type method remains only for older scripts that still carry a legacy SIF₀ field.

source