Changeset 393 for trunk


Ignore:
Timestamp:
05/11/12 14:07:24 (8 years ago)
Author:
sc
Message:
  • updates for exporting ThinkGear? and Emotiv custom data headers
Location:
trunk/Puzzlebox/Synapse
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Puzzlebox/Synapse/Emotiv/Server.py

    r388 r393  
    77 
    88__changelog__ = """\ 
    9 Last Update: 2012.04.09 
     9Last Update: 2012.05.11 
    1010""" 
    1111 
     
    184184                 
    185185                 
     186                #self.customDataHeaders = 'Time From Start,Headset On,Contact Number Of Quality Channels,Wireless,Expressiv Action,Excitement,Long Term Excitement,Meditation,Frustration,Engagement/Boredom,Cognitiv Action,Cognitiv Action Power' 
     187                self.customDataHeaders = ['Time From Start', \ 
     188                                          'Headset On', \ 
     189                                          'Contact Number Of Quality Channels', \ 
     190                                          'Wireless', \ 
     191                                          'Expressiv Action', \ 
     192                                          'Excitement', \ 
     193                                          'Long Term Excitement', \ 
     194                                          'Meditation', \ 
     195                                          'Frustration', \ 
     196                                          'Engagement/Boredom', \ 
     197                                          'Cognitiv Action', \ 
     198                                          'Cognitiv Action Power', \ 
     199                                         ] 
     200                 
     201                 
    186202                self.configureEEG() 
    187203                 
     
    283299                         
    284300                        if ('excitement' in packet['affectiv'].keys()): 
    285                                 packet['eSense']['attention'] = int(packet['affectiv']['excitement'] * 100) 
     301                                #packet['eSense']['attention'] = int(packet['affectiv']['excitement'] * 100) 
     302                                packet['eSense']['attention'] = int(packet['cognitiv']['currentActionPower'] * 100) 
    286303                        elif ('engagementBoredom' in packet['affectiv'].keys()): 
    287304                                packet['eSense']['attention'] = int(packet['affectiv']['engagementBoredom'] * 100) 
     
    306323                 
    307324                self.configureEEG() 
     325         
     326         
     327        ################################################################## 
     328         
     329        def processPacketForExport(self, packet={}, output={}): 
     330                 
     331                #output['Time From Start'] = '' 
     332                #output['Headset On'] = '' 
     333                #output['Contact Number Of Quality Channels'] = '' 
     334                #output['Wireless'] = '' 
     335                #output['Expressiv Action'] = '' 
     336                #output['Excitement'] = '' 
     337                #output['Long Term Excitement'] = '' 
     338                #output['Meditation'] = '' 
     339                #output['Frustration'] = '' 
     340                #output['Engagement/Boredom'] = '' 
     341                #output['Cognitiv Action'] = '' 
     342                #output['Cognitiv Action Power'] = '' 
     343                 
     344                for header in self.customDataHeaders: 
     345                        output[header] = '' 
     346                 
     347                if self.emulate_thinkgear: 
     348                        output['Attention'] = '' 
     349                        output['Meditation'] = '' 
     350                        output['Signal Level'] = '' 
     351                 
     352                 
     353                if 'emotivStatus' in packet.keys(): 
     354                        if 'timeFromStart' in packet['emotivStatus'].keys(): 
     355                                output['Time From Start'] = packet['emotivStatus']['timeFromStart'] 
     356                        if 'headsetOn' in packet['emotivStatus'].keys(): 
     357                                output['Headset On'] = packet['emotivStatus']['headsetOn'] 
     358                        if 'Contact Number Of Quality Channels' in packet['emotivStatus'].keys(): 
     359                                output['Contact Number Of Quality Channels'] = packet['emotivStatus']['contactNumberOfQualityChannels'] 
     360                        if 'Wireless' in packet['emotivStatus'].keys(): 
     361                                output['Wireless'] = packet['emotivStatus']['wireless'] 
     362                 
     363                if 'expressiv' in packet.keys(): 
     364                        if 'currentAction' in packet['expressiv'].keys(): 
     365                                value = packet['expressiv']['currentAction'] 
     366                                if value == 32: 
     367                                        output['Expressiv Action'] = '' 
     368                                else: 
     369                                        output['Expressiv Action'] = packet['expressiv']['currentAction'] 
     370                 
     371                if 'affectiv' in packet.keys(): 
     372                        if 'excitement' in packet['affectiv'].keys(): 
     373                                output['Excitement'] = int(packet['affectiv']['excitement'] * 100) 
     374                        if 'longTermExcitement' in packet['affectiv'].keys(): 
     375                                output['Long Term Excitement'] = int(packet['affectiv']['longTermExcitement'] * 100) 
     376                        if 'meditation' in packet['affectiv'].keys(): 
     377                                output['Meditation'] = int(packet['affectiv']['meditation'] * 100) 
     378                        if 'frustration' in packet['affectiv'].keys(): 
     379                                output['Frustration'] = int(packet['affectiv']['frustration'] * 100) 
     380                        if 'engagementBoredom' in packet['affectiv'].keys(): 
     381                                output['Engagement/Boredom'] = int(packet['affectiv']['engagementBoredom'] * 100) 
     382                 
     383                if 'cognitiv' in packet.keys(): 
     384                        if 'currentAction' in packet['cognitiv'].keys(): 
     385                                output['Cognitiv Action'] = packet['cognitiv']['currentAction'] 
     386                        if 'currentActionPower' in packet['cognitiv'].keys(): 
     387                                output['Cognitiv Action Power'] = int(packet['cognitiv']['currentActionPower'] * 100) 
     388                 
     389                 
     390                if self.emulate_thinkgear: 
     391                        if 'eSense' in packet.keys(): 
     392                                if 'attention' in packet['eSense'].keys(): 
     393                                        output['Attention'] = packet['eSense']['attention'] 
     394                                if 'meditation' in packet['eSense'].keys(): 
     395                                        output['Meditation'] = packet['eSense']['meditation'] 
     396                         
     397                        if 'poorSignalLevel' in packet.keys(): 
     398                                output['Signal Level'] = packet['poorSignalLevel'] 
     399                 
     400                return(output) 
    308401         
    309402         
     
    404497                                        csv[timestamp]['Meditation'] = '' 
    405498                                        csv[timestamp]['Signal Level'] = '' 
    406                                         #csv[timestamp]['Delta'] = '' 
    407                                         #csv[timestamp]['Theta'] = '' 
    408                                         #csv[timestamp]['Low Alpha'] = '' 
    409                                         #csv[timestamp]['High Alpha'] = '' 
    410                                         #csv[timestamp]['Low Beta'] = '' 
    411                                         #csv[timestamp]['High Beta'] = '' 
    412                                         #csv[timestamp]['Low Gamma'] = '' 
    413                                         #csv[timestamp]['Mid Gamma'] = '' 
    414499                                 
    415500                                for header in customDataHeaders: 
     
    463548                                if 'poorSignalLevel' in packet.keys(): 
    464549                                        csv[timestamp]['Signal Level'] = packet['poorSignalLevel'] 
    465                                  
    466                                 #if 'eegPower' in packet.keys(): 
    467                                         #if 'delta' in packet['eegPower'].keys(): 
    468                                                 #csv[timestamp]['Delta'] = packet['eegPower']['delta'] 
    469                                         #if 'theta' in packet['eegPower'].keys(): 
    470                                                 #csv[timestamp]['Theta'] = packet['eegPower']['theta'] 
    471                                         #if 'lowAlpha' in packet['eegPower'].keys(): 
    472                                                 #csv[timestamp]['Low Alpha'] = packet['eegPower']['lowAlpha'] 
    473                                         #if 'highAlpha' in packet['eegPower'].keys(): 
    474                                                 #csv[timestamp]['High Alpha'] = packet['eegPower']['highAlpha'] 
    475                                         #if 'lowBeta' in packet['eegPower'].keys(): 
    476                                                 #csv[timestamp]['Low Beta'] = packet['eegPower']['lowBeta'] 
    477                                         #if 'highBeta' in packet['eegPower'].keys(): 
    478                                                 #csv[timestamp]['High Beta'] = packet['eegPower']['highBeta'] 
    479                                         #if 'lowGamma' in packet['eegPower'].keys(): 
    480                                                 #csv[timestamp]['Low Gamma'] = packet['eegPower']['lowGamma'] 
    481                                         #if 'highGamma' in packet['eegPower'].keys(): 
    482                                                 #csv[timestamp]['Mid Gamma'] = packet['eegPower']['highGamma'] 
    483550                         
    484551                        for header in customDataHeaders: 
     
    516583                         
    517584                        if self.emulate_thinkgear: 
    518                                 #row = '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s' % \ 
    519585                                row = '%s,%s,%s,%s' % \ 
    520586                                   (row, \ 
     
    522588                                    csv[key]['Meditation'], \ 
    523589                                    csv[key]['Signal Level']) 
    524                                     #csv[key]['Delta'], \ 
    525                                     #csv[key]['Theta'], \ 
    526                                     #csv[key]['Low Alpha'], \ 
    527                                     #csv[key]['High Alpha'], \ 
    528                                     #csv[key]['Low Beta'], \ 
    529                                     #csv[key]['High Beta'], \ 
    530                                     #csv[key]['Low Gamma'], \ 
    531                                     #csv[key]['Mid Gamma']) 
    532590                         
    533591                        for header in customDataHeaders: 
  • trunk/Puzzlebox/Synapse/Session.py

    r390 r393  
    463463                 
    464464                 
    465                 #headers = 'Date,Time' 
    466                 headers = 'Date,Time,Attention,Meditation,Signal Level,Delta,Theta,Low Alpha,High Alpha,Low Beta,High Beta,Low Gamma,Mid Gamma' 
     465                headers = 'Date,Time' 
     466                #headers = headers + ',' 
     467                #headers = 'Date,Time,Attention,Meditation,Signal Level,Delta,Theta,Low Alpha,High Alpha,Low Beta,High Beta,Low Gamma,Mid Gamma' 
     468                #headers = headers + 'Attention,Meditation,Signal Level,Delta,Theta,Low Alpha,High Alpha,Low Beta,High Beta,Low Gamma,Mid Gamma' 
    467469                #headers = self.customDataHeaders 
    468470                 
     
    471473                        customDataHeaders.append(header) 
    472474                for plugin in parent.activePlugins: 
     475                        print plugin.name 
    473476                        for header in plugin.customDataHeaders: 
    474477                                customDataHeaders.append(header) 
     
    485488                         
    486489                         
     490                        # NOTE: Move this to ThinkGear Server object 
    487491                        if 'rawEeg' in packet.keys(): 
    488492                                continue 
    489493                         
     494                         
    490495                        if packet['timestamp'] not in csv.keys(): 
    491496                                 
    492                                 if 'blinkStrength' in packet.keys(): 
    493                                         # Skip any blink packets from log 
    494                                         continue 
     497                                #if 'blinkStrength' in packet.keys(): 
     498                                        ## Skip any blink packets from log 
     499                                        #continue 
    495500                                 
    496501                                 
     
    504509                                csv[timestamp]['Date'] = date 
    505510                                csv[timestamp]['Time'] = localtime 
    506                                 csv[timestamp]['Attention'] = '' 
    507                                 csv[timestamp]['Meditation'] = '' 
    508                                 csv[timestamp]['Signal Level'] = '' 
    509                                 csv[timestamp]['Delta'] = '' 
    510                                 csv[timestamp]['Theta'] = '' 
    511                                 csv[timestamp]['Low Alpha'] = '' 
    512                                 csv[timestamp]['High Alpha'] = '' 
    513                                 csv[timestamp]['Low Beta'] = '' 
    514                                 csv[timestamp]['High Beta'] = '' 
    515                                 csv[timestamp]['Low Gamma'] = '' 
    516                                 csv[timestamp]['Mid Gamma'] = '' 
    517                                  
    518                                 for header in customDataHeaders: 
    519                                         csv[timestamp][header] = '' 
    520                          
    521                          
    522                         if 'eSense' in packet.keys(): 
    523                                 if 'attention' in packet['eSense'].keys(): 
    524                                         csv[timestamp]['Attention'] = packet['eSense']['attention'] 
    525                                 if 'meditation' in packet['eSense'].keys(): 
    526                                         csv[timestamp]['Meditation'] = packet['eSense']['meditation'] 
    527                          
    528                         if 'poorSignalLevel' in packet.keys(): 
    529                                 csv[timestamp]['Signal Level'] = packet['poorSignalLevel'] 
    530                          
    531                         if 'eegPower' in packet.keys(): 
    532                                 if 'delta' in packet['eegPower'].keys(): 
    533                                         csv[timestamp]['Delta'] = packet['eegPower']['delta'] 
    534                                 if 'theta' in packet['eegPower'].keys(): 
    535                                         csv[timestamp]['Theta'] = packet['eegPower']['theta'] 
    536                                 if 'lowAlpha' in packet['eegPower'].keys(): 
    537                                         csv[timestamp]['Low Alpha'] = packet['eegPower']['lowAlpha'] 
    538                                 if 'highAlpha' in packet['eegPower'].keys(): 
    539                                         csv[timestamp]['High Alpha'] = packet['eegPower']['highAlpha'] 
    540                                 if 'lowBeta' in packet['eegPower'].keys(): 
    541                                         csv[timestamp]['Low Beta'] = packet['eegPower']['lowBeta'] 
    542                                 if 'highBeta' in packet['eegPower'].keys(): 
    543                                         csv[timestamp]['High Beta'] = packet['eegPower']['highBeta'] 
    544                                 if 'lowGamma' in packet['eegPower'].keys(): 
    545                                         csv[timestamp]['Low Gamma'] = packet['eegPower']['lowGamma'] 
    546                                 if 'highGamma' in packet['eegPower'].keys(): 
    547                                         csv[timestamp]['Mid Gamma'] = packet['eegPower']['highGamma'] 
     511                                 
     512                                 
     513                                for plugin in parent.activePlugins: 
     514                                        if plugin.customDataHeaders != []: 
     515                                                #try: 
     516                                                csv[timestamp] = plugin.processPacketForExport(output=csv[timestamp], packet=packet) 
     517 
     518                                                #print "csv[timestamp]:", 
     519                                                #print csv[timestamp] 
     520                                                #except Exception, e: 
     521                                                        #if self.DEBUG: 
     522                                                                #print "ERROR: [Synapse:Session] Exception calling processPacketForExport on", 
     523                                                                #print plugin.name 
     524                                 
     525                                 
     526                                #csv[timestamp]['Attention'] = '' 
     527                                #csv[timestamp]['Meditation'] = '' 
     528                                #csv[timestamp]['Signal Level'] = '' 
     529                                #csv[timestamp]['Delta'] = '' 
     530                                #csv[timestamp]['Theta'] = '' 
     531                                #csv[timestamp]['Low Alpha'] = '' 
     532                                #csv[timestamp]['High Alpha'] = '' 
     533                                #csv[timestamp]['Low Beta'] = '' 
     534                                #csv[timestamp]['High Beta'] = '' 
     535                                #csv[timestamp]['Low Gamma'] = '' 
     536                                #csv[timestamp]['Mid Gamma'] = '' 
     537                                 
     538                                #for header in customDataHeaders: 
     539                                        #csv[timestamp][header] = '' 
     540                         
     541                         
     542                        #if 'eSense' in packet.keys(): 
     543                                #if 'attention' in packet['eSense'].keys(): 
     544                                        #csv[timestamp]['Attention'] = packet['eSense']['attention'] 
     545                                #if 'meditation' in packet['eSense'].keys(): 
     546                                        #csv[timestamp]['Meditation'] = packet['eSense']['meditation'] 
     547                         
     548                        #if 'poorSignalLevel' in packet.keys(): 
     549                                #csv[timestamp]['Signal Level'] = packet['poorSignalLevel'] 
     550                         
     551                        #if 'eegPower' in packet.keys(): 
     552                                #if 'delta' in packet['eegPower'].keys(): 
     553                                        #csv[timestamp]['Delta'] = packet['eegPower']['delta'] 
     554                                #if 'theta' in packet['eegPower'].keys(): 
     555                                        #csv[timestamp]['Theta'] = packet['eegPower']['theta'] 
     556                                #if 'lowAlpha' in packet['eegPower'].keys(): 
     557                                        #csv[timestamp]['Low Alpha'] = packet['eegPower']['lowAlpha'] 
     558                                #if 'highAlpha' in packet['eegPower'].keys(): 
     559                                        #csv[timestamp]['High Alpha'] = packet['eegPower']['highAlpha'] 
     560                                #if 'lowBeta' in packet['eegPower'].keys(): 
     561                                        #csv[timestamp]['Low Beta'] = packet['eegPower']['lowBeta'] 
     562                                #if 'highBeta' in packet['eegPower'].keys(): 
     563                                        #csv[timestamp]['High Beta'] = packet['eegPower']['highBeta'] 
     564                                #if 'lowGamma' in packet['eegPower'].keys(): 
     565                                        #csv[timestamp]['Low Gamma'] = packet['eegPower']['lowGamma'] 
     566                                #if 'highGamma' in packet['eegPower'].keys(): 
     567                                        #csv[timestamp]['Mid Gamma'] = packet['eegPower']['highGamma'] 
     568                         
    548569                         
    549570                        for header in customDataHeaders: 
     571                                 
     572                                #if header in packet.keys(): 
     573                                        #csv[timestamp][header] = packet[header] 
     574                                 
    550575                                if 'custom' in packet.keys() and \ 
    551576                                   header in packet['custom'].keys(): 
     
    553578                 
    554579                 
     580                #print csv 
     581                 
     582                 
    555583                if scrub_data: 
    556584                        csv = self.scrubData(csv, truncate_csv_timezone, source=source) 
     
    559587                output = headers 
    560588                 
    561                 csv_keys = csv.keys() 
    562                 csv_keys.sort() 
    563                  
    564                 for key in csv_keys: 
    565                          
    566                         row = '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s' % \ 
    567                               (csv[key]['Date'], \ 
    568                                csv[key]['Time'], \ 
    569                                csv[key]['Attention'], \ 
    570                                csv[key]['Meditation'], \ 
    571                                csv[key]['Signal Level'], \ 
    572                                csv[key]['Delta'], \ 
    573                                csv[key]['Theta'], \ 
    574                                csv[key]['Low Alpha'], \ 
    575                                csv[key]['High Alpha'], \ 
    576                                csv[key]['Low Beta'], \ 
    577                                csv[key]['High Beta'], \ 
    578                                csv[key]['Low Gamma'], \ 
    579                                csv[key]['Mid Gamma']) 
     589                timestamps = csv.keys() 
     590                timestamps.sort() 
     591                 
     592                for timestamp in timestamps: 
     593                         
     594                        #row = '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s' % \ 
     595                              #(csv[timestamp]['Date'], \ 
     596                               #csv[timestamp]['Time'], \ 
     597                               #csv[timestamp]['Attention'], \ 
     598                               #csv[timestamp]['Meditation'], \ 
     599                               #csv[timestamp]['Signal Level'], \ 
     600                               #csv[timestamp]['Delta'], \ 
     601                               #csv[timestamp]['Theta'], \ 
     602                               #csv[timestamp]['Low Alpha'], \ 
     603                               #csv[timestamp]['High Alpha'], \ 
     604                               #csv[timestamp]['Low Beta'], \ 
     605                               #csv[timestamp]['High Beta'], \ 
     606                               #csv[timestamp]['Low Gamma'], \ 
     607                               #csv[timestamp]['Mid Gamma']) 
     608                         
     609                         
     610                        #print csv[timestamp] 
     611                         
     612                        row = '%s,%s' % \ 
     613                              (csv[timestamp]['Date'], \ 
     614                               csv[timestamp]['Time']) 
    580615                         
    581616                        for header in customDataHeaders: 
    582                                 row = row + ',%s' % csv[key][header] 
     617                                row = row + ',%s' % csv[timestamp][header] 
    583618                         
    584619                        row = row + '\n' 
  • trunk/Puzzlebox/Synapse/ThinkGear/Server.py

    r391 r393  
    77 
    88__changelog__ = """\ 
    9 Last Update: 2012.04.09 
     9Last Update: 2012.05.11 
    1010""" 
    1111 
     
    180180                 
    181181                #self.customDataHeaders = 'Attention,Meditation,Signal Level,Delta,Theta,Low Alpha,High Alpha,Low Beta,High Beta,Low Gamma,Mid Gamma' 
     182                self.customDataHeaders = ['Attention', \ 
     183                                          'Meditation', \ 
     184                                          'Signal Level', \ 
     185                                          'Delta', \ 
     186                                          'Theta', \ 
     187                                          'Low Alpha', \ 
     188                                          'High Alpha', \ 
     189                                          'Low Beta', \ 
     190                                          'High Beta', \ 
     191                                          'Low Gamma', \ 
     192                                          'Mid Gamma', \ 
     193                                         ] 
    182194                 
    183195                 
     
    468480                 
    469481                self.configureEEG() 
     482         
     483         
     484        ################################################################## 
     485         
     486        def processPacketForExport(self, packet={}, output={}): 
     487                 
     488                if 'blinkStrength' in packet.keys(): 
     489                        # Skip any blink packets from log 
     490                        #continue 
     491                        return(output) 
     492                 
     493                #output['Attention'] = '' 
     494                #output['Meditation'] = '' 
     495                #output['Signal Level'] = '' 
     496                #output['Delta'] = '' 
     497                #output['Theta'] = '' 
     498                #output['Low Alpha'] = '' 
     499                #output['High Alpha'] = '' 
     500                #output['Low Beta'] = '' 
     501                #output['High Beta'] = '' 
     502                #output['Low Gamma'] = '' 
     503                #output['Mid Gamma'] = '' 
     504                 
     505                for header in self.customDataHeaders: 
     506                        output[header] = '' 
     507                 
     508                if 'eSense' in packet.keys(): 
     509                        if 'attention' in packet['eSense'].keys(): 
     510                                output['Attention'] = packet['eSense']['attention'] 
     511                        if 'meditation' in packet['eSense'].keys(): 
     512                                output['Meditation'] = packet['eSense']['meditation'] 
     513                 
     514                if 'poorSignalLevel' in packet.keys(): 
     515                        output['Signal Level'] = packet['poorSignalLevel'] 
     516                 
     517                if 'eegPower' in packet.keys(): 
     518                        if 'delta' in packet['eegPower'].keys(): 
     519                                output['Delta'] = packet['eegPower']['delta'] 
     520                        if 'theta' in packet['eegPower'].keys(): 
     521                                output['Theta'] = packet['eegPower']['theta'] 
     522                        if 'lowAlpha' in packet['eegPower'].keys(): 
     523                                output['Low Alpha'] = packet['eegPower']['lowAlpha'] 
     524                        if 'highAlpha' in packet['eegPower'].keys(): 
     525                                output['High Alpha'] = packet['eegPower']['highAlpha'] 
     526                        if 'lowBeta' in packet['eegPower'].keys(): 
     527                                output['Low Beta'] = packet['eegPower']['lowBeta'] 
     528                        if 'highBeta' in packet['eegPower'].keys(): 
     529                                output['High Beta'] = packet['eegPower']['highBeta'] 
     530                        if 'lowGamma' in packet['eegPower'].keys(): 
     531                                output['Low Gamma'] = packet['eegPower']['lowGamma'] 
     532                        if 'highGamma' in packet['eegPower'].keys(): 
     533                                output['Mid Gamma'] = packet['eegPower']['highGamma'] 
     534                 
     535                 
     536                return(output) 
    470537         
    471538         
Note: See TracChangeset for help on using the changeset viewer.