Robust transmission in the inhibitory Purkinje Cell to Cerebellar Nuclei pathway (Abbasi et al 2017)

 Download zip file 
Help downloading and running models
Accession:229279

References:
1 . Abbasi S, Hudson AE, Maran SK, Cao Y, Abbasi A, Heck DH, Jaeger D (2017) Robust Transmission of Rate Coding in the Inhibitory Purkinje Cell to Cerebellar Nuclei Pathway in Awake Mice PLOS Computational Biology
2 . Steuber V, Schultheiss NW, Silver RA, De Schutter E, Jaeger D (2011) Determinants of synaptic integration and heterogeneity in rebound firing explored with data-driven models of deep cerebellar nucleus cells. J Comput Neurosci 30:633-58 [PubMed]
3 . Steuber V, Jaeger D (2013) Modeling the generation of output by the cerebellar nuclei. Neural Netw 47:112-9 [PubMed]
4 . Steuber V, De Schutter E, Jaeger D (2004) Passive models of neurons in the deep cerebellar nuclei: the effect of reconstruction errors Neurocomputing 58-60:563-568
5 . Luthman J, Hoebeek FE, Maex R, Davey N, Adams R, De Zeeuw CI, Steuber V (2011) STD-dependent and independent encoding of input irregularity as spike rate in a computational model of a cerebellar nucleus neuron. Cerebellum 10:667-82 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Cerebellum;
Cell Type(s): Cerebellum deep nucleus neuron;
Channel(s): I h; I T low threshold; I L high threshold; I Na,p; I Na,t; I K,Ca; I K;
Gap Junctions:
Receptor(s): AMPA; NMDA; GabaA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: GENESIS;
Model Concept(s): Synaptic Integration;
Implementer(s): Jaeger, Dieter [djaeger at emory.edu];
Search NeuronDB for information about:  GabaA; AMPA; NMDA; I Na,p; I Na,t; I L high threshold; I T low threshold; I K; I h; I K,Ca; Gaba; Glutamate;
/
codes
pandora-matlab-1.4compat2
classes
@tests_db
private
.cvsignore *
abs.m
addColumns.m
addLastRow.m
addRow.m
allocateRows.m
anyRows.m
approxMappingLIBSVM.m
approxMappingNNet.m
approxMappingSVM.m
assignRowsTests.m
checkConsistentCols.m
compareRows.m
corrcoef.m
cov.m
crossProd.m
dbsize.m
delColumns.m
diff.m
display.m
displayRows.m
displayRowsCSV.m
displayRowsTeX.m
end.m
enumerateColumns.m
eq.m
factoran.m
fillMissingColumns.m
ge.m
get.m *
getColNames.m
groupBy.m
gt.m
histogram.m
invarValues.m
isinf.m
isnan.m
isnanrows.m
joinRows.m
kmeansCluster.m
le.m
lt.m
matchingRow.m
max.m
mean.m
meanDuplicateRows.m
min.m
minus.m
mtimes.m
ne.m
noNaNRows.m
onlyRowsTests.m
physiol_bundle.m
plot.m
plot_abstract.m
plot_bars.m
plotBox.m
plotCircular.m
plotCovar.m
plotImage.m
plotrow.m
plotrows.m
plotScatter.m
plotScatter3D.m
plotTestsHistsMatrix.m
plotUITable.m
plotUniquesStats2D.m
plotUniquesStatsBars.m
plotUniquesStatsStacked3D.m
plotXRows.m
plotYTests.m
plus.m
princomp.m
processDimNonNaNInf.m
rankMatching.m
rdivide.m
renameColumns.m
rop.m
rows2Struct.m
set.m *
setProp.m *
setRows.m
shufflerows.m
sortrows.m
sqrt.m
statsAll.m
statsBounds.m
statsMeanSE.m
statsMeanStd.m
std.m
subsasgn.m
subsref.m
sum.m
swapRowsPages.m
tests_db.m
tests2cols.m
tests2idx.m
tests2log.m
testsHists.m
times.m
transpose.m
uminus.m
unique.m
uop.m
vertcat.m
                            
function a_db = joinRows(a_db, w_db, props)

