Example #1
0
def runLSCSM():
    import noiseEstimation
    res = contrib.dd.DB(None)
    (sizex,sizey,training_inputs,training_set,validation_inputs,validation_set,ff,db_node) = contrib.JanA.dataimport.sortOutLoading(res)
    raw_validation_set = db_node.data["raw_validation_set"]
    
    num_pres,num_neurons = numpy.shape(training_set)
    num_pres,kernel_size = numpy.shape(training_inputs)
    size = numpy.sqrt(kernel_size)
    
    
    if __main__.__dict__.get('Delay',0):
	delay = __main__.__dict__.get('Delay',0)
        training_set = training_set[delay:,:]
	validation_set = validation_set[delay:,:]
	training_inputs = training_inputs[0:-delay,:]
	validation_inputs = validation_inputs[0:-delay,:]
	
	for i in xrange(0,len(raw_validation_set)):
		raw_validation_set[i] = raw_validation_set[i][delay:,:]
      

    

    raw_validation_data_set=numpy.rollaxis(numpy.array(raw_validation_set),2)
    
    to_delete = []
    #to_delete = [2,3,4,5,6,9,10,11,12,13,14,18,22,26,28,29,30,31,32,34,35,36,37,41,44,50,51,54,55,57,59,60,63,65,67,68,70,71,73,74,76,79,81,82,84,86,87,88,90,91,94,95,97,98,99,100,102]
    
    #training_set = numpy.delete(training_set, to_delete, axis = 1)
    #validation_set = numpy.delete(validation_set, to_delete, axis = 1)
    #for i in xrange(0,10):
    #    raw_validation_set[i] = numpy.delete(raw_validation_set[i], to_delete, axis = 1)
    
    # creat history
    history_set = training_set[0:-1,:]
    history_validation_set = validation_set[0:-1,:]
    training_set = training_set[1:,:]
    validation_set = validation_set[1:,:]
    training_inputs= training_inputs[1:,:]
    validation_inputs= validation_inputs[1:,:]
    
    for i in xrange(0,len(raw_validation_set)):
	raw_validation_set[i] = raw_validation_set[i][1:,:]
    
    print numpy.shape(training_inputs[0])
    
    
    params={}
    params["LSCSM"]=True
    db_node = db_node.get_child(params)
    
    params={}
    params["Delay"] = __main__.__dict__.get('Delay',0)
    params["LaplacaBias"] = __main__.__dict__.get('LaplaceBias',0.0004)
    params["LGN_NUM"] = __main__.__dict__.get('LgnNum',6)
    params["num_neurons"] = __main__.__dict__.get('NumNeurons',103)
    params["sequential"] = __main__.__dict__.get('Sequential',False)
    params["ll"] =  __main__.__dict__.get('LL',True)
    params["V1OF"] = __main__.__dict__.get('V1OF','Exp')
    params["LGNOF"] = __main__.__dict__.get('LGNOF','Exp')
    params["BalancedLGN"] = __main__.__dict__.get('BalancedLGN',True)
    params["LGNTreshold"] =  __main__.__dict__.get('LGNTreshold',False)
    params["SecondLayer"] = __main__.__dict__.get('SecondLayer',False)
    params["HiddenLayerSize"] = __main__.__dict__.get('HiddenLayerSize',1.0)
    params["LogLossCoef"] = __main__.__dict__.get('LogLossCoef',1.0)
    params["NegativeLgn"] = __main__.__dict__.get('NegativeLgn',True)
    params["MaxW"] = __main__.__dict__.get('MaxW',5000)
    params["GenerationSize"] = __main__.__dict__.get('GenerationSize',100)
    params["PopulationSize"] = __main__.__dict__.get('PopulationSize',100)
    params["MutationRate"] = __main__.__dict__.get('MutationRate',0.05)
    params["CrossoverRate"] = __main__.__dict__.get('CrossoverRate',0.9)
    params["FromWhichNeuron"] = __main__.__dict__.get('FromWhichNeuron',0)
    
    db_node1 = db_node
    db_node = db_node.get_child(params)
    
    num_neurons=params["num_neurons"]

    training_set = training_set[:,params["FromWhichNeuron"]:params["FromWhichNeuron"]+num_neurons]
    validation_set = validation_set[:,params["FromWhichNeuron"]:params["FromWhichNeuron"]+num_neurons]
    for i in xrange(0,len(raw_validation_set)):
	raw_validation_set[i] = raw_validation_set[i][:,params["FromWhichNeuron"]:params["FromWhichNeuron"]+num_neurons]
    	
    
    raw_validation_data_set=numpy.rollaxis(numpy.array(raw_validation_set),2)
    
    if __main__.__dict__.get('Sequential',False):
    	[K,rpi,glm,rfs]=  fitLSCSMEvoSequential(numpy.mat(training_inputs),numpy.mat(training_set),params["LGN_NUM"],num_neurons)
    else:
        [K,rpi,glm,rfs]=  fitLSCSMEvo(numpy.mat(training_inputs),numpy.mat(training_set),params["LGN_NUM"],num_neurons)

    
    pylab.figure()
    m = numpy.max(numpy.abs(rfs))
    print numpy.shape(rfs)
    print num_neurons*__main__.__dict__.get('HiddenLayerSize',1.0)
    for i in xrange(0,num_neurons*__main__.__dict__.get('HiddenLayerSize',1.0)):
	pylab.subplot(11,11,i+1)    
    	pylab.imshow(numpy.reshape(rfs[i,0:kernel_size],(size,size)),vmin=-m,vmax=m,cmap=pylab.cm.RdBu,interpolation='nearest')
    pylab.savefig('GLM_rfs.png')	
    
    pylab.figure()
    m = numpy.max(numpy.abs(rpi))
    for i in xrange(0,num_neurons):
	pylab.subplot(11,11,i+1)
    	pylab.imshow(numpy.reshape(rpi[:,i],(size,size)),vmin=-m,vmax=m,cmap=pylab.cm.RdBu,interpolation='nearest')
    pylab.savefig('RPI_rfs.png')
    
    rpi_pred_act = training_inputs * rpi
    rpi_pred_val_act = validation_inputs * rpi
    
    if __main__.__dict__.get('Sequential',False):
	glm_pred_act = numpy.hstack([glm[i].response(training_inputs,K[i]) for i in xrange(0,num_neurons)])
	glm_pred_val_act = numpy.hstack([glm[i].response(validation_inputs,K[i]) for i in xrange(0,num_neurons)])
    else:
    	glm_pred_act = glm.response(training_inputs,K)
    	glm_pred_val_act = glm.response(validation_inputs,K)
    
    runLSCSMAnalysis(rpi_pred_act,rpi_pred_val_act,glm_pred_act,glm_pred_val_act,training_set,validation_set,num_neurons,raw_validation_data_set)
    
    to_delete=[]
    
    if len(raw_validation_set) != 1:
    
	signal_power,noise_power,normalized_noise_power,training_prediction_power,validation_prediction_power,signal_power_variance = signal_power_test(raw_validation_data_set, numpy.array(training_set), numpy.array(validation_set), glm_pred_act, glm_pred_val_act)
	
	to_delete = numpy.array(numpy.nonzero((numpy.array(normalized_noise_power) > 85) * 1.0))[0]
	print 'After deleting ' , len(to_delete) , 'most noisy neurons (<15% signal to noise ratio)\n\n\n'
		
	if len(to_delete) != num_neurons:
	
		training_set = numpy.delete(training_set, to_delete, axis = 1)
		validation_set = numpy.delete(validation_set, to_delete, axis = 1)
		glm_pred_act = numpy.delete(glm_pred_act, to_delete, axis = 1)
		glm_pred_val_act = numpy.delete(glm_pred_val_act, to_delete, axis = 1)
		rpi_pred_act = numpy.delete(rpi_pred_act, to_delete, axis = 1)
		rpi_pred_val_act = numpy.delete(rpi_pred_val_act, to_delete, axis = 1)
		
		for i in xrange(0,len(raw_validation_set)):
			raw_validation_set[i] = numpy.delete(raw_validation_set[i], to_delete, axis = 1)
		
		raw_validation_data_set=numpy.rollaxis(numpy.array(raw_validation_set),2)	
			
	
		
		runLSCSMAnalysis(rpi_pred_act,rpi_pred_val_act,glm_pred_act,glm_pred_val_act,training_set,validation_set,num_neurons-len(to_delete),raw_validation_data_set)
		
    db_node.add_data("Kernels",K,force=True)
    db_node.add_data("LSCSM",glm,force=True)
	
    contrib.dd.saveResults(res,normalize_path(__main__.__dict__.get('save_name','res.dat')))
