Fronto-parietal visuospatial WM model with HH cells (Edin et al 2007)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:98017
1) J Cogn Neurosci: 3 structural mechanisms that had been hypothesized to underlie vsWM development during childhood were evaluated by simulating the model and comparing results to fMRI. It was concluded that inter-regional synaptic connection strength cause vsWM development. 2) J Integr Neurosci: Given the importance of fronto-parietal connections, we tested whether connection asymmetry affected resistance to distraction. We drew the conclusion that stronger frontal connections are beneficial. By comparing model results to EEG, we concluded that the brain indeed has stronger frontal-to-parietal connections than vice versa.
Reference:
1 . Edin F, Macoveanu J, Olesen P, Tegnér J, Klingberg T (2007) Stronger synaptic connectivity as a mechanism behind development of working memory-related brain activity during childhood. J Cogn Neurosci 19:750-60 [PubMed]
2 . Edin F, Klingberg T, Stödberg T, Tegnér J (2007) Fronto-parietal connection asymmetry regulates working memory distractibility. J Integr Neurosci 6:567-96 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Neocortex;
Cell Type(s): Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; Abstract Wang-Buzsaki neuron;
Channel(s):
Gap Junctions: Gap junctions;
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Working memory; Attractor Neural Network;
Implementer(s):
Search NeuronDB for information about:  Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell;
function showConnMulti( dirname, pr, wh, no, smooth )

% plots BUMP-data. 
% dirname: The name of the simulation directory
% pr = 0 --> merely display figures
% pr = 1 --> print
% pr = 2 --> print and save to file
% pr = 3 --> save to file
% If wh = 0 or nothing  --> print only figures 5 and 6
%    wh = 1             --> print all figures
%    wh = 2             --> print only figure 7
% no = number of enlargements of activity. Default = 5
% smooth =  degree of smoothing of histogram. Default = 2
%
% Version 2.0
% Author: Fredrik Edin, 2004
% Address: freedin@nada.kth.se


if nargin < 2 | nargin > 5
    disp( 'usage1: showConn( dirname, pr ), ' )
    disp( 'pr = 0: Only show' )
    disp( 'pr = 1: Print figures 5 & 6' )
    disp( 'pr = 2: Print and save figures 5 & 6' )
    disp( 'pr = 3: Save figures 5 & 6' )
    disp( '  ' )
    disp( 'usage2: showConn( dirname, pr, wh ), ' )
    disp( 'wh = 0: As above' )
    disp( 'wh = 1: Also print and/or save figure 7' )
    disp( 'wh = 2: Print and/or save only figure 7' )
    disp( '  ' )
    disp( 'usage3: showConn( dirname, pr, wh, no ), ' )
    disp( 'no = number of enlargements of the rastergram.' )
    disp( '  ' )
    disp( 'usage4: showConn( dirname, pr, wh, no, smooth ), ' )
    disp( 'smooth = number of cells making up a point in the rastergram.' )
    return
end

if nargin < 3
    wh = 0;
end
if nargin < 4
    no = 5;
end
if nargin < 5
    smooth = 2;
end

P = pr>0 & wh<2; % Determine whether to print or not. If yes, another window must be made

thisdir = pwd;
cd( dirname )

% load data files
clear Ee0N
if exist( 'Ee0N', 'file' ) % 2 population network
    version = 1;
    nmod = 1;
    NI = 32;
    NE = 128;
    load Ee0N
    load Ie0N
    load Ei0G
    load Ii0G
    one1 = ones( size( Ee0N,1 ), 1 );
    one2 = ones( size( Ii0G,1 ), 1 );
    Connections = [ one1*(NI+NE/2) (NI:NI+NE-1)' Ee0N(:,1) Ee0N(:,2) ; ...
                    one1*(NI/2) (NI:NI+NE-1)' Ie0N(:,1) Ie0N(:,2) ; ...
                    one2*(NI+NE/2) (0:NI-1)' Ei0G(:,1) Ei0G(:,2) ; ...
                    one2*(NI/2) (0:NI-1)' Ii0G(:,1) Ii0G(:,2) ];

    % To translate the parameters of the old network into the same form as
    % those of the new network
    filename = 'Params.txt';
    if exist(filename(1:end-4),'file') & exist(filename,'file')
        delete(filename(1:end-4))
    elseif exist(filename(1:end-4),'file')
        movefile(filename(1:end-4), filename);
    end
    if exist( filename, 'file' )
        load( filename )
    end
    filename = 'Q.txt';
    if exist(filename(1:end-4),'file') & exist(filename,'file')
        delete(filename(1:end-4))
    elseif exist(filename(1:end-4),'file')
        movefile(filename(1:end-4), filename);
    end
    if exist( filename, 'file' )
        load( filename )
    elseif exist( 'Params', 'var' )
        Q = [ Params( 28:29 ) ; Params( 24:26 ) ];
    else
        Q = [];
    end
    if exist( 'Params', 'var' )
        C(1,:) = [ 1 ; 1 ; 0 ; 0 ; 0 ; Params( 24:-1:23 ) ; 1 ; 0 ; Params( 8:-1:7 ) ; ...
                   Params( 5:-1:4 ) ; Params( 13:15 ) ; Params( 19:21 ) ; Params( 16:18 ) ; ...
                   Params( 10:12 ) ]';
        C(2,:) = [ 1 ; 0 ; 0 ; 0 ; 0 ; -1 ; 2 ; 0 ; 0 ; 0 ; Params(9) ; 0 ; Params(6) ;...
                   ; -ones(12,1) ]';
        Params = [ 1 ; 1 ; 3 ; -1 ; 0.02 ; 100 ; 100 ; Params( 3:-1:1 ) ];
    end
    tStart = 0;
else % The multi-module network
    filenames = {'Connections.txt','Params.txt','C.txt','Q.txt'};
    for i = 1:length(filenames)
        if exist(filenames{i}(1:end-4),'file') & exist(filenames{i},'file')
            delete(filenames{i}(1:end-4))
        elseif exist(filenames{i}(1:end-4),'file')
            movefile(filenames{i}(1:end-4), filenames{i});
        end
        if exist( filenames{i}, 'file' )
            load( filenames{i} )
        end
    end
    version = Params(1);
    if version < 5
        C = [reshape( C, 24, length( C )/24 )]';
        C = [ C(:,1:8) zeros(size(C,1),1) C(:,9:end) ];
    else
        C = [reshape( C, 25, length( C )/25 )]';
    end
    nmod = Params(2);
    if version == 2
      tStart = 0;
      Icelltyp = 1;
      tmp = [ Params(1:3) tStart Params(4:5) 100 100 ];
      for i = 1:nmod
    	  tmp = [ tmp Icelltyp 1000 Params(4+3*i) Params(3+3*i) 1000 Params(5+3*i) ];
      end
      Params = tmp;
    elseif version == 3
      tStart = Params(4);
      tmp = [ Params(1:6) ; 100 ; 100 ];
      for i = 1:nmod
          tmp = [ tmp ; Params(3+4*i) ; 1000 ; Params(5+4*i) ];
          tmp = [ tmp ; Params(4+4*i) ; 1000 ; Params(6+4*i) ];
      end
      Params = tmp;
    elseif version == 4
      tStart = Params(4);
      Params = [ Params(1:6) ; 100 ; 100 ; Params(7:end) ];
    elseif version == 5
      tStart = Params(4);
    end
end

% Name of simulationen
fid = fopen( 'Parameters' );
fileName = pwd;
f = find( fileName == '/' | fileName == '\' );
fileName = fileName( f(end)+1:end );
fileName( find( fileName == '.' ) ) = ',';

% Font size
fs = 10;

% Window placement
figs = get( 0, 'Children' );
for i = 1:length( figs ) 
    if figs(i) >= 5 & figs(i) <= 10
        close( figs(i) )
    end
end
if P
    figure(8)
    clf
    set( 8, 'Position', [ 0 100 720 852 ] )
end
figure(5)
clf
set( 5,'Position', [ 5 365 705 355 ] );


if ~exist( 'Params', 'var' ) % In this case, don't plot parameters, just show the 
                         % parameter file on the matlab prompt
    txt = char( fread( fid ) )';
    text( 0, 1, txt, 'HorizontalAlignment', 'left', 'VerticalAlignment', 'top' )
    set( gca, 'Visible', 'off' )
    version = 0;
else

% Network connection plot
rad = 0.1/nmod;
arrowind = 65; % Capital A
arrows = [];
diagram = [];

nmod = Params(2);
minw = 0;
maxw = 0; % To determine axis limits
netborder = [ 0 ; Params( 11:3:end ) ];
netborder = cumsum( netborder );
xp = 0:1/(1+nmod):1;
% Create populations (rings with I:s or E:s)
for i = 1:nmod
    if Params(3+6*i) == 1 % Type of I-cell
        str = 'I-1';
    elseif Params(3+6*i) == 2
        str = 'I-IF';
    end
    pop(2*i-1) = struct( 'label', str, 'x', xp(i+1), 'y', 0.3, 'radius', rad, 'N', ...
                         Params(5+6*i), 'ar', [], 'in',[] );
    if Params(6+6*i) == 0 
        str = 'E-1';
    elseif Params(6+6*i) == 1 % Type of E-cell
        str = 'E-3';
    elseif Params(6+6*i) == 2 
        str = 'E-IF';
    end
    pop(2*i) = struct( 'label', str, 'x', xp(i+1), 'y', 0.7, 'radius', rad, 'N', ...
                       Params(8+6*i), 'ar', [], 'in', [] );
end

% Create arrows between populations
for i = 1:size( C, 1 )
    postmod = C(i,1);
    premod = C(i,2);
    for j = 1:4
        pre = 2*(premod-1)+mod( j+1, 2 )+1; % Netborder indices of population
        post = 2*(postmod-1)+(j>2)+1;
        w = C(i,9+j);
        Jp = C(i,11+3*j);
        Jm = C(i,12+3*j);
        sgm = C(i,13+3*j);
        
        if w > 0 % there is a connection

            if ~pre % If pre is external, then it must define an angle
                pre = -(4/3-mod(post-1,2))*pi;
                %pre = -(3-mod(post-1,2))*pi/3;
            end
            % Determine labpos, position of arrow label
            if pre<1
                labpos = mod( mod( post-1,2 ) - post>2, 2 ); % All external arrows to the left
            elseif pre == 3 | pre == 2
                labpos = 1;
            elseif pre == 1 | pre == 4   
                labpos = 0;
            end
            if mod( post, 2 ) == mod( pre, 2 )
                labpos = 1-labpos;
            end
            if pre == post
                labpos = -(5/3-mod(post-1,2))*pi;
            end
            
            % If connection footprint is not flat, display it. Otherwise
            % just show connection strength
            if Jp >= 0 & Jp ~= 1
                lab = char( arrowind );
                arrowind = arrowind + 1;
                ind = find( Connections(:,1) >= netborder( post ) & ...
                            Connections(:,1) < netborder( post+1 ) & ...
                            Connections(:,2) >= netborder(pre) & ...
                            Connections(:,2) < netborder(pre+1) );
                % Since there are several connections between the same two
                % populations, the strength of this particular connection
                % needs to be found
                nConnBtwPop = length(ind)/(pop(pre).N);
                connS = sum(reshape(Connections(ind,4), [], nConnBtwPop));
                AMPAfactor = (1+1.5*(C(i,8)==0 & mod(pre,2)==0));
                [m,i] = min(abs(connS - w*AMPAfactor));
                ind = ind(pop(pre).N*(i(1)-1)+1:pop(pre).N*i(1));
                W = Connections(ind,4)/AMPAfactor;
                ang = Connections(ind,3);
                % REMOVE paramind if it is not used
                diagram = [ diagram struct( 'label', lab, 'pre', pre, 'post', post, ...
                            'paramind', j, 'W', W, 'w', w, 'angle', ang, 'Jp', Jp, 'Jm', Jm', 'sgm', sgm ) ];
                minw = min( min( minw, W ) );
                maxw = max( max( maxw, W ) );
            else
                lab = sprintf( '%.2g', w );
            end
            % Label is always placed immediately after arrow head
            % Labpos = 0 --> left of arrow head
            %        = 1 --> right of arrow head
            % If pre and pos are equal, then labpos specifies the
            % incidence angle in radians-
            % A negative value of pre indicates the (positive) angle of incitence to 
            % post and is used when there exists no pre.             
            arrows = [ arrows struct( 'pre', pre, 'post', post, 'label', lab, 'labpos', labpos, 'diag', length( diagram ) ) ];
            if pre > 0
                pop(pre).ar = [ pop(pre).ar length(arrows) ];
            end
            pop(post).in = [pop(post).in arrows( end ).pre ];
        end
    end
end

% Plot figure 5
len = length( diagram ) + 1;
m = sum( C(:,3) > 0 ); % There exist delay distributions
tot = (3+ m + len);
hand = zeros( tot*(P+1) ); 

pos = get( gca, 'Position' ); 
hgt = pos(4);
btt = pos(2);
for h = 0:P
    figure(5+3*h)
    pos(4) = hgt*(1-0.7*h);
    pos(2) = btt+0.7*hgt*h;
    
    % create handles
    % hand(1): title
    % hand(2): connection diagram
    % hand(3-x): delay diagrams if there exists delay distributions
    % hand(x+1 alt 3): parameter text
    % the rest: footprint plots
    spac1 = 0.03;
    spac2 = 0.01;
    spac3 = 0.05;
    spac4 = 0.6*h;
    hand(1+tot*h) = axes( 'Position', [ 0, 0.95, 1, 0.03 ] );
    hand(2+tot*h) = subplot( 'Position', [ 0.25+spac1, 2*spac1+spac4*h, 0.5-2*spac1, 0.95-3*spac1-0.3*(m>0)-spac4 ] );
    p1 = 0.25+2*spac1;
    w = 0.4-spac1;
    if m
        hand(3+tot*h) = subplot( 'Position', [ p1, 0.95+(spac2-0.3)*(1-spac4), w, (0.3-2*spac1-spac2)*(1-spac4) ] );
        p1 = p1 + w + spac1;
    end
    n1 = floor( len / 2 );
    n = n1;
    for k = 0:1 % first left subplot, then right
        if n > 0
	    height = (1.5-spac3)/n;
            for j = 1:n
                height = (0.9-spac3)/n;
                hand(m+2+j+k*n1+tot*h) = subplot( 'Position', [ 0.75*k+spac1, 0.9+(-j*height+spac2)*(1-spac4), 0.25-2*spac1, (height-2*spac2)*(1-spac4) ] );
            end
	end
        n = len - n;
    end
   
    % Plot titel
    subplot( hand(1+tot*h) )
    t0 = text( 0.5, 0.5, fileName, 'FontSize', fs, 'HorizontalAlignment', ...
	       'center' );
    set( hand(1+tot*h), 'Visible', 'off' )
    % Plot connection diagram
    cd( thisdir )
    subplot( hand(2+tot*h) )
    plotPop
    hold on
    plotAr
    set( gca, 'XTick', [] )
    set( gca, 'YTick', [] )
    if h
        axis off
    end
    
    % Plot delay distributions
    if m
        axes( hand(3+tot*h) )
        color = 'brgykm';
        coli = 1;
        labstrind = 1;
        for i = 1:size( C, 1 )
            dist = C( i, 3 );
            mu = C( i, 4 );
            if dist == 1
                line( [mu mu], [0 1], 'Color', color(coli) )
                coli = mod( coli, length(color) ) + 1;
            elseif dist == 2
                s2 = C(i, 5);
                xm = mu+3*sqrt( s2 );
                dx = xm/1000;
                x = dx:dx:xm;
        		y = gammadist(x,mu,s2);
                plot( x, y, color(coli) )
                coli = mod( coli, length(color) ) + 1;
            
        		% Plot mean and standard deviation of distributions
        		My = ylim;
        		My = My(end);
        		e1 = sum(x.*y)*dx;
        		e2 = sum(x.*x.*y)*dx;
        		s = sqrt(e2-e1*e1);
        		line( e1*[1 1], My/4*[0.7 1.3], 'Color', 'r' )
        		line( [e1-s e1+s], My/4*[1 1], 'Color', 'r' )
        		line( (e1-s)*[1 1], My/4*[1.1 0.9], 'Color', 'r' )
        		line( (e1+s)*[1 1], My/4*[1.1 0.9], 'Color', 'r' )
		
    	    end
            hold on
            if dist > 0
                syn = '';
                if C(i,10) > 0
                    syn = 'Ii,';
                end
                if C(i,11) > 0
                    syn = [syn 'Ie,'];
                end
                if C(i,12) > 0
                    syn = [syn 'Ei,'];
                end
                if C(i,13) > 0
                    syn = [syn 'Ee,'];
                end
                syn = syn(1:end-1);
                labstr{labstrind} = sprintf( '%d%s%d,comp%d%s', C(i,2), '\rightarrow', C(i,1), C(i,7), syn );
                labstrind = labstrind + 1;
            end
        end
        l = legend( gca, labstr, -1 );
        xlabel( 'tid (ms)' )
        ylabel( 'sannolikhetstathet' )
        title( 'Delayfordelningar' )
    end
    
    % Plot other parameters
    subplot( hand( m+3+h*tot ) )
    str = sprintf( 'Parametrar:\ntStart: %s\ntStop: %s\ndt: %s\n', int2str( Params(4) ), ...
        int2str( Params(5) ), num2str( Params(6) ) );
    midx = get( gca, 'XLim' );
    midy = get( gca, 'YLim' );
    midx = (midx(1)+midx(2))/2;
    midy = (midy(1)+midy(2))/2;
    tx1 = text( midx, midy, str, 'HorizontalAlignment', 'center', ...
		'VerticalAlignment', 'middle' );
    set( gca, 'Visible', 'off' )
    set( gca, 'fontsize', fs )
    
    % Plot connection curves
    for j = 1:len-1
        subplot( hand (m+3+j+tot*h)  )
        plot( [0 2*pi], [1 1]*mean(diagram(j).W), 'r--' )
        hold on
        N = pop( diagram(j).pre ).N;
        plot( diagram(j).angle, diagram(j).W );
        set( gca, 'XLim', [0 2*pi], 'XTick', [] )
        set( gca, 'YLim', 1.1*[minw maxw] )
        set( gca, 'YTickLabel', [] )
        str = sprintf( 'w: %s\nJp: %s\nJm: %s\n%s: %s', num2str( diagram(j).w ), num2str( diagram(j).Jp ), ...
                       num2str( diagram(j).Jm ), '\sigma', num2str( diagram(j).sgm ) );
        tx(j) = text( 0.05*pi, minw+1.05*(maxw-minw), str, 'VerticalAlignment', 'top', 'FontSize', 7 );
        tx(len-1+j) = text( 1.8*pi, minw+1.05*(maxw-minw), diagram(j).label, 'VerticalAlignment', ...
            'top', 'HorizontalAlignment', 'right', 'FontSize', fs, 'LineWidth', 2 );
        if j == n1-1 | j == len-1 
            xlabel( 'Vinkel (rad)' )
        end
    end
end
end

% Plot figure 6
cd( dirname )
figure(6)
clf
set( 6,'Position', [ 719 70 560 650 ] );
pos = get( gca, 'Position' );
hgt = pos(4);
btt = pos(2);
w = pos(3);
pos(3) = w*0.7;
for i = 0:P
    pos(4) = hgt*(1-(1-spac4*0.9)*i);
    figure( 6+2*i )
    hand(1+10*i) = subplot( 'Position', pos );
end
load APs.txt
x = APs(:,1);
y = APs(:,2);
if exist( 'Q', 'var' ) & size( Q,2 ) == 5
    [ tQ p ] = min( Q(:,1) );
elseif exist( 'Q' )
    tQ = 0;
    Q = [];
else
    tQ = 3000;
    Q = [];
end
tstart = Params(4);
tStop = Params(5);

% Plot data
pos(1) = pos(1)+0.7*w;
pos(3) = 0.3*w;
for i = 0:P
    figure( 6+2*i )
    % Plot rastergram
    subplot( hand( 1+10*i ) )
    plot( x, y, 'o', 'MarkerSize', 2 )
    grid on
    ylabel( 'cell #', 'FontSize', fs )
    title( 'Rastergram for E- och I-cellspopulationerna', 'FontSize', fs )
    xlabel( 'tid (ms)', 'fontsize', fs )
    set( gca, 'fontsize', fs )
    set( gca, 'XLim', [tstart tStop] )
    box on
    
    % plot queue
    if exist( 'Q', 'var' ) & size( Q,2 ) == 5
        ln = [];
        ln = [ ln ; line( [ Q(:,1), Q(:,1)+Q(:,2) ]', [ Q(:,3), Q(:,3) ]') ];
        ln = [ ln ; line( [ Q(:,1), Q(:,1)+Q(:,2) ]', [ Q(:,3)+Q(:,4), Q(:,3)+Q(:,4) ]') ];
        ln = [ ln ; line( [ Q(:,1), Q(:,1) ]', [ Q(:,3), Q(:,3)+Q(:,4) ]') ];
        ln = [ ln ; line( [ Q(:,1)+Q(:,2), Q(:,1)+Q(:,2) ]', [ Q(:,3), Q(:,3)+Q(:,4) ]' ) ];
        for j = 1:size( Q, 1 )
            txt = sprintf( '%s uA/mc2', num2str( Q(j,5) ) );
            text( Q(j,1), Q(j,3), txt, 'HorizontalAlignment', 'right' )
        end
        set( ln, 'Color', 'r' )
        set( ln , 'LineStyle', '-.' )
    end
    
    % Plot histogram
    pos(4) = hgt*(1-(1-spac4*0.9)*i);
    hand(2+10*i) = subplot( 'Position', pos );
    hold on
    grid on
    set( hand(2+10*i), 'XTick', [0:2.5:65] )
    set( hand(2+10*i), 'XTickLabel', ['  ';'  ';' 5';'  ';'10';'  ';'15';'  ';'20';'  ';'25';'  ';'30';'  ';'35';'  ';'40';'  ';'45';'  ';'50';'  ';'55';'  ';'60';'  ';'65'] )
    set( hand(2+10*i), 'YAxisLocation', 'right' )
    set( gca, 'fontsize', fs )
    xlabel( 'f (Hz)' )
    title( 'Histogram' )

    % Continue plotting rastergram and histogram
    NN = 0;
    for k = 1:nmod
      % rastergram
      subplot( hand( 1+10*i ) )
      if version == 0
          NI = 32;
          NE = 128;
      else
          NI = pop(2*k-1).N;
          NE = pop(2*k).N;
      end
      N = NE+NI;
      NN = NN + N;
      xx = find( y>=NN-N & y<NN );
      yy = y(xx);
      xx = x(xx);
      fS = length( find( yy>=NN-NE & yy<NN & xx< tQ & xx > 500) )/(tStop/1000*NE);
      if exist( 'Q' ) & size(Q,2) == 5
          fD = length( find( yy>=NN-NE & yy<NN & xx>tQ + Q(p,2) ) )/(tStop/1000*NE);
      else
          fD = 0;
      end
      fI = length( find( yy<NN-NE ) )/(tStop/1000*NI);
      line( [0 tStop], [NN-NE-0.5 NN-NE-0.5], 'Color', 'k', 'LineWidth', 2 )
      if NN > N
          line( [0 tStop], [NN-N-0.5 NN-N-0.5], 'Color', 'k', 'LineWidth', 2 )
      end
      tI = text( 0.1*tStop, NN-NE-0.05*NI, 'I', 'FontSize', fs+2, 'FontWeight', 'Bold', 'VerticalAlignment', 'top' ); 
      tE = text( 0.1*tStop, NN-0.05*NI, 'E', 'FontSize', fs+2, ...
		 'FontWeight', 'Bold', 'VerticalAlignment', 'top' );
      tA = text( 0.9*tStop, NN-0.05*NI, ['Area ' int2str(k)], 'FontSize', fs+2, ...
		 'FontWeight', 'Bold', 'VerticalAlignment', 'top', 'HorizontalAlignment', 'Right' );
      
      % Histogram
      % Show connection curve E->E
      % Find the cell with maximum activity
      subplot( hand(2+10*i) )
      if version == 0
          ind = 1;
          xC = Ee0N( :,1 );
          yC = Ee0N( :,2 );
      else
          tmp = max(find( pop( 2*k ).in == 2*k ));
          if isempty( tmp ) 
              xC = [ 0 2*pi ];
              yC = [ 0 0 ];
          else
              ind(k) = tmp;
              arr = pop( 2*k ).ar;
              xC = diagram( arrows( arr( ind(k) ) ).diag ).angle;
              yC = diagram( arrows( arr( ind(k) ) ).diag ).W;
          end
      end
      hind = NN-N-1:NN;
      h = histc( y, hind );
      h=h(2:end-1)/(tStop/1000);
      hind = hind(2:end-1);

      mm = find( h(NI+1:end) == max(h(NI+1:end) ) );
      mm = mm(1); % Index of cell with maximum activity
      M = max( 20, 10*ceil( max( h )/10 ) );
      xC = xC*(NE/N)/(2*pi/N); %Adjust width of curve
      xC = xC-NE/2+mm+NN-NE-1; % Midpoint position of connection curve at maximum activity (NN-NE-1)
      ind1 = find( xC<NN-NE );
      xC( ind1 ) = xC( ind1 ) + NE;
      ind2 = find( xC>=NN );
      xC( ind2 ) = xC( ind2 ) - NE; 
      if max( yC ) > 0 
          fac = 1/max(yC)*h(floor(mm+NI));
          yC = yC*fac;
      end
      [ xC ind ] = sort( xC );
      yC = yC(ind);
    
      plot( h(1:NI), hind(1:NI) )
      plot( h(NI+1:end), hind(NI+1:end) )
      plot( yC, xC, '--' )
      meanW = mean( yC );
      plot( [meanW meanW], [NN-NE NN-1], 'r--' )

      line( [0 65], [NN-NE-0.5 NN-NE-0.5], 'Color', 'k', 'LineWidth', 2 )
      if NN > N
          line( [0 65], [NN-N-0.5 NN-N-0.5], 'Color', 'k', 'LineWidth', 2 )
      end
      str = sprintf( 'fS: %.1f\nfD: %.1f\nfI: %.1f\n', fS, fD, fI );
      tx = text( 0.6*M, NN-0.05*NI, str, 'fontsize', fs, 'VerticalAlignment', 'top' );
    end
    box on
    line( [0.01*M 0.01*M], [0 NN], 'Color', 'k', 'LineWidth', 2 )
    set( gca, 'YLim', [0 NN] )
    set( hand(2+10*i), 'XLim', [0 M] )
    set( hand( 1+10*i ), 'YLim', [0 NN] )
end

% Uppforstoring i fig7
%figure(7)
%clf
%set( 7,'Position', [ 7 91 700 467 ] );
%t0 = [ tstart : (tStop-tstart)/no : tStop ];
%tlen = diff( t0 );
%t0 = sort( [ t0 t0(2:end-1) ] );
    
% subplots
% $$$ pos = get( gca, 'Position' );
% $$$ pos(4) = pos(4)*0.95;
% $$$ width = pos(3);
% $$$ spacing = 0.05;
% $$$ panelwidth = ( width - (no-1)*spacing ) / no;
% $$$ 
% $$$ cpos = pos;
% $$$ cpos(3) = 0.7*panelwidth;
% $$$ hpos = pos;
% $$$ hpos(3) = 0.3*panelwidth;
% $$$ hpos(1) = cpos(1)+cpos(3);
% $$$  
% $$$ for i = 1:no
% $$$   % rastergram
% $$$   hand2(2*i-1) = subplot( 'Position', cpos );
% $$$   t = find( x>=t0(2*i-1) & x<t0(2*i) );
% $$$   plot( x(t), y(t), 'o', 'MarkerSize', 2 )
% $$$   grid on
% $$$   line( [t0(2*i) t0(2*i)], [0 NN-1], 'Color', 'k', 'LineWidth', 2 )
% $$$   set( gca, 'fontsize', fs )
% $$$   set( gca, 'XTick', [t0(2*i-1) t0(2*i) ] )
% $$$   set( gca, 'XLim', [t0(2*i-1) t0(2*i) ] )
% $$$   set( gca, 'YLim', [ 0 NN ] )
% $$$   if i>1
% $$$     set( gca, 'YTickLabel', [] )
% $$$   else 
% $$$     ylabel( 'cell #', 'fontsize', fs )
% $$$   end
% $$$   NN = 0;
% $$$   for k = 1:nmod
% $$$     % rastergram
% $$$     subplot( hand2(2*i-1) )
% $$$     if version == 0
% $$$         NI = 32;
% $$$         NE = 128;
% $$$     else
% $$$         NI = pop(2*k-1).N;
% $$$         NE = pop(2*k).N;
% $$$     end
% $$$     N = NE+NI;
% $$$     NN = NN + N;
% $$$     line( [t0(2*i-1) t0(2*i)], [NN-NE-0.5 NN-NE-0.5], 'Color', 'k', ...
% $$$ 	  'LineWidth', 2 )
% $$$     if NN > N
% $$$         line( [0 tStop], [NN-N-0.5 NN-N-0.5], 'Color', 'k', 'LineWidth', 2 )
% $$$     end
% $$$     fE = length( find( y(t)>=NN-NE & y(t)<NN ) )/(tlen(i)/1000*NE);
% $$$     fI = length( find( y(t)<NN-NE & y(t)>= NN-N ) )/(tlen(i)/1000*NI);
% $$$     tI(i) = text( 0.1*tlen(i)+t0(2*i-1), NN-NE-0.05*NI, 'I', 'FontSize', 16, 'FontWeight', 'Bold', 'VerticalAlignment', 'top' ); 
% $$$     tE(i) = text( 0.1*tlen(i)+t0(2*i-1), NN-0.05*NI, 'E', 'FontSize', ...
% $$$ 		  16, 'FontWeight', 'Bold', 'VerticalAlignment', 'top' ); 
% $$$     str = sprintf( 'f\nfE: %.1f\nfI: %.1f\n', fE, fI );
% $$$     %tx = text( 0.6*M, NN-0.05*NI, str, 'fontsize', fs, 'VerticalAlignment', 'top' );
% $$$ 
% $$$     %histogram
% $$$     if length( y(t) ) > 0
% $$$         hand2(2*i) = subplot( 'Position', hpos );
% $$$         hind = NN-N-1:smooth:NN;
% $$$         h = histc( y(t), hind );
% $$$         h=h(2:end-1)/(tlen(i)*smooth/1000);
% $$$         M = 10*ceil( max(h)/10 );
% $$$         hind = hind(2:end-1);
% $$$         hold on
% $$$         plot( h(1:NI/smooth), hind(1:NI/smooth) )
% $$$         plot( h(NI/smooth+1:end), hind(NI/smooth+1:end) )
% $$$         grid on
% $$$         line( [0 65], [NN-NE-0.5 NN-NE-0.5], 'Color', 'k', 'LineWidth', 2 )
% $$$         if NN > N
% $$$             line( [0 65], [NN-N-0.5 NN-N-0.5], 'Color', 'k', 'LineWidth', 2 )
% $$$         end
% $$$     end
% $$$ 
% $$$   end
% $$$   box on
% $$$ 
% $$$   % Visa kopplingskurvan
% $$$   % finn maxaktivitets-cellen
% $$$   set( hand2(2*i), 'XTick', [10 20] )
% $$$   set( hand2(2*i), 'XTickLabel', ['  ';'20'] )
% $$$   set( hand2(2*i), 'YLim', [0 NN] )
% $$$   set( hand2(2*i), 'XLim', [0 M] )
% $$$   set( hand2(2*i), 'YTick', [0:20:NN] )
% $$$   set( hand2(2*i), 'YTickLabel', [] )
% $$$   set( hand2(2*i), 'XAxisLocation', 'top' )
% $$$   set( gca, 'fontsize', fs )
% $$$   
% $$$   cpos(1)=cpos(1)+panelwidth+spacing;
% $$$   hpos(1)=hpos(1)+panelwidth+spacing;
% $$$   box on
% $$$ end
% $$$ cpos(1) = cpos(1)-spacing/2;
% $$$ cpos(3) = 0.02;
% $$$ hand2(2*(no+1)) = axes( 'Position', cpos );
% $$$ t = text( 0.5, 0.5, fileName, 'Rotation', 90, 'fontsize', fs, 'HorizontalAlignment', 'center' );
% $$$ axis off
% $$$ 
% $$$ a = axes;
% $$$ pos = get( a, 'Position' );
% $$$ delete( a )
% $$$ a = axes( 'Position', pos );
% $$$ title( 'Forstoring av enskilda tidpunkter', 'fontsize', fs )
% $$$ axis off
% $$$ pos(2) = 0.2*pos(2);
% $$$ pos(4) = pos(2)+0.1;
% $$$ a = axes( 'Position', pos );
% $$$ t = text( 0.5, 0, 'tid (ms) samt frekvens (Hz)', 'fontsize', fs );
% $$$ set( t, 'HorizontalAlignment', 'center' )
% $$$ set( t, 'VerticalAlignment', 'bottom' )
% $$$ axis off;
% $$$ 
if P
    name = strcat( fileName, 'Page1.eps' ); 
    figure(8)
    set( 8, 'PaperUnits', 'centimeters' );
    set( 8, 'PaperType', 'A4');
    papersize = get( 8, 'PaperSize' );
    marg = 0.03;
    left = marg;
    width = papersize( 1 ) - 2 * left;
    bottom = marg;
    height = papersize( 2 ) - 2 * marg;
    myfiguresize = [ left, bottom, width, height ];
    set( 8, 'PaperPosition', myfiguresize );
    if pr < 3
        print
    end
    if pr > 1
        print( '-depsc2', name )
    end
    close( 8 )
end

if pr & wh > 1
    name = strcat( fileName, 'Page1.eps' ); 
    figure(7)
    set( 7, 'PaperUnits', 'centimeters' );
    set( 7, 'PaperType', 'A4');
    set( 7,'PaperOrientation','landscape');
    papersize = get( 7, 'PaperSize' );
    marg = 0.05;
    left = marg;
    width = papersize( 1 ) - 2 * left;
    bottom = marg;
    height = papersize( 2 ) - 2 * marg;
    myfiguresize = [ left, bottom, width, height ];
    set( 7, 'PaperPosition', myfiguresize );
    if pr < 3
        print
    end
    if pr > 1
        print( '-depsc2', name )
    end
end

cd( thisdir )

figure(5)
men = uimenu( 'Label', 'F&unctions' );
uimenu( men, 'Label', '&Power spectrum', 'Callback', 'menuCall(''corr'')');
uimenu( men, 'Label', 'Network &autocoherence', 'Callback', 'menuCall(''acoher'')');
uimenu( men, 'Label', 'Network cross co&herence', 'Callback', 'menuCall(''crcoher'')');
uimenu( men, 'Label', 'Network cross &correlation', 'Callback', 'menuCall(''crcorr'')');
uimenu( men, 'Label', '&Advanced', 'Callback', 'menuCall(''advanced'')');

figure(6)
% Since this is a function, while the menus will be called from outside
% the function, we can only pass variables to the function called from the 
% menu by saving these variables in a file called menuvar.mat. Please feel
% free to add any number of desired variables.
save menuvar APs netborder tstart tStop Q