def basic_save_load_snapshot(self):
        """
        Very basic test to check the activity matrix of a GeneratorSheet
        comes back ok, and that class attributes are pickled.
        """
        assert topo.sim.name == SIM_NAME

        topo.sim["R"] = GeneratorSheet(input_generator=Gaussian(), nominal_density=2)

        topo.sim.run(1)

        R_act = copy.deepcopy(topo.sim["R"].activity)
        Line.x = 12.0
        topo.sim.startup_commands.append("z=99")

        save_snapshot(SNAPSHOT_NAME)

        Line.x = 9.0
        exec "z=88" in __main__.__dict__

        topo.sim["R"].set_input_generator(Line())
        topo.sim.run(1)

        load_snapshot(resolve_path(SNAPSHOT_NAME, search_paths=[normalize_path.prefix]))

        # CEBALERT: should also test that unpickling order is correct
        # (i.e. startup_commands, class attributes, simulation)
        assert_array_equal(R_act, topo.sim["R"].activity)
        self.assertEqual(Line.x, 12.0)
        self.assertEqual(__main__.__dict__["z"], 99)
def a():
    dirr = '/home/jan/projects/topographica/GCAL_EI/'
    rhos = {}
    
    X = []
    Y = []
    qual = []

    if True:
        for a in os.listdir(dirr):
            b = os.path.join(dirr,a);

            if not stat.S_ISDIR(os.stat(b).st_mode):
                continue

            # load result file 
            f = open(os.path.join(b,'results.pickle'))
            d = pickle.load(f)
	    f.close()
            load_snapshot(os.path.join(b,'snapshot.typ'))


	    f = open(os.path.join(b,'results.pickle'),'w')
	    if topo.sim["V1"].projections()["EtoELong"].strength != 0:
		    d['exc_short_long_ratio'] = 1 - 1 / (topo.sim["V1"].projections()["EtoE"].strength / topo.sim["V1"].projections()["EtoELong"].strength+1)
	    else:
		    d['exc_short_long_ratio'] = 1.0
	    print d['exc_short_long_ratio']
	    pickle.dump(d,f)
    def basic_save_load_snapshot(self):
        """
        Very basic test to check the activity matrix of a GeneratorSheet
        comes back ok, and that class attributes are pickled.
        """
        assert topo.sim.name == SIM_NAME

        topo.sim['R'] = GeneratorSheet(input_generator=Gaussian(),
                                       nominal_density=2)

        topo.sim.run(1)

        R_act = copy.deepcopy(topo.sim['R'].activity)
        Line.x = 12.0
        topo.sim.startup_commands.append("z=99")

        save_snapshot(SNAPSHOT_NAME)

        Line.x = 9.0
        exec "z=88" in __main__.__dict__

        topo.sim['R'].set_input_generator(Line())
        topo.sim.run(1)

        load_snapshot(
            resolve_path(SNAPSHOT_NAME, search_paths=[normalize_path.prefix]))

        # CEBALERT: should also test that unpickling order is correct
        # (i.e. startup_commands, class attributes, simulation)
        assert_array_equal(R_act, topo.sim['R'].activity)
        self.assertEqual(Line.x, 12.0)
        self.assertEqual(__main__.__dict__['z'], 99)
Esempio n. 4
0
def compare_with_and_without_snapshot_LoadSnapshot(script="models/lissom.ty"):
    data_filename = os.path.split(script)[1] + "_PICKLETEST"
    snapshot_filename = os.path.split(script)[1] + "_PICKLETEST.typ_"

    locn = resolve_path(os.path.join('tests', data_filename))
    print "Loading pickle from %s" % locn
    try:
        data = pickle.load(open(locn, "rb"))
    except IOError:
        print "\nData file '" + data_filename + "' could not be opened; run _A() first"
        raise

    # retrieve parameters used when script was run
    run_for = data['run_for']
    break_at = data['break_at']
    look_at = data['look_at']

    #    # CEBALERT: shouldn't need to re-list - should be able to read from data!
    #    cortex_density=data['cortex_density']
    #    lgn_density=data['lgn_density']
    #    retina_density=data['retina_density']
    #    dims=data['dims']
    #    dataset=data['dataset']

    from topo.command import load_snapshot

    locn = resolve_path(os.path.join('tests', snapshot_filename))
    print "Loading snapshot at %s" % locn

    try:
        load_snapshot(locn)
    except IOError:
        print "\nPickle file '" + snapshot_filename + "' could not be opened; run _B() first."
        raise

    assert topo.sim.time() == break_at
    assert_array_equal(data[topo.sim.time()],
                       topo.sim[look_at].activity,
                       err_msg="\nAt topo.sim.time()=%d" % topo.sim.time())
    print "Match at %s after loading snapshot" % topo.sim.time()

    topo.sim.run(run_for - break_at)

    assert_array_equal(data[topo.sim.time()],
                       topo.sim[look_at].activity,
                       err_msg="\nAt topo.sim.time()=%d" % topo.sim.time())

    print "Match at %s after running loaded snapshot" % topo.sim.time()
Esempio n. 5
0
def compare_with_and_without_snapshot_LoadSnapshot(script="models/lissom.ty"):
    data_filename=os.path.split(script)[1]+"_PICKLETEST"
    snapshot_filename=os.path.split(script)[1]+"_PICKLETEST.typ_"

    locn = resolve_path(os.path.join('tests',data_filename))
    print "Loading pickle from %s"%locn
    try:
        data = pickle.load(open(locn,"rb"))
    except IOError:
        print "\nData file '"+data_filename+"' could not be opened; run _A() first"
        raise

    # retrieve parameters used when script was run
    run_for=data['run_for']
    break_at=data['break_at']
    look_at=data['look_at']

#    # CEBALERT: shouldn't need to re-list - should be able to read from data!
#    cortex_density=data['cortex_density']
#    lgn_density=data['lgn_density']
#    retina_density=data['retina_density']
#    dims=data['dims']
#    dataset=data['dataset']
    
    from topo.command import load_snapshot

    locn = resolve_path(os.path.join('tests',snapshot_filename))
    print "Loading snapshot at %s"%locn

    try:
        load_snapshot(locn)
    except IOError:
        print "\nPickle file '"+snapshot_filename+"' could not be opened; run _B() first."
        raise

    assert topo.sim.time()==break_at
    assert_array_equal(data[topo.sim.time()],topo.sim[look_at].activity,
                       err_msg="\nAt topo.sim.time()=%d"%topo.sim.time())
    print "Match at %s after loading snapshot"%topo.sim.time()

    topo.sim.run(run_for-break_at)
                
    assert_array_equal(data[topo.sim.time()],topo.sim[look_at].activity,
                       err_msg="\nAt topo.sim.time()=%d"%topo.sim.time())

    print "Match at %s after running loaded snapshot"%topo.sim.time()
Esempio n. 6
0
def loadModelSnapshot(saveSnapshotTime, 
                      LGNRingNo=5, V1RingNo=5, basename='snapshot'): 
    # LGNRingNo and V1RingNo are paramters that change the model structure
    typPath = '../models/snapshots/'

    loadSnapshot = "%s-LGN%s-V1%s-T%s.typ" % (basename, str(LGNRingNo), str(V1RingNo), str(saveSnapshotTime))
    if saveSnapshotTime is not None:
        fullTypPath = typPath+loadSnapshot
        snapshotExists = os.path.exists(fullTypPath)
        # Load snapshot and return
        if snapshotExists:
            print "Loading snapshot %s" % loadSnapshot
            load_snapshot(typPath+loadSnapshot)
            print ("Snapshot %s loaded." % loadSnapshot)
            return False
        else:
            # saveSnapshotFlag. True indicates a snapshot is needed as it is desired but doesn't exist.
            return True 
    else: 
        return False
Esempio n. 7
0
def process_distributed_sm_measurement(directory):
    from topo.command import load_snapshot
    import cPickle as pickle
    data_dict = {}
    
    load_snapshot('snapshot.typ')
    
    for a in os.listdir(directory):
        b = os.path.join(directory,a);
        b = os.path.join(b,'dict.dat');
        f = open(b,'r')
        d = pickle.load(f)
        data_dict.update(d)
        
    sa = surround_analysis()
    
    for (x,y) in data_dict.keys():
            sa.plot_size_tunning(x,y)
            sa.plot_orientation_contrast_tuning_abs(x,y)
    
    self.plot_histograms_of_measures()
