science-workflows

Science workflows with BayeSED3 — evidence comparison, model selection, batch processing

hanyk/bayesed31 installsMITSynced Aug 27

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI

Agent Skills format with YAML frontmatter. Claude Code reads it as-is.

---
name: "science-workflows"
description: "Science workflows with BayeSED3 — evidence comparison, model selection, batch processing"
license: "MIT"
---

# Skill: Science Workflows for Galaxy and AGN SED Fitting

## When to Use

Use this skill when you have a science goal and need to decide *what* to fit, *which* model components to use, and *how* to interpret results — not just how to call the CLI. This skill bridges the gap between a science question and a BayeSED3 configuration.

Reference: Iyer et al. (2025, arXiv:2502.17680) — "The Spectral Energy Distributions of Galaxies" — provides the physical framework underlying these workflows.

---

## Decision Tree: What Model Do I Need?

```
Is there evidence for AGN activity?
  (broad emission lines, X-ray detection, power-law UV continuum, mid-IR excess)
  │
  ├─ YES → Galaxy + AGN model (see AGN workflows below)
  │         Use --preset agn or build inline with --big-blue-bump / --agn / --fann
  │
  └─ NO  → Galaxy-only model
            │
            ├─ Photometry only (no spectrum)?
            │   → Use --no-spectra + --filters + --filters-selected
            │   → Photo-z: set --z-min / --z-max broadly
            │
            ├─ Spectroscopy only or combined phot+spec?
            │   → Use default (both fitted simultaneously)
            │   → Add --sys-err 0.1-0.2 for spectrophotometric calibration uncertainty
            │
            └─ Far-IR / sub-mm data?
                → Add greybody dust emission: --greybody 0,1,gb,-2
```

---

## SFH Selection Guide

| Galaxy Type | Recommended SFH | CLI | Reason |
|-------------|----------------|-----|--------|
| General purpose | Exponential (τ-model) | `--sfh exponential` or `--sfh 2` | Flexible, well-tested |
| Disk / spiral galaxy | Delayed exponential | `--sfh delayed` or `--sfh 3` | Rising then declining SFR |
| Old elliptical / passive | Burst | `--sfh burst` or `--sfh 0` | Single old population |
| Post-starburst (PSB) | Truncated | `--sfh truncated` or `--sfh 4` | Rapid quenching |
| High-z star-forming | Log-normal or double power | `--sfh lognormal` or `--sfh 6` | More realistic rising SFH |
| Maximum flexibility | Non-parametric | `--np-sfh 5,0,10,100` | Binned SFH, no shape assumption |
| Mock recovery / validation | Tabulated | `--sfh tabulated` or `--sfh 8` | Use known input SFH |

**When to add CEH (Chemical Evolution History):**
Use `--sfh ID,ITYPE,0,1` (full form with `itype_ceh=1`) when:
- You need metallicity evolution self-consistently tracked
- Fitting high-quality spectra where metallicity gradients matter
- Science goal involves chemical enrichment history

Simple photometric fitting: `--sfh 0,2` (no CEH) is sufficient.

**When to use non-parametric SFH:**
- Stellar mass estimates where "outshining" bias is a concern (young stars hiding old populations)
- Post-starburst galaxies with complex SFH shapes
- High-z galaxies where parametric forms may be too restrictive
- When you want to measure burstiness or recent SFR changes

```bash
# Non-parametric SFH: uniform prior, linear interpolation, 10 bins, regularization=100
--np-sfh 1,0,10,100
# Tighter regularization (smoother SFH)
--np-sfh 1,0,10,1000
```

---

## DAL Selection Guide

| Situation | Recommended DAL | CLI |
|-----------|----------------|-----|
| General star-forming galaxy | Calzetti (2000) | `--dal calzetti` or `--dal 8` |
| Starburst galaxy | Calzetti (2000) | `--dal 7` |
| Two-component (young+old stars) | Charlot & Fall | `--dal 9` |
| MW-like dust | CCM89 or Fitzpatrick | `--dal 1` or `--dal 5` |
| SMC-like dust (low metallicity) | Prevot-Bouchet | `--dal 4` |
| No dust (high-z, blue galaxy) | None | `--dal 0` |
| AGN disk (separate from galaxy) | Calzetti2000 | `--dal ID,7,2` |

**Charlot & Fall (`--dal 9`) is preferred when:**
- You have both young (HII region) and old (diffuse ISM) stellar populations
- Fitting combined photometry + spectroscopy with emission lines
- The galaxy shows complex dust geometry

