![]() |
RTXI 1.3
|
00001 function [parameter,numParameters] = getParameters(fname,trialNum) 00002 % [parameter,numParameters] = getParameters(fname,trialNum) 00003 % 00004 % This function returns all the parameters used in the specified trial of 00005 % an RTXI HDF5 file. 00006 % 00007 % AUTHOR: Risa Lin 00008 % DATE: 10/31/2010 00009 00010 if nargin < 2 00011 if (hasfield(fname,'parameters')) 00012 printParameters(fname); 00013 return 00014 else 00015 trialNum = 1; 00016 end 00017 end 00018 00019 fileinfo = rtxi_read(fname); 00020 00021 if trialNum>fileinfo.numTrials 00022 error('There are only %i trials in this file.\n',fileinfo.numTrials) 00023 end 00024 00025 numParameters = size(fileinfo.GroupHierarchy(1).Groups(trialNum).Groups(2).Datasets,2); 00026 parameter.parameterName = cell(numParameters,1); 00027 parameter.values = cell(numParameters,1); 00028 parameter.modelName = cell(numParameters,1); 00029 00030 eval(['ds = double(hdf5read(fname,''Trial',num2str(trialNum),'/Downsampling Rate''));']) 00031 eval(['trial.exp_dt = double(hdf5read(fname,''Trial',num2str(trialNum),'/Period (ns)''))*1e-9;']) 00032 trial.data_dt = trial.exp_dt*ds; 00033 00034 for (p=1:numParameters); 00035 fullName = fileinfo.GroupHierarchy(1).Groups(trialNum).Groups(2).Datasets(p).Name; 00036 nameStart = findstr(fullName, '/'); 00037 nameEnd = findstr(fullName,':'); 00038 00039 dset = hdf5read(fileinfo.GroupHierarchy(1).Groups(trialNum).Groups(2).Datasets(p)); 00040 00041 parameter.modelName{p} = fullName(nameStart(end)+1:nameEnd-2); 00042 parameter.parameterName{p} = fullName(nameEnd+2:end); 00043 00044 % test if it's a comment by testing for string type 00045 00046 if (strcmp(fileinfo.GroupHierarchy(1).Groups(trialNum).Groups(2).Datasets(p).Datatype.Class,'H5T_STRING')) 00047 parameter.values{p} = dset(1).Data; 00048 for i=2:size(dset,1) 00049 parameter.values{p} = [parameter.values{p} dset(i).Data]; 00050 end 00051 else 00052 % test if there have been changes to the parameter 00053 parameter.values{p} = dset(1).Data; 00054 parameter.values{p}{1,1} = double(parameter.values{p}{1,1})*trial.data_dt; 00055 for i=2:size(dset,1) 00056 parameter.values{p} = [parameter.values{p};dset(i).Data]; 00057 parameter.values{p}{i,1} = double(parameter.values{p}{i,1})*trial.data_dt; % convert time of parameter change to s 00058 end 00059 end 00060 00061 end 00062 00063 end 00064 00065 function strtime = convertTime(time) 00066 hour = time/3600; 00067 minute = rem(hour,1)*60; 00068 second = rem(minute,1)*60; 00069 hour = floor(hour); 00070 minute = floor(minute); 00071 00072 if hour < 10; strtime = ['0',num2str(hour)]; else; strtime = num2str(hour);end 00073 if minute < 10; strtime = [strtime,':0',num2str(minute)]; else; strtime = [strtime,':',num2str(minute)];end 00074 if second < 10; strtime = [strtime,':0',num2str(second)]; else; strtime = [strtime,':',num2str(second)];end 00075 end