Authors: Justin Schneider, David C. Flynn, Jim Cannaliato Last Updated: February 2026 Phase: Phase I, II & III complete — Infrastructure, Calibration, Batch Analysis, Robustness, and Full Catalog Analysis (171 galaxies)
The empirical "Omega" (
Hypothesis: Fitting
Revised Hypothesis (Schneider 2026): The inclusion of a rational taper to the baryonic potential will not only eliminate the unphysical linear divergence of the Flynn (2025) model but will yield a saturation velocity (
- Paper: "Dynamical signatures of a $\Lambda$CDM-halo and the distribution of the baryons in M33" (A&A 572, A23)
-
Data: Table 1 — 58 radial bins from
$R = 0.24$ to$22.72$ kpc -
Columns:
$V_r(R)$ ,$\sigma_V(R)$ ,$\Sigma_{HI}(R)$ ,$\Sigma_*(R)$ -
Physical Parameters:
$D = 0.84$ Mpc,$i = 52°$ -
Local file:
data/extracted/corbelli2014_table1.csv
M33 is not in the SPARC catalog. Since Corbelli provides surface densities rather than velocity components, we convert
- Paper: "SPARC: Mass Models for 175 Disk Galaxies with Spitzer Photometry and Accurate Rotation Curves" (AJ, 152, 157)
- Source: http://astroweb.cwru.edu/SPARC/
-
Format: Per-galaxy
.datfiles with columns:Rad,Vobs,errV,Vgas,Vdisk,Vbul,SBdisk,SBbul -
Note: Velocity components are provided at
$\Upsilon = 1$ . Mass-to-light ratios are applied during analysis.
For SPARC galaxies, velocity components are provided directly. We compute the total baryonic velocity following Lelli et al. (2016) Eq. 2:
The
Implementation: src/physics.py :: compute_v_bary()
For M33, surface densities (
- The disk surface density profile is interpolated onto a fine, evenly-spaced radial grid (5000+ points)
- The gravitational potential is computed by summing ring contributions using complete elliptic integrals (Binney & Tremaine 2008, Eq. 2.188)
- Circular velocity:
$V^2_{circ}(R) = R \cdot d\Phi/dR$ , obtained by numerical differentiation - A softening length of
$0.1 \times$ grid spacing avoids the$K(k^2)$ divergence at$R = R'$
For HI gas, a helium correction factor of 1.33 is applied:
Implementation: src/physics.py :: circular_velocity_thin_disk()
| Parameter | Symbol | Default | Allowed Range | Notes |
|---|---|---|---|---|
| Disk M/L | 0.5 | 0.3 – 0.8 | SPARC default (3.6 $\mu$m band) | |
| Bulge M/L | 0.7 | 0.3 – 0.8 | SPARC default |
All Phases (I–III):
Two competing functional forms are tested (Notebook 02):
Model A — Linear (Flynn & Cannaliato 2025):
This treats
Model B — Quadrature (Standard force addition):
This treats
Both models have a single free parameter (
Implementation: src/physics.py :: fit_omega() (linear), fit_omega_quadrature() (quadrature)
Objective: Minimize weighted chi-squared:
Implementation details:
-
Optimizer:
scipy.optimize.curve_fitwithabsolute_sigma=True -
Free parameter:
$\omega$ only (single-parameter fit) -
Initial guess:
$\omega_0 = 0$ -
Bounds:
$[-50, 50]$ km/s/kpc - Error handling: Zero or negative errors are replaced with the minimum nonzero error (or 1.0 km/s if all are zero)
For each fit, we compute and store:
| Metric | Description |
|---|---|
| Best-fit value and 1-$\sigma$ uncertainty from covariance matrix | |
| Reduced chi-squared ( |
|
| RMSE | Root mean square of residuals (km/s) |
| Converged | Whether curve_fit converged successfully |
| Flag: |
True if observed velocity falls below baryonic at any radius |
Implementation: src/physics.py :: fit_omega(), fit_omega_quadrature() → OmegaFitResult dataclass
Both models have
where
|
We also compute RMSE restricted to the outer disk (
Implementation: src/physics.py :: compute_bic()
Results: results/tables/M33_model_comparison.csv
The pure linear model (
Model C — Rational Taper:
At small
Model D — Tanh Taper:
Two free parameters:
Fitting details:
-
Optimizer:
scipy.optimize.curve_fitwithabsolute_sigma=True -
Initial guesses:
$\omega_0 = 5$ ,$R_{t,0} = 5$ (rational);$V_{max,0} = 80$ ,$R_{t,0} = 5$ (tanh) -
Bounds:
$\omega \in [0, 50]$ ,$R_t \in [0.1, 50]$ kpc (rational; Phase I/II default);$V_{max} \in [0, 500]$ ,$R_t \in [0.1, 50]$ (tanh). Note: Phase III (v4_phase3_catalog) uses$\omega \in [0, 200]$ and$R_t \in [0.1, 5 R_{max}]$ to accommodate the full SPARC catalog range. -
Degrees of freedom:
$\text{dof} = n - 2$ (two free parameters)
Diagnostics for Model C (Rational Taper):
| Parameter | Description |
|---|---|
| Initial linear slope — baryonic coupling strength (km/s/kpc) | |
| Transition/saturation radius (kpc) | |
| Derived saturation velocity: |
Implementation: src/physics.py :: fit_omega_tapered() (rational), fit_omega_tanh() (tanh)
Results: results/tables/M33_tapered_results.csv
To test whether the transition radius
where
If
Fitting details:
-
Free parameters:
$\omega$ and$k$ (two parameters per galaxy) -
Bounds:
$\omega \in [0, 200]$ ,$k \in [0.1, 20]$ -
Initial guesses:
$\omega_0 = 5$ ,$k_0 = 2$ -
Quality filter: Fits with
$\chi^2_{red} < 5$ are considered well-constrained
Implementation: src/physics.py :: fit_omega_tapered_kRd()
Results: results/tables/SPARC_tapered_batch_results.csv
While the Rational Taper (Model C) is defined by its geometric transition
Mathematical Derivation:
Taking the limit of the Rational Taper model as
Since
Baryonic Tully-Fisher Relation (BTFR) Test:
To validate the physical reality of these parameters, we test the scaling of
-
Power Law Fit:
$\log(V_{sat}) = \alpha \log(M_b) + \beta$ -
Result: The model recovers a power-law slope of
$0.221 \pm 0.026$ , aligning with the expected$V \propto M^{0.25}$ scaling of the BTFR. This demonstrates that the tapered parameters are not merely "curve-fitting" artifacts but are coupled to global galactic mass distributions.
The BIC preference for Model C over the linear model (74.3% of well-fit galaxies) combined with the BTFR recovery provides both statistical and physical evidence for the model's superiority.
-
Test: Round-trip check — compare
$V_{bary}$ recomputed during analysis against$V_{bary}$ computed during database ingestion, both from the same Corbelli (2014) surface density inputs - Success criterion: 0% deviation (deterministic pipeline)
-
Note: This verifies internal consistency (no bugs, rounding errors, or parameter mismatches between pipeline stages). It does not constitute an independent comparison against Corbelli's published velocity decomposition, which would require their original
$V_{gas}$ and$V_{stars}$ values (not available in their Table 1). An independent cross-check against Corbelli's Fig. 7 mass models remains a future validation step. -
Implementation:
src/physics.py :: compute_validation_metrics() -
Output:
results/tables/M33_validation.csv
-
Target:
scipy.curve_fitconverges for >90% of SPARC galaxies -
Phase I result: 118/118 galaxies achieved numerical convergence (100%); 89/118 (75%) met the
$\chi^2_\nu < 5$ quality threshold -
Phase II result: 19/19 boundary-solution galaxies re-converged with constrained
$R_t$ ; 7/7 gallery galaxies converged for both linear and tapered models -
Phase III result (Full Catalog): 171/171 quality-controlled galaxies converged for both Linear and Tapered models (100%). Four galaxies removed by QC filters (inclination, data count, or RMSE threshold). BIC breakdown: 127 (74.3%) Tapered-preferred, 27 (15.8%) Linear-preferred, 17 (9.9%) indistinguishable. Results in
results/tables/phase_iii_full_results.csv. -
Edge cases: Galaxies with
$V_{obs} < V_{bary}$ anywhere are flagged in the database
- Round-trip check: Ingest SPARC data → SQLite → Pandas DataFrame, verify floats match original text files
Raw Data (.dat/.csv) → Ingestion (src/ingest.py) → SQLite DB
↓
Query profiles → Compute V_bary → Fit omega → Store results
↓
Export tables (CSV) + Generate figures (PNG)
-
galaxies— Metadata (distance, inclination, luminosity, quality flag, data source) -
radial_profiles— Per-galaxy radial curves ($R$ ,$V_{obs}$ ,$V_{err}$ ,$V_{gas}$ ,$V_{disk}$ ,$V_{bulge}$ ) -
omega_fits— Fit results ($\omega$ ,$\chi^2$ , RMSE, method version, timestamp)
Each fit stores a method_version string so results from different fitting algorithms can be compared. Current versions:
| Version | Description | Phase |
|---|---|---|
v1_fixed_ML |
Linear model, fixed |
I |
v1_quadrature |
Quadrature model, fixed |
I |
v1_rational_taper |
Rational taper, free |
I |
v1_tanh_taper |
Tanh taper, free |
I |
v2_kRd_taper |
Rational taper with |
I |
v2_sensitivity_Yd* |
Sensitivity sweep varying |
II |
v2_linear_reanalysis |
M33 linear re-analysis for comparison | II |
v2_tapered_reanalysis |
M33 tapered re-analysis for comparison | II |
v3_gallery_linear |
Gallery linear fits (Notebook 06) | II |
v3_gallery_tapered |
Gallery robust tapered fits (multiple initial guesses) | II |
v4_phase3_catalog |
Full 171-galaxy SPARC catalog fit: Linear + Tapered, |
III |
For the M33 calibration, we test the sensitivity of
-
$\Upsilon_{disk}$ varied from 0.3 to 0.8 in steps of 0.05 -
$\Upsilon_{bulge}$ held fixed at 0.7 (M33 has negligible bulge) - Results stored in
results/tables/M33_sensitivity.csv
Scope: Phase II analysis on 3 representative galaxies from the Phase I sample. The Phase III full-catalog analysis (Notebook 07, 171 galaxies) confirmed this conclusion holds population-wide: the
Three representative galaxies tested at
-
DDO 161 (LSB, gas-dominated):
$\omega$ varies by 28% — model is robust -
NGC 0300 (intermediate Sc):
$\omega$ varies by 94% -
NGC 2841 (HSB, disk-dominated):
$\omega$ varies by 134% — model is sensitive
Implementation: Notebook 05, Work Package C
Results: results/tables/upsilon_sensitivity.csv
Conclusion: The model is most reliable for gas-dominated (LSB) systems where
The batch results from Notebook 04 reveal a bimodal
-
Interior solutions (
$k < 20$ , N=99): Taper well-constrained. Predominantly LSB. -
Boundary solutions (
$k = 20$ , N=19): Optimizer hits upper bound. Predominantly HSB.
Mann-Whitney U tests confirm statistically significant differences (
Density-dependent coupling test:
Implementation: Notebook 05, Work Packages A & B
Results: results/tables/SPARC_unified_coupling_results.csv
Head-to-head comparison of the Linear and Tapered models across 7 galaxies spanning the full
- Prediction accuracy: 4/5 testable cases (80%)
- Notable failure: NGC 2841 (HSB) was predicted to prefer Linear but BIC strongly favors Tapered, suggesting the tapered model may be more broadly applicable than the population split implies.
Implementation: Notebook 06 (with robust tapered fitter using multiple initial guesses)
Results: results/tables/model_gallery_validation.csv
The Surface Brightness Regime Analysis (Section 7 of the manuscript) uses a Mann-Whitney U-test to confirm that model preference ($\Delta$BIC) is statistically independent of
Method:
- Input:
results/tables/phase_iii_full_results.csv(171-galaxy full results table) - Pearson and Spearman correlation tests on
$\log_{10}(\omega_T)$ vs.$\log_{10}(\Sigma_0)$ , run on both (i) the full working sample and (ii) the Tapered-preferred subsample (where$\omega_T$ is independently resolved) - OLS linear regression in log-log space to characterize the trend
Results (Tapered
- Pearson
$r = -0.214$ ,$p < 0.01$ - Spearman
$r = -0.201$ ,$p < 0.01$ $R^2 \approx 4.5%$
Interpretation: A statistically significant but weak negative correlation exists between
Implementation: Notebook 10
Output figure: results/figures/nb10_sigma0_vs_omega.png
- Binney, J. & Tremaine, S. (2008). Galactic Dynamics (2nd ed.). Princeton University Press.
- Casertano, S. (1983). MNRAS, 203, 735. "Rotation curve of the edge-on spiral galaxy NGC 5907."
- Corbelli, E. & Salucci, P. (2000). MNRAS, 311, 441. "The Extended Rotation Curve and the Dark Matter Halo of M33."
- Corbelli, E., et al. (2014). A&A, 572, A23. "Dynamical signatures of a $\Lambda$CDM-halo and the distribution of the baryons in M33."
- Flynn, D. C. & Cannaliato, J. (2025). "A New Empirical Fit to Galaxy Rotation Curves."
- Kass, R. E. & Raftery, A. E. (1995). JASA, 90, 773. "Bayes Factors."
- Lelli, F., McGaugh, S. S., & Schombert, J. M. (2016). AJ, 152, 157. "SPARC: Mass Models for 175 Disk Galaxies with Spitzer Photometry and Accurate Rotation Curves."
- McGaugh, S. S., Lelli, F., & Schombert, J. M. (2016). PRL, 117, 201101. "Radial Acceleration Relation in Rotationally Supported Galaxies."
- Schwarz, G. (1978). Annals of Statistics, 6, 461. "Estimating the Dimension of a Model."