---

## Physical Consistency Checks

### Age–Redshift Constraint

Stellar age cannot exceed the age of the universe at the object's redshift. BayeSED3 handles this automatically when `is_age=1` is set in the prior. Verify this is active:

```bash
# After first run, check the .iprior file
bayesed priors show output/obj/model/*.iprior | grep age
# Look for is_age=1 on log(age/yr) and log(tau/yr) lines
```

If `is_age=0`, modify:
```bash
bayesed priors modify output/obj/model/2sfh2.iprior --param "log(age/yr)" --is-age 1
```

### Typical Parameter Ranges

| Parameter | Typical Range | Red Flag |
|-----------|--------------|----------|
| `log(age/yr)` | 7–10.1 | > age of universe at z |
| `log(tau/yr)` | 7–10.5 | Very short τ with old age = unphysical |
| `Av_2` | 0–4 mag | > 5 mag unusual except in ULIRGs |
| `log(Mstar)` | 7–13 | < 7 or > 13 likely fitting failure |
| `log(SFR)` | −3 to +3 | Extreme values warrant inspection |
| `z` | 0–6 (typical) | Check against photometric break position |
| `log(Z/Zsun)` | −2 to +0.5 | Outside this range: poor constraint |

### Posterior Width as Quality Indicator

- Very narrow posterior (< 0.05 dex on log(age)): may be prior-dominated — check prior range
- Very wide posterior (> 1 dex on log(Mstar)): data insufficient to constrain — add more bands
- Bimodal posterior: age–dust degeneracy — add UV or IR data to break it

---

## Common Science Workflows

### 1. Stellar Mass and SFR from Photometry (Photo-z Survey)

Science goal: measure M★ and SFR for a photometric sample with unknown redshifts.

```bash
bayesed fit \
  --input observation/my_survey/catalog.txt --input-type 1 \
  --ssp bc2003_lr_BaSeL_chab --sfh exponential --dal calzetti \
  --nebular \
  --filters observation/my_survey/filters.txt \
  --filters-selected observation/my_survey/filters_selected.txt \
  --z-min 0 --z-max 4 --z-prior-type 1 \
  --no-spectra \
  --sys-err 0.05 \
  --sfr-over 10,100 \
  --save-samples --save-summary \
  --nlive 100 --efr 0.1 \
  --outdir output/survey
```

Key choices:
- `bc2003_lr_BaSeL_chab`: low-res SSP is fast and sufficient for photometry
- `--z-min/max`: set from expected sample redshift range
- `--sfr-over 10,100`: outputs SFR averaged over 10 and 100 Myr
- `--sys-err 0.05`: 5% systematic floor for photometric calibration

### 2. Spectroscopic Galaxy Fitting (Known Redshift)

Science goal: measure age, metallicity, dust, and SFH from a spectrum.

```bash
bayesed fit \
  --input observation/sdss/spec.txt \
  --ssp bc2003_hr_stelib_chab_neb_2000r --nebular \
  --sfh 0,2,0,1 \
  --dal calzetti \
  --sys-err 0.1 \
  --sfr-over 10,100 \
  --save-samples --save-summary \
  --nlive 200 --efr 0.1 --fb 2 \
  --outdir output/spec
```

Key choices:
- `bc2003_hr_stelib_chab_neb_2000r`: high-res SSP needed for spectral features
- `--sfh 0,2,0,1`: exponential SFH with CEH for metallicity evolution
- `--sys-err 0.1`: 10% systematic for spectrophotometric calibration uncertainty

### 3. AGN Host Galaxy Decomposition

Science goal: separate host galaxy stellar emission from AGN components.

```bash
bayesed fit \
  --input observation/agn_host_decomp/sample.txt \
  --ssp 0,0,bc2003_lr_BaSeL_chab,1,1,1,0,0,0,0,0 \
  --sfh 0,8,0,1 \
  --dal 0,2,8 \
  --greybody 0,1,gb,-2,1,1,1000,200 \
  --fann 1,2,clumpy201410tor,1 \
  --template 1,3,QSO1,-1 --dal 3,2,7 \
  --filters observation/agn_host_decomp/filters.txt \
  --filters-selected observation/agn_host_decomp/filters_selected.txt \
  --sys-err-obs-max 0.2 --sys-err-obs-prior 2 \
  --luminosity=-1,0.25,0.25 \
  --save-samples \
  --nlive 400 --efr 0.3 \
  --outdir output/agn_host
```

Key choices:
- `--sfh 0,8,0,1`: tabulated SFH with CEH for flexible host galaxy
- `--greybody 0,1,gb,-2`: dust emission linked to stellar component
- `--fann 1,2,clumpy201410tor,1`: clumpy torus model
- `--template 1,3,QSO1,-1`: QSO template with `iscalable=-1` (linked to torus)
- `--sys-err-obs-prior 2`: log-uniform prior on systematic error (1-20%)
- `--luminosity=-1,0.25,0.25`: output luminosity at 0.25 μm for all components

### 4. Little Red Dot / High-z AGN (JWST Photometry)

Science goal: fit compact high-z objects with possible AGN + galaxy contributions.

```bash
bayesed fit \
  --input observation/LRD_phot/catalog.txt \
  --ssp 0,0,bc2003_hr_stelib_chab_neb_2000r,1,1,1,0,0,1,0,0 \
  --sfh 0,2,0,1 \
  --dal 0,2,8 \
  --agn 1,1,BH_star_300r,1,0,0,agn,0.01,10,1000 --dal 1,2,7 \
  --filters observation/LRD_phot/filters_description_LRD_JADES.txt \
  --filters-selected observation/LRD_phot/filters_selection_LRD_test_1.txt \
  --sys-err-obs-max 0.1 \
  --save-samples \
  --nlive 40 --efr 0.1 \
  --outdir output/LRD
```

Key choices:
- `i1=1` in SSP full form: include nebular emission (important at high-z)
- `--sfh 0,2,0,1`: exponential + CEH
- `--agn 1,1,BH_star_300r,1,...`: physical AGN accretion disk model
- Separate `--dal 1,2,7` for AGN disk attenuation

### 5. CSST/Euclid Mock Recovery (Photo-z + Stellar Populations)

Science goal: validate photo-z and stellar mass recovery on mock data.

```bash
bayesed fit \
  --input observation/CESS_mock/seedcat2_STARFORMING.txt --input-type 1 \
  --ssp 0,0,bc2003_hr_stelib_chab_neb_300r,0,1,1,1,0,1,0,0 \
  --sfh 0,2,0,1 \
  --dal 0,2,8 \
  --filters observation/CESS_mock/filters_bassmzl.txt \
  --filters-selected observation/CESS_mock/filters_selected_csst.txt \
  --z-min 0 --z-max 1 \
  --nnlm 1 --nnlm-niter 1000 \
  --snrmin1 0,3 \
  --rdf=-1,0 \
  --suffix _phot --no-spectra \
  --save-samples \
  --nlive 40 --efr 0.1 \
  --outdir output/CESS_mock
```

Key choices:
- `iscalable=0` in SSP: normalization fixed (NNLM handles scaling)
- `--nnlm 1`: SCD method for NNLM scaling
- `--snrmin1 0,3`: minimum SNR=3 for spectral scaling
- `--rdf=-1,0`: no residual dispersion correction

### 6. QSO Full Spectral Decomposition

Science goal: decompose QSO spectrum into host galaxy + disk + BLR + NLR + FeII.

```bash
bayesed fit \
  --input observation/test/qso.txt \
  --ssp 0,0,bc2003_hr_stelib_chab_neb_2000r,1,1,1,1,0,1,0,0 \
  --sfh 0,2 \
  --dal 0,8,2 --dal 1,7,2 \
  --big-blue-bump 1,1,bbb,1,0.1,10,1000 \
  --lines1 2,2,BLR,1,observation/test/lines_BLR.txt,300,3 \
  --lines1 4,4,NLR,1,observation/test/lines_NLR.txt,2000,2 \
  --aknn 3,3,FeII,1 \
  --kin 3,10,2,0 \
  --rename 0,1,Stellar+Nebular \
  --sys-err 0.2 \
  --save-samples \
  --nlive 400 --efr 0.1 --fb 2 \
  --outdir output/qso
```

---

## Model Comparison Workflow (Bayes Factors)

Use this to decide whether an AGN component is needed, or to compare SFH models.

