Beispiel #1
0
 def __init__(self):
     self.su = SignalUtil()
     self.windowSeconds = ConfigProvider().getCollectorConfig().get(
         "windowSeconds")
     config = ConfigProvider().getProcessingConfig()
     self.xMax = config.get("xMax")
     self.yMax = config.get("yMax")
 def __init__(self):
     config = ConfigProvider().getProcessingConfig()
     self.lowerFreq = config.get("lowerFreq")
     self.upperFreq = config.get("upperFreq")
     self.samplingRate = ConfigProvider().getEmotivConfig().get(
         "samplingRate")
     self.sigUtil = SignalUtil()
Beispiel #3
0
 def __init__(self):
     self.config = ConfigProvider().getProcessingConfig()
     self.upperBound = self.config.get("upperBound")
     self.lowerBound = self.config.get("lowerBound")
     self.minQuality = self.config.get("minQual")
     self.maxSeqLength = self.config.get("maxSeqLength")
     self.maxNaNValues = self.config.get("maxNaNValues")
     self.windowSeconds = ConfigProvider().getCollectorConfig().get(
         "windowSeconds")
 def __init__(self, verbose=False):
     config = ConfigProvider().getProcessingConfig()
     self.maxNaNValues = config.get("maxNaNValues")
     self.lowerBound = config.get("lowerBound")
     self.upperBound = config.get("upperBound")
     self.normalize = config.get("normalize")
     self.samplingRate = ConfigProvider().getEmotivConfig().get("samplingRate")
     self.qualUtil = QualityUtil()
     self.sigUtil = SignalUtil()
     self.verbose = verbose
    def __init__(self):
        self.mneUtil = MNEUtil()
        config = ConfigProvider().getProcessingConfig()
        self.lowerFreq = config.get("lowerFreq")
        self.upperFreq = config.get("upperFreq")
        self.windowSeconds = ConfigProvider().getCollectorConfig().get(
            "windowSeconds")
        self.resampleFreq = config.get("resamplingRate")
        self.eegFields = ConfigProvider().getEmotivConfig().get("eegFields")

        self.si = SignalUtil()
        self.qu = QualityUtil()
        self.eog = EOGExtractor()
Beispiel #6
0
    def normGyroData(self):
        config = ConfigProvider().getProcessingConfig()

        for gyroField in self.getGyroHeader():
            gyroCol = self.getColumn(gyroField) - config.get(
                gyroField.lower() + "Ground")
            self.setColumn(gyroField, gyroCol)
 def __init__(self, verbose=False):
     self.samplingRate = ConfigProvider().getEmotivConfig().get(
         "samplingRate")
     self.qualUtil = QualityUtil()
     self.fftUtil = FFTUtil()
     self.eegUtil = EEGUtil()
     self.verbose = verbose
Beispiel #8
0
 def writeFeature(self, data, filePath):
     header = []
     start = 4
     end = start + len(data[0]) / 6
     for field in ConfigProvider().getCollectorConfig().get("eegFields"):
         header.extend([str(x) + "Hz" + field for x in range(start, end)])
     self.fileUtil.saveCSV(filePath, data, header)
Beispiel #9
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)
 def setUp(self):
     self.chain = SignalProcessor()
     self.qualUtil = QualityUtil()
     config = ConfigProvider().getProcessingConfig()
     self.upperBound = config.get("upperBound")
     self.lowerBound = config.get("lowerBound")
     self.minQuality = config.get("minQual")
     self.maxNaNValues = config.get("maxNaNValues")
Beispiel #11
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)
Beispiel #12
0
def plot(proband, filename):
    experiments = ConfigProvider().getExperimentConfig()
    experimentDir = experiments["filePath"]
    #filePath = "%s/test/%s" % (experimentDir, "awake_full.csv")
    filePath = "%s/%s/%s" % (experimentDir, proband, filename)

    dto = FileUtil().getDto(filePath)
    fp = FeaturePlotter(dto.getData(), dto.getHeader(), filePath)
    fp.doPlot()
