예제 #1
0
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)
예제 #2
0
__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)