```bash
# Step 1: Fit galaxy-only model
bayesed fit --input data.txt --preset galaxy --outdir output/gal_only

# Step 2: Fit galaxy+AGN model
bayesed fit --input data.txt --preset agn --outdir output/gal_agn

# Step 3: Discover what catalogs and configs are in each output
bayesed --json results list-catalogs output/gal_only/
bayesed --json results configs output/gal_only/ --catalog gal

# Step 4: Compare evidence (use --model-config if multiple configs exist)
bayesed --json results evidence output/gal_only/ --catalog gal
bayesed --json results evidence output/gal_agn/ --catalog gal

# Step 5: Visually compare posteriors between the two runs
bayesed plot compare output/gal_only/ output/gal_agn/ \
  --labels "Galaxy only,Galaxy+AGN" \
  --params "log(age/yr),Av_2" \
  --object JADES-GS-17432 --no-show -o compare.png
```

```python
from bayesed import BayeSEDResults

# Load evidence from both models
results_gal = BayeSEDResults('output/gal_only')
results_agn = BayeSEDResults('output/gal_agn')

# Get evidence tables (one row per object)
gal_evidence = results_gal.get_evidence(return_format='table')
agn_evidence = results_agn.get_evidence(return_format='table')

# Build lookup and compute delta_logZ per object
gal_dict = {row['ID']: row['INSlogZ'] for row in gal_evidence}
agn_dict = {row['ID']: row['INSlogZ'] for row in agn_evidence}

for obj_id, gal_z in gal_dict.items():
    agn_z = agn_dict.get(obj_id, gal_z)
    dz = agn_z - gal_z
    if abs(dz) > 5:
        print(f"{obj_id}: {'strong evidence for AGN' if dz > 0 else 'strong evidence against AGN'}")
    elif abs(dz) > 2.5:
        print(f"{obj_id}: moderate evidence (ΔlogZ = {dz:.2f})")
    else:
        print(f"{obj_id}: inconclusive (ΔlogZ = {dz:.2f})")
```

Jeffreys scale: |ΔlogZ| < 1 = inconclusive, 1–2.5 = weak, 2.5–5 = moderate, > 5 = strong.

---

## Results Exploration

After fitting, use these commands to explore and export results before committing to a final analysis.

### Discover what's in an output directory

```bash
# What catalogs exist?
bayesed results list-catalogs output/

# What model configurations were run for a catalog?
bayesed results configs output/ --catalog gal

# What parameters are available?
bayesed results list-params output/ --catalog gal --free     # fitted parameters
bayesed results list-params output/ --catalog gal --derived  # derived quantities
bayesed results list-params output/ --catalog gal --pattern "Mstar"
```

### Check convergence quality (always do this first)

`iconverged=2` from MultiNest means the algorithm terminated — it does **not** mean the fit is good. Check all diagnostics together:

```bash
bayesed results quality output/ --catalog gal
bayesed results quality output/ --catalog gal --min-quality OK
```

| Diagnostic | What it measures | How to use |
|-----------|-----------------|------------|
| `iconverged` | Nested sampling completion: 2=full, 1=partial, 0=failed | 0 = discard |
| `Xmin^2/Nd` | Chi2 at MAP / Nd_phot — goodness of fit at best point | ≥ 10 = model wrong |
| `sys_err0_{median}` | Fitted systematic error — at ceiling = model absorbing residuals | ≥ 99% of max = POOR |
| `SNR` | Overall data signal-to-noise ratio | High SNR + high Xmin^2/Nd = model clearly wrong |
| `H` | Posterior entropy — higher = broader/less constrained posterior | Compare across objects |
| `Ne` | Effective free parameters constrained by data | Ne/Np << 1 = prior-dominated |
| `Nd_phot`, `Nd_spec` | Number of photometric/spectroscopic data points | Nd_phot+Nd_spec ≤ Np = underconstrained |
| `INSlogZ` | Bayesian evidence — only ΔlogZ between models is meaningful | Not used for quality |

| quality | iconverged | Xmin^2/Nd | sys_err0_{median} | Meaning |
|---------|-----------|-----------|-------------------|---------|
| GOOD | 2 | < 2 | < 99% of max | Excellent fit |
| OK | 2 | < 10 | < 99% of max | Acceptable |
| POOR | 1, or sys_err at ceiling | < 10 | any | Use with caution |
| FAILED | 0, or Xmin^2/Nd ≥ 10 | — | — | Model cannot fit data |

### Inspect parameter posteriors

