def __init__(self, client, eegFilePath, samplingFreq=128, channelOpt=1):

        self.client = client
        self.samplingFreq = samplingFreq
        if channelOpt == 1:
            self.useEMG = 0
        if channelOpt == 2:
            self.useEMG = 1

        self.params = ParameterSetup()
        pickledDir = self.params.pickledDir
        classifierType = self.params.classifierType
        classifierParams = self.params.classifierParams
        # samplingFreq = self.params.samplingFreq
        windowSizeInSec = self.params.windowSizeInSec
        # self.wsizeInTimePoints = samplingFreq * windowSizeInSec   # window size. data is sampled at 128 Hz, so 1280 sample points = 10 sec.
        self.wsizeInTimePoints = self.client.updateGraph_samplePointNum

        dataReader = DataReader()
        print('for EEG, reading file ' + eegFilePath)
        eeg, emg, timeStamps = dataReader.readEEG(eegFilePath)
        # print('for stageSeq, reading file ' + stageFilePath)
        # stageSeq = dataReader.readStageSeq(stageFilePath)
        print('timeStamps[0] =', timeStamps[0])

        print('self.samplingFreq =', self.samplingFreq)

        observed_samplePointNum = self.samplingFreq * self.params.windowSizeInSec

        print('observed_samplePointNum =', observed_samplePointNum)

        # self.eeg = eeg
        # self.emg = emg
        # self.timeStamps = timeStamps

        #####
        model_samplingFreq = 128
        model_samplePointNum = model_samplingFreq * 10
        #######

        self.eeg = up_or_down_sampling(eeg, model_samplePointNum,
                                       observed_samplePointNum)
        self.emg = up_or_down_sampling(emg, model_samplePointNum,
                                       observed_samplePointNum)
        self.timeStamps = self.convertTimeStamps(timeStamps,
                                                 model_samplingFreq,
                                                 model_samplePointNum,
                                                 observed_samplePointNum)
        self.wNum = self.eeg.shape[0]

        presentTime = timeFormatting.presentTimeEscaped()
        fileName = 'daq.' + presentTime + '.csv'
        self.logFile = open(self.params.logDir + '/' + fileName, 'a')

        self.serve()
示例#2
0
### chamberNum = 2
# chamberNum = 1

params = ParameterSetup()
all_postFiles = listdir(params.postDir)
postFiles = []
for fileName in all_postFiles:
    if fileName[0] != '.':
        postFiles.append(fileName)

print('postFiles =', postFiles)

eegFilePathL = []
eegL = []
for _, inputFileName in zip(range(chamberNum), postFiles):
    dataReader = DataReader()
    eegFilePath = params.postDir + '/' + inputFileName
    print('for EEG, reading file ' + eegFilePath)
    eeg, emg, timeStamps = dataReader.readEEG(eegFilePath)
    eegFilePathL.append(eegFilePath)
    eegL.append(eeg)

max_eegLength = reduce(max, [len(eeg) for eeg in eegL])
print('max_eegLen =', max_eegLength)
epochNum = np.int(np.floor(max_eegLength / epochSampleNum))
print('epochNum =', epochNum)

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:

    s.connect((server_HOST, server_PORT))
示例#3
0
import serial
import serial.tools.list_ports
import time
import sys
import datetime
import matplotlib.pyplot as plt
from dataReader import DataReader
from fileLogger import FileLogger
from plotter import Plotter
from pyLive import live_plotter_xy

dataReader = DataReader("USB-SERIAL CH340 (COM4)")
fileLogger = FileLogger("datalog.csv")
plotter = Plotter()

if dataReader.serialPort == None:
    print("Port not found")
    sys.exit()

line1 = []

try:
    for data in dataReader():
        plotter.append(data)
        line1 = live_plotter_xy(plotter.x_axis, plotter.batteryVoltage, line1)
        fileLogger.append(data)

except KeyboardInterrupt:
    fileLogger.close()
    sys.exit()
