function a_ps = param_tau_skewbell_v(param_init_vals, id, props)
  
% param_tau_skewbell_v - V-dep time constant product skewed bell shaped function, y = tau0 * exp(del*(x-V_half)/k) / (1+exp((x-V_half)/k)).
%
% Usage:
%   a_ps = param_tau_skewbell_v(param_init_vals, id, props)
%
% Parameters:
%   param_init_vals: Initial values of function parameters, p = [tau0 del V_half k].
%   id: A string identifying this function.
%   props: A structure with any optional properties.
% 	   (Rest passed to param_func)
%		
% Returns:
%	a_ps: param_func.
%
% Description:
%   This form is the theoretical result of using exponential Boltzmann
% functions for act and inact. See Eq (11) in Willms, Baro, Harris-Warrick
% and Guckenheimer (1999) for explanation. Note that v and s values
% must be the same with corresponding gate steady states. 
%
% See also: param_func, param_tau_2sigmoids_v
%
% $Id: param_tau_skewbell_v.m 128 2010-06-07 21:36:08Z cengiz $
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2010/12/16

  var_names = {'voltage [mV]', 'time constant [ms]'};
  param_names = {'tau0', 'del', 'V_half', 'k'};
  func_handle = @(p,x) (p.tau0 * exp(p.del .* (x-p.V_half) ./ p.k)) ./ (1 + exp((x-p.V_half) ./ p.k)) ;

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

  sig_param_ranges = ...
      [0 1e3; 0 1; -200 200; -1e3 1e3]';
  props = mergeStructs(props, ...
                       struct('xMin', -100, 'xMax', 100, ...
                              'paramRanges', [sig_param_ranges]));
  
  a_ps = ...
      param_func(var_names, param_init_vals, param_names, ...
                 func_handle, id, props);