```bash
# All statistical estimates for one parameter across all objects
bayesed --json results param-values output/ --param "log(Mstar)[0,1]"

# Correlation matrix between parameters (useful for degeneracy diagnosis)
bayesed --json results correlations output/ \
  --params "log(age/yr)[0,1],Av_2[0,1],log(Mstar)[0,1]"

# Export raw posterior samples for one object
bayesed --json results samples output/ --object JADES-GS-17432 \
  --params "log(age/yr)[0,1],Av_2[0,1]"

# Export science table — well-converged objects only
bayesed results table output/ --min-quality OK \
  --params "z_{median},log(Mstar)[0,1]_{median},log(M_BH/M_sun)[1,1]_{median}" \
  --format csv > results_ok.csv
```

### Inspect best-fit spectra

```bash
# Show HDU shapes and dtypes for an object's best-fit spectrum
bayesed results spectrum output/ --object JADES-GS-17432

# JSON output for programmatic use
bayesed --json results spectrum output/ --object JADES-GS-17432
```

### Visualize posteriors

```bash
# Corner plot: free (fitted) parameters
bayesed plot posterior-free output/ --object JADES-GS-17432 --no-show -o free.png

# Corner plot: derived parameters
bayesed plot posterior-derived output/ --object JADES-GS-17432 --no-show -o derived.png

# Compare posteriors from two model runs
bayesed plot compare output/gal_only/ output/gal_agn/ \
  --labels "Galaxy only,Galaxy+AGN" \
  --object JADES-GS-17432 --no-show -o compare.png
```

---

## Iterative Fitting Strategy

For production science runs, use a two-pass approach:

**Pass 0 — Generate .iprior files (mandatory for new model configs):**
```bash
bayesed priors init \
  --input observation/my_data/catalog.txt \
  --ssp 0,0,bc2003_hr_stelib_chab_neb_2000r,1,1,1,0,0,1,0,0 \
  --sfh 0,2,0,1 --dal 0,2,8 \
  [--agn ...] [--fann ...] \
  --regenerate --force
```

**Pass 1 — Quick exploration (nlive=40–50):**
```bash
bayesed fit ... --nlive 40 --efr 0.3 --outdir output/quick
```
- Inspect posteriors: are parameters well-constrained?
- Check for bimodality (age–dust degeneracy)
- Identify parameters hitting prior boundaries

**Pass 2 — Refine priors using `priors set` and inspection commands:**
```bash
# Inspect what priors are currently set
bayesed priors summary observation/my_data/   # counts and type distribution
bayesed priors print observation/my_data/     # full table per file
bayesed priors validate observation/my_data/  # check for inconsistencies
bayesed priors get observation/my_data/ --param "Av_2"  # single parameter detail

# Tighten dust prior based on Pass 1 posterior
bayesed priors set observation/my_data/ --param "Av_2" --min 0 --max 1.5

# Add Gaussian prior on age if posterior is well-constrained
bayesed priors set observation/my_data/ --param "log(age/yr)" \
  --type Gaussian --hyper "9.5,0.3"

# Fix redshift if spectroscopic z is known
bayesed priors set observation/my_data/ --param "z" --min 4.575 --max 4.575

# Batch-tighten all dust parameters at once
bayesed priors batch-set observation/my_data/ --pattern "^Av" --max 3.0
```

**Pass 3 — Production run (nlive=200–400):**
```bash
bayesed fit ... --nlive 400 --efr 0.1 --multinest-resume --outdir output/production
```
- Use `--multinest-resume` to continue from Pass 2 if converged
- Add `--save-pos-sfh 100,1` for posterior SFH distribution
- Add `--save-sample-obs` for posterior observable predictions

---

## Breaking the Age–Dust–Metallicity Degeneracy

This is the central challenge in galaxy SED fitting. Strategies:

| Degeneracy | Break with |
|-----------|-----------|
| Age vs. dust (reddening) | UV + IR data simultaneously; Balmer decrement from spectrum |
| Age vs. metallicity | High-res spectroscopy (absorption line indices); rest-optical photometry |
| SFH shape | Non-parametric SFH (`--np-sfh`); multiple SFR timescales (`--sfr-over 10,100`) |
| Photo-z vs. SED shape | Broad wavelength coverage; spectroscopic confirmation |
| AGN vs. dust-reddened galaxy | X-ray detection; mid-IR power law; broad emission lines |

---

## SFR Indicators and Timescales

Different observables trace SFR over different timescales (Iyer et al. 2025):

