Prob. Inference of Short-Term Synaptic Plasticity in Neocort. Microcircuits (Costa et al. 2013)

 Download zip file 
Help downloading and running models
Accession:149914
" ... As a solution (for Short Term Plasticity (STP) inference), we introduce a Bayesian formulation, which yields the posterior distribution over the model parameters given the data. First, we show that common STP protocols yield broad distributions over some model parameters. Using our result we propose a experimental protocol to more accurately determine synaptic dynamics parameters. Next, we infer the model parameters using experimental data from three different neocortical excitatory connection types. This reveals connection-specific distributions, which we use to classify synaptic dynamics. Our approach to demarcate connection-specific synaptic dynamics is an important improvement on the state of the art and reveals novel features from existing data."
Reference:
1 . Costa RP, Sjostrom PJ, van Rossum MC (2013) Probabilistic Inference of Short-Term Synaptic Plasticity in Neocortical Microcircuits Front. Comput. Neurosci. [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Synapse;
Brain Region(s)/Organism:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Short-term Synaptic Plasticity;
Implementer(s): Costa, Rui Ponte [ruipontecosta at gmail.com];
  
%%%%
%% Inferring TM model (GUI)
%%%%

function TM_GUI()

close all;
clear all;
clc;

global fig_dist
global fig_MAP;
fig_dist = -1;
fig_MAP = -1;

XLSpath = '';
tags_eTM = {'Name', 'D (s)', 'F (s)', 'U', 'F', 'R^2'};
tags_TMfacil = {'Name', 'D (s)', 'F (s)', 'U', 'R^2'};
tags_TM = {'Name', 'D (s)', 'U', 'R^2'};
colw = {150,40,40,40,40,40};

f = figure('Name','Inferring Tsodyks-Markram Model  v0.1','NumberTitle','off','MenuBar','none','ToolBar','none');
movegui(f,'center');

menu_item_method = uimenu(f, 'Label','Method');
menu_item_method_bayesian = uimenu(menu_item_method, 'Label','Bayesian','Callback',@onBayesianPanel);
%menu_item_method_mse = uimenu(menu_item_method, 'Label','MSE','Callback',@onMSEPanel);

%% Bayesian Panel
bayesian_panel = uipanel('Title','Bayesian Panel','FontSize',12,...
             'Position',[0 0 1 1],'Visible','on');
         
bp_options_panel = uipanel(bayesian_panel, 'Title','Options','FontSize',12,...
             'Position',[0.025 .65 .6 .32],'Visible','on');
         
bpop_age_text = uicontrol(bp_options_panel, 'Style','text','String','Age (days): ',...
          'Position',[2,73,70,25]);
      
bpop_age_edit = uicontrol(bp_options_panel, 'Style','edit','String','-1','BackgroundColor','w',...
          'Position',[65,77,40,25]);
         
%bpop_recpulse_cbox = uicontrol(bp_options_panel, 'Style','checkbox','String','Recovery pulses?',...
%          'Position',[10,55,120,25],...
%          'Callback',{@onRecPulses});
      
bpop_minpulses_text = uicontrol(bp_options_panel, 'Style','text','String','Min pulses: ',...
          'Position',[140,50,70,25]);
      
bpop_minpulses_edit = uicontrol(bp_options_panel, 'Style','edit','String','5','BackgroundColor','w',...
          'Position',[140+65,55,40,25]);%,'Max', 150, 'Min', 0.1);
      
bpop_freq_text = uicontrol(bp_options_panel, 'Style','text','String','Freq (Hz): ',...
          'Position',[2,25,70,25]);
      
bpop_freq_edit = uicontrol(bp_options_panel, 'Style','edit','String','30','BackgroundColor','w',...
          'Position',[65,31,40,25]);%,'Max', 150, 'Min', 0.1);
      
bpop_model_text = uicontrol(bp_options_panel, 'Style','text','String','Model: ',...
          'Position',[140,16,70,25]);
      
bpop_model_popup = uicontrol(bp_options_panel, 'Style','popupmenu','String',{'Extended TM (4 params)', 'TM with facil. (3 params)', 'TM (2 params)'},'BackgroundColor','w',...
          'Position',[140+60,20,120,25],...
          'Callback',{@updateModel});
         
bp_table_panel = uipanel(bayesian_panel, 'Title','MAP Solutions','FontSize',12,...
             'Position',[0.025 .1 .9 .40],'Visible','on');         

