% GETEXPT get time-series data from expt file % [T,C,L] = getexpt(expt) % expt : expt structure % T : interpolated time points % C : concentrations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [T,C,L] = getexpt(expt) num_wells = length(expt.samewells); % Extract labels L = zeros(6,num_wells); cmps = {'PGE2','PAR4','PAR1','U46619','ADP','CVX'}; for i = 1:num_wells str = expt.samewells(i).label; % remove parenthetical strings while true l = strfind(str,'('); if ~isempty(l) r = strfind(str(l+1:end),')') + l; if isempty(r) error(['Unbalanced paranteses for label',... expt.samewells(i).label]); else str(l:r) = []; end else break end end while true [tok,str] = strtok(str,[',',' ']); if ~isempty(str) if isempty(strfind(tok,'%')) && ... isempty(strfind(tok,'PRP')) % extract concentration ui = regexp(tok,'[pnum]M'); if ~isempty(ui) u = tok(ui); val = str2num(tok(1:ui-1)); switch u case 'p' b = 1e-12; case 'n' b = 1e-9; case 'u' b = 1e-6; case 'm' b = 1e-3; otherwise warning(['Could not detect units for label',... expt.samewells(i).label]); end else ui = regexp(tok,'[m]xEC50'); u = tok(ui); if isempty(ui) ui = regexp(tok,'xEC50'); end val = str2num(tok(1:ui-1)); switch u case 'm' b = 1e-3; case '' b = 1; otherwise warning(['Could not detect units for label',... expt.samewells(i).label]); end end [tok,str] = strtok(str,[',',' ']); j = strmatch(tok,cmps,'exact'); if length(j) ~= 1 warning(['Could not detect compound for label',... expt.samewells(i).label]); else try L(j,i) = val * b; catch disp(''); end end end else break end end end % Replace zeros with 3e-20 M %L(find(L==0)) = 3e-20; % Find longest time interval spanned by all runs min_time = min(expt.samewells(1).time(end,:)); for i = 2:num_wells if min_time > min(expt.samewells(i).time(end,:)); min_time = min(expt.samewells(i).time(end,:)); end end t = 1:1:ceil(min_time); T = zeros(length(t),num_wells); C = zeros(length(t),num_wells); for i = 1:num_wells time = expt.samewells(i).time; data = expt.samewells(i).data; num_rep = size(data,2); c = zeros(length(t),num_rep); for j = 1:num_rep c(:,j) = interp1(time(:,j),data(:,j),t,... 'linear','extrap'); end C(:,i) = mean(c,2); T(:,i) = t; end