Mercurial Hosting > traffic-intelligence
diff python/indicators.py @ 376:2e6b8610bcaa
work on indicator similarity
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 17 Jul 2013 18:19:08 -0400 |
parents | 2ea8584aa80a |
children | 6d26dcc7bba0 |
line wrap: on
line diff
--- a/python/indicators.py Wed Jul 17 01:29:25 2013 -0400 +++ b/python/indicators.py Wed Jul 17 18:19:08 2013 -0400 @@ -107,24 +107,28 @@ class LCSS(utilsLCSS): '''Adapted LCSS class for indicators, same pattern''' - def __init__(self, threshold, delta = float('inf'), aligned = False, lengthFunc = min): + def __init__(self, threshold, delta = float('inf'), minLength = 0, aligned = False, lengthFunc = min): utilsLCSS.__init__(self, lambda x,y: (distanceForLCSS(x,y) <= threshold), delta, aligned, lengthFunc) + self.minLength = minLength + + def checkIndicator(self, indicator): + return indicator != None and len(indicator) >= self.minLength def compute(self, indicator1, indicator2, computeSubSequence = False): - if indicator1 and indicator2: + if self.checkIndicator(indicator1) and self.checkIndicator(indicator2): return self._compute(indicator1.getValues(), indicator2.getValues(), computeSubSequence) else: return 0 - def computeNormalized(self, indicator1, indicator2): - if indicator1 and indicator2: - return self._computeNormalized(indicator1.getValues(), indicator2.getValues()) + def computeNormalized(self, indicator1, indicator2, computeSubSequence = False): + if self.checkIndicator(indicator1) and self.checkIndicator(indicator2): + return self._computeNormalized(indicator1.getValues(), indicator2.getValues(), computeSubSequence) else: return 0. - def computeDistance(self, indicator1, indicator2): - if indicator1 and indicator2: - return self._computeDistance(indicator1.getValues(), indicator2.getValues()) + def computeDistance(self, indicator1, indicator2, computeSubSequence = False): + if self.checkIndicator(indicator1) and self.checkIndicator(indicator2): + return self._computeDistance(indicator1.getValues(), indicator2.getValues(), computeSubSequence) else: return 1.