# Galaxy rotation curves: standalone scientific calculation This is independent own Python and own synthetic input, licensed MIT. It does not contain the browser Lab/Engine, a native library, original SPARC rows or archive, a PDF or a measured-derived figure. Default commands need no network, repository, webpage or source cache. Run from the extracted package directory, with an existing Python/NumPy/SciPy environment. Actual author environment: Python 3.9.6, NumPy 2.0.2, SciPy 1.13.1. Requirements are listed for a reader's own environment; no installation was performed in author validation. ## Default full calculation, zero HTTP Use fresh output paths. The first command actually constructs the thin exponential gas/stellar basis, NFW-generated synthetic speeds and declared noise, then saves 48 observations. The fitter reads only that saved record, never the reported injected halo/M/L truth. ```sh python science/generate_observation.py --output results/own-observation.json python science/analyze.py --input results/own-observation.json --output results/own-analysis python science/validate.py --input results/own-observation.json --analysis results/own-analysis --output results/own-validation.json python science/plot.py --input results/own-observation.json --analysis results/own-analysis --output results/own-figures ``` The saved own observation is also supplied at inputs/own-observation.json for comparison; it is not an optimum or a producer substitute. `analysis.json` contains full saved predictions, six actual optimizer attempts per fit, 10 fixed-M/L profiles per halo and 9 refitted common D/i scenarios per halo. Fitting bounds are 0.05–1.5 solar stellar M/L, halo density 10^3–10^10 solar mass/kpc^3, radius 0.05–200 kpc. Those are offline-analysis bounds, wider than the interactive demonstration. The validator actually runs independent positive-density mass quadrature, real-space circular-ring potential versus the thin-disk Bessel formula, finite asymptotes, distance/inclination finite-difference Jacobians, both exact likelihood-coordinate factors and shared covariance checks. Correct-method gates remain 1e-10 for mass, 2e-5 for disk, 1e-4 for finite asymptotes, 1e-7 for Jacobians and 1e-8 for likelihood coordinates. A rank-one covariance calculation is compared with a Cholesky calculation at 1e-10. Three central-mass-loss turning radii are independently solved at 1e-12 absolute error. Wrong subtraction, spherical-disk, coordinate and shared-noise examples remain labeled controls. It verifies saved predictions and repeats a fit with an unusable unused truth field. All quantities have explicit units in the input columns/metadata: kpc, km/s, nominal solar mass, solar mass/kpc^3 and surface brightness in solar luminosity/pc^2. The working likelihood stays in y=V0 sin(i0), sigma_y=errV0 sin(i0), prediction=vc sin(i). Its full Gaussian normalizer is retained. Native gas contributes Vgas*abs(Vgas), not an unconditional square; stellar M/L scales only stellar force. Imported native finite-thickness forces remain distinct from the ideal thin-disk benchmark. No native force interpolation is supplied. ## Optional fixed real object, fetched only on your own computer Original SPARC redistribution rights were not established by the inspected source index/headers. This package contains a named-source procedure instead of original files. Cite Lelli, McGaugh & Schombert 2016 (AJ 152, 157), the SPARC source and original curve sources (Da06/Fr02 for the selected object). It is a processed rotation-curve/component table, not a raw velocity field. This opt-in command downloads exactly Table 1 (28,259 B) and the small Rotmod archive (110,737 B), validates fixed SHA, extracts only NGC2403_rotmod.dat (3,384 B), verifies CRC/SHA and leaves 174 other members unused. Any changed source stops; no retry or mirror. ```sh python science/fetch_named_source.py --online --http-budget-bytes 138996 --output local-sparc ``` If you already hold the exact verified raw bodies, the explicitly offline alternative is: ```sh python science/fetch_named_source.py --from-cache /path/to/verified-source --output local-sparc ``` The cache must contain sparc-table1-metadata.body and sparc-rotmod-named-member-archive.body. A cached replay is not fresh acquisition. The author used exactly one new real online pair in this editorial stage, and separately replayed the built public package offline. Server availability is not guaranteed. ```sh python science/save_native.py --source local-sparc --output results/native-observation.json python science/analyze.py --input results/native-observation.json --output results/native-analysis python science/validate.py --input results/native-observation.json --analysis results/native-analysis --output results/native-validation.json python science/plot.py --allow-local-observations --input results/native-observation.json --analysis results/native-analysis --output results/local-measured-figures ``` The 73-point no-bulge/Q1 object has distance 3.16+/-0.16 Mpc and inclination 63+/-3 degrees. The saved native observation must retain its exact identity. Its speed errors exclude inclination systematics and supply no full cross-radius covariance. The 9 D/i scenarios are sensitivity calculations, not posterior samples. Native plots and rows remain local. Never silently alter the errors, delete difficult points or substitute a different galaxy to improve the fit. ## What the numerical results mean Six-start bounded optimization supplies a finite conditional working-likelihood solution, not proof of a global optimum. Actual synthetic core starts reach different local minima. Fixed-D/i real NGC2403 reduced chi-square remains approximately 9.138 (NFW) and 10.696 (pseudo-isothermal), both poor. A smaller residual score alone is not calibrated coverage, Bayes evidence, a theory winner or particle identification. Halo enclosed mass is spherical halo only, not total disk+halo mass or a measured virial mass. The own impulsive point-mass example illustrates a changing potential; it is not a hydrodynamic feedback/DC14 calculation. No 147-object MCMC, MOND field solver, external-field theory or weak-lensing deprojection/covariance is implemented. Read the primary-paper guide for those separate conditions. ## Integrity and resources SHA256SUMS.json identifies every payload member; the public page lists the ZIP hash/size. CRC and payload identities are checked in the cold-package audit. Each numerical producer has a 120-second cap in the author runner (the analysis/validation also have an internal alarm); stages run serially. The whole author's new editorial files/caches/figures/logs remain under 20 MB. Defaults and original positive gates are not changed after failures.