def request_window_stream(self, window_spec=None, nullmarker_stride_ms=1000, no_overlap=True): # load windower spec file if window_spec is None: window_definitions = WindowFactory.default_windower_spec() no_overlap = True self.logger.info("Using default windower spec %s" % window_definitions) else: windower_spec_file = open(window_spec, 'r') window_definitions = \ WindowFactory.window_definitions_from_yaml(windower_spec_file) windower_spec_file.close() self.logger.info(str("Finished loading windower spec file from %s" % window_spec)) if nullmarker_stride_ms != window_definitions[0].endoffsetms: warnings.warn("defined nullmarker stride (%d) is different from " "endoffset (%d) in window-definitions[0]!" % (nullmarker_stride_ms, window_definitions[0].endoffsetms)) eeg_client = self.setup_client() # create windower self.marker_windower = MarkerWindower(eeg_client, window_definitions, nullmarker_stride_ms=nullmarker_stride_ms, no_overlap = no_overlap) self.logger.info( "Created windower instance") # return an iterator over the yielded windows window_stream = ((sample, label) for (sample, label) in self.marker_windower) self.logger.info( "Created window-stream") return window_stream
def __init__(self, windower_spec_file=None, local_window_conf=False, nullmarker_stride_ms=1000, no_overlap=False, continuous=False, data_consistency_check=False, **kwargs): super(Stream2TimeSeriesSourceNode, self).__init__(**kwargs) assert not(nullmarker_stride_ms is None and windower_spec_file is None),\ "No segmentation parameters specified!" if windower_spec_file is None: no_overlap = True continuous = True wdefs = WindowFactory.default_windower_spec( endoffsetms=nullmarker_stride_ms) else: wdefs = Windower._load_window_spec(windower_spec_file, local_window_conf) self.set_permanent_attributes( window_definition=wdefs, nullmarker_stride_ms=nullmarker_stride_ms, no_overlap=no_overlap, data_consistency_check=data_consistency_check, dataset=None, continuous=continuous)
def test_window_definitions_from_yaml(self): simpleYAMLInput = \ """ skip_ranges : - {start : 0, end: 15000} window_defs : s16: classname : A markername : "S 16" startoffsetms : -1400 endoffsetms : -120 jitter : 0 excludedefs : [] null: classname : B markername : "null" startoffsetms : -1280 endoffsetms : 0 jitter : 0 excludedefs : [all] exclude_defs: all: markernames : ["S 1", "S 2", "S 8", "S 16", "S 24", "S 32"] preexcludems : 2000 postexcludems : 2000 """ windows = WindowFactory.window_definitions_from_yaml(simpleYAMLInput) self.assert_( len(windows) == 2 and isinstance(windows[0], windower.LabeledWindowDef) and isinstance(windows[1], windower.LabeledWindowDef)) self.assert_( set([windows[0].classname, windows[1].classname]) == set( ['A', 'B'])) self.assert_( set([windows[0].markername, windows[1].markername]) == set( ['S 16', 'null'])) self.assert_( set([windows[0].startoffsetms, windows[1].startoffsetms]) == set( [-1400, -1280])) self.assert_( set([windows[0].endoffsetms, windows[1].endoffsetms]) == set( [-120, 0])) self.assert_(windows[0].skipfirstms == 15000) self.assert_(windows[0].excludedefs == [] or windows[1].excludedefs == []) window = windows[0] if windows[0].excludedefs != [] else windows[1] self.assert_( len(window.excludedefs) == 6 and isinstance(window.excludedefs[0], windower.ExcludeDef)) self.assert_(window.excludedefs[0].preexcludems == 2000) self.assert_(window.excludedefs[0].postexcludems == 2000)
def test_window_definitions_from_yaml(self): simpleYAMLInput = \ """ skip_ranges : - {start : 0, end: 15000} window_defs : s16: classname : A markername : "S 16" startoffsetms : -1400 endoffsetms : -120 jitter : 0 excludedefs : [] null: classname : B markername : "null" startoffsetms : -1280 endoffsetms : 0 jitter : 0 excludedefs : [all] exclude_defs: all: markernames : ["S 1", "S 2", "S 8", "S 16", "S 24", "S 32"] preexcludems : 2000 postexcludems : 2000 """ windows = WindowFactory.window_definitions_from_yaml(simpleYAMLInput) self.assert_(len(windows) == 2 and isinstance(windows[0], windower.LabeledWindowDef) and isinstance(windows[1], windower.LabeledWindowDef)) self.assert_(set([windows[0].classname, windows[1].classname]) == set(['A', 'B'])) self.assert_(set([windows[0].markername, windows[1].markername]) == set(['S 16', 'null'])) self.assert_(set([windows[0].startoffsetms, windows[1].startoffsetms]) == set([-1400, -1280])) self.assert_(set([windows[0].endoffsetms, windows[1].endoffsetms]) == set([-120, 0])) self.assert_(windows[0].skipfirstms == 15000) self.assert_(windows[0].excludedefs == [] or windows[1].excludedefs == []) window = windows[0] if windows[0].excludedefs != [] else windows[1] self.assert_(len(window.excludedefs) == 6 and isinstance(window.excludedefs[0],windower.ExcludeDef)) self.assert_(window.excludedefs[0].preexcludems == 2000) self.assert_(window.excludedefs[0].postexcludems == 2000)
def request_window_stream(self, window_spec, nullmarker_stride_ms=1000, no_overlap=False): # function to connect a client to a running # remote streaming server or local process if self.ip is None: self.ip = "127.0.0.1" # for the local mode if self.port is None: # without a port we cannot do anything raise Exception, "Port for stream reception is not set!" # connect and start client eeg_client = eeg_stream.EEGClient(host=self.ip, port=self.port) eeg_client.connect() self.logger.info("Started EEG-Client") self.eeg_client.append(eeg_client) # load windower spec file windower_spec_file = open(window_spec, 'r') window_definitions = \ WindowFactory.window_definitions_from_yaml(windower_spec_file) windower_spec_file.close() self.logger.info("Finished loading windower spec file") self.logger.info(window_definitions) # create windower self.marker_windower = MarkerWindower( eeg_client, window_definitions, nullmarker_stride_ms=nullmarker_stride_ms, no_overlap=no_overlap) self.logger.info("Created windower instance") # return an iterator over the yielded windows window_stream = ((sample, label) for (sample, label) in self.marker_windower) self.logger.info("Created window-stream") return window_stream
def request_window_stream(self, window_spec, nullmarker_stride_ms = 1000, no_overlap = False): # function to connect a client to a running # remote streaming server or local process if self.ip is None: self.ip = "127.0.0.1" # for the local mode if self.port is None: # without a port we cannot do anything raise Exception, "Port for stream reception is not set!" # connect and start client eeg_client = eeg_stream.EEGClient(host=self.ip, port=self.port) eeg_client.connect() self.logger.info( "Started EEG-Client") self.eeg_client.append(eeg_client) # load windower spec file windower_spec_file = open(window_spec, 'r') window_definitions = \ WindowFactory.window_definitions_from_yaml(windower_spec_file) windower_spec_file.close() self.logger.info( "Finished loading windower spec file") self.logger.info(window_definitions) # create windower self.marker_windower = MarkerWindower(eeg_client, window_definitions, nullmarker_stride_ms=nullmarker_stride_ms, no_overlap = no_overlap) self.logger.info( "Created windower instance") # return an iterator over the yielded windows window_stream = ((sample, label) for (sample, label) in self.marker_windower) self.logger.info( "Created window-stream") return window_stream