In [1]:
    
import datetime as dt
import numpy as np
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
from rpy2.robjects import numpy2ri, pandas2ri
pandas2ri.activate()
numpy2ri.activate()
    
In [2]:
    
z = np.load('p013r030_r50_n423_b8.npz')
dates, Y = z['dates'], z['Y']
    
In [43]:
    
bfast = importr('bfast')
strucchange = importr('strucchange')
zoo = importr('zoo')
reform = robjects.r['reformulate']
    
In [4]:
    
bfast.bfastmonitor
    
    Out[4]:
In [9]:
    
dates_ts = np.array([dt.datetime.fromordinal(_d).strftime('%Y-%m-%d') for _d in dates])
    
In [10]:
    
ts = bfast.bfastts(Y[4, 0, 0], dates_ts, type='irregular')
ts_np = np.array(ts)
    
In [20]:
    
pp = bfast.bfastpp(ts, order = 2, stl = 'none')
    
In [44]:
    
form = reform(np.array(['trend', 'harmon']), response='response')
tsBreaks = strucchange.breakpoints(data=pp, formula=form, breaks=2)
    
In [65]:
    
p_tsBreaks = dict(zip(tsBreaks.names, tsBreaks))
    
In [68]:
    
p_tsBreaks['breakpoints']
    
    Out[68]: