def get_sd_ratios(what,orgn,dstn,fltnum,dfrom,dto,daysprior,cls): curr_dt = datetime.now() curr_date = date(curr_dt.year, curr_dt.month, curr_dt.day) if what == 'pb': [vals,obs,diff,dptdts] = get_fcsterr_by_dptdt_dflc_lvl('uncons',orgn,dstn,fltnum,dfrom,curr_date,daysprior,cls) elif what == 'fb': print "fp parameter what isn't implemented" assert 0 elif what == 'ns': vals = get_noshows_by_flc_lvl(orgn,dstn,fltnum,dfrom,dto,cls) else: print 'Unknown parameter what in get_sd_ratios' assert 0 print vals try: vals_r = robjects.FloatVector(vals) res_r = r.find_var_prop(vals_r) res = robjects.default_ri2py(res_r) except: res = [0,0] return res
def get_fcsterr_mse(type, orgn, dstn, fltnum, dfrom, dto, daysprior, cls): [fcst, obs, diff, dptdt_l] = get_fcsterr_by_dptdt_dflc_lvl(type, orgn, dstn, fltnum, dfrom, dto, daysprior, cls) r_diff = robjects.FloatVector(diff) r_mse = r.get_mse(r_diff) mse = robjects.default_ri2py(r_mse)[0] return mse
def get_ljung_box_pval(type, orgn, dstn, fltnum, dfrom, dto, daysprior, cls): [fcst, obs, diff, dptdt_l] = get_fcsterr_by_dptdt_dflc_lvl(type, orgn, dstn, fltnum, dfrom, dto, daysprior, cls) if len(diff) != 0: r_diff = robjects.FloatVector(diff) r_pval = r.get_ljung_box_pval(r_diff) pval = robjects.default_ri2py(r_pval)[0] else: pval = 0 return pval
def cd_uncons_fval_by_dptdt(request,val_type,orgn,dstn,fltnum,cls,daysprior,dfrom,dto): if dfrom != '' and dto != '': dfrom_l = dfrom.split('-') dto_l = dto.split('-') dfrom = date(int(dfrom_l[0]),int(dfrom_l[1]),int(dfrom_l[2])) dto = date(int(dto_l[0]),int(dto_l[1]),int(dto_l[2])) gr = graph() gr.title('FORECASTED UNCONSTRAINED VALUES', '{font-size: 18px; color: #777777; font-family: Georgia}') if len(cls) == 0 or dfrom == '' or dto == '' or daysprior == '': gr.set_data([]) gr.set_x_labels([]) else: dptdt = [] for e in cls: [fcst,obs,diff,dptdt] = get_fcsterr_by_dptdt_dflc_lvl('uncons',orgn,dstn,fltnum,dfrom,dto,int(daysprior),e) gr.set_data(fcst) gr.line(2,'0x'+colors[e],e,14) dptdt_l = [] dptdt_s = [e.strftime('%Y-%m-%d')+' ' for e in dptdt] i = 0 dptdt_len = len(dptdt_s) rt = dptdt_len/30 for e in dptdt_s: if i % rt == 0 and i != 0: dptdt_l.append(e) else: dptdt_l.append('') i = i + 1 gr.set_x_labels(dptdt_l) # show bar for daysprior bar_data = [0] * len(dptdt_l) bar_data[len(dptdt_l) - int(daysprior)] = 100 gr.set_data(bar_data) gr.bar(100,bar_data,'0xFF0000',50) gr.set_y_min(0) gr.set_y_max(100) gr.set_bg_colour('#FFFFFF') gr.set_x_label_style(12,'#852B00',2) gr.set_y_label_style(12,'#852B00') return HttpResponse(gr.render())
def get_fcsterr_trend_pol2(type, orgn, dstn, fltnum, dfrom, dto, daysprior, cls): [fcst, obs, diff, dptdt_l] = get_fcsterr_by_dptdt_dflc_lvl(type, orgn, dstn, fltnum, dfrom, dto, daysprior, cls) r_diff = robjects.FloatVector(diff) res = r.get_trend_pol2(r_diff) return res
def cd_uncons_err_by_dptdt(request,err_type,orgn,dstn,fltnum,cls,daysprior,dfrom,dto): if dfrom != '' and dto != '': dfrom_l = dfrom.split('-') dto_l = dto.split('-') dfrom = date(int(dfrom_l[0]),int(dfrom_l[1]),int(dfrom_l[2])) dto = date(int(dto_l[0]),int(dto_l[1]),int(dto_l[2])) gr = graph() gr.title('UNCONSTRAINED FORECAST ERROR','{font-size: 18px; color: #777777; font-family: Georgia}') # FIXME: Re-write this mess below!!!! dptdt_l = [] if len(cls) == 0 or dfrom == '' or dto == '' or daysprior == '': gr.set_data([]) gr.set_x_labels([]) else: dptdt = [] for e in cls: [fcst,obs,diff,dptdt] = get_fcsterr_by_dptdt_dflc_lvl('uncons',orgn,dstn,fltnum,dfrom,dto,int(daysprior),e) gr.set_data(diff) gr.line(2,'0x'+colors[e],e,14) dptdt_s = [e.strftime('%Y-%m-%d')+' ' for e in dptdt] i = 0 dptdt_len = len(dptdt_s) # we need 30 observations rt = dptdt_len/30 for e in dptdt_s: if i % rt == 0 and i != 0: dptdt_l.append(e) else: dptdt_l.append('') i = i + 1 gr.set_x_labels(dptdt_l) # show bar for daysprior bar_data = [0]*len(dptdt_l) bar_data[len(dptdt_l) - int(daysprior)] = -50 gr.set_data(bar_data) gr.bar(100,bar_data,'0xFF0000',50) bar_data[len(dptdt_l) - int(daysprior)] = 50 gr.set_data(bar_data) gr.bar(100,bar_data,'0xFF0000',50) # show horizontal zero line zero_line = [0] * len(dptdt_l) gr.set_data(zero_line) gr.line(1,'0x000000','',14) if err_type == 'ae': gr.set_y_min(-50) gr.set_y_max(50) elif err_type == 're': gr.set_y_min(-1) gr.set_y_max(1) else: pass gr.set_bg_colour('#FFFFFF') gr.set_x_label_style(12,'#852B00',2) gr.set_y_label_style(12,'#852B00') return HttpResponse(gr.render())