% joinRows - Joins a_db rows with w_db rows having matching RowIndex values.
%
% Usage:
% a_db = joinRows(a_db, w_db, props)
%
% Description:
%   Concatenates columns of rows matching the join condition from the two
% databases. Each row index must appear only once in w_db. The created db
% preserves the ordering of w_db. See the multipleIndices option if there
% are several redundant index columns. Multiple pages in w_db are accepted
% (see keepNaNs option).
%   This function is the equivalent of a "right outer join" command in SQL, w_db
% being the database table on the right.
%
%   Parameters:
%	a_db: A tests_db object.
%	w_db: A tests_db object with a row index column.
%	props: A structure with any optional properties.
%	  indexColName: (Optional) Name of row index column
%	  	(default='RowIndex').
%	  keepNaNs: If 1, substitute NaN values for NaN indices. 
%		    (default=1, for multi-page DBs; 0, otherwise).
%	  multipleIndices: If 1, search for substitute RowIndex* columns for
%	  	indices with NaN values. It will fail if all indices are
%	  	NaNs. (default=0)
%	  keepIndex: If 1, don't delete the indexColName (default='RowIndex')
%		
%   Returns:
%	a_db: A tests_db object.
%
% See also: tests_db
%
% $Id$
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2004/10/16

% Copyright (c) 2007 Cengiz Gunay <cengique@users.sf.net>.
% This work is licensed under the Academic Free License ("AFL")
% v. 3.0. To view a copy of this license, please look at the COPYING
% file distributed with this software or visit
% http://opensource.org/licenses/afl-3.0.php.

vs = warning('query', 'verbose');
verbose = strcmp(vs.state, 'on');

if ~ exist('props', 'var')
  props = struct;
end

num_pages = dbsize(a_db, 3);
if num_pages > 1
  error(['Multiple pages (' num2str(num_pages) ...
         ') in a_db not supported. Choose one and rerun joinRows.']);
end

if isfield(props, 'indexColName')
  index_col_name = props.indexColName;
else
  index_col_name = 'RowIndex';
end

wd_db = w_db;
if ~isfield(props, 'keepIndex')
  % remove the index column from w_db
  wd_db = delColumns(w_db, index_col_name);
end
w_data = get(wd_db, 'data');

cols_cell1 = getColNames(a_db);
cols_cell2 = getColNames(wd_db);

% only keep a_db tests missing in w_db
a_db = onlyRowsTests(a_db, ':', ...
                     setdiff(cols_cell1, ...
                             intersect(cols_cell1, cols_cell2)));
data = get(a_db, 'data');

% get final size from w_db
num_pages = dbsize(w_db, 3);

% calculate size and initialize if we're keeping NaNs
keep_NaNs = false;
if num_pages > 1 || (isfield(props, 'keepNaNs') && props.keepNaNs == 1)
  keep_NaNs = true;
  size_db = dbsize(a_db);
  size_wdb = dbsize(wd_db);

  % initialize with NaNs
  new_data = ...
      repmat(NaN, [size_wdb(1), ...
                   size_db(2) + size_wdb(2), num_pages]);
end % keepNaNs

% for each page
for page_num = 1:num_pages

  joins = get(onlyRowsTests(w_db, ':', index_col_name, page_num), 'data');

  % below fails if all row indices are NaN in a row
  if isfield(props, 'multipleIndices') && any(isnan(joins))
    if verbose
      warning(['NaNs in ' index_col_name ' column. Proceeding with caution.']);
    end

    % Find all RowIndex columns
    row_index_cols = strmatch('RowIndex', fieldnames(get(w_db, 'col_idx')));

    % Then look for missing values in other columns
    all_joins = get(onlyRowsTests(w_db, ':', row_index_cols, page_num), 'data');
    all_non_nans = ~isnan(all_joins);
    for joins_row = 1:size(all_joins, 1)
      tmp_j = all_joins(joins_row, all_non_nans(joins_row, :));
      if isempty(tmp_j)
        joins(joins_row) = NaN;
      else
        joins(joins_row) = tmp_j(1);
      end
    end
  end

  non_nan_joins = ~isnan(joins);
  if keep_NaNs
    % keep NaNs instead of values from db
    new_data(non_nan_joins, :, page_num) = ...
        [ data(joins(non_nan_joins), :), w_data(non_nan_joins, :, page_num) ];
  else
    % TODO: could use addColumns in the simple case?
    %a_db = addColumns(onlyRowsTests(a_db, joins(non_nan_joins), ':'), ...
    %                  onlyRowsTests(w_db, non_nan_joins, ':'));
    % assume only one page
    new_data = ...
        [ data(joins(non_nan_joins), :), w_data(non_nan_joins, :) ];
  end

end % page_num

% Get the column names straight
cols_cell1 = fieldnames(get(a_db, 'col_idx'));
cols_cell2 = fieldnames(get(wd_db, 'col_idx'));
a_db = set(a_db, 'data', new_data);
a_db = set(a_db, 'col_idx', makeIdx({ cols_cell1{:}, cols_cell2{:} }));
a_db = set(a_db, 'id', [ get(a_db, 'id') ' joined with ' get(w_db, 'id')]);

Loading data, please wait...