def addFeature(self, definition): """ Add a feature defined according the :ref:`feature definition syntax <featplan>`. :param definition: feature definition :type definition: string :rtype: True on success, False on fail. """ data = definition.split(':') if not len(data) == 2: print 'Syntax error in "%s"' % definition return False name, featdef = data dataflow = DataFlow() inputNode = dataflow.createInput('audio', self.audio_params) if featdef.strip(): for s in featdef.split('>'): s = s.strip() bb = s.split(' ') feat = AudioFeatureFactory.get_feature(bb[0]) if not feat: return False params = {} for d in bb[1:]: if len(d) == 0: continue if not '=' in d: print 'Invalid feature parameter "%s"' % d return False dd = d.split('=') if not len(dd) == 2: print 'Syntax error in feature parameter "%s"' % d return False params[dd[0]] = dd[1] dataflow.append(feat.get_dataflow(params, self.sample_rate)) fNode = dataflow.finalNodes()[0] feat_attrs = self.out_attrs.copy() feat_attrs['yaafedefinition'] = featdef.strip() outNode = dataflow.createOutput(name, feat_attrs) dataflow.link(fNode, '', outNode, '') self.dataflow.merge(dataflow) return True
def addFeature(self, definition): """ Add a feature defined according the :ref:`feature definition syntax <featplan>`. :param definition: feature definition :type definition: string :rtype: True on success, False on fail. """ data = definition.split(":") if not len(data) == 2: print 'Syntax error in "%s"' % definition return False name, featdef = data dataflow = DataFlow() inputNode = dataflow.createInput("audio", self.audio_params) if featdef.strip(): for s in featdef.split(">"): s = s.strip() bb = s.split(" ") feat = AudioFeatureFactory.get_feature(bb[0]) if not feat: return False params = {} for d in bb[1:]: if len(d) == 0: continue if not "=" in d: print 'Invalid feature parameter "%s"' % d return False dd = d.split("=") if not len(dd) == 2: print 'Syntax error in feature parameter "%s"' % d return False params[dd[0]] = dd[1] dataflow.append(feat.get_dataflow(params, self.sample_rate)) fNode = dataflow.finalNodes()[0] feat_attrs = self.out_attrs.copy() feat_attrs["yaafedefinition"] = featdef.strip() outNode = dataflow.createOutput(name, feat_attrs) dataflow.link(fNode, "", outNode, "") self.dataflow.merge(dataflow) return True