Example #2
0
def analyseGLM(
    K,
    rpi,
    glm,
    validation_inputs,
    training_inputs,
    validation_set,
    training_set,
    raw_validation_set,
    history_set,
    history_validation_set,
    raw_history_validation_set,
    db_node,
    num_neurons_to_run,
):
    num_pres, kernel_size = numpy.shape(training_inputs)
    num_pres, num_neurons = numpy.shape(training_set)
    size = numpy.sqrt(kernel_size)
    # num_neurons=num_neurons_to_run

    print "Thresholds:", K[:, kernel_size]
    print "Alphas:", K[:, kernel_size + 1]

    pylab.figure()
    m = numpy.max(numpy.abs(K))
    for i in xrange(0, num_neurons_to_run):
        pylab.subplot(11, 11, i + 1)
        pylab.imshow(
            numpy.reshape(K[i, 0:kernel_size], (size, size)),
            vmin=-m,
            vmax=m,
            cmap=pylab.cm.RdBu,
            interpolation="nearest",
        )
    pylab.savefig(normalize_path("GLM_rfs.png"))

    pylab.figure()
    m = numpy.max(numpy.abs(rpi))
    for i in xrange(0, num_neurons_to_run):
        pylab.subplot(11, 11, i + 1)
        pylab.imshow(
            numpy.reshape(rpi[:, i], (size, size)), vmin=-m, vmax=m, cmap=pylab.cm.RdBu, interpolation="nearest"
        )
    pylab.savefig(normalize_path("RPI_rfs.png"))

    rpi_pred_act = training_inputs * rpi
    rpi_pred_val_act = validation_inputs * rpi

    glm_pred_val_act_st = []
    if not __main__.__dict__.get("Lateral", False):
        if history_set != None:
            glm_pred_act = glm.response(training_inputs, history_set, K)
            glm_pred_val_act = glm.response(validation_inputs, numpy.mean(raw_history_validation_set, axis=0), K)

            for j in xrange(0, len(raw_validation_set)):
                glm_pred_val_act_st.append(glm.response(validation_inputs, raw_history_validation_set[j], K))
        else:
            glm_pred_act = glm.response(training_inputs, None, K)
            glm_pred_val_act = glm.response(validation_inputs, None, K)

            for j in xrange(0, len(raw_validation_set)):
                glm_pred_val_act_st.append(glm.response(validation_inputs, None, K))

    else:
        if history_set != None:
            print numpy.shape(history_set)
            print numpy.shape(numpy.delete(training_set, [0], axis=1))

            print numpy.shape(
                glm.response(
                    training_inputs,
                    numpy.hstack((history_set, numpy.delete(training_set, [0], axis=1))),
                    numpy.array([K[0]]),
                )
            )
            print numpy.shape(
                glm.response(
                    training_inputs,
                    numpy.hstack((history_set, numpy.delete(training_set, [1], axis=1))),
                    numpy.array([K[1]]),
                )
            )

            glm_pred_act = numpy.hstack(
                [
                    glm.response(
                        training_inputs,
                        numpy.hstack((history_set, numpy.delete(training_set, [i], axis=1))),
                        numpy.array([K[i]]),
                    )
                    for i in xrange(0, num_neurons)
                ]
            )
            glm_pred_val_act = numpy.hstack(
                [
                    glm.response(
                        validation_inputs,
                        numpy.hstack((history_validation_set, numpy.delete(validation_set, [i], axis=1))),
                        numpy.array([K[i]]),
                    )
                    for i in xrange(0, num_neurons)
                ]
            )
            for j in xrange(0, len(raw_validation_set)):
                glm_pred_val_act_st.append(
                    numpy.hstack(
                        [
                            glm.response(
                                validation_inputs,
                                numpy.hstack(
                                    (raw_history_validation_set[j], numpy.delete(raw_validation_set[j], [i], axis=1))
                                ),
                                numpy.array([K[i]]),
                            )
                            for i in xrange(0, num_neurons)
                        ]
                    )
                )
        else:
            glm_pred_act = numpy.hstack(
                [
                    glm.response(training_inputs, numpy.delete(training_set, [i], axis=1), numpy.array([K[i]]))
                    for i in xrange(0, num_neurons)
                ]
            )
            glm_pred_val_act = numpy.hstack(
                [
                    glm.response(validation_inputs, numpy.delete(validation_set, [i], axis=1), numpy.array([K[i]]))
                    for i in xrange(0, num_neurons)
                ]
            )
            for j in xrange(0, len(raw_validation_set)):
                glm_pred_val_act_st.append(
                    numpy.hstack(
                        [
                            glm.response(
                                validation_inputs, numpy.delete(raw_validation_set[j], [i], axis=1), numpy.array([K[i]])
                            )
                            for i in xrange(0, num_neurons)
                        ]
                    )
                )

    ofs = run_nonlinearity_detection(numpy.mat(training_set), numpy.mat(rpi_pred_act))
    rpi_pred_act_t = apply_output_function(numpy.mat(rpi_pred_act), ofs)
    rpi_pred_val_act_t = apply_output_function(numpy.mat(rpi_pred_val_act), ofs)

    ofs = run_nonlinearity_detection(numpy.mat(training_set), numpy.mat(glm_pred_act))
    glm_pred_act_t = apply_output_function(numpy.mat(glm_pred_act), ofs)
    glm_pred_val_act_t = apply_output_function(numpy.mat(glm_pred_val_act), ofs)

    pylab.figure()
    pylab.title("RPI")
    for i in xrange(0, num_neurons_to_run):
        pylab.subplot(11, 11, i + 1)
        pylab.plot(rpi_pred_val_act[:, i], validation_set[:, i], "o")
    pylab.savefig(normalize_path("RPI_val_relationship.png"))

    pylab.figure()
    pylab.title("GLM")
    for i in xrange(0, num_neurons_to_run):
        pylab.subplot(11, 11, i + 1)
        pylab.plot(glm_pred_val_act[:, i], validation_set[:, i], "o")
    pylab.savefig(normalize_path("GLM_val_relationship.png"))

    pylab.figure()
    pylab.title("RPI")
    for i in xrange(0, num_neurons_to_run):
        pylab.subplot(11, 11, i + 1)
        pylab.plot(rpi_pred_val_act_t[:, i], validation_set[:, i], "o")
    pylab.savefig(normalize_path("RPI_t_val_relationship.png"))

    pylab.figure()
    pylab.title("GLM")
    for i in xrange(0, num_neurons_to_run):
        pylab.subplot(11, 11, i + 1)
        pylab.plot(glm_pred_val_act_t[:, i], validation_set[:, i], "o")
    pylab.savefig(normalize_path("GLM_t_val_relationship.png"))

    pylab.figure()
    pylab.plot(
        numpy.mean(numpy.power(validation_set - rpi_pred_val_act_t, 2)[:, :num_neurons_to_run], 0),
        numpy.mean(numpy.power(validation_set - glm_pred_val_act, 2)[:, :num_neurons_to_run], 0),
        "o",
    )
    pylab.hold(True)
    pylab.plot([0.0, 1.0], [0.0, 1.0])
    pylab.xlabel("RPI")
    pylab.ylabel("GLM")
    pylab.savefig(normalize_path("GLM_vs_RPI_MSE.png"))

    print "\n \n RPI \n"

    print "Without TF"
    performance_analysis(training_set, validation_set, rpi_pred_act, rpi_pred_val_act, raw_validation_set)
    print "With TF"
    (
        signal_power,
        noise_power,
        normalized_noise_power,
        training_prediction_power,
        rpi_validation_prediction_power,
        signal_power_variance,
    ) = performance_analysis(training_set, validation_set, rpi_pred_act_t, rpi_pred_val_act_t, raw_validation_set)

    print "\n \n GLM \n"

    print "Without TF"
    (
        signal_power,
        noise_power,
        normalized_noise_power,
        training_prediction_power,
        glm_validation_prediction_power,
        signal_power_variance,
    ) = performance_analysis(training_set, validation_set, glm_pred_act, glm_pred_val_act, raw_validation_set)
    print "With TF"
    performance_analysis(training_set, validation_set, glm_pred_act_t, glm_pred_val_act_t, raw_validation_set)

    print "\n\n\nSingle trial validation set"
    performance_analysis(
        training_set, validation_set, glm_pred_act, numpy.mean(glm_pred_val_act_st, axis=0), raw_validation_set
    )

    pylab.figure()
    pylab.plot(
        rpi_validation_prediction_power[:num_neurons_to_run], glm_validation_prediction_power[:num_neurons_to_run], "o"
    )
    pylab.hold(True)
    pylab.plot([0.0, 1.0], [0.0, 1.0])
    pylab.xlabel("RPI")
    pylab.ylabel("GLM")
    pylab.savefig(normalize_path("GLM_vs_RPI_prediction_power.png"))

    db_node.add_data("ReversCorrelationPredictedActivities", glm_pred_act, force=True)
    db_node.add_data("ReversCorrelationPredictedActivities+TF", glm_pred_act_t, force=True)
    db_node.add_data("ReversCorrelationPredictedValidationActivities", glm_pred_val_act, force=True)
    db_node.add_data("ReversCorrelationPredictedValidationActivities+TF", glm_pred_val_act_t, force=True)
Example #3
0
def analyseGLM(K,rpi,glm,validation_inputs,training_inputs,validation_set,training_set,raw_validation_set,history_set,history_validation_set,raw_history_validation_set,db_node,num_neurons_to_run):
    num_pres,kernel_size = numpy.shape(training_inputs)
    num_pres,num_neurons = numpy.shape(training_set)
    size = numpy.sqrt(kernel_size)
    #num_neurons=num_neurons_to_run
    
    print 'Thresholds:', K[:,kernel_size] 
    print 'Alphas:', K[:,kernel_size+1]
    
    pylab.figure()
    m = numpy.max(numpy.abs(K))
    for i in xrange(0,num_neurons_to_run):
	pylab.subplot(11,11,i+1)    
    	pylab.imshow(numpy.reshape(K[i,0:kernel_size],(size,size)),vmin=-m,vmax=m,cmap=pylab.cm.RdBu,interpolation='nearest')
    pylab.savefig(normalize_path('GLM_rfs.png'))	
	    
    pylab.figure()
    m = numpy.max(numpy.abs(rpi))
    for i in xrange(0,num_neurons_to_run):
	pylab.subplot(11,11,i+1)
    	pylab.imshow(numpy.reshape(rpi[:,i],(size,size)),vmin=-m,vmax=m,cmap=pylab.cm.RdBu,interpolation='nearest')
    pylab.savefig(normalize_path('RPI_rfs.png'))
    
    rpi_pred_act = training_inputs * rpi
    rpi_pred_val_act = validation_inputs * rpi
    
    glm_pred_val_act_st = []
    if not __main__.__dict__.get('Lateral',False):
	if history_set != None:	    
		glm_pred_act = glm.response(training_inputs,history_set,K)
		glm_pred_val_act = glm.response(validation_inputs,numpy.mean(raw_history_validation_set,axis=0),K)
		
		for j in xrange(0,len(raw_validation_set)):
			glm_pred_val_act_st.append(glm.response(validation_inputs,raw_history_validation_set[j],K))	
	else:
		glm_pred_act = glm.response(training_inputs,None,K)
		glm_pred_val_act = glm.response(validation_inputs,None,K)
		
		for j in xrange(0,len(raw_validation_set)):
			glm_pred_val_act_st.append(glm.response(validation_inputs,None,K))	

    else:
	if history_set != None:    
		print numpy.shape(history_set)
		print numpy.shape(numpy.delete(training_set,[0],axis=1))
		
		
		
		print numpy.shape(glm.response(training_inputs,numpy.hstack((history_set,numpy.delete(training_set,[0],axis=1))),numpy.array([K[0]])))
		print numpy.shape(glm.response(training_inputs,numpy.hstack((history_set,numpy.delete(training_set,[1],axis=1))),numpy.array([K[1]])))
		
       		glm_pred_act =  numpy.hstack([glm.response(training_inputs,numpy.hstack((history_set,numpy.delete(training_set,[i],axis=1))),numpy.array([K[i]])) for i in xrange(0,num_neurons)])
		glm_pred_val_act =  numpy.hstack([ glm.response(validation_inputs,numpy.hstack((history_validation_set,numpy.delete(validation_set,[i],axis=1))),numpy.array([K[i]])) for i in xrange(0,num_neurons)])
		for j in xrange(0,len(raw_validation_set)):
		    glm_pred_val_act_st.append(numpy.hstack([ glm.response(validation_inputs,numpy.hstack((raw_history_validation_set[j],numpy.delete(raw_validation_set[j],[i],axis=1))),numpy.array([K[i]])) for i in xrange(0,num_neurons)]))
        else:
       		glm_pred_act =  numpy.hstack([ glm.response(training_inputs,numpy.delete(training_set,[i],axis=1),numpy.array([K[i]])) for i in xrange(0,num_neurons)])
		glm_pred_val_act =  numpy.hstack([ glm.response(validation_inputs,numpy.delete(validation_set,[i],axis=1),numpy.array([K[i]])) for i in xrange(0,num_neurons)])
		for j in xrange(0,len(raw_validation_set)):
		    glm_pred_val_act_st.append(numpy.hstack([ glm.response(validation_inputs,numpy.delete(raw_validation_set[j],[i],axis=1),numpy.array([K[i]])) for i in xrange(0,num_neurons)]))

    ofs = run_nonlinearity_detection(numpy.mat(training_set),numpy.mat(rpi_pred_act))
    rpi_pred_act_t = apply_output_function(numpy.mat(rpi_pred_act),ofs)
    rpi_pred_val_act_t = apply_output_function(numpy.mat(rpi_pred_val_act),ofs)
    
    ofs = run_nonlinearity_detection(numpy.mat(training_set),numpy.mat(glm_pred_act))
    glm_pred_act_t = apply_output_function(numpy.mat(glm_pred_act),ofs)
    glm_pred_val_act_t = apply_output_function(numpy.mat(glm_pred_val_act),ofs)
    
    
    pylab.figure()
    pylab.title('RPI')
    for i in xrange(0,num_neurons_to_run):
	pylab.subplot(11,11,i+1)    
    	pylab.plot(rpi_pred_val_act[:,i],validation_set[:,i],'o')
    pylab.savefig(normalize_path('RPI_val_relationship.png'))	
	
    pylab.figure()
    pylab.title('GLM')
    for i in xrange(0,num_neurons_to_run):
	pylab.subplot(11,11,i+1)    
 	pylab.plot(glm_pred_val_act[:,i],validation_set[:,i],'o')   
    pylab.savefig(normalize_path('GLM_val_relationship.png'))
    
    
    pylab.figure()
    pylab.title('RPI')
    for i in xrange(0,num_neurons_to_run):
	pylab.subplot(11,11,i+1)    
    	pylab.plot(rpi_pred_val_act_t[:,i],validation_set[:,i],'o')
    pylab.savefig(normalize_path('RPI_t_val_relationship.png'))	
	
	
    pylab.figure()
    pylab.title('GLM')
    for i in xrange(0,num_neurons_to_run):
	pylab.subplot(11,11,i+1)    
 	pylab.plot(glm_pred_val_act_t[:,i],validation_set[:,i],'o')   
    pylab.savefig(normalize_path('GLM_t_val_relationship.png'))
    
    pylab.figure()
    pylab.plot(numpy.mean(numpy.power(validation_set - rpi_pred_val_act_t,2)[:,:num_neurons_to_run],0),numpy.mean(numpy.power(validation_set - glm_pred_val_act,2)[:,:num_neurons_to_run],0),'o')
    pylab.hold(True)
    pylab.plot([0.0,1.0],[0.0,1.0])
    pylab.xlabel('RPI')
    pylab.ylabel('GLM')
    pylab.savefig(normalize_path('GLM_vs_RPI_MSE.png'))
    
    print '\n \n RPI \n'
    
    print 'Without TF'
    performance_analysis(training_set,validation_set,rpi_pred_act,rpi_pred_val_act,raw_validation_set)
    print 'With TF'
    (signal_power,noise_power,normalized_noise_power,training_prediction_power,rpi_validation_prediction_power,signal_power_variance) = performance_analysis(training_set,validation_set,rpi_pred_act_t,rpi_pred_val_act_t,raw_validation_set)
	
    print '\n \n GLM \n'
	
    print 'Without TF'
    (signal_power,noise_power,normalized_noise_power,training_prediction_power,glm_validation_prediction_power,signal_power_variance) = performance_analysis(training_set,validation_set,glm_pred_act,glm_pred_val_act,raw_validation_set)
    print 'With TF'
    performance_analysis(training_set,validation_set,glm_pred_act_t,glm_pred_val_act_t,raw_validation_set)
    
    print '\n\n\nSingle trial validation set'
    performance_analysis(training_set,validation_set,glm_pred_act,numpy.mean(glm_pred_val_act_st,axis=0),raw_validation_set) 
    
    pylab.figure()
    pylab.plot(rpi_validation_prediction_power[:num_neurons_to_run],glm_validation_prediction_power[:num_neurons_to_run],'o')
    pylab.hold(True)
    pylab.plot([0.0,1.0],[0.0,1.0])
    pylab.xlabel('RPI')
    pylab.ylabel('GLM')
    pylab.savefig(normalize_path('GLM_vs_RPI_prediction_power.png'))
    
    db_node.add_data("ReversCorrelationPredictedActivities",glm_pred_act,force=True)
    db_node.add_data("ReversCorrelationPredictedActivities+TF",glm_pred_act_t,force=True)
    db_node.add_data("ReversCorrelationPredictedValidationActivities",glm_pred_val_act,force=True)
    db_node.add_data("ReversCorrelationPredictedValidationActivities+TF",glm_pred_val_act_t,force=True)