def plot_ortcs(snapshot_path,name_prefix):
    def disable_top_right_axis(ax):
		for loc, spine in ax.spines.iteritems():
		    if loc in ['right', 'top']:
	    		spine.set_color('none')  # don't draw spine
		for tick in ax.yaxis.get_major_ticks():
		        tick.tick2On = False
		for tick in ax.xaxis.get_major_ticks():
	    		tick.tick2On = False
		ax.xaxis.tick_bottom()
		ax.yaxis.tick_left()

    def disable_left_axis(ax):
	        for loc, spine in ax.spines.iteritems():
	            if loc in ['left']:
        		spine.set_color('none')  # don't draw spine
	        for tick in ax.yaxis.get_major_ticks():
		        tick.tick1On = False

    def clean_figure():
        import pylab
        pylab.title('')
        pylab.xlabel('')
        pylab.ylabel('')
        pylab.yticks([], [])
        disable_top_right_axis(pylab.gca())
        disable_left_axis(pylab.gca())
        pylab.gca().get_legend().set_visible(False)
        #pylab.gca().legend_.remove()
	    
	    
    import topo.command.pylabplot
    load_snapshot(snapshot_path)
    topo.command.pylabplot.measure_or_tuning_fullfield.instance(sheet=topo.sim["V1"])()
    topo.command.pylabplot.cyclic_tuning_curve.instance(x_axis="orientation",sheet=topo.sim["V1"],coords=[(0,0)])(); clean_figure(); pylab.savefig(name_prefix+"ORTC[0,0].png")
    topo.command.pylabplot.cyclic_tuning_curve.instance(x_axis="orientation",sheet=topo.sim["V1"],coords=[(0.1,0.1)])(); clean_figure(); pylab.savefig(name_prefix+"ORTC[0.1,0.1].png")
    topo.command.pylabplot.cyclic_tuning_curve.instance(x_axis="orientation",sheet=topo.sim["V1"],coords=[(0.1,-0.1)])(); clean_figure(); pylab.savefig(name_prefix+"ORTC[0.1,-0.1].png") 
    topo.command.pylabplot.cyclic_tuning_curve.instance(x_axis="orientation",sheet=topo.sim["V1"],coords=[(-0.1,0.1)])(); clean_figure(); pylab.savefig(name_prefix+"ORTC[-0.1,0.1].png")
    topo.command.pylabplot.cyclic_tuning_curve.instance(x_axis="orientation",sheet=topo.sim["V1"],coords=[(-0.1,-0.1)])(); clean_figure();pylab.savefig(name_prefix+"ORTC[-0.1,-0.1].png") 
Esempio n. 9
0
from contrib.jacommands import LateralOrientationAnnisotropy

from topo.analysis.featureresponses import MeasureResponseCommand, FeatureMaps, SinusoidalMeasureResponseCommand, FeatureCurveCommand
FeatureMaps.num_orientation=16
MeasureResponseCommand.scale=1.0
MeasureResponseCommand.duration=4.0
SinusoidalMeasureResponseCommand.frequencies=[2.4]
FeatureCurveCommand.num_orientation=16
FeatureCurveCommand.curve_parameters=[{"contrast":15},{"contrast":50},{"contrast":90}]
from topo.command import load_snapshot

#load_snapshot('./DATA/LESI/TEST-small/CCSimple_000002.00.typ')
#load_snapshot('./DATA/LESI/TEST/CCSimple_000002.00.typ')

load_snapshot('./DATA/LESI/CCLESIGifLatest/CCSimple_010000.00.typ')
#load_snapshot('./DATA/LESI/CCLESIGif-NEW1/CCSimple_010000.00_with_map.typ')
#load_snapshot('./DATA/LESI/CCLESIGif12-Orig-LARGE_NEWEXPANDER5000/CCSimple_005002.00.typ')
    
from topo.command import wipe_out_activity, clear_event_queue
wipe_out_activity()
clear_event_queue()

from topo.pattern import SineGrating, Disk
class SineGratingDiskTemp(SineGrating):
      mask_shape = param.Parameter(default=Disk(smoothing=0,size=1.0))


