RTXI 1.3
hdf/RTXIh5_MATLAB/getParameters.m
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines