Skip to content

rotation_curve

Projected long-slit rotation curve v_los(r) from Hα per slit offset.

Category Kinematics
Backend scipy - implemented here on top of scipy primitives
Version 2.0.1
Reads -
Writes metrics.v_systemic_km_s, metrics.n_points, metrics.n_skipped_no_offset, metrics.n_skipped_no_fit, extras.points, extras.method

Per-spectrum Hα Gaussian fit ⇒ v_los = c·(μ−λ_obs_rest)/λ_obs_rest with λ_obs_rest = λ_rest·(1+z_galaxy). Systemic velocity = median(v_los_i). Slit offsets are read from each spectrum's meta['slit_offset_arcsec'] (preferred) or from params['slit_offsets']={index: arcsec}. Points sorted by offset.

Parameters

Parameter Default Required Description
z_galaxy 0.0 - Galaxy redshift used to compute λ_obs_rest = λ_rest·(1+z).
lambda_rest 6562.82 - Rest wavelength (Å) of the line fit per spectrum (default Hα).
fit_window 15.0 - Half-window (Å) of the Hα Gaussian fit.
slit_offsets {} - Optional fallback mapping {spectrum_index: arcsec_offset} for spectra whose meta does not carry 'slit_offset_arcsec'.

Use it

from spectro_kernel import run_algorithm

output = run_algorithm("rotation_curve", ctx, {
    "z_galaxy": 0.0,
    "lambda_rest": 6562.82,
    "fit_window": 15.0,
    "slit_offsets": {}
})
spectro run rotation_curve --input spectrum.fits \
  --param z_galaxy=0.0 \
  --param lambda_rest=6562.82 \
  --param fit_window=15.0 \
  --param slit_offsets={}
{
  "tool": "rotation_curve",
  "arguments": {
    "session_id": "<session_id>",
    "params": {
      "z_galaxy": 0.0,
      "lambda_rest": 6562.82,
      "fit_window": 15.0,
      "slit_offsets": {}
    }
  }
}

Every algorithm is an MCP tool of the same name; describe_algorithm returns this page's metadata as JSON.

References

  • Rubin et al. 1980, ApJ 238, 471 — long-slit optical rotation curves of Sa-Sc spirals.
  • Sofue & Rubin 2001, ARA&A 39, 137 — disc rotation curves review.
  • Kramida et al., NIST ASD — Hα air rest wavelength 6562.82 Å.