示例#4
0
def batchClassifySequentially(eegFilePath, stagePredictor):

    dataReader = DataReader()
    eeg, emg, timeStamps = dataReader.readEEG(eegFilePath)
    print('eeg.shape = ' + str(eeg.shape))
    samplePointNum = eeg.shape[0]

    # reset eeg and emg statistical values
    eeg_mean = 0
    eeg_variance = 0
    emg_mean = 0
    emg_variance = 0
    oldSampleNum = 0

    y_pred_L = []
    wID = 0
    # startSamplePoint = 0
    stagePredictions_L = []
    replacedR = False
    # while startSamplePoint + wsizeInSamplePointNum <= samplePointNum:
    records_L = []
    timeStampSegments_L = []
    for startSamplePoint in range(0, samplePointNum,
                                  timeWindowStrideInSamplePointNum):
        endSamplePoint = startSamplePoint + wsizeInSamplePointNum
        if endSamplePoint > samplePointNum:
            break
        eegSegment = eeg[startSamplePoint:endSamplePoint]
        eegSegment_orig_mean = np.mean(eegSegment)
        eegSegment_orig_std = np.std(eegSegment)
        eeg_old_mean = eeg_mean
        eeg_mean = recompMean(eegSegment, eeg_mean, oldSampleNum)
        eeg_variance = recompVariance(eegSegment, eeg_variance, eeg_old_mean,
                                      eeg_mean, oldSampleNum)
        standardized_eegSegment = (eegSegment -
                                   eeg_mean) / np.sqrt(eeg_variance)
        if params.useEMG:
            emgSegment = emg[startSamplePoint:endSamplePoint]
            emg_old_mean = emg_mean
            emg_mean = recompMean(emgSegment, emg_mean, oldSampleNum)
            emg_variance = recompVariance(emgSegment, emg_variance,
                                          emg_old_mean, emg_mean, oldSampleNum)
            standardized_emgSegment = (emgSegment -
                                       emg_mean) / np.sqrt(emg_variance)
            one_record = np.r_[standardized_eegSegment,
                               standardized_emgSegment]
        else:
            one_record = standardized_eegSegment
        oldSampleNum += eegSegment.shape[0]
        local_mu = np.mean(standardized_eegSegment)
        local_sigma = np.std(standardized_eegSegment)
        timeStampSegment = timeStamps[startSamplePoint:endSamplePoint]
        # if predict_by_batch:
        records_L.append(one_record)
        timeStampSegments_L.append(timeStampSegment)
        '''
        else:
            stagePrediction = params.reverseLabel(stagePredictor.predict(one_record, timeStampSegment, local_mu=local_mu, local_sigma=local_sigma))
            # print('after stagePredictor.predict')

            # replaces R to W when W appears consecutively
            Ws = 'W' * numOfConsecutiveWsThatProhibitsR
            for wCnt in range(1,numOfConsecutiveWsThatProhibitsR+1):
                if len(y_pred_L) >= wCnt:
                    if y_pred_L[len(y_pred_L)-wCnt] != 'W':
                        break
                if stagePrediction == 'R':
                    print(Ws + '->R changed to ' + Ws + '->W at wID = ' + str(wID) + ', startSamplePoint = ' + str(startSamplePoint))
                    stagePrediction = 'W'
                    replacedR = True

            #----
            # if the prediction is P, then use the previous one
            if stagePrediction == 'P':
                # print('stagePrediction == P for wID = ' + str(wID))
                if len(y_pred_L) > 0:
                    stagePrediction = y_pred_L[len(y_pred_L)-1]
                else:
                    stagePrediction = 'M'

            #-----
            # vote for choosing the label for 10 second window
            stagePredictions_L.append(stagePrediction)
            if len(stagePredictions_L) == strideNumInTimeWindow:
                finalStagePrediction = voteForStagePrediction(stagePredictions_L[-(lookBackTimeWindowNum+1):])
                #-----
                # append to the lists of results
                y_pred_L.append(finalStagePrediction)

    if predict_by_batch:
        '''
    ### y_pred = np.array([params.reverseLabel(y_pred_orig) for y_pred_orig in stagePredictor.batch_predict(np.array(records_L), np.array(timeStampSegments_L), local_mu=local_mu, local_sigma=local_sigma)])
    y_pred = np.array([
        params.capitalize_for_writing_prediction_to_file[y_pred_orig]
        for y_pred_orig in stagePredictor.batch_predict(
            params,
            np.array(records_L),
            np.array(timeStampSegments_L),
            local_mu=local_mu,
            local_sigma=local_sigma)
    ])
    '''
    else:
        y_pred = np.array(y_pred_L)
        '''
    return y_pred
示例#5
0
if args.splitFlag == 'T':
    randomCropFlag = False