bp_table_panel = uitable(bp_table_panel,'ColumnName',tags_eTM,'ColumnWidth',colw,...
             'Position',[20 20 460 100]);
         
%bp_plot = uipanel(bayesian_panel, 'Title','Plot','FontSize',12,'Position',[0 0 1 1],'Visible','on');         


bp_loadfile_pbutton = uicontrol(bayesian_panel, 'Style','pushbutton','String','Load XLS File',...
          'Position',[400,345,80,25],...
          'Callback',@(obj,e)getSTP_XLSFile);
      
bp_loadfile_text = uicontrol(bayesian_panel, 'Style','text','String','',...
          'Position',[370,345-25,140,25]);
      
bp_run_pbutton = uicontrol(bayesian_panel, 'Style','pushbutton','String','Run',...
          'Position',[400,280,80,25],'Enable','off',...
          'Callback',{@runBayesianInference});
      
bp_save_pbutton = uicontrol(bayesian_panel, 'Style','pushbutton','String','Save plots',...
          'Position',[400,240,80,25],'Enable','off',...
          'Callback',{@savePlots});      
      
    
         
%% MSE Panel

%mse_panel = uipanel('Title','MSE Panel','FontSize',12,...
%             'Position',[0 0 1 1],'Visible','off');
         
%msep_loadfile_pbutton = uicontrol(mse_panel, 'Style','pushbutton','String','Load XLS File',...
%          'Position',[.5,.5,70,25],...
%          'Callback',{@getSTP_XLSFile});         
        

function file_path=getSTP_XLSFile(hObject, eventdata)   
    
    [FileName,PathName,FilterIndex] = uigetfile('*.xls','Select the STP XLS file', ['data' filesep() 'ePhys']);
    if(FileName~=0)
        set(bp_loadfile_text,'String',FileName);
        set(bp_run_pbutton,'Enable','on');        
        XLSpath = [PathName FileName];
    end
end

function runBayesianInference(hObject, eventdata)   
    set(bp_run_pbutton,'Enable','Off','String','Running..');
    if(fig_dist>-1 && fig_MAP>-1)
        set(bp_save_pbutton,'Enable','off');
        close(fig_dist);
        close(fig_MAP);
    end
    pause(1);
    [sols names rsq fig_dist fig_MAP] = TM_Bayesian(XLSpath, get(bpop_model_popup,'Value'),...
        str2double(get(bpop_freq_edit,'String')), str2double(get(bpop_minpulses_edit,'String')), str2double(get(bpop_age_edit,'String')));
    
    if(~isempty(sols))
        sols = [names num2cell([sols rsq])];
        set(bp_table_panel,'Data',sols);    
        set(bp_save_pbutton,'Enable','on');
        disp('>>> Done')
    end
    set(bp_run_pbutton,'Enable','On','String','Run');
end


function savePlots(hObject, eventdata)   
    [file,path] = uiputfile('*.pdf','Save Plots As','TM_plot');
    if(isequal(file,0)==0 && isequal(file,0)==0)
        export_fig([path file(1:end-4) '_posterior.pdf'], fig_dist);
        export_fig([path  file(1:end-4) '_MAP.pdf'], fig_MAP);
        disp([path file(1:end-4) '_posterior.pdf']);
        disp([path file(1:end-4) '_MAP.pdf']);
    end    
end

function updateModel(hObject, eventdata)
    v=get(bpop_model_popup,'Value');
    if(v==1)
        set(bp_table_panel,'ColumnName',tags_eTM);
    elseif (v==2)
        set(bp_table_panel,'ColumnName',tags_TMfacil);
    elseif (v==3)
        set(bp_table_panel,'ColumnName',tags_TM);
    end
    
end

function onRecPulses(hObject, eventdata)
    s=get(bpop_recpulse_cbox,'Value');
    if(s)
        set(bpop_minpulses_edit,'Enable','off');
        set(bpop_minpulses_edit,'String','5');
    else
        set(bpop_minpulses_edit,'Enable','On');
    end    
    
end

function onBayesianPanel(hObject, eventdata)   
    set(bayesian_panel,'Visible','on');
    set(mse_panel,'Visible','off');
end

function onMSEPanel(hObject, eventdata)   
    set(bayesian_panel,'Visible','off');
    set(mse_panel,'Visible','on');
end

end

Loading data, please wait...