| Indicator | Timescale | BayeSED3 output |
|-----------|-----------|----------------|
| Hα emission | ~4–10 Myr | `log(SFR)` from `--sfr-over 10` |
| UV continuum | ~30–70 Myr | `--sfr-over 100` |
| Total IR luminosity | ~100 Myr | `--sfr-over 100` + greybody |
| Balmer absorption | 100 Myr–1 Gyr | `log(SFR)` from posterior SFH |

Use `--sfr-over 10,100` to output both short- and long-timescale SFR estimates.

---

## Survey-Specific Configurations

### SDSS Spectroscopy (z < 0.3)
```bash
--ssp bc2003_hr_stelib_chab_neb_2000r --nebular
--sfh 0,2,0,1   # exponential + CEH
--dal calzetti
--sys-err 0.1
--z-min 0 --z-max 0.5
```

### COSMOS/CANDELS Photometry (z = 0–4)
```bash
--ssp bc2003_lr_BaSeL_chab --nebular
--sfh exponential --dal calzetti
--no-spectra
--z-min 0 --z-max 4
--sys-err 0.05
--nlive 100
```

### JWST/NIRCam Photometry (z = 4–12)
```bash
--ssp bc2003_hr_stelib_chab_neb_2000r --nebular
--sfh 0,2,0,1   # CEH important at high-z
--dal calzetti
--no-spectra
--z-min 3 --z-max 12
--igm 3          # Inoue+2014 IGM (important at z > 4)
--sys-err 0.05
--nlive 200
```

### CSST Mock (photo-z + stellar populations)
```bash
--ssp 0,0,bc2003_hr_stelib_chab_neb_300r,0,1,1,1,0,1,0,0
--sfh 0,2,0,1 --dal 0,2,8
--nnlm 1 --nnlm-niter 1000
--snrmin1 0,3 --rdf=-1,0
--no-spectra
```

### Combined Phot + Spec (e.g., DESI + photometry)
```bash
--ssp bc2003_hr_stelib_chab_neb_2000r --nebular
--sfh 0,2,0,1 --dal calzetti
--sys-err 0.1    # spectrophotometric calibration
--snrmin2 3,5    # minimum SNR=5 for spectral likelihood
--sfr-over 10,100
```

---

## AGN Classification and Component Selection

| AGN Type | Observed Features | Components to Include |
|----------|------------------|----------------------|
| Type 1 QSO | Broad lines (FWHM > 1000 km/s), blue UV continuum | Galaxy + BBB + BLR + FeII + NLR |
| Type 2 AGN | Narrow lines only, mid-IR excess | Galaxy + NLR + Torus |
| Seyfert 1 | Moderate broad lines, optical AGN | Galaxy + BBB + BLR + NLR |
| LRD (Little Red Dot) | Compact, red, possible broad Hα | Galaxy + physical AGN disk (`BH_star_300r`) |
| AGN host (photometry) | Mid-IR excess, X-ray | Galaxy + Torus (FANN) + QSO template |
| Radio AGN | Radio excess, jet | Galaxy + power law |

**BPT diagnostic** (for spectroscopic data): if [OIII]/Hβ vs [NII]/Hα places object in AGN region, add AGN components and compare Bayes factors.

---

## Output Parameters and Their Science Meaning

| Parameter | Science Use |
|-----------|------------|
| `log(Mstar)` | Stellar mass function, M★–SFR main sequence |
| `log(SFR)` | Star-forming main sequence, quenching studies |
| `log(sSFR)` | Specific SFR; < 10⁻¹¹/yr = quiescent |
| `log(age/yr)` | Formation epoch; mass-weighted age |
| `Av_2` | Dust content; IRX-β relation |
| `log(tau/yr)` | SFH timescale; short τ = rapid quenching |
| `z` | Redshift; photo-z accuracy |
| `log(Lbol)` | Bolometric luminosity; AGN power |
| `log(Z/Zsun)` | Metallicity; mass–metallicity relation |

---

## Related Skills

- [galaxy-fitting.md](galaxy-fitting.md) - Galaxy fitting technical details
- [agn-fitting.md](agn-fitting.md) - AGN fitting technical details
- [custom-models.md](custom-models.md) - Multi-component model configuration
- [results-analysis.md](results-analysis.md) - Analyzing and exporting results
- [prior-management.md](prior-management.md) - Customizing parameter priors
- [cli-reference.md](cli-reference.md) - Complete CLI flag reference and numeric codes
- [parameter-reference.md](parameter-reference.md) - Complete parameter details

More General & Other skills

← All General & Other skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY