DD CrB O-C Modeling

This notebook demonstrates O-C modeling for DD CrB.

%load_ext autoreload
%autoreload 2
from ocpy.data import Data

column_mapping = {
    "BJD Min": "minimum_time",
    "Err": "minimum_time_error",
    "Type": "minimum_type",
    "obs type": "labels"
}

data = Data.from_file("DD_CrB_Minima.xlsx", columns=column_mapping)
data = data.fill_errors(0.0001).calculate_weights()

t0 = 2455611.92657
period = 0.161770446

oc = data.calculate_oc(
    reference_minimum=t0,
    reference_period=period,
    model_type="lmfit"
)
print("Data:", data)
print("OC:", oc)
Data:      minimum_time  minimum_time_error       weights minimum_type      labels
0    2.454532e+06            0.000015  4.444444e+09            p  Literature
1    2.454533e+06            0.000015  4.444444e+09            p  Literature
2    2.454536e+06            0.000015  4.444444e+09            p  Literature
3    2.454537e+06            0.000015  4.444444e+09            p  Literature
4    2.454555e+06            0.000015  4.444444e+09            p  Literature
..            ...                 ...           ...          ...         ...
474  2.460740e+06            0.000029  1.167229e+09            p    Ždánice 
475  2.460460e+06            0.000028  1.275510e+09            p    Ždánice 
476  2.460069e+06            0.000014  5.102041e+09            p    Ždánice 
477  2.460057e+06            0.000003  1.111111e+11            p    Ždánice 
478  2.460461e+06            0.000003  1.111111e+11            p    Ždánice 

[479 rows x 5 columns]
OC:      minimum_time  minimum_time_error       weights minimum_type      labels  \
0    2.454532e+06            0.000015  4.444444e+09            p  Literature   
1    2.454533e+06            0.000015  4.444444e+09            p  Literature   
2    2.454536e+06            0.000015  4.444444e+09            p  Literature   
3    2.454537e+06            0.000015  4.444444e+09            p  Literature   
4    2.454555e+06            0.000015  4.444444e+09            p  Literature   
..            ...                 ...           ...          ...         ...   
474  2.460740e+06            0.000029  1.167229e+09            p    Ždánice    
475  2.460460e+06            0.000028  1.275510e+09            p    Ždánice    
476  2.460069e+06            0.000014  5.102041e+09            p    Ždánice    
477  2.460057e+06            0.000003  1.111111e+11            p    Ždánice    
478  2.460461e+06            0.000003  1.111111e+11            p    Ždánice    

       cycle        oc  
0    -6676.0 -0.000018  
1    -6670.0 -0.000020  
2    -6651.0 -0.000049  
3    -6645.0 -0.000061  
4    -6534.0 -0.000040  
..       ...       ...  
474  31697.0  0.000028  
475  29971.0 -0.000062  
476  27554.0 -0.000094  
477  27475.0 -0.000108  
478  29972.0 -0.000060  

[479 rows x 7 columns]
from ocpy.oc import Keplerian, Linear, Quadratic, Parameter

kep = Keplerian(
    amp=Parameter(value=6e-05, std=4e-5, min=0.0, max=1e-4, fixed=False),
    e=Parameter(value=.2, std=.1, min=0.0, max=0.95, fixed=False),
    omega=Parameter(value=8e+01, std=180, min=0.0, max=360.0, fixed=False),
    P=Parameter(value=3e+04, std=10000, min=10000, fixed=False),
    T0=Parameter(value=3e+04, std=30000, fixed=False)
)
lin = Linear(
    a=Parameter(value=0, std=1e-9, min=-1e-9, fixed=False),
    b=Parameter(value=0, std=1e-4, min=-1e-4, fixed=False)
)
quad = Quadratic(
    q=Parameter(value=0, std=1e-9, min=-1e-9, fixed=False)
)
models = [kep, lin, quad]
oc.plot(models)
<Axes: ylabel='O−C'>
../../_images/7d85514b27b2c3f7ba10e577427a60d6520954d78e04722f41461c8003ca01e7.png
res = oc.fit(models, method="nelder")
oc.plot(res)
<Axes: ylabel='O−C'>
../../_images/05ea348e4cd8fabc153355621a62d72f2b5091a5ea7e6ba95167845256cc48d2.png