gauss = filters.makeGauss(x=np.linspace(-1.0,1.0,size), mean=0, sd=width)/np.sqrt(2*np.pi*width**2) smthEdge = np.convolve(edge, gauss,'same') smthEdge = (smthEdge[size:size*2]-smthEdge.min())/(smthEdge.max()-smthEdge.min())#just take the middle section smthEdge.shape=(1,size) return np.tile(smthEdge,(size,1))*2-1 #Setting for Trial Handler stimList = data.importConditions('MOAConflictConds.xlsx') trials = data.TrialHandler(trialList=stimList, nReps=repeats, extraInfo=info) trials.data.addDataType('LumEdge') trials.data.addDataType('Marker') #trials.data.addDataType('Condition') #Create stimuli if info['Flip']=='n': lum = colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5, size=512)*info['Edge Contrast Lum'] lmlms= colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5, size=512)*info['Edge Contrast LM'] slms= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(0.5+info['Gap']), size=512)*info['Edge Contrast S'] lm= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(0.5+info['Gap']), size=512)*info['Edge Contrast LM'] s= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(0.5+info['Gap']), size=512)*info['Edge Contrast S'] if info['Flip']=='y': lum = makeRevEdgeGauss(width=info['Blur'],center=0.5, size=512)*info['Edge Contrast Lum'] lmlms= makeRevEdgeGauss(width=info['Blur'],center=0.5, size=512)*info['Edge Contrast LM'] slms= makeRevEdgeGauss(width=info['Blur'],center=(0.5-info['Gap']), size=512)*info['Edge Contrast S'] lm= makeRevEdgeGauss(width=info['Blur'],center=(0.5-info['Gap']), size=512)*info['Edge Contrast LM'] s= makeRevEdgeGauss(width=info['Blur'],center=(0.5-info['Gap']), size=512)*info['Edge Contrast S'] tex= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s) texlms = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lmlms, S=slms) edgePos = 0.0
if DEBUG==False: monitor = 'heron' bitsMode = 'Fast' myMon=monitors.Monitor('heron') conversionMatrix = myMon.getDKL_RGB(RECOMPUTE=False) def makeFilteredNoise(res, radius, shape='gauss'): noise = np.random.random([res, res]) kernel = filters.makeMask(res, shape='gauss', radius=radius) filteredNoise = filters.conv2d(kernel, noise) filteredNoise = ((filteredNoise-filteredNoise.min())/(filteredNoise.max()-filteredNoise.min())*2-1) return filteredNoise #Create stimuli lum = colorFunctions.makeEdgeGauss(width=blur,center=0.5)*0.3 lm= colorFunctions.makeEdgeGauss(width=blur,center=(0.5+gap))*0.3 s=colorFunctions.makeEdgeGauss(width=0.2,center=0.5)*0.0 tex= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s) noiseContrast = 1.0 noise1 = makeFilteredNoise(512, radius=noiseSize)*noiseContrast lum += noise1 noise2 = makeFilteredNoise(res=512, radius=noiseSize)*noiseContrast lm += noise2 lumEdge= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm*0, S=s*0, conversionMatrix = conversionMatrix) rgEdge = colorFunctions.dklCartToRGB_2d(LUM=lum*0, LM=lm, S=s*0, conversionMatrix = conversionMatrix) combEdge = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s*0, conversionMatrix = conversionMatrix)
info["lumEdgePos"] = float(random.randrange(20, 80, 1)) / float(100) print "edge", info["lumEdgePos"] # For Loop to Run Through the Trials for thisDistance in stairs: trialClock.reset() print thisDistance # #Calculate the size of the gap in percentage terms # gapPix = (misc.deg2pix(info['Gap'], monitor = myMon)*0.0512) # gapDeg = info['Gap']/2 # Create stimuli lum = colorFunctions.makeEdgeGauss(width=info["Blur"], center=info["lumEdgePos"]) * 0.3 lm = s = colorFunctions.makeEdgeGauss(width=info["Blur"], center=(info["lumEdgePos"] + info["Gap"])) * 0.3 # s=colorFunctions.makeEdgeGauss(width=info['Blur'],center=(info['lumEdgePos']+info['Gap']))*0.3 tex = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s) # noise1 = makeFilteredNoise(512, radius=info['Noise Size'])*info['Noise Contrast'] # lum += noise1 # noise2 = makeFilteredNoise(res=512, radius=info['Noise Size'])*info['Noise Contrast'] # lm += noise2 # noise3 = makeFilteredNoise(res=512, radius=info['Noise Size'])*info['Noise Contrast'] # s += noise3 # lumEdge= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm*0, S=s*0, conversionMatrix = conversionMatrix) # rgEdge = colorFunctions.dklCartToRGB_2d(LUM=lum*0, LM=lm, S=s*0, conversionMatrix = conversionMatrix) sEdge = colorFunctions.dklCartToRGB_2d(LUM=lum * 0, LM=lm * 0, S=s, conversionMatrix=conversionMatrix) # combEdge = colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s*0, conversionMatrix = conversionMatrix)
nDown=info['nDown'], extraInfo=thisInfo, minVal=info['minVal'], maxVal=info['maxVal'] ) thisStair.extraInfo['condition']=thisCond stairs.append(thisStair) for trialN in range(info['nTrials']): shuffle(stairs) for thisStair in stairs: thisContrast=thisStair.next() #Create stimuli if thisStair.extraInfo['condition']=='LM': lum = colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5)*0 lm= colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5) s= colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5)*0 if thisStair.extraInfo['condition']=='S': lum = colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5)*0 lm= colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5)*0 s= colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5) if thisStair.extraInfo['condition']=='Lum': lum = colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5) lm= colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5)*0 s= colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5)*0 order = random.randint(1.0, 2.0) rgbEdge = misc.dklCart2rgb(lum, lm, s, conversionMatrix) #Draw the picture
myWin.flip() junk = event.waitKeys() #Jitter position of edges info['markerPos'] = float(random.randrange(-10, 10, 1))/10 print 'marker', info['markerPos'] #For Loop to Run Through the Trials for thisDistance in stairs: trialClock.reset() print thisDistance info['lumEdgePos'] = (thisDistance) #Create stimuli lum = colorFunctions.makeEdgeGauss(width=info['Blur'],center=info['lumEdgePos'])*info['Edge Contrast Lum'] lm= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(info['lumEdgePos']+info['Gap']))*info['Edge Contrast LM'] s= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(info['lumEdgePos']+info['Gap']))*info['Edge Contrast S'] tex= colorFunctions.dklCartToRGB_2d(LUM=lum, LM=lm, S=s) rand1 = random.randrange(0,99,1) noise1 = (noise[rand1])*info['Noise Contrast Lum'] lum += noise1 info['LumNoise'].append(rand1) rand2 = random.randrange(0,99,1) noise2 = noise[rand2]*info['Noise Contrast LM'] lm += noise2 info['LMNoise'].append(rand2) rand3 = random.randrange(0,99,1) noise3 = noise[rand3]*info['Noise Contrast S'] s += noise3
myWin = visual.Window(size=(1024, 768), monitor = 'testMonitor', units = 'deg', fullscr=False, allowGUI=True, bitsMode=None) myMon = monitors.Monitor('testMonitor') conversionMatrix = numpy.asarray([ \ #LUMIN %L-M %L+M-S (note that dkl has to be in cartesian coords first!) [1.0000, 1.0000, -0.1462],#R [1.0000, -0.3900, 0.2094],#G [1.0000, 0.0180, -1.0000]])#B info = {} info['Blur'] = 0.1 edgeSize = 10.0 edgeSF = 1/10.0 edgePos = 0.5 lum = colorFunctions.makeEdgeGauss(width=info['Blur'],center=0.5, size=512) lm= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(0.5), size=512)*0.0 s= colorFunctions.makeEdgeGauss(width=info['Blur'],center=(0.5), size=512) sphEdge = misc.cart2sph(z = lum, y = s, x = lm) print len(sphEdge.shape) #print sphEdge[:,:,0][0] temp = copy.copy(sphEdge[:,:,1])+1 temp = (temp/numpy.abs(temp))*-15.0 sphEdge[:,:,0] += temp #print sphEdge[:,:,0][0]