def __init__(self, params): self.params = params mu1,sh1,sc1,mu2,sh2,sc2 = params left_stach=gam_dist(sh1,scale=sc1); lbounds=left_stach.interval(0.99) right_stach=gam_dist(sh2,scale=sc2); rbounds=right_stach.interval(0.99) self.f= lambda x: [lambda x: left_stach.sf(abs(x-mu1)), lambda x: 1, lambda x: right_stach.sf(abs(x-mu2))][(lambda x: (2 if x>mu2 else 1) if x>mu1 else 0)(x)](x) self.adjust=False
def make_plotter(self, params,ax1,label,cur_color,support): mu1,sh1,sc1,mu2,sh2,sc2 = params left_stach=gam_dist(sh1,scale=sc1); lbounds=left_stach.interval(0.99) right_stach=gam_dist(sh2,scale=sc2); rbounds=right_stach.interval(0.99) lx=np.linspace(mu1,-180); rx=np.linspace(mu2,360) s=3; #cur_color='black' ax1.plot(rx, [1-right_stach.cdf(abs(y-mu2)) for y in rx],linewidth=s,c=cur_color); ax1.plot([1.01*mu1,0.99*mu2], [1,1], linewidth=s,c=cur_color) return ax1.plot(lx,[1-left_stach.cdf(abs(y-mu1)) for y in lx],c=cur_color, label=r"$\phi^{Hue}_{%s}$" % label,linewidth=s);
def reload(self): mu1,sh1,sc1,mu2,sh2,sc2 = self.params left_gamma=gam_dist(sh1,scale=sc1); lbounds=left_gamma.interval(0.99) right_gamma=gam_dist(sh2,scale=sc2); rbounds=right_gamma.interval(0.99) self.region = lambda x: (2 if x>mu2 else 1) if x>=mu1 else 0 self.f= [lambda x: left_gamma.sf(abs(x-mu1)), lambda x: 1, lambda x: right_gamma.sf(abs(x-mu2))] self.auc_val = None
def plot_lux_model(self, params,ax1,label,support,dim): cur_color='black' mu1,sh1,sc1,mu2,sh2,sc2 = params left_stach=gam_dist(sh1,scale=sc1); lbounds=left_stach.interval(0.99) right_stach=gam_dist(sh2,scale=sc2); rbounds=right_stach.interval(0.99) lx=np.linspace(mu1,-180); rx=np.linspace(mu2,360) s=3; ax1.plot(rx, [right_stach.sf(abs(y-mu2)) for y in rx],linewidth=s,c=cur_color); ax1.plot([1.01*mu1,0.99*mu2], [1.,1.], linewidth=s,c=cur_color) return ax1.plot(lx,[left_stach.sf(abs(y-mu1)) for y in lx],c=cur_color, linewidth=s);
def __init__(self, dim_node): def get_node(name): for child in dim_node: if child.tag==name: return child paramdict = {child.tag:child for child in dim_node} paramnames =["mulower","shapelower","scalelower","muupper","shapeupper","scaleupper"] self.params = [float(paramdict[paramname].get("value")) for paramname in paramnames] self.stdevs = [float(paramdict[paramname].get("stdev")) for paramname in paramnames] mu1,sh1,sc1,mu2,sh2,sc2 = self.params left_gamma=gam_dist(sh1,scale=sc1); lbounds=left_gamma.interval(0.99) right_gamma=gam_dist(sh2,scale=sc2); rbounds=right_gamma.interval(0.99) self.region = lambda x: (2 if x>mu2 else 1) if x>=mu1 else 0 self.f= [lambda x: left_gamma.sf(abs(x-mu1)), lambda x: 1, lambda x: right_gamma.sf(abs(x-mu2))] self.adjust=False
def plot_lux_singledim(params,name): adj1 = lambda x,a,z: [y+a if y<z else y for y in x] mu1,sh1,sc1,mu2,sh2,sc2 = params left_stach=gam_dist(sh1,scale=sc1); lbounds=left_stach.interval(0.99) right_stach=gam_dist(sh2,scale=sc2); rbounds=right_stach.interval(0.99) lx=np.linspace(mu1,-180); rx=np.linspace(mu2,360); s=9 fig = plt.figure(); ax1=plt.subplot() phi_color = 'black' ax1.plot(rx, [1-right_stach.cdf(abs(y-mu2)) for y in rx],c=phi_color,linewidth=s); ax1.plot([1.005*mu1,1.005*mu2], [1,1], linewidth=s, c=phi_color) ax1.plot(lx,[1-left_stach.cdf(abs(y-mu1)) for y in lx], label=r"$\phi^{Hue}_{%s}$" % name,c=phi_color,linewidth=s); #LABELING AND SUCH ax1.set_ylabel("Probability",size=40) plt.yticks(size=22) plt.ylim(0,1.05) plt.legend(loc=1,prop={'size':39},frameon=False) return ax1