Beispiel #13
0
 def __init__(self, nInputs=None, nHiddenLayers=None, bias=True, new=True, fileName=""):
     self.params = {}
     self.config = ConfigProvider().getNNTrainConfig()
     if new:
         self.params["nInputs"] = nInputs
         self.params["nHiddenLayers"] = nHiddenLayers
         self.params["bias"] = bias
         self.nn = NeuralNetwork().createNew(nInputs, nHiddenLayers, N_OUTPUT, bias)
     else:
         self.nn = NeuralNetwork().load(fileName)
Beispiel #14
0
def loadSingle(fileName):
    #files = [scriptPath + "/../../../data/awake_full.csv", scriptPath + "/../../../data/drowsy_full.csv"]
    experimentDir = ConfigProvider().getExperimentConfig().get("filePath")
    files = [experimentDir + "test/awakes_proc_new4.csv", experimentDir + "test/drowsies_proc_new4.csv"]

    ndu = NetworkDataUtil(files)
    data = ndu.get(False)
    nu = NetworkUtil(new=False, fileName=fileName)

    writeResults(nu, data, fileName, files)
Beispiel #15
0
    def _calcSamplingRate(self):
        '''
        calcs the samplerate for the whole dataset based on the timestamp column   
        
        :return: samplerate
        :rtype: float

        '''
        try:
            duration = self.getDuration()
            return self.len / duration
        except:
            return ConfigProvider().getEmotivConfig().get("samplingRate")
Beispiel #16
0
    def __init__(self, collectedQueue, extractedQueue, eegProcessor,
                 gyroProcessor):
        config = ConfigProvider()
        self.eegFields = config.getEmotivConfig()["eegFields"]
        self.gyroFields = config.getEmotivConfig()["gyroFields"]
        self.samplingRate = config.getEmotivConfig()["samplingRate"]
        self.processingConfig = config.getProcessingConfig()

        self.eegProcessor = eegProcessor
        self.gyroProcessor = gyroProcessor

        self.collectedQueue = collectedQueue
        self.extractedQueue = extractedQueue
        self.runProcess = True
Beispiel #17
0
    def _initPoSDBoS(demo):
        posdbos = PoSDBoS()
        posdbos.demo = demo
        posdbos.running = True

        posdbosConfig = ConfigProvider().getPoSDBoSConfig()
        posdbos.drowsyMinCount = posdbosConfig.get("drowsyMinCount")
        posdbos.awakeMinCount = posdbosConfig.get("awakeMinCount")

        posdbos.classified = [0, 0]
        posdbos.curClass = 0
        posdbos.classCount = 0
        posdbos.found = 0
        return posdbos
Beispiel #18
0
def trainSingle(h, name, convergence):
    experimentDir = ConfigProvider().getExperimentConfig().get("filePath")
    files = [experimentDir + "test/awakes_proc_new8.csv", experimentDir + "test/drowsies_proc_new8.csv"]
    #files = [experimentDir + "mp/awakes_full_norm_proc_4.csv", experimentDir + "mp/drowsies_full_norm_proc_4.csv"]
    ndu = NetworkDataUtil(files)
    train, test = ndu.get()

    nu = NetworkUtil(ndu.getNInput(), 1)
    nu.train(train, convergence)
    nu.test()
    fileName = name + "_" + str(h)
    nu.save(fileName)

    data = ndu.get(False, False)
    writeResults(nu, data, fileName, files, convergence, test)
    def getForTesting():
        self = TestFactory

        app = self._get()
        app.nn = self.loadNeuralNetwork(scriptPath + "/test_data/test", False)
        app.dm = DrowsinessMonitor()

        collectorConfig = ConfigProvider().getCollectorConfig()
        fields = collectorConfig.get("eegFields") + collectorConfig.get(
            "gyroFields")
        windowSeconds = collectorConfig.get("windowSeconds")
        windowCount = collectorConfig.get("windowCount")
        samplingRate = 128
        filePath = scriptPath + "/test_data/example_1024.csv"
        app.dc = self.createTestDataCollector(app.collectedQueue, fields,
                                              windowSeconds, samplingRate,
                                              windowCount, filePath)
        app.dp = self.createDataProcessor(app.collectedQueue,
                                          app.extractedQueue)
        return app
