NY Vir Newtonian N-Body Modeling¶
Demonstrates Newtonian N-body modeling using Rebound.
%load_ext autoreload
%autoreload 2
import os
The autoreload extension is already loaded. To reload it, use:
%reload_ext autoreload
from ocpy.data import Data
data = Data.from_file("../ny_vir_minima.xlsx")
data = data.fill_errors(0.0001).calculate_weights()
t0 = 2453174.442769
period = 0.1010159690
oc = data.calculate_oc(
reference_minimum=t0,
reference_period=period,
model_type="pymc"
)
from ocpy.newtonian import NewtonianModel
from ocpy.oc import Parameter
nbody = NewtonianModel(
central_mass=Parameter(value=0.611, fixed=True),
T0_ref=t0,
P_ref=period,
bodies = [
{
"m": Parameter(value=0.0021, fixed=False, std=1, min=0),
"P": Parameter(value=3170.0, fixed=False, std=1000, min=0),
"e": Parameter(value=0.05, fixed=False, std=1, min=0, max=.8),
"omega": Parameter(value=269.0, fixed=False, std=200, min=0, max=360),
"T": Parameter(value=2443302.0, fixed=False, std=3170.0),
},
{
"m": Parameter(value=0.0038, fixed=False, std=1, min=0),
"P": Parameter(value=8260.0, fixed=False, std=1000, min=0),
"e": Parameter(value=0.02, fixed=False, std=1, min=0, max=.8),
"omega": Parameter(value=140.0, fixed=False, std=200, min=0, max=360),
"T": Parameter(value=2421163.0, fixed=False, std=8260.0),
}
],
name="nbody"
)
models = [nbody]
from pymc import DEMetropolisZ
res = oc.fit(models, tune=2000, draws=2000, chains=4)
oc.plot(res)
oc.corner(res)
res
[autoreload of cutils_ext failed: Traceback (most recent call last):
File "c:\Users\bar1s\miniconda3\envs\ocpy\Lib\site-packages\IPython\extensions\autoreload.py", line 325, in check
superreload(m, reload, self.old_objects)
File "c:\Users\bar1s\miniconda3\envs\ocpy\Lib\site-packages\IPython\extensions\autoreload.py", line 580, in superreload
module = reload(module)
^^^^^^^^^^^^^^
File "c:\Users\bar1s\miniconda3\envs\ocpy\Lib\importlib\__init__.py", line 168, in reload
raise ModuleNotFoundError(f"spec not found for the module {name!r}", name=name)
ModuleNotFoundError: spec not found for the module 'cutils_ext'
]
arviz.InferenceData
-
<xarray.Dataset> Size: 63MB Dimensions: (chain: 4, draw: 2000, y_model_dim_0: 976) Coordinates: * chain (chain) int64 32B 0 1 2 3 * draw (draw) int64 16kB 0 1 2 3 4 ... 1995 1996 1997 1998 1999 * y_model_dim_0 (y_model_dim_0) int64 8kB 0 1 2 3 4 ... 972 973 974 975 Data variables: nbody_b1_T (chain, draw) float64 64kB 2.443e+06 ... 2.443e+06 nbody_b2_T (chain, draw) float64 64kB 2.421e+06 ... 2.421e+06 nbody_b1_m (chain, draw) float64 64kB 0.002182 ... 0.002129 nbody_b1_P (chain, draw) float64 64kB 3.178e+03 ... 3.164e+03 nbody_b1_e (chain, draw) float64 64kB 0.04784 0.04784 ... 0.06181 nbody_b1_omega (chain, draw) float64 64kB 270.6 270.6 ... 264.1 264.1 nbody_b2_m (chain, draw) float64 64kB 0.00385 0.00385 ... 0.003835 nbody_b2_P (chain, draw) float64 64kB 8.27e+03 ... 8.248e+03 nbody_b2_e (chain, draw) float64 64kB 0.0188 0.0188 ... 0.01818 nbody_b2_omega (chain, draw) float64 64kB 140.7 140.7 ... 137.3 137.3 nbody_central_mass (chain, draw) float64 64kB 0.611 0.611 ... 0.611 0.611 y_model (chain, draw, y_model_dim_0) float64 62MB -0.0001653 ... Attributes: created_at: 2026-03-12T09:21:18.869280+00:00 arviz_version: 0.22.0 inference_library: pymc inference_library_version: 5.26.1 sampling_time: 711.984785079956 tuning_steps: 2000 -
<xarray.Dataset> Size: 216kB Dimensions: (chain: 4, draw: 2000) Coordinates: * chain (chain) int64 32B 0 1 2 3 * draw (draw) int64 16kB 0 1 2 3 4 5 6 ... 1994 1995 1996 1997 1998 1999 Data variables: scaling (chain, draw) float64 64kB 0.0006561 0.0006561 ... 0.0005314 accept (chain, draw) float64 64kB 0.001155 0.001107 ... 0.2729 0.2044 accepted (chain, draw) bool 8kB False False False ... True False False lambda (chain, draw) float64 64kB 0.5322 0.5322 0.5322 ... 0.5322 0.5322 Attributes: created_at: 2026-03-12T09:21:18.954668+00:00 arviz_version: 0.22.0 inference_library: pymc inference_library_version: 5.26.1 sampling_time: 711.984785079956 tuning_steps: 2000 -
<xarray.Dataset> Size: 16kB Dimensions: (y_obs_dim_0: 976) Coordinates: * y_obs_dim_0 (y_obs_dim_0) int64 8kB 0 1 2 3 4 5 ... 970 971 972 973 974 975 Data variables: y_obs (y_obs_dim_0) float64 8kB -0.0002226 -0.0001086 ... 6.869e-05 Attributes: created_at: 2026-03-12T09:21:18.967686+00:00 arviz_version: 0.22.0 inference_library: pymc inference_library_version: 5.26.1
cleaned_res = oc.clean(res)
oc.corner(cleaned_res)
oc.plot(cleaned_res, extension_factor=0.05, model_components=models)
res
arviz.InferenceData
-
<xarray.Dataset> Size: 63MB Dimensions: (chain: 4, draw: 2000, y_model_dim_0: 976) Coordinates: * chain (chain) int64 32B 0 1 2 3 * draw (draw) int64 16kB 0 1 2 3 4 ... 1995 1996 1997 1998 1999 * y_model_dim_0 (y_model_dim_0) int64 8kB 0 1 2 3 4 ... 972 973 974 975 Data variables: nbody_b1_T (chain, draw) float64 64kB 2.443e+06 ... 2.443e+06 nbody_b2_T (chain, draw) float64 64kB 2.421e+06 ... 2.421e+06 nbody_b1_m (chain, draw) float64 64kB 0.002182 ... 0.002129 nbody_b1_P (chain, draw) float64 64kB 3.178e+03 ... 3.164e+03 nbody_b1_e (chain, draw) float64 64kB 0.04784 0.04784 ... 0.06181 nbody_b1_omega (chain, draw) float64 64kB 270.6 270.6 ... 264.1 264.1 nbody_b2_m (chain, draw) float64 64kB 0.00385 0.00385 ... 0.003835 nbody_b2_P (chain, draw) float64 64kB 8.27e+03 ... 8.248e+03 nbody_b2_e (chain, draw) float64 64kB 0.0188 0.0188 ... 0.01818 nbody_b2_omega (chain, draw) float64 64kB 140.7 140.7 ... 137.3 137.3 nbody_central_mass (chain, draw) float64 64kB 0.611 0.611 ... 0.611 0.611 y_model (chain, draw, y_model_dim_0) float64 62MB -0.0001653 ... Attributes: created_at: 2026-03-12T09:21:18.869280+00:00 arviz_version: 0.22.0 inference_library: pymc inference_library_version: 5.26.1 sampling_time: 711.984785079956 tuning_steps: 2000 -
<xarray.Dataset> Size: 216kB Dimensions: (chain: 4, draw: 2000) Coordinates: * chain (chain) int64 32B 0 1 2 3 * draw (draw) int64 16kB 0 1 2 3 4 5 6 ... 1994 1995 1996 1997 1998 1999 Data variables: scaling (chain, draw) float64 64kB 0.0006561 0.0006561 ... 0.0005314 accept (chain, draw) float64 64kB 0.001155 0.001107 ... 0.2729 0.2044 accepted (chain, draw) bool 8kB False False False ... True False False lambda (chain, draw) float64 64kB 0.5322 0.5322 0.5322 ... 0.5322 0.5322 Attributes: created_at: 2026-03-12T09:21:18.954668+00:00 arviz_version: 0.22.0 inference_library: pymc inference_library_version: 5.26.1 sampling_time: 711.984785079956 tuning_steps: 2000 -
<xarray.Dataset> Size: 16kB Dimensions: (y_obs_dim_0: 976) Coordinates: * y_obs_dim_0 (y_obs_dim_0) int64 8kB 0 1 2 3 4 5 ... 970 971 972 973 974 975 Data variables: y_obs (y_obs_dim_0) float64 8kB -0.0002226 -0.0001086 ... 6.869e-05 Attributes: created_at: 2026-03-12T09:21:18.967686+00:00 arviz_version: 0.22.0 inference_library: pymc inference_library_version: 5.26.1