Ignore:
Timestamp:
05/07/12 17:07:54 (9 years ago)
Author:
sc
Message:
  • changes for Jigsaw release 1.2.2
File:
1 edited

Legend:

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

    r389 r390  
    130130DEFAULT_RESPONSE_MESSAGE = DEFAULT_SIGNAL_LEVEL_MESSAGE 
    131131 
    132 PACKET_MINIMUM_TIME_DIFFERENCE_THRESHOLD = 0.75 
     132#PACKET_MINIMUM_TIME_DIFFERENCE_THRESHOLD = 0.75 
    133133 
    134134##################################################################### 
     
    472472        ################################################################## 
    473473         
    474         def exportDataToCSV(self, parent=None, source=None, target=None): 
    475                  
    476                 # handle importing class from multiple sources 
    477                 if parent == None: 
    478                         if self.parent == None: 
    479                                 parent = self 
    480                         else: 
    481                                 parent = self.parent 
    482                  
    483                 if source == None: 
    484                         if self.parent == None: 
    485                                 source = self 
    486                         else: 
    487                                 source = self.parent 
    488                  
    489                 if target == None: 
    490                         if self.parent == None: 
    491                                 target = self 
    492                         else: 
    493                                 target = self.parent 
    494                  
    495                 try: 
    496                         truncate_csv_timezone = target.configuration.EXPORT_CSV_TRUNCATE_TIMEZONE 
    497                 except: 
    498                         truncate_csv_timezone = False 
    499                  
    500                  
    501                 if not self.emulate_headset_data: 
    502                         # NOTE: no need to scrub emulated data 
    503                         try: 
    504                                 scrub_data = target.configuration.EXPORT_CSV_SCRUB_DATA 
    505                         except: 
    506                                 scrub_data = False 
    507                 else: 
    508                         scrub_data = False 
    509                  
    510                 #headers = 'Date,Time' 
    511                 headers = 'Date,Time,Attention,Meditation,Signal Level,Delta,Theta,Low Alpha,High Alpha,Low Beta,High Beta,Low Gamma,Mid Gamma' 
    512                 #headers = self.customDataHeaders 
    513                  
    514                 customDataHeaders = [] 
    515                 for header in parent.customDataHeaders: 
    516                         customDataHeaders.append(header) 
    517                 for plugin in parent.activePlugins: 
    518                         for header in plugin.customDataHeaders: 
    519                                 customDataHeaders.append(header) 
    520                  
    521                 for each in customDataHeaders: 
    522                         headers = headers + ',%s' % each 
    523                  
    524                 headers = headers + '\n' 
    525                  
    526                  
    527                 csv = {} 
    528                  
    529                 for packet in source.packets['signals']: 
    530                          
    531                          
    532                         if 'rawEeg' in packet.keys(): 
    533                                 continue 
    534                          
    535                         if packet['timestamp'] not in csv.keys(): 
    536                                  
    537                                 if 'blinkStrength' in packet.keys(): 
    538                                         # Skip any blink packets from log 
    539                                         continue 
    540                                  
    541                                  
    542                                 timestamp = packet['timestamp'] 
    543                                 #(date, localtime) = self.parseTimeStamp(timestamp, \ 
     474        #def exportDataToCSV(self, parent=None, source=None, target=None): 
     475                 
     476                ## handle importing class from multiple sources 
     477                #if parent == None: 
     478                        #if self.parent == None: 
     479                                #parent = self 
     480                        #else: 
     481                                #parent = self.parent 
     482                 
     483                #if source == None: 
     484                        #if self.parent == None: 
     485                                #source = self 
     486                        #else: 
     487                                #source = self.parent 
     488                 
     489                #if target == None: 
     490                        #if self.parent == None: 
     491                                #target = self 
     492                        #else: 
     493                                #target = self.parent 
     494                 
     495                #try: 
     496                        #truncate_csv_timezone = target.configuration.EXPORT_CSV_TRUNCATE_TIMEZONE 
     497                #except: 
     498                        #truncate_csv_timezone = False 
     499                 
     500                 
     501                #if not self.emulate_headset_data: 
     502                        ## NOTE: no need to scrub emulated data 
     503                        #try: 
     504                                #scrub_data = target.configuration.EXPORT_CSV_SCRUB_DATA 
     505                        #except: 
     506                                #scrub_data = False 
     507                #else: 
     508                        #scrub_data = False 
     509                 
     510                ##headers = 'Date,Time' 
     511                #headers = 'Date,Time,Attention,Meditation,Signal Level,Delta,Theta,Low Alpha,High Alpha,Low Beta,High Beta,Low Gamma,Mid Gamma' 
     512                ##headers = self.customDataHeaders 
     513                 
     514                #customDataHeaders = [] 
     515                #for header in parent.customDataHeaders: 
     516                        #customDataHeaders.append(header) 
     517                #for plugin in parent.activePlugins: 
     518                        #for header in plugin.customDataHeaders: 
     519                                #customDataHeaders.append(header) 
     520                 
     521                #for each in customDataHeaders: 
     522                        #headers = headers + ',%s' % each 
     523                 
     524                #headers = headers + '\n' 
     525                 
     526                 
     527                #csv = {} 
     528                 
     529                #for packet in source.packets['signals']: 
     530                         
     531                         
     532                        #if 'rawEeg' in packet.keys(): 
     533                                #continue 
     534                         
     535                        #if packet['timestamp'] not in csv.keys(): 
     536                                 
     537                                #if 'blinkStrength' in packet.keys(): 
     538                                        ## Skip any blink packets from log 
     539                                        #continue 
     540                                 
     541                                 
     542                                #timestamp = packet['timestamp'] 
     543                                ##(date, localtime) = self.parseTimeStamp(timestamp, \ 
     544                                                    ##truncate_time_zone=truncate_csv_timezone) 
     545                                #(date, localtime) = source.parseTimeStamp(timestamp, \ 
    544546                                                    #truncate_time_zone=truncate_csv_timezone) 
    545                                 (date, localtime) = source.parseTimeStamp(timestamp, \ 
    546                                                     truncate_time_zone=truncate_csv_timezone) 
    547                                  
    548                                 csv[timestamp] = {} 
    549                                 csv[timestamp]['Date'] = date 
    550                                 csv[timestamp]['Time'] = localtime 
    551                                 csv[timestamp]['Attention'] = '' 
    552                                 csv[timestamp]['Meditation'] = '' 
    553                                 csv[timestamp]['Signal Level'] = '' 
    554                                 csv[timestamp]['Delta'] = '' 
    555                                 csv[timestamp]['Theta'] = '' 
    556                                 csv[timestamp]['Low Alpha'] = '' 
    557                                 csv[timestamp]['High Alpha'] = '' 
    558                                 csv[timestamp]['Low Beta'] = '' 
    559                                 csv[timestamp]['High Beta'] = '' 
    560                                 csv[timestamp]['Low Gamma'] = '' 
    561                                 csv[timestamp]['Mid Gamma'] = '' 
    562                                  
    563                                 for header in customDataHeaders: 
    564                                         csv[timestamp][header] = '' 
    565                          
    566                          
    567                         if 'eSense' in packet.keys(): 
    568                                 if 'attention' in packet['eSense'].keys(): 
    569                                         csv[timestamp]['Attention'] = packet['eSense']['attention'] 
    570                                 if 'meditation' in packet['eSense'].keys(): 
    571                                         csv[timestamp]['Meditation'] = packet['eSense']['meditation'] 
    572                          
    573                         if 'poorSignalLevel' in packet.keys(): 
    574                                 csv[timestamp]['Signal Level'] = packet['poorSignalLevel'] 
    575                          
    576                         if 'eegPower' in packet.keys(): 
    577                                 if 'delta' in packet['eegPower'].keys(): 
    578                                         csv[timestamp]['Delta'] = packet['eegPower']['delta'] 
    579                                 if 'theta' in packet['eegPower'].keys(): 
    580                                         csv[timestamp]['Theta'] = packet['eegPower']['theta'] 
    581                                 if 'lowAlpha' in packet['eegPower'].keys(): 
    582                                         csv[timestamp]['Low Alpha'] = packet['eegPower']['lowAlpha'] 
    583                                 if 'highAlpha' in packet['eegPower'].keys(): 
    584                                         csv[timestamp]['High Alpha'] = packet['eegPower']['highAlpha'] 
    585                                 if 'lowBeta' in packet['eegPower'].keys(): 
    586                                         csv[timestamp]['Low Beta'] = packet['eegPower']['lowBeta'] 
    587                                 if 'highBeta' in packet['eegPower'].keys(): 
    588                                         csv[timestamp]['High Beta'] = packet['eegPower']['highBeta'] 
    589                                 if 'lowGamma' in packet['eegPower'].keys(): 
    590                                         csv[timestamp]['Low Gamma'] = packet['eegPower']['lowGamma'] 
    591                                 if 'highGamma' in packet['eegPower'].keys(): 
    592                                         csv[timestamp]['Mid Gamma'] = packet['eegPower']['highGamma'] 
    593                          
    594                         for header in customDataHeaders: 
    595                                 if 'custom' in packet.keys() and \ 
    596                                    header in packet['custom'].keys(): 
    597                                         csv[timestamp][header] = packet['custom'][header] 
    598                  
    599                  
    600                 if scrub_data: 
    601                         csv = self.scrubData(csv, truncate_csv_timezone, source=source) 
    602                  
    603                  
    604                 output = headers 
    605                  
    606                 csv_keys = csv.keys() 
    607                 csv_keys.sort() 
    608                  
    609                 for key in csv_keys: 
    610                          
    611                         row = '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s' % \ 
    612                               (csv[key]['Date'], \ 
    613                                csv[key]['Time'], \ 
    614                                csv[key]['Attention'], \ 
    615                                csv[key]['Meditation'], \ 
    616                                csv[key]['Signal Level'], \ 
    617                                csv[key]['Delta'], \ 
    618                                csv[key]['Theta'], \ 
    619                                csv[key]['Low Alpha'], \ 
    620                                csv[key]['High Alpha'], \ 
    621                                csv[key]['Low Beta'], \ 
    622                                csv[key]['High Beta'], \ 
    623                                csv[key]['Low Gamma'], \ 
    624                                csv[key]['Mid Gamma']) 
    625                          
    626                         for header in customDataHeaders: 
    627                                 row = row + ',%s' % csv[key][header] 
    628                          
    629                         row = row + '\n' 
    630                          
    631                         output = output + row 
    632                  
    633                  
    634                 return(output) 
    635          
    636          
    637         ################################################################## 
    638          
    639         def scrubData(self, csv, truncate_csv_timezone=False, source=None): 
    640                  
    641                 # If there are missing packets, repeat a given packet once per missing 
    642                 # second until there is a gap between 1 and 2 seconds, in which case 
    643                 # produce a final duplicate packet at the mid-point between the packets 
    644                  
    645                 if self.DEBUG: 
    646                         print "INFO: Scrubbing Data" 
    647                  
    648                 if source == None: 
    649                         if self.parent == None: 
    650                                 source = self 
    651                         else: 
    652                                 source = self.parent 
    653                  
    654                 last_time = None 
    655                 last_recorded_time = None 
    656                  
    657                 output = {} 
    658                  
    659                 csv_keys = csv.keys() 
    660                 csv_keys.sort() 
    661                  
    662                 for key in csv_keys: 
    663                          
    664                         timestamp = key 
    665  
    666                         if csv[key]['Attention'] == '': 
    667                                 continue 
    668                          
    669                         if last_time == None: 
    670                                 # First entry in log 
    671                                 last_time = timestamp 
    672                                 last_recorded_time = timestamp 
    673                                 output[key] = csv[key] 
    674                                 continue 
    675                          
    676                         else: 
    677                                  
    678                                 #time_difference = timestamp - last_time 
    679                                 time_difference = timestamp - last_recorded_time 
    680                                  
    681                                 if (time_difference <= 1) and \ 
    682                                    (time_difference >= PACKET_MINIMUM_TIME_DIFFERENCE_THRESHOLD): 
    683                                         # Skip packets within the correct time threshold 
    684                                         last_time = timestamp 
    685                                         last_recorded_time = timestamp 
    686                                         output[key] = csv[key] 
    687                                         continue 
    688                                  
    689                                 else: 
    690                                          
    691                                         if self.DEBUG > 1: 
    692                                                 print "time_difference:", 
    693                                                 print time_difference 
    694                                                 print "timestamp:", 
    695                                                 print source.parseTimeStamp(timestamp)[-1].split(' ')[0] 
    696                                                 print "last_time:", 
    697                                                 print source.parseTimeStamp(last_time)[-1].split(' ')[0] 
    698                                                 print "last_recorded_time:", 
    699                                                 print source.parseTimeStamp(last_recorded_time)[-1].split(' ')[0] 
    700                                          
    701                                          
    702                                         new_packet = csv[key].copy() 
    703                                          
    704                                         if time_difference >= 2: 
     547                                 
     548                                #csv[timestamp] = {} 
     549                                #csv[timestamp]['Date'] = date 
     550                                #csv[timestamp]['Time'] = localtime 
     551                                #csv[timestamp]['Attention'] = '' 
     552                                #csv[timestamp]['Meditation'] = '' 
     553                                #csv[timestamp]['Signal Level'] = '' 
     554                                #csv[timestamp]['Delta'] = '' 
     555                                #csv[timestamp]['Theta'] = '' 
     556                                #csv[timestamp]['Low Alpha'] = '' 
     557                                #csv[timestamp]['High Alpha'] = '' 
     558                                #csv[timestamp]['Low Beta'] = '' 
     559                                #csv[timestamp]['High Beta'] = '' 
     560                                #csv[timestamp]['Low Gamma'] = '' 
     561                                #csv[timestamp]['Mid Gamma'] = '' 
     562                                 
     563                                #for header in customDataHeaders: 
     564                                        #csv[timestamp][header] = '' 
     565                         
     566                         
     567                        #if 'eSense' in packet.keys(): 
     568                                #if 'attention' in packet['eSense'].keys(): 
     569                                        #csv[timestamp]['Attention'] = packet['eSense']['attention'] 
     570                                #if 'meditation' in packet['eSense'].keys(): 
     571                                        #csv[timestamp]['Meditation'] = packet['eSense']['meditation'] 
     572                         
     573                        #if 'poorSignalLevel' in packet.keys(): 
     574                                #csv[timestamp]['Signal Level'] = packet['poorSignalLevel'] 
     575                         
     576                        #if 'eegPower' in packet.keys(): 
     577                                #if 'delta' in packet['eegPower'].keys(): 
     578                                        #csv[timestamp]['Delta'] = packet['eegPower']['delta'] 
     579                                #if 'theta' in packet['eegPower'].keys(): 
     580                                        #csv[timestamp]['Theta'] = packet['eegPower']['theta'] 
     581                                #if 'lowAlpha' in packet['eegPower'].keys(): 
     582                                        #csv[timestamp]['Low Alpha'] = packet['eegPower']['lowAlpha'] 
     583                                #if 'highAlpha' in packet['eegPower'].keys(): 
     584                                        #csv[timestamp]['High Alpha'] = packet['eegPower']['highAlpha'] 
     585                                #if 'lowBeta' in packet['eegPower'].keys(): 
     586                                        #csv[timestamp]['Low Beta'] = packet['eegPower']['lowBeta'] 
     587                                #if 'highBeta' in packet['eegPower'].keys(): 
     588                                        #csv[timestamp]['High Beta'] = packet['eegPower']['highBeta'] 
     589                                #if 'lowGamma' in packet['eegPower'].keys(): 
     590                                        #csv[timestamp]['Low Gamma'] = packet['eegPower']['lowGamma'] 
     591                                #if 'highGamma' in packet['eegPower'].keys(): 
     592                                        #csv[timestamp]['Mid Gamma'] = packet['eegPower']['highGamma'] 
     593                         
     594                        #for header in customDataHeaders: 
     595                                #if 'custom' in packet.keys() and \ 
     596                                   #header in packet['custom'].keys(): 
     597                                        #csv[timestamp][header] = packet['custom'][header] 
     598                 
     599                 
     600                #if scrub_data: 
     601                        #csv = self.scrubData(csv, truncate_csv_timezone, source=source) 
     602                 
     603                 
     604                #output = headers 
     605                 
     606                #csv_keys = csv.keys() 
     607                #csv_keys.sort() 
     608                 
     609                #for key in csv_keys: 
     610                         
     611                        #row = '%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s' % \ 
     612                              #(csv[key]['Date'], \ 
     613                               #csv[key]['Time'], \ 
     614                               #csv[key]['Attention'], \ 
     615                               #csv[key]['Meditation'], \ 
     616                               #csv[key]['Signal Level'], \ 
     617                               #csv[key]['Delta'], \ 
     618                               #csv[key]['Theta'], \ 
     619                               #csv[key]['Low Alpha'], \ 
     620                               #csv[key]['High Alpha'], \ 
     621                               #csv[key]['Low Beta'], \ 
     622                               #csv[key]['High Beta'], \ 
     623                               #csv[key]['Low Gamma'], \ 
     624                               #csv[key]['Mid Gamma']) 
     625                         
     626                        #for header in customDataHeaders: 
     627                                #row = row + ',%s' % csv[key][header] 
     628                         
     629                        #row = row + '\n' 
     630                         
     631                        #output = output + row 
     632                 
     633                 
     634                #return(output) 
     635         
     636         
     637        ################################################################## 
     638         
     639        #def scrubData(self, csv, truncate_csv_timezone=False, source=None): 
     640                 
     641                ## If there are missing packets, repeat a given packet once per missing 
     642                ## second until there is a gap between 1 and 2 seconds, in which case 
     643                ## produce a final duplicate packet at the mid-point between the packets 
     644                 
     645                #if self.DEBUG: 
     646                        #print "INFO: Scrubbing Data" 
     647                 
     648                #if source == None: 
     649                        #if self.parent == None: 
     650                                #source = self 
     651                        #else: 
     652                                #source = self.parent 
     653                 
     654                #last_time = None 
     655                #last_recorded_time = None 
     656                 
     657                #output = {} 
     658                 
     659                #csv_keys = csv.keys() 
     660                #csv_keys.sort() 
     661                 
     662                #for key in csv_keys: 
     663                         
     664                        #timestamp = key 
     665 
     666                        #if csv[key]['Attention'] == '': 
     667                                #continue 
     668                         
     669                        #if last_time == None: 
     670                                ## First entry in log 
     671                                #last_time = timestamp 
     672                                #last_recorded_time = timestamp 
     673                                #output[key] = csv[key] 
     674                                #continue 
     675                         
     676                        #else: 
     677                                 
     678                                ##time_difference = timestamp - last_time 
     679                                #time_difference = timestamp - last_recorded_time 
     680                                 
     681                                #if (time_difference <= 1) and \ 
     682                                   #(time_difference >= PACKET_MINIMUM_TIME_DIFFERENCE_THRESHOLD): 
     683                                        ## Skip packets within the correct time threshold 
     684                                        #last_time = timestamp 
     685                                        #last_recorded_time = timestamp 
     686                                        #output[key] = csv[key] 
     687                                        #continue 
     688                                 
     689                                #else: 
     690                                         
     691                                        #if self.DEBUG > 1: 
     692                                                #print "time_difference:", 
     693                                                #print time_difference 
     694                                                #print "timestamp:", 
     695                                                #print source.parseTimeStamp(timestamp)[-1].split(' ')[0] 
     696                                                #print "last_time:", 
     697                                                #print source.parseTimeStamp(last_time)[-1].split(' ')[0] 
     698                                                #print "last_recorded_time:", 
     699                                                #print source.parseTimeStamp(last_recorded_time)[-1].split(' ')[0] 
     700                                         
     701                                         
     702                                        #new_packet = csv[key].copy() 
     703                                         
     704                                        #if time_difference >= 2: 
    705705                                                 
     706                                                ###new_time = last_time + 1 
     707                                                ##new_time = last_recorded_time + 1 
     708                                                 
     709                                                #count = int(time_difference) 
     710                                                #while count >= 1: 
     711                                                        #new_packet = csv[key].copy() 
     712                                                        #new_time = last_recorded_time + 1 
     713                                                        #(date, formatted_new_time) = source.parseTimeStamp(new_time, \ 
     714                                                         #truncate_time_zone=truncate_csv_timezone) 
     715                                                        #new_packet['Time'] = formatted_new_time 
     716                                                        #last_recorded_time = new_time 
     717                                                        #last_time = timestamp 
     718                                                        #output[new_time] = new_packet 
     719                                                        #count = count - 1 
     720                                                #continue 
     721                                                 
     722                                        #elif time_difference < PACKET_MINIMUM_TIME_DIFFERENCE_THRESHOLD: 
     723                                                ## Spread out "bunched up" packets 
    706724                                                ##new_time = last_time + 1 
    707725                                                #new_time = last_recorded_time + 1 
     726                                         
     727                                         
     728                                        #elif (time_difference < 2) and (time_difference > 1): 
    708729                                                 
    709                                                 count = int(time_difference) 
    710                                                 while count >= 1: 
    711                                                         new_packet = csv[key].copy() 
    712                                                         new_time = last_recorded_time + 1 
    713                                                         (date, formatted_new_time) = source.parseTimeStamp(new_time, \ 
    714                                                          truncate_time_zone=truncate_csv_timezone) 
    715                                                         new_packet['Time'] = formatted_new_time 
    716                                                         last_recorded_time = new_time 
    717                                                         last_time = timestamp 
    718                                                         output[new_time] = new_packet 
    719                                                         count = count - 1 
    720                                                 continue 
    721                                                  
    722                                         elif time_difference < PACKET_MINIMUM_TIME_DIFFERENCE_THRESHOLD: 
    723                                                 # Spread out "bunched up" packets 
    724                                                 #new_time = last_time + 1 
    725                                                 new_time = last_recorded_time + 1 
    726                                          
    727                                          
    728                                         elif (time_difference < 2) and (time_difference > 1): 
    729                                                  
    730                                                 #new_time = last_time + ((last_time - timestamp) / 2) 
    731                                                 #new_time = last_recorded_time + ((last_recorded_time - timestamp) / 2) 
    732                                                 #new_time = last_time + 1 
    733                                                 new_time = last_recorded_time + 1 
    734                                          
    735                                          
    736                                         (date, formatted_new_time) = source.parseTimeStamp(new_time, \ 
    737                                            truncate_time_zone=truncate_csv_timezone) 
    738                                          
    739                                         new_packet['Time'] = formatted_new_time 
    740                                          
    741                                         #last_time = new_time 
    742                                         last_recorded_time = new_time 
    743                                         last_time = timestamp 
    744                                         output[new_time] = new_packet 
    745                                          
    746                                         if self.DEBUG > 1: 
    747                                                 print "WARN: Scrubbing new packet:", 
    748                                                 print new_packet 
    749                                                 print 
    750                  
    751                  
    752                 return(output) 
     730                                                ##new_time = last_time + ((last_time - timestamp) / 2) 
     731                                                ##new_time = last_recorded_time + ((last_recorded_time - timestamp) / 2) 
     732                                                ##new_time = last_time + 1 
     733                                                #new_time = last_recorded_time + 1 
     734                                         
     735                                         
     736                                        #(date, formatted_new_time) = source.parseTimeStamp(new_time, \ 
     737                                           #truncate_time_zone=truncate_csv_timezone) 
     738                                         
     739                                        #new_packet['Time'] = formatted_new_time 
     740                                         
     741                                        ##last_time = new_time 
     742                                        #last_recorded_time = new_time 
     743                                        #last_time = timestamp 
     744                                        #output[new_time] = new_packet 
     745                                         
     746                                        #if self.DEBUG > 1: 
     747                                                #print "WARN: Scrubbing new packet:", 
     748                                                #print new_packet 
     749                                                #print 
     750                 
     751                 
     752                #return(output) 
    753753         
    754754         
Note: See TracChangeset for help on using the changeset viewer.