:author: Paul Pasler
:organization: Reutlingen University
'''

from posdbos.util.signal_util import SignalUtil
from config.config import ConfigProvider
from numpy import ceil

# TODO should be from 0.5 to 4
DELTA_RANGE = (1, 4)
THETA_RANGE = (4, 8)
ALPHA_RANGE = (8, 13)
BETA_RANGE = (13, 30)

samplingRate = ConfigProvider().getEmotivConfig().get("samplingRate")
gammaMax = min(samplingRate / 2, 99)
GAMMA_RANGE = (30, gammaMax)


class EEGUtil(object):
    '''
    This class does useful things with EEG signals
    
    Like splitting by channel
    DELTA =  0.5 -  4hz
    THETA =  4   -  8hz
    ALPHA =  8   - 13hz
    BETA  = 13   - 30hz
    GAMMA = 30   - 99hz
    
 def __init__(self, verbose=False):
     config = ConfigProvider().getProcessingConfig()
     self.eegFields = config.get("eegFields")
     self.fmin = config.get("fmin")
     self.fmax = config.get("fmax")
     self.mneUtil = MNEUtil()
Beispiel #22
0
:author: Paul Pasler
:organization: Reutlingen University
'''
import logging
logging.basicConfig(
    level=logging.INFO,
    format=
    '%(asctime)s.%(msecs)03d %(levelname)-8s %(module)s.%(funcName)s:%(lineno)d %(message)s',
    datefmt='%H:%M:%S')
from posdbos.util.file_util import FileUtil

import threading
from config.config import ConfigProvider
from posdbos.factory import Factory

exConfig = ConfigProvider().getExperimentConfig()
probands = exConfig.get("probands")
experimentDir = exConfig.get("filePath")

fileUtil = FileUtil()


def getFilePaths(fileName):
    filePaths = []
    for proband in probands:
        filePath = "%s%s/" % (experimentDir, proband)
        filePaths.append(filePath + fileName)
    return filePaths


def splitDtos(filePaths):
Beispiel #23
0
 def getGyroHeader(self):
     gyroFields = ConfigProvider().getEmotivConfig().get("gyroFields")
     return [head for head in self.header if head in gyroFields]
Beispiel #24
0
 def getEEGHeader(self):
     eegFields = ConfigProvider().getEmotivConfig().get("eegFields")
     return [head for head in self.header if head in eegFields]
 def test_normalize_value(self):
     norm = ConfigProvider().getProcessingConfig().get("normalize")
     testList = np.array([0, -5, 1, 10])
     normList = self.util.normalize(testList, norm)
     self.assertEqual(len(testList), len(normList))
     self.assertItemsEqual(normList, testList / norm)
Beispiel #26
0
        merge = self.splitAndMerge(df)
        self.showDifference(merge, "%s %s" % (self.name, proband))
        return merge


class EEGAnalyzer(EmotivAnalyzer):
    def __init__(self, fileName="EEG", hasTime=True):
        super(EEGAnalyzer, self).__init__(fileName, hasTime)
        self.name = "EEG"
        self.fields = self.config.getCollectorConfig().get("eegFields")
        #self.fields = self.config.getEmotivConfig().get("eegFields")
        self.dataField = self.fields

    def analyse(self, proband):
        df = self.buildDf(proband)
        merge = self.splitAndMerge(df)
        self.showDifference(merge, "%s %s" % (self.name, proband))
        return merge


probands = ConfigProvider().getExperimentConfig().get("probands")
nProbands = ["1", "2"]
oProbands = ["a", "b", "c", "e"]
ea = GyroAnalyzer("EEGNormed", False)
#for proband in probands:
#    ea.analyse(proband)
ea.analyseMerge(probands)
#ea.analyseMerge(nProbands)
#ea.analyseMerge(oProbands)
#CANAnalyzer().analyse("3")
plt.show()
 def setUp(self):
     self.config = ConfigProvider()
Beispiel #28
0
 def createNeuralNetwork():
     nnCreate = ConfigProvider().getNNInitConfig()
     return NeuralNetwork().createNew(**nnCreate)
Beispiel #29
0
 def __init__(self):
     self.config = ConfigProvider()
     exConfig = self.config.getExperimentConfig()
     self.experimentPath = exConfig.get("filePath")
     self.probands = exConfig.get("probands")
     self.lengths = []
Beispiel #30
0
 def setUp(self):
     self.dm = DrowsinessMonitor()
     self.classes = ConfigProvider().getConfig("class")