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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
tic
%% open/read file and set up Environment
%clear;clc;close all
activateCEDS64

% Start Time
START_TIME = 0;
%AstSamples = floor(START_TIME * 1000);
AstSamples = 1;
% Wavelength
WAVELENGTH = 999;
% path to file


files = [
    %"Z:\1_Ruth Empson\151217 VOR\segment_1.smr"
    %"Z:\1_Ruth Empson\151217 VOR\segment_2.smr"
    %"Z:\1_Ruth Empson\151217 VOR\segment_3.smr"
    "Z:\1_Ruth Empson\151217 VOR\segment_4.smr"
    "Z:\1_Ruth Empson\151217 VOR\segment_5.smr"
    "Z:\1_Ruth Empson\151217 VOR\segment_6.smr"
    "Z:\1_Ruth Empson\151217 VOR\segment_7.smr"
    "Z:\1_Ruth Empson\151217 VOR\segment_8.smr"
    "Z:\1_Ruth Empson\151217 VOR\segment_9.smr"
    %"Z:\1_Ruth Empson\151217 VOR\segment_10.smr"
    ];

% Pre-allocate Vectors
offTotal = zeros(WAVELENGTH + 1, 1);
offCount = 0;
onTotal = zeros(WAVELENGTH + 1, 1);
onCount = 0;
badCount = 0;
sineTotal = zeros(WAVELENGTH + 1,1);

for q = 1:length(files)
    fhand1 = CEDS64Open(files{q});
    fprintf('\nSTARTING PART: %d\n', q)
    %% Gather data from specific channels
    % sineWave channel (8)
    [ ~, sineWave, ~ ] = CEDS64ReadWaveF(fhand1, 1, 600000000, 0);

    % ePhys channel (11)
    [ ~, ePhys, ~ ] = CEDS64ReadWaveF(fhand1,32, 600000000, 0);

    % light / dark channel (9)
    [ ~, tickTimes] = CEDS64ReadMarkers(fhand1, 9, 200, 0);


    %% CREATE TIMELINE OF 1s & 0s FOR ON/OFF LIGHT

    lightonoff = zeros(length(ePhys),1);

    for j = 1:length(tickTimes)
        if tickTimes(j).m_Code1 == 1
            windowStart = tickTimes(j).m_Time / 100;
            % if the file ends with the light on, then use end of file
            try
                windowEnd = tickTimes(j+1).m_Time / 100;
            catch
                windowEnd = length(lightonoff);
            end
            oneVec = ones(windowEnd - windowStart, 1);
            lightonoff(windowStart:windowEnd-1) = oneVec;
        end
    end



    %% PLOT EACH WAVE

    % how many sine waves can we use? 
    waveCount = floor((length(sineWave) - AstSamples) / WAVELENGTH);

    currentLocation = AstSamples;

    


    for i = 1:(waveCount - 1)

        hold on
        % get the proper ephys and sinewave slice
        waveform = ePhys( currentLocation : ( currentLocation + WAVELENGTH ));
        sineWaveSlice = sineWave( currentLocation : ( currentLocation + WAVELENGTH ));
        sineTotal = sineTotal + sineWaveSlice;

        % plot the slice
        figure(1)
        plot(sineWaveSlice, 'k')


        % light on?
        if lightonoff(currentLocation, 1) == 1
            if lightonoff(currentLocation + WAVELENGTH, 1) == 1
                onTotal = onTotal + waveform;
                onCount = onCount + 1;
                figure(2)
                plot(waveform,'k')
            else
                badCount = badCount + 1;
            end
        % light off?
        elseif lightonoff(currentLocation, 1) == 0
            if lightonoff(currentLocation + WAVELENGTH, 1) == 0
                offTotal = offTotal + waveform;
                offCount = offCount + 1;
                figure(3)
                plot(waveform,'k')
            else
                badCount = badCount + 1;
            end
        end

        currentLocation = currentLocation + WAVELENGTH + 1;
    end
end


% Calculate means
onMean = onTotal ./ onCount;
offMean = offTotal ./ offCount;

figure(1)
title('All Sine Waves')

figure(3)
plot(offMean,'r')
title('All Light OFF Waveforms and Their Mean')

figure(2)
plot(onMean,'r')
title('All Light ON Waveforms and Their Mean')

figure(5)
plot(onMean)
title('Light ON Mean')

figure(6)
plot(offMean)
title('Light OFF Mean')

figure(7)
hold on
plot(offMean, 'r')
plot(onMean, 'b')
title('Light OFF Mean & Light ON Mean')
legend('Light OFF Mean', 'Light ON Mean')


fprintf('There were:\n%d bad waveforms\n%d good waveforms\n\n', badCount, (offCount + onCount))
toc