-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathanalyzeData.m
More file actions
127 lines (97 loc) · 4.32 KB
/
Copy pathanalyzeData.m
File metadata and controls
127 lines (97 loc) · 4.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
function analyzeData
%ANALYZEDATA Summary of this function goes here
% Detailed explanation goes here
timestamp = datestr(now,'yyyy-mm-dd HH-MM');
[githubDir,~,~] = fileparts(pwd);
d12packDir = fullfile(githubDir,'d12pack');
addpath(d12packDir);
projectDir = '\\root\projects\Acuity_MtSinai';
% projectDir = '/Users/geoff/Desktop/Acuity MtSinai';
dataDir = fullfile(projectDir,'croppedData');
saveDir = fullfile(projectDir,'tables');
ls = dir([dataDir,filesep,'*.mat']);
% [~,idxMostRecent] = max(vertcat(ls.datenum));
for iFile = 1:numel(ls)
dataName = ls(iFile).name;
dataPath = fullfile(dataDir,dataName);
saveName = regexprep(dataName,'\.mat','');
load(dataPath);
nObj = numel(objArray);
h = waitbar(0,'Please wait. Analyzing data...');
rn1 = datestr(datetime(0,0,0,0,0,0):duration(1,0,0):datetime(0,0,0,23,0,0),'HH:MM - ');
rn2 = datestr(datetime(0,0,0,1,0,0):duration(1,0,0):datetime(0,0,0,24,0,0),'HH:MM');
RowNames = cellstr([rn1,rn2]);
RowNames = [RowNames;{'Mean'}];
for iObj = 1:nObj
obj = objArray(iObj);
if isa(obj,'d12pack.HumanData')
idxKeep = obj.Observation & obj.Compliance & ~obj.Error & ~obj.InBed;
else
idxKeep = obj.Observation & ~obj.Error;
end
t = obj.Time(idxKeep);
ai = obj.ActivityIndex(idxKeep);
lux = obj.Illuminance(idxKeep);
cla = obj.CircadianLight(idxKeep);
cs = obj.CircadianStimulus(idxKeep);
try
date0 = dateshift(t(1),'start','day');
catch
continue
end
dateF = dateshift(t(end),'start','day');
dates = date0:calendarDuration(0,0,1):dateF;
nDates = numel(dates);
tb = array2table(nan(25,nDates));
tb.Properties.VariableNames = cellstr(datestr(dates,'mmm_dd_yyyy'));
tb.Properties.RowNames = RowNames;
aiTB = tb;
luxTB = tb;
claTB = tb;
csTB = tb;
coverageTB = tb;
aiTB.Properties.DimensionNames{1} = 'Activity Index';
luxTB.Properties.DimensionNames{1} = 'Illuminance';
claTB.Properties.DimensionNames{1} = 'Circadian Light';
csTB.Properties.DimensionNames{1} = 'Circadian Stimulus';
coverageTB.Properties.DimensionNames{1} = '# of Samples';
coverageTB.Properties.RowNames{25} = 'Total';
for iCol = 1:nDates
for iRow = 1:24
idx = t >= (dates(iCol)+duration(iRow-1,0,0)) & t < (dates(iCol)+duration(iRow,0,0));
if any(idx)
aiTB{iRow,iCol} = mean(ai(idx));
luxTB{iRow,iCol} = mean(lux(idx));
claTB{iRow,iCol} = mean(cla(idx));
csTB{iRow,iCol} = mean(cs(idx));
end
coverageTB{iRow,iCol} = sum(idx);
end
idx = t >= dates(iCol) & t < (dates(iCol)+duration(24,0,0));
aiTB{25,iCol} = mean(ai(idx));
luxTB{25,iCol} = mean(lux(idx));
claTB{25,iCol} = mean(cla(idx));
csTB{25,iCol} = mean(cs(idx));
coverageTB{25,iCol} = sum(idx);
end
sheet = obj.ID;
aiName = [saveName,' Mean AI','.xlsx'];
aiPath = fullfile(saveDir,aiName);
writetable(aiTB,aiPath,'Sheet',sheet,'WriteVariableNames',true,'WriteRowNames',true);
luxName = [saveName,' Mean Lux','.xlsx'];
luxPath = fullfile(saveDir,luxName);
writetable(luxTB,luxPath,'Sheet',sheet,'WriteVariableNames',true,'WriteRowNames',true);
claName = [saveName,' Mean CLA','.xlsx'];
claPath = fullfile(saveDir,claName);
writetable(claTB,claPath,'Sheet',sheet,'WriteVariableNames',true,'WriteRowNames',true);
csName = [saveName,' Mean CS','.xlsx'];
csPath = fullfile(saveDir,csName);
writetable(csTB,csPath,'Sheet',sheet,'WriteVariableNames',true,'WriteRowNames',true);
coverageName = [saveName,' Analysis Coverage','.xlsx'];
coveragePath = fullfile(saveDir,coverageName);
writetable(coverageTB,coveragePath,'Sheet',sheet,'WriteVariableNames',true,'WriteRowNames',true);
waitbar(iObj/nObj);
end
close(h);
end
end