def new_set_parameters(a,b,c,d,e,f,g):
    print a,b,c,d,e,f,g
    topo.sim["LGNOn"].projections()["LateralGC"].strength=a
Esempio n. 10
0
from topo.numbergen import UniformRandom, BoundedNumber, ExponentialDecay
from topo.command import pattern_present
from param import normalize_path
import numpy

from topo.analysis.featureresponses import MeasureResponseCommand, FeatureMaps, SinusoidalMeasureResponseCommand, FeatureCurveCommand
FeatureMaps.num_orientation=16
MeasureResponseCommand.scale=1.0
MeasureResponseCommand.duration=4.0
SinusoidalMeasureResponseCommand.frequencies=[2.4]
FeatureCurveCommand.num_orientation=16
FeatureCurveCommand.curve_parameters=[{"contrast":15},{"contrast":50},{"contrast":90}]
from topo.command import load_snapshot


load_snapshot('CCSimple_010005_new_or_map.00.typ')
    
from topo.command import wipe_out_activity, clear_event_queue
wipe_out_activity()
clear_event_queue()

from topo.pattern import SineGrating, Disk
class SineGratingDiskTemp(SineGrating):
      mask_shape = param.Parameter(default=Disk(smoothing=0,size=1.0))

def set_parameters(a,b,c,d,e,f,g,h,i,j,k,l):
    print a,b,c,d,e,f,g,h,i,j,k,l
    
    topo.sim["V1Simple"].projections()["V1SimpleFeedbackExc1"].strength=b
    topo.sim["V1Simple"].projections()["V1SimpleFeedbackInh"].strength=c
    topo.sim["V1Complex"].projections()["LongEE"].strength=d
Esempio n. 11
0
def GCALTemporal(stimulus = None,
                 timestep=0.5,
                 ringParams = ('MAX','MAX'),
                 saveSnapshotTime = None,
                 plastic=True,

                 LGN_TC = None,
                 LGNFFStrength = 2.33,
                 GCStrength=0.6,
                 GCDelay=0.01,
                 LGNDistanceDelay=None,

                 # V1 Settings
                 V1_TC = None,
                 V1FFStrength=1.5,
                 ExcStrength=1.7,
                 InhStrength=-1.4,
                 LateralDelay=0.01,
                 V1DistanceDelay=None,

                 HomeoFactor=1.0, 
                 HomeoPlastic = False ): 

    VSDSheetFlag = True;  saveSnapshotFlag = False; LOAD = None

    ###################################################
    # Modifying sheets #
    ####################
                           
    modelName = 'fit-LGN-V1.py'
    (LGNRingNo,V1RingNo) = ringParams

    if LOAD is not None:
        typPath = '../models/snapshots/'
        load_snapshot(typPath+LOAD)
    else:   
        print "Modifying model loaded in memory"          
    
    ########################
    # Sheets Modifications #
    ########################

        p = gcal_vanilla.makeParams()
        gcal_vanilla.makeSheets(p)
        # Switch out the LISSOM sheets for continuous ones
        switchAllSheets(VSDSheetFlag)
        # Setup the input generator
        setupRetina(stimulus, timestep)
        # Connecting with original GCAL connections
        gcal_vanilla.connectGCAL(p,LGNRingNo,V1RingNo)
                             

    ############################
    # Connection Modifications #
    ############################
                             
    'Alternatively, could use topo.sheet[<name>].projection(<name>)'
    conns = dict([(el.name,el) for el in topo.sim.connections()])

    ''' AfferentToLGNOn, AfferentToLGNOff, LGNOnAfferent, LGNOffAfferent,
        GCLGNOn-*,  GCLGNOff-*, LateralInhibitory-*, LateralExcitatory-*
    '''

    #######
    # LGN #
    #######

    # FEEDFORWARD DELAY IS ABOUT 15MS FOR BOTH STAGES

    # Afferent from Retina to LGNOn/Off. Delay and strength.
    setConnDelay('AfferentToLGNOn',15.0,conns)
    setConnDelay('AfferentToLGNOff',15.0,conns)
    setConnStrength('AfferentToLGNOn', LGNFFStrength,conns)
    setConnStrength('AfferentToLGNOff', LGNFFStrength,conns)

    assert GCStrength > 0
    modifyLateralConnections(conns, 'GCLGNOn', GCStrength, GCDelay, LGNDistanceDelay)
    modifyLateralConnections(conns, 'GCLGNOff', GCStrength, GCDelay, LGNDistanceDelay)

    ######
    # V1 #
    ######
                             
    setConnDelay('LGNOnAfferent',15.0,conns)
    setConnDelay('LGNOffAfferent',15.0,conns)
    setConnStrength('LGNOnAfferent', V1FFStrength,conns)
    setConnStrength('LGNOffAfferent' ,V1FFStrength,conns)

    assert ExcStrength > 0;  assert InhStrength < 0
    modifyLateralConnections(conns, 'LateralExcitatory', ExcStrength, LateralDelay, V1DistanceDelay)
    modifyLateralConnections(conns, 'LateralInhibitory', InhStrength, LateralDelay, V1DistanceDelay)

    ##########################
    # Sheet output functions #
    ##########################

    setLGNOutputFns(LGN_TC)
    setV1OutputFns(V1_TC, HomeoFactor, HomeoPlastic) 

    ###############################
    # Plasticity and snapshotting #
    ###############################
    
    if saveSnapshotFlag:
        setSheetPlasticity(plastic=True) # No point making snapshot if plasticity if off                                
        saveSnapShot(saveSnapshotTime)

    setSheetPlasticity(plastic)      # Set as desired