else:
    randomCropFlag = True

with tf.device('/CPU:0'):
    with tf.name_scope("testinputs"):

        reader = DataReader(datasplitter.data_home,
                            datasplitter.dataset_name,
                            datasplitter.test_tags,
                            params,
                            coord,
                            dataset_catgry=datasplitter.dataset_catgry,
                            random_scale=False,
                            random_mirror=False,
                            gt_type='annotated',
                            random_crop=randomCropFlag,
                            data_type=1,
                            dataoption=dataoption,
                            queue_flag=False)

dataparams.num_channels = reader.channelinfo.depth_nchannels
dataparams.channelinfo = reader.channelinfo

queue_list = tf.placeholder(tf.string, [3])

testdata_batch, testlabel_batch = reader.read_data_from_disk(queue_list)
BATCH_SIZE = 1
示例#6
0
from dataReader import DataReader as DR
pattern = ''.center(20, '*')
print('Welcome to the muj Department electives 2021 visualizer.\n')
print(pattern + '\n\n')
choice = True
dataReader = None
while (choice):
    print('Select one of the options below\n')
    print(pattern + '\n\n')
    print(
        '1>Visualize the class wise department elective chosen\n2>Number of students in each section of each department\n3>Exit the programme\n\n'
    )
    optionSelected = int(input('Your choice : '))
    if optionSelected == 3:
        break
    elif optionSelected > 3 or optionSelected < 1:
        print('Invalid option selected . Please enter again\n\n')
    else:
        if not dataReader:
            dataReader = DR()
            dataReader.readExcelFile('deData')
        if optionSelected == 1:
            dataReader.plotGraphForDe()
        elif optionSelected == 2:
            dataReader.plotGraphForStudents()
        else:
            print('Invalid Credential Entered\n\n')
示例#7
0
networkparams.dtype = DEFAULT_DTYPE

#os.environ["CUDA_VISIBLE_DEVICES"] = ''
tf.set_random_seed(666)
coord = tf.train.Coordinator()

with tf.device('/CPU:0'):
    with tf.name_scope("traininginputs"):

        reader = DataReader(datasplitter.data_home,
                            datasplitter.dataset_name,
                            datasplitter.training_tags,
                            params,
                            coord,
                            dataset_catgry=datasplitter.dataset_catgry,
                            random_scale=False,
                            random_mirror=True,
                            gt_type='annotated',
                            random_crop=True,
                            data_type=1,
                            dataoption='color_dc_dcclabels',
                            queue_flag=True,
                            num_preprocess_threads=16)
        traindata_batch, trainlabel_batch = reader.dequeue(BATCH_SIZE)

    with tf.name_scope("validationinputs"):

        reader = DataReader(datasplitter.data_home,
                            datasplitter.dataset_name,
                            datasplitter.validation_tags,
                            params,
                            coord,
示例#8
0
import pandas as pd
import numpy as np
from paramOptimizer import ParamOptimizer
from kalmanCalculator import KalmanCalculator
from scipy.optimize import differential_evolution
from dataReader import DataReader
from graphMaker import GraphMaker

if __name__ == '__main__':
    print(__doc__)
    startCalTime = datetime.datetime.now()

    # データ入力
    # ----------------------------------------
    allDataDF = pd.DataFrame()
    dataReader = DataReader(allDataDF)
    cal_settings = dataReader.getCalSettings()
    forecast = cal_settings["forecast"]
    dataReader.putTime(cal_settings["startTime"], cal_settings["endTime"],
                       cal_settings["timeInterval"], cal_settings["timescale"])
    dataReader.setInputFilePath()

    if cal_settings["used_rainfallData"]:
        # 雨量 (mm/hr)
        dataReader.readRainfallData(cal_settings["used_rainfallData"],
                                    cal_settings["timeInterval"],
                                    cal_settings["timescale"],
                                    cal_settings["startTime"],
                                    cal_settings["endTime"])
    if cal_settings["used_waterLevelData"]:
        # 水位 (m)
示例#9
0
import sys
from dataReader import DataReader

dataReader = DataReader()
dataReader.readAll(sys)
示例#10
0
 def __init__(self, infile, table_name, config, batch_size):
     self.config = config
     self.data_reader = DataReader(infile)
     self.table_name = table_name
     self.sql_statements = SQLStatements(self.table_name)
     self.batch_size = batch_size