def _buildDataStructure(self):  # pragma: no cover
        if self.windowSeconds is None:
            self.windowSize = self.len
        else:
            self.windowSize = EEGDataCollector.calcWindowSize(
                self.windowSeconds, self.samplingRate)

        windowRatio = EEGDataCollector.calcWindowRatio(self.windowSize,
                                                       self.windowCount)

        for start in range(0, len(self.rawData), windowRatio):
            end = start + self.windowSize
            if end <= len(self.rawData):
                self.data.append(self._buildWindow(start, end))
    def test_windowsFilled(self):
        emptyDto = self.getEmptyDto()
        windowSize = EEGDataCollector.calcWindowSize(WINDOW_SECONDS,
                                                     SAMPLING_RATE)

        win1 = self.collector.windows[0]
        win2 = self.collector.windows[1]

        self.assertEquals(win1.index, 0)
        self.assertEquals(win1.dto, emptyDto)
        self.assertEquals(win2.index, windowSize / 2)
        self.assertEquals(win2.dto, emptyDto)

        self._fillValues(windowSize / 2)
        self.assertEquals(win1.index, windowSize / 2)
        self.assertEquals(win1.dto.getData()["X"], {
            'quality': [0, 0],
            'value': [24.0, 24.0]
        })
        self.assertEquals(win2.dto, emptyDto)
        self.assertEquals(win2.index, 0)

        self._fillValues(windowSize / 2)
        self.assertEquals(win1.dto, emptyDto)
        self.assertEquals(win2.index, 2)
예제 #3
0
 def createEmotivDataCollector(collectedQueue):
     collectorConfig = ConfigProvider().getCollectorConfig()
     fields = collectorConfig.get("eegFields") + collectorConfig.get(
         "gyroFields")
     windowSize = collectorConfig.get("windowSeconds")
     windowCount = collectorConfig.get("windowCount")
     return EEGDataCollector(EmotivConnector(), collectedQueue, fields,
                             windowSize, windowCount)
예제 #4
0
 def createDemoEEGDataCollector(demoFile, collectedQueue):
     collectorConfig = ConfigProvider().getCollectorConfig()
     fields = collectorConfig.get("eegFields") + collectorConfig.get(
         "gyroFields")
     windowSeconds = collectorConfig.get("windowSeconds")
     windowCount = collectorConfig.get("windowCount")
     datasource = Factory.createDummyPacketSource(demoFile)
     return EEGDataCollector(datasource, collectedQueue, fields,
                             windowSeconds, windowCount, 128)
 def createTestDataCollector(collectedQueue,
                             fields,
                             windowSeconds,
                             samplingRate,
                             windowCount,
                             filePath=None):
     datasource = TestFactory.createDummyPacketSource(filePath)
     return EEGDataCollector(datasource, collectedQueue, fields,
                             windowSeconds, windowCount, samplingRate)
    def __init__(self, queue, filePath, signals=None, save=True, plot=True, logScale=False, name=""):
        self.queue = queue
        self.filePath = filePath
        self._initStatsDict()
        self.config = ConfigProvider()
        self.eegData = FileUtil().getDto(filePath)
        self._initSignals(signals)
        self.su = SignalUtil()
        self.qu = QualityUtil()
        self.eu = EEGUtil()
        self.fft = FFTUtil()
        self._initFields()
        self.save = save
        self.plot = plot
        self.name = name
        self._initPlotter(logScale)
        self.ssPrint = SignalStatisticPrinter(filePath)
        self.preProcessor = SignalPreProcessor()
        self.processor = SignalProcessor()

        windowSeconds = self.config.getCollectorConfig().get("windowSeconds")
        self.windowSize = EEGDataCollector.calcWindowSize(windowSeconds, self.eegData.samplingRate)
 def test_calcWindowSize(self):
     self.assertEqual(EEGDataCollector.calcWindowSize(1, 64), 64)
     self.assertEqual(EEGDataCollector.calcWindowSize(2, 32), 64)
 def test__calcWindowRatio(self):
     self.assertEqual(EEGDataCollector.calcWindowRatio(128, 2), 64)
     self.assertEqual(EEGDataCollector.calcWindowRatio(4, 4), 1)
     self.assertEqual(EEGDataCollector.calcWindowRatio(64, 4), 16)
from base_test import *  # @UnusedWildImport

from Queue import Queue
import threading
from time import sleep

from posdbos.test.test_factory import TestFactory
from posdbos.collector.data_collector import EEGDataCollector
from posdbos.collector.window_dto import WindowDto

WINDOW_SECONDS = 1
SAMPLING_RATE = 4
WINDOW_COUNT = 2
FIELDS = ["F3", "F4", "X", "Y"]
WINDOW_SIZE = EEGDataCollector.calcWindowSize(WINDOW_SECONDS, SAMPLING_RATE)


class DataCollectorTest(BaseTest):
    def setUp(self):
        self.collectedQueue = Queue()
        self.collector = TestFactory.createTestDataCollector(
            self.collectedQueue, FIELDS, WINDOW_SECONDS, SAMPLING_RATE,
            WINDOW_COUNT)

    def _fillValues(self, count):
        data = self.collector.datasource.data
        fields = self.collector.fields
        for i in range(count):
            row = data[i].sensors
            fData = {x: row[x] for x in fields}