def createSample(noize = 0.0): A = math.cos(random.random()*math.pi - math.pi/2) #cos a B = random.random()*2 -1 O = random.choice([False,False,False,False,False,True]) C1 = random.choice([False,True]) C2 = random.choice([False,True]) G = random.choice([False,False,True]) Li = ((random.random()*2-1)**1)/2 +0.5 L = [Li -0.15 + random.random()*0.3 for i in range(4)] L.sort() L = [None]+ L for i in range(1,5): if L[i] <0: L[i] = 0. elif L[i] >1: L[i] =1. Lm = sum(L[1:5])/4 C = False R = True if O: R=False C = True elif A<0.15: R = False if A<0.15: C =True elif max(L[1:5]) - min(L[1:5]) > 0.20: R = False elif Lm < 0.19: R = False elif C1: if Lm < 0.35: R = False elif C2 and (Lm <0.4): R = False elif G == True: C = True if Lm > 0.65: R = False elif (not C1) and (not C2) and Lm >0.6: R = False elif max(L[1:5]) - min(L[1:5]) > 0.15: R = False if Lm<0.15: C = False elif max(L[1:5]) - min(L[1:5]) < 0.1: C = False if random.random() < noize: R = random.choice([True,False]) C = random.choice([True,False]) return samples.sample(['A','B','O','C1','C2','G', 'L1','L2','L3','L4','R','C'], [A,B,O,C1,C2,G, L[1],L[2],L[3],L[4],R,C])
def createSample_prejudiced(): A = 1 B = random.random()*2 -1 O = False C1 = False C2 = random.choice([False,True]) G = False Li = ((random.random()*2-1)**3)/2 +0.5 L = [Li -0.1 + random.random()*0.2 for i in range(4)] L.sort() L = [None]+ L for i in range(1,5): if L[i] <0: L[i] = 0. elif L[i] >1: L[i] =1. Lm = sum(L[1:5])/4 C = True R = True if O: R=False elif A<0.25: R = False elif max(L[1:5]) - min(L[1:5]) > 0.3: R = False elif Lm < 0.25: R = False elif C1: if Lm < 0.35: R = False elif C2 and (Lm <0.4): R = False elif G == True: if Lm > 0.65: R = False elif (not C1) and (not C2) and Lm >0.6: R = False R = random.choice([True,False]) C = random.choice([True,False]) return samples.sample(['A','B','O','C1','C2','G', 'L1','L2','L3','L4','R','C'], [A,B,O,C1,C2,G,L[1],L[2],L[3],L[4],R,C])
def sampleFromBitmap( bitmap): r = samples.sample([],[]) imin=rmin = gmin = bmin = 1 imax =rmax = gmax = bmax = 0 isum = rsum = gsum = bsum = 0 for i in range(width): for j in range(height): pixel = bitmap.GetPixel(i,j) intense = colorIntensity(pixel) #setattr(r, 'intensity_'+str(i)+'_'+str(j), intense) #setattr(r, 'colorR_'+str(i)+'_'+str(j), pixel.R) #setattr(r, 'colorG_'+str(i)+'_'+str(j), pixel.G) #setattr(r, 'colorB_'+str(i)+'_'+str(j), pixel.B) if intense< imin: imin = intense if intense> imax: imax = intense isum+= intense if pixel.R< rmin: rmin = pixel.R if pixel.R> imax: rmax = pixel.R rsum+= pixel.R if pixel.G< rmin: rmin = pixel.G if pixel.G> imax: rmax = pixel.G gsum+= pixel.G if pixel.B< rmin: rmin = pixel.B if pixel.B> imax: rmax = pixel.B bsum+= pixel.B setattr(r,'MinIntensity',imin) setattr(r,'MaxIntensity',imax) setattr(r,'AvgIntensity',isum/width/height) setattr(r,'MinBlue',bmin) setattr(r,'MaxBlue',bmax) setattr(r,'Blue',bsum/width/height) setattr(r,'MinGreen',gmin) setattr(r,'MaxGreen',gmax) setattr(r,'Green',gsum/width/height) setattr(r,'MinRed',rmin) setattr(r,'MaxRed',rmax) setattr(r,'Red',rsum/width/height) return r
def sampleFromBitmap( bitmap): r = samples.sample([],[]) imin = 1 imax = 0 isum = 0 for i in range(width): for j in range(height): pixel = bitmap.GetPixel(i,j) intense = colorIntensity(pixel) #setattr(r, 'intensity_'+str(i)+'_'+str(j), intense) #setattr(r, 'colorR_'+str(i)+'_'+str(j), pixel.R) #setattr(r, 'colorG_'+str(i)+'_'+str(j), pixel.G) #setattr(r, 'colorB_'+str(i)+'_'+str(j), pixel.B) if intense< imin: imin = intense if intense> imax: imax = intense isum+= intense setattr(r,'MinIntensity',imin) setattr(r,'MaxIntensity',imax) setattr(r,'AvgIntensity',isum/width/height) return r
def copySample(sample, attrs): vals = [] for attr in attrs: vals.append(getattr(sample,attr)) return samples.sample(attrs,vals)