def figure2():
    dirr = '/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE'
    rhos = {}
    
    X = []
    Y = []
    qual = []
    
    if False:
        for a in os.listdir(dirr):
            b = os.path.join(dirr,a);

            if not stat.S_ISDIR(os.stat(b).st_mode):
                continue

            # load result file 
            f = open(os.path.join(b,'results.pickle'))
            d = pickle.load(f)
            
            # lets find out the pinwheel density
            
            X.append(d['lat_strength_ratio'])
            Y.append(d['exc_inh_ratio'])

	    #mmap = d['orprefmap'][25:-24,25:-24]
	    mmap = d['orprefmap'][2:-3,2:-3]
	    
            rho = pinwheel_analysis(mmap)['metadata']['rho']
            metric = gamma_metric(rho,k=10.0)
            sel = numpy.mean(numpy.mean(mmap))
            print a, " ", str(rho) , " " , str(metric) , "SEL ", str(sel)

            qual.append(metric)
            
        data = np.histogram2d(Y, X, bins=[len(np.unique(Y)),len(np.unique(X))], weights=qual)
        pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
        im = pylab.imshow(data[0],interpolation='none',cmap='gray')#,vmin=0.3)
        pylab.colorbar(im,fraction=0.046, pad=0.04)
        pylab.yticks([0,len(np.unique(Y))-1],[data[1][0],data[1][-1]])
        pylab.xticks([0,len(np.unique(X))-1],[data[2][0],data[2][-1]])
        pylab.savefig('figure2.png',dpi=600)
    
    if True:
        plot_ortcs('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.2_exc_inh_ratio=0.85/snapshot.typ',"fig2_1_")
        plot_ortcs('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.6_exc_inh_ratio=0.8/snapshot.typ',"fig2_2_")
        plot_ortcs('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.8_exc_inh_ratio=0.65/snapshot.typ',"fig2_3_")

    if False:
       f = open('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.2_exc_inh_ratio=0.85/results.pickle') 
       d = pickle.load(f)
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(d['orprefmap'][61:-60,61:-60],interpolation='none',cmap='hsv',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure1/generated_data/or_map3.png',  pad_inches=0)
       
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(power_spectrum(d['orprefmap'][61:-60,61:-60]),interpolation='none',cmap='gray',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure1/generated_data/fft_map3.png',  pad_inches=0)
              
       load_snapshot('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.2_exc_inh_ratio=0.85/snapshot.typ')
       save_plotgroup("Projection",projection=topo.sim["V1"].projections().values()[0],density=1.5,saver_params={'filename_prefix' : '3'})
       
       f = open('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.6_exc_inh_ratio=0.8/results.pickle') 
       d = pickle.load(f)
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(d['orprefmap'][61:-60,61:-60],interpolation='none',cmap='hsv',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure1/generated_data/or_map2.png',  pad_inches=0)
       
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(power_spectrum(d['orprefmap'][61:-60,61:-60]),interpolation='none',cmap='gray',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure1/generated_data/fft_map2.png',  pad_inches=0)


       load_snapshot('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.6_exc_inh_ratio=0.8/snapshot.typ')
       save_plotgroup("Projection",projection=topo.sim["V1"].projections().values()[0],density=1.5,saver_params={'filename_prefix' : '2'})
       
       f = open('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.8_exc_inh_ratio=0.65/results.pickle') 
       d = pickle.load(f)
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(d['orprefmap'][61:-60,61:-60],interpolation='none',cmap='hsv',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure1/generated_data/or_map1.png',  pad_inches=0)
       
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(power_spectrum(d['orprefmap'][61:-60,61:-60]),interpolation='none',cmap='gray',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure1/generated_data/fft_map1.png',  pad_inches=0)
     
       load_snapshot('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_SHORTRANGE/lat_strength_ratio=2.8_exc_inh_ratio=0.65/results.pickle')
       save_plotgroup("Projection",projection=topo.sim["V1"].projections().values()[0],density=1.5,saver_params={'filename_prefix' : '1'})

    if False:
       load_snapshot('/home/jan/projects/topographica/GCAL_EI/a-p_exc_strength=3.3_-p_inh_strength=2.805/snapshot.typ')
       mmap = topo.sim["V1"].sheet_views["OrientationPreference"].view()[0]

       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(mmap[61:-60,61:-60],interpolation='none',cmap='hsv',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure1/generated_data/or_map4.png',  pad_inches=0)
       
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(power_spectrum(mmap[61:-60,61:-60]),interpolation='none',cmap='gray',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure1/generated_data/fft_map4.png',  pad_inches=0)
     
       
       save_plotgroup("Projection",projection=topo.sim["V1"].projections().values()[0],density=1.5,saver_params={'filename_prefix' : '4'})
def figure4():
    dirr = '/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE'
    rhos = {}
    
    X = []
    Y = []
    qual = []

    if False:
        for a in os.listdir(dirr):
            b = os.path.join(dirr,a);

            if not stat.S_ISDIR(os.stat(b).st_mode):
                continue

            # load result file 
            f = open(os.path.join(b,'results.pickle'))
            d = pickle.load(f)
            
            # lets find out the pinwheel density
            
            X.append(abs(d['exc_inh_strength']))
            Y.append(abs(d['exc_short_long_ratio']))
	    
	    mmap = d['orprefmap'][2:-3,2:-3]

            rho = pinwheel_analysis(mmap)['metadata']['rho']
            metric = gamma_metric(rho,k=10.0)
            sel = numpy.mean(numpy.mean(mmap))
            print a, " ", str(rho) , " " , str(metric) , "SEL ", str(sel)

            qual.append(metric)
	
	print X
	print Y
	print qual
	pylab.figure()
	pylab.scatter(Y,X,s=numpy.array(qual)*50.0)

        data = np.histogram2d(Y, X, bins=[len(np.unique(Y)),len(np.unique(X))], weights=qual)
        pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
	ax = plt.gca()
	im = pylab.imshow(data[0],interpolation='none',cmap='gray')#,vmin=0.3)
        pylab.yticks([0,len(np.unique(Y))-1],[data[1][0],data[1][-1]])
        pylab.xticks([0,len(np.unique(X))-1],[data[2][0],data[2][-1]])
	divider = make_axes_locatable(ax)
	cax = divider.append_axes("right", size="5%", pad=0.05)
        pylab.colorbar(im,cax=cax)
        pylab.savefig('figure4.png',dpi=600)
    
    if True:
        plot_ortcs('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE/a-p_exc_strength=9_-p_exc_inh_strength=9.7_-p_exc_short_long_ratio=0.3_-p_cortex_exc_target_activity=0.003/snapshot.typ',"fig4_1_")
        plot_ortcs('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE/a-p_exc_strength=9_-p_exc_inh_strength=10.6_-p_exc_short_long_ratio=0.5_-p_cortex_exc_target_activity=0.003/snapshot.typ',"fig4_2_")
        plot_ortcs('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE/a-p_exc_strength=9_-p_exc_inh_strength=9.4_-p_exc_short_long_ratio=0.6_-p_cortex_exc_target_activity=0.003/snapshot.typ',"fig4_3_")
        plot_ortcs('/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE/a-p_exc_strength=9_-p_exc_inh_strength=10.6_-p_exc_short_long_ratio=0.8_-p_cortex_exc_target_activity=0.003/snapshot.typ',"fig4_4_")

    
    if False:

       fname= '/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE/a-p_exc_strength=9_-p_exc_inh_strength=9.7_-p_exc_short_long_ratio=0.3_-p_cortex_exc_target_activity=0.003'
       f = open(fname+'/results.pickle') 
       d = pickle.load(f)
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(d['orprefmap'][0:-1,0:-1],interpolation='none',cmap='hsv',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure3/generated_data/or_map1.png',  pad_inches=0)
       
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(power_spectrum(d['orprefmap'][0:-1,0:-1]),interpolation='none',cmap='gray',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure3/generated_data/fft_map1.png',  pad_inches=0)
              
       load_snapshot(fname+'/snapshot.typ')
       save_plotgroup("Projection",projection=topo.sim["V1"].projections().values()[2],density=6.0,saver_params={'filename_prefix' : '1'})

       fname= '/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE/a-p_exc_strength=9_-p_exc_inh_strength=10.6_-p_exc_short_long_ratio=0.5_-p_cortex_exc_target_activity=0.003'
       f = open(fname+'/results.pickle') 
       d = pickle.load(f)
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(d['orprefmap'][0:-1,0:-1],interpolation='none',cmap='hsv',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure3/generated_data/or_map2.png',  pad_inches=0)
       
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(power_spectrum(d['orprefmap'][0:-1,0:-1]),interpolation='none',cmap='gray',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure3/generated_data/fft_map2.png',  pad_inches=0)
              
       load_snapshot(fname+'/snapshot.typ')
       save_plotgroup("Projection",projection=topo.sim["V1"].projections().values()[2],density=6.0,saver_params={'filename_prefix' : '2'})
    
       fname= '/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE/a-p_exc_strength=9_-p_exc_inh_strength=9.4_-p_exc_short_long_ratio=0.6_-p_cortex_exc_target_activity=0.003'
       f = open(fname+'/results.pickle') 
       d = pickle.load(f)
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(d['orprefmap'][0:-1,0:-1],interpolation='none',cmap='hsv',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure3/generated_data/or_map3.png',  pad_inches=0)
       
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(power_spectrum(d['orprefmap'][0:-1,0:-1]),interpolation='none',cmap='gray',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure3/generated_data/fft_map3.png',  pad_inches=0)
              
       load_snapshot(fname+'/snapshot.typ')
       save_plotgroup("Projection",projection=topo.sim["V1"].projections().values()[2],density=6.0,saver_params={'filename_prefix' : '3'})

       fname= '/home/jan/Doc/Papers/fast_inh_paper/DATA/GCAL_EI_II_LONGE/a-p_exc_strength=9_-p_exc_inh_strength=10.6_-p_exc_short_long_ratio=0.8_-p_cortex_exc_target_activity=0.003'
       f = open(fname+'/results.pickle') 
       d = pickle.load(f)
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(d['orprefmap'][0:-1,0:-1],interpolation='none',cmap='hsv',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure3/generated_data/or_map4.png',  pad_inches=0)
       
       fig = pylab.figure(dpi=600,facecolor='w',figsize=(5,5))
       ax = plt.Axes(fig, [0., 0., 1., 1.])
       ax.set_axis_off()
       fig.add_axes(ax)
       ax.imshow(power_spectrum(d['orprefmap'][0:-1,0:-1]),interpolation='none',cmap='gray',aspect='normal')
       pylab.savefig('/home/jan/Doc/Papers/fast_inh_paper/SVG/Figure3/generated_data/fft_map4.png',  pad_inches=0)
              
       load_snapshot(fname+'/snapshot.typ')
       save_plotgroup("Projection",projection=topo.sim["V1"].projections().values()[2],density=6.0,saver_params={'filename_prefix' : '4'})