function a_data = data_L1_passive(data_vc, model_f, id, props)

% data_L1_passive - Holds passive recordings from L1 cells.
%
% Usage:
% a_data = data_L1_passive(data_vc, model_f, id, props)
%
% Parameters:
%   data_vc: A voltage_clamp object with the data.
%   model_f: Passive model to fit the data (e.g., param_Re_Ce_cap_leak_act_int_t)
%   id: Identification string.
%   props: A structure with any optional properties.
%
% Returns a structure object with the following fields:
%   model_f, data_vc.
%
% Description:
%   Encapsulates the data and provides functions that find fits and return plots and
% statistics.
%
% General methods of data_L1_passive objects:
%   data_L1_passive		- Construct a new data_L1_passive object.
%
% Additional methods:
%   See methods('data_L1_passive')
%
% See also: voltage_clamp, param_func, param_Re_Ce_cap_leak_act_int_t
%
% $Id: data_L1_passive.m 234 2010-10-21 22:06:52Z cengiz $
%
% Author: Cengiz Gunay <cgunay@emory.edu>, 2010/10/21

% Copyright (c) 2007-2010 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.

% TODO: 
% - this can be a subclass of model_data_vcs

if nargin == 0 % Called with no params
  a_data = struct;
  a_data.model_f = param_func;
  a_data.data_vc = voltage_clamp;
  a_data.id = '';
  a_data = class(a_data, 'data_L1_passive');
elseif isa(data_vc, 'data_L1_passive') % copy constructor?
  a_data = data_vc;
else
  if ~ exist('props', 'var')
    props = struct;
  end

  a_data = struct;
  a_data.model_f = defaultValue('model_f', param_func);
  a_data.data_vc = data_vc;
  a_data.id = defaultValue('id', [ get(a_data.data_vc, 'id') ]);

  a_data = class(a_data, 'data_L1_passive');
end