TWO_SECS_DATA_AMOUNT = 2 * DATA_AMOUNT_PER_SEC THREE_SECS_DATA_AMOUNT = 3 * DATA_AMOUNT_PER_SEC FIVE_SECS_DATA_AMOUNT = 5 * DATA_AMOUNT_PER_SEC def tagAction(channels, startTime, endTime, actionInterval, actingDuration): doNothing = [[] if channel else None for channel in channels] action = copy.deepcopy(doNothing) actionDataAmount = int(actingDuration * DATA_AMOUNT_PER_SEC) actionIntervalDataAmount = int(actionInterval * DATA_AMOUNT_PER_SEC) for dataPtr in xrange(int(startTime * DATA_AMOUNT_PER_SEC) + 1, int(endTime * DATA_AMOUNT_PER_SEC), actionIntervalDataAmount): for i, channel in enumerate(channels): if channel: action[i].extend(channel[dataPtr: dataPtr + actionDataAmount]) doNothing[i].extend(channel[dataPtr + actionDataAmount: dataPtr + actionIntervalDataAmount]) return doNothing, action if __name__ == "__main__": channelsWrap = Formatter.format({"step": 1, "wink": 1}, [1, 2, 3, 4]) winkDoNothing, wink = tagAction(channelsWrap["wink"][0], 10, 101, 5, 1) stepDoNothing, leftStep = tagAction(channelsWrap["step"][0], 4.87, 100.87, 5, 0.85) stepDoNothing2, rightStep = tagAction(channelsWrap["step"][0], 104.87, 200.87, 5, 0.85) channelsWrap.clear() channelsWrap["winkdonothing"] = [winkDoNothing] channelsWrap["wink"] = [wink] channelsWrap["stepdonothing"] = [stepDoNothing] channelsWrap["leftstep"] = [leftStep] channelsWrap["rightstep"] = [rightStep] channelsWrap = Sampler.sampleChannelsWrap(channelsWrap, 2) Formatter.writeDataWrap(channelsWrap, 3)
__author__ = 'maeglin89273' import Formatter DEFAULT_SAMPLING_RATE = 5 def sampleChannelsStream(channelData, samplingRate): sampledData = [[] if channel else None for channel in channelData] for (i, channelValues) in enumerate(zip(*filter(lambda channel: bool(channel), channelData))): if i % samplingRate == 0: for (j, channelNum) in enumerate((num for num in xrange(len(channelData)) if channelData[num])): sampledData[channelNum].append(channelValues[j]) return sampledData def sampleChannelsWrap(channelsWrap, samplingRate): for category in channelsWrap: for fileNum, channelData in enumerate(channelsWrap[category]): sampledData = sampleChannelsStream(channelData, samplingRate) channelsWrap[category][fileNum] = sampledData return channelsWrap if __name__ == "__main__": channelsWrap = Formatter.format({"righthand": 4, "sleep": 1}, [1, 2, 3, 4, 8]) Formatter.writeDataWrap(sampleChannelsWrap(channelsWrap, DEFAULT_SAMPLING_RATE), 2)