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

 Download zip file 
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.
References:
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]
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 showCatalog( name, savename, DoPlot, rows, cols, alt_title )

% showCatalog displays a series of pages with simulations all
% belonging to a simulation series. By clicking on a graph, it can
% be enlarged. showCatalog should be in the same catalog as
% showConnMulti.m, showBig.m, bumpanalysis.m
%
% name  : is either a path or a file name. 
%         1. When name is a path, it is a path to the catalog which
%            contains the simulations to be plotted. Those
%            simulations should be located in directories found in
%            a subdirectory of that path named DATA.
%         2. When name is a file name, it should be a file name
%            containing the name SERIES. That file contains the
%            simulations which are to be plotted
% savename: The name of the eps output file
% DoPlot: if DoPlot = 0 or is left out, the figure is plotted but not printed
%         if DoPlot = 1, the figure is both plotted and printed
% rows  : Number of rows on each page
% cols  : Number of columns on each page
% alt_title: An alternative title. These choices are possible:
%            1: the X->E connection strength
%
% Change path names to suit your preferences. Places are marked % CHANGE %
rratePPC = [];
rratePFC = [];
if nargin < 1 | nargin > 6
    disp( 'usage1: showCatalog( name ), ' )
    disp( 'usage2: showCatalog( name, savename ), ' )
    disp( 'usage3: showCatalog( name, savename, DoPlot ), ' )
    disp( 'usage4: showCatalog( name, savename, DoPlot, rows, cols ), ' )
    disp( 'usage5: showCatalog( name, savename, DoPlot, rows, cols, alt_title ), ' )
    disp( 'Do "help showCatalog" for further information' )
    return
end
if nargin < 6
    alt_title = -1;
end
if nargin < 5
    rows = 4;
    cols = 3;
elseif isempty(cols) || isempty(rows)
    rows = 4;
    cols = 3;
end    
if nargin < 3
    DoPlot = 0;
elseif isempty(DoPlot)
    DoPlot = 0;
end
if nargin < 2
    save = 0;
elseif length(savename) == 0
    save = 0;
else
    save = 1;
end
thisdir = pwd;
fs = 10; % Fontsize in plots

% Is name a relative path or file name?
if ispc
    home = 'C:\Documents and Settings\Fredrik Edin\Mina Dokument\Neuron\STANDARDFILER';  % CHANGE %    
    pathdelimiter = '\';
else
    home = '/E:';
    pathdelimiter = '/';
end
if ~( name(1:3) == 'C:\' )
    name = strcat( thisdir, pathdelimiter, name );
end
if( name(1) == '~' )
    name = strcat( home, name(3:end) );
end

% Put all the directories containing simulations to be 
% displayed in one long list

% alt 1: name is a path
if isempty( findstr( name, 'SERIES' ) )
    name = strcat( name, pathdelimiter, 'DATA' );
    d = getTree( name );
    d(1) = [];
    if length( d ) == 0
        disp( 'No data in this catalog' )
        return
    end
else
% alt 2: name is a file named SERIES
    fid = fopen( name );
    if fid == -1
        disp( 'Error: Your file name is invalid' )
        return
    end
    d = [];
%     [ txt, pos ] = readUntil( fid, pathdelimiter );
    [ txt, pos ] = readUntil( fid, '/\' );
    while pos >= 0
        if isunix
            if( txt(end) == '~' )
                txt = '~';
            else
                txt = '';
            end
            txt = strcat( txt, readUntil( fid, char(10) ) ); % char(10) = newline
        else
            txt = strcat( 'C:', readUntil( fid, char(10) ) ); % char(10) = newline
        end
        d = [ d ; struct( 'name', txt ) ];
%         [ txt, pos ] = readUntil( fid, pathdelimiter );
        [ txt, pos ] = readUntil( fid, '/\' );
    end
    fclose(fid);
    if length( d ) == 0
        disp( 'No data in this catalog' )
        return
    end
end
if isunix
    str = '/afs/nada.kth.se/home/o/u1sxc4xo';    % CHANGE %
    pos = findstr( name, str );
    if pos
        titlename = strcat( '~', name( length( str ) + 1 : end ) );
    else
        titlename = name;
    end
end

% plot the data in the catalogs in d
len = length( d );

% How many pages?
pages = floor( (len-1) / (rows*cols) ) + 1;
for i = 1: pages
    figure ( i )
    clf
    if isunix
        set( i,'Position', [ 300 * mod( ( i ), 2 ) 100 720 659 ] );
    else
        set( i,'Position', [ 558 * mod( ( i ), 2 ) 35 720 685 ] );
    end
end

hand = zeros( 1, len ); % subplot handles
height = 0.93 / rows;
width = 0.90 / cols;
for ind = 1 : len
    page = floor( (ind-1) / ( rows*cols ) ) + 1;
    subp = ind - ( page-1 ) * rows * cols; 
    figure( page )
    if subp == 1
        clf
    end
    bottom = 1 - height * ( floor( (subp-1) / cols ) + 1 );
    left = 0.1 + mod( (subp-1), cols ) * width;
    hand( ind ) = subplot( 'Position', [ left bottom width-0.05 height-0.07 ]);
end

for ind = 1 : len
    rastname = d(ind).name;
    pos = find( rastname == '/' | rastname == '\' );
    rastname = rastname( pos(end)+1:end );
    filename = strcat( d(ind).name, pathdelimiter, 'APs.txt' );

    % This section is used to convert old files with no .txt extensions to
    % the new ones
    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
    
    % This is done because sometimes the simulations produces error outputs
    % in the data files which is removed here
    try
        load( filename )
    catch
        fid = fopen(filename);
        str = fread(fid);
        fclose(fid);
        errors = find(str > 57);
        linebreaks = find(str == 10);
        linebreaks_after_error = linebreaks(find(linebreaks>errors(end)));
        start = linebreaks_after_error(1) + 1;
        txtAPs = char(str(start:end)');
        APs = str2num(txtAPs);
        fid = fopen(filename,'w');
        fprintf(fid,'%s',txtAPs);
        fclose(fid)
    end
    x = APs(:,1);
    y = APs(:,2);
    rratePPC = [rratePFC length(find(x>4000 & y<160))];
    rratePFC = [rratePFC length(find(x>4000 & y>=160))];
    disp(['rate PPC: ' int2str(length(find(x>4000 & y<160)))])
    disp(['rate PFC: ' int2str(length(find(x>4000 & y>=160)))])
    filename = strcat( d(ind).name, pathdelimiter, 'Params.txt' );
    % This section is used to convert old files with no .txt extensions to
    % the new ones
    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
    load( filename )
    filename = strcat( d(ind).name, pathdelimiter, 'C.txt' );
    % This section is used to convert old files with no .txt extensions to
    % the new ones
    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
    load( filename )
    C = reshape(C,24,length(C)/24);
    if sum(C(12,find(C(1,:)==1 & C(2,:)>0))) > 0
        relNMDA = sum( C(12,find(C(1,:)==1 & C(2,:)>0)) .* C(8,find(C(1,:)==1 & C(2,:)>0))  )/sum(C(12,find(C(1,:)==1 & C(2,:)>0))); % of total synaptic weight
    else
        relNMDA = 0;
    end
    %relNMDA = C( 32 );
%     disp([2*C(12,9)/sum(C(12,[9 7])) 2*C(12,10)/sum(C(12,[8 10]))])  
%     disp([sum(C(12,[9 7])) sum(C(12,[8 10])) sum(C(12,[1 3])) sum(C(12,[2 4]))])  
%     disp([C(12,9) C(12,10)])  
    version = Params(1);
    if version > 1 
        filename = strcat( d(ind).name, pathdelimiter, 'Q.txt' );
        % This section is used to convert old files with no .txt extensions to
        % the new ones
        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
        load( filename )
	if version == 2
	    tStart = 0;
	    Icelltyp = 1;
	    tmp = [ Params(1:3) tStart Params(4:5) 100 100];
	    for i = 1:nmod
	        tmp = [ tmp Icelltyp Params(3+3*i:5+3*i) ];
	    end
	    Params = tmp;
            tmp = Params(1:8);
            for i = 1:Params(2)
                tmp = [ tmp Params(5+4*i) 1000 Params(7+4*i) Params(6+4*i) 1000 Params(8+4*i) ];
            end
            Params = tmp;
        elseif version > 2
	    tStart = Params(4);
            %filename = strcat( d(ind).name, '/', 'X' );
            %clear X
            %if exist(filename) == 2
            %    load( filename )
            %    if length(X)>0
            %        if X(1) == 4 | X(1) == 5
            %            r_c = X(end)/(X(end)+X(end-1) );
            %            relNMDA = r_c;
            %        end
            %    end
            %end      
        end
        if version == 3
            tmp = [ Params(1:6) ; 100 ; 100 ];
            for i = 1:Params(2)
                try
                    tmp = [ tmp ; Params(3+4*i) ; 1000 ; Params(5+4*i) ; Params(4+4*i) ; 1000 ; Params(6+4*i) ];
                catch
                    keyboard
                end
            end
            Params = tmp;
        elseif version == 4
            tmp = [ Params(1:6) ; 100 ; 100 ; Params(7:end) ];
            Params = tmp;
        end
    end
  
    page = floor( (ind-1) / ( rows*cols ) ) + 1;
    subp = ind - ( page-1 ) * rows * cols;
    figure( page ) 
    subplot( hand( ind ) )
    
    % specify call-back routine to be able to enlarge single simulations
    str = strcat( 'showBig(  ''',d(ind).name,''' )' );
    set( hand( ind ), 'ButtonDownFcn', str );

    % plot the rastergrams of the cell
    hold on
    plot( x, y, '.', 'MarkerSize', 1 )
    set( gca, 'box', 'on' )
    
    % Plot text and draw lines in graph
    
    % If net is the old 2-population version
    if version == 1
        NI = 2^( ceil( log2( max( y )/5 ) ) );
        NE = 4*NI;
        N = NI+NE;
        ipos = NI;
        epos = N;
        xpos = NI;
        tStop = 100 * ceil( max( x )/100 );
        tQ = 1000;
        xQ = find( x<tQ );
        line( [0 tStop], [NI-0.5 NI-0.5], 'Color', 'k', 'LineWidth', 2 )
	
    % else if net is the new multimodule version
    else
        N = 0;
        tStop = Params(5);
	if length(Q) > 0
            tQ = Q(1);
	else
	    tQ = Params(4);
	end
        %tQ = Q(1);
        %xQ = find( x<tQ );
        for i = 1:Params(2)
            NI = Params(5+6*i);
            NE = Params(8+6*i);
            ipos(i) = N+NI;
            epos(i) = N+NE+NI;
            xpos(i) = N+NI;
            line( [0 tStop], [N+NI-0.5 N+NI-0.5], 'Color', 'k', 'LineWidth', 2 )
            if i>1
                line( [0 tStop], [N-0.5 N-0.5], 'Color', 'k', 'LineWidth', 2 )
            end
            N = N+NI+NE;
        end
    end
        
    netborder = [ 0 ; cumsum(Params(11:3:end))];
    Efreq = [];
    for i = 2:2:length(netborder)
        Efreq = [Efreq length(find(y>=netborder(i) & y<netborder(i+1))) ...
		 / ((netborder(i+1)-netborder(i))*((tStop-tQ)/1000))];
    end
    Efreq = mean(Efreq);		 
    if alt_title == -1
        title( sprintf( '%s, %s%% f:%.2f Hz', rastname, int2str(100*relNMDA), Efreq ), 'Fontsize', fs )
    elseif alt_title == 1
        title( sprintf( '%s %s %s', 'g_{X\rightarrowE}:', num2str(C(12,2)), 'mS/cm^2' ), 'Fontsize', fs )
    end
    %title( sprintf( '%s, %s %%', rastname, int2str(100*relNMDA) ), 'Fontsize', fs )
    set( gca, 'YLim', [0 N] )
    set( gca, 'XLim', [tStart tStop] )
    set( gca, 'Fontsize', fs )
    if mod((subp-1), cols )
        set( gca, 'YTickLabel', [] )
    end

end

% set titles and labels
% for i = 1 : pages
%     figure( i )
    %thand( i ) = axes('Position',[0 0 1 1],'Visible','off');
    %set(gcf,'CurrentAxes',thand( i ) )
    %xl(i) = text(.5,.03,'Time (ms)','FontSize',14, 'HorizontalAlignment', 'center');
    %yl(i) = text(.03, .5, 'Cell #', 'Rotation', 90, 'Fontsize', fs , 'VerticalAlignment', 'middle');
    %tit(i) = text(.5, .99, sprintf( 'Rastergrams in %s', titlename ), 'Fontsize', fs, 'HorizontalAlignment', 'center', 'VerticalAlignment', 'top');
% end

% adjust paper size for printing
for i = 1 : pages
    figure( i )    
    set( gcf, 'PaperUnits', 'centimeters' );
    set( gcf, 'PaperType', 'A4');
    papersize = get( gcf, 'PaperSize' );
    left = 0.02;
    bottom = 0.02;
    width = papersize( 1 ) - 2 * left;
    height = papersize( 2 ) - 2 * left;
    myfiguresize = [ left, bottom, width, height ];
    set( gcf, 'PaperPosition', myfiguresize );
    if DoPlot
        print
    end
    if save
        print( i, '-depsc2', [savename '_p' int2str(i) '.eps'])
    end
end

disp(['rate PPC: ' int2str(mean(rratePPC)) ', rate PFC: ' int2str(mean(rratePFC))]);

Loading data, please wait...