Mercurial > hg > nsaunier > traffic-intelligence
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 375:2ea8584aa80a | 376:2e6b8610bcaa |
|---|---|
| 105 | 105 |
| 106 from utils import LCSS as utilsLCSS | 106 from utils import LCSS as utilsLCSS |
| 107 | 107 |
| 108 class LCSS(utilsLCSS): | 108 class LCSS(utilsLCSS): |
| 109 '''Adapted LCSS class for indicators, same pattern''' | 109 '''Adapted LCSS class for indicators, same pattern''' |
| 110 def __init__(self, threshold, delta = float('inf'), aligned = False, lengthFunc = min): | 110 def __init__(self, threshold, delta = float('inf'), minLength = 0, aligned = False, lengthFunc = min): |
| 111 utilsLCSS.__init__(self, lambda x,y: (distanceForLCSS(x,y) <= threshold), delta, aligned, lengthFunc) | 111 utilsLCSS.__init__(self, lambda x,y: (distanceForLCSS(x,y) <= threshold), delta, aligned, lengthFunc) |
| 112 self.minLength = minLength | |
| 113 | |
| 114 def checkIndicator(self, indicator): | |
| 115 return indicator != None and len(indicator) >= self.minLength | |
| 112 | 116 |
| 113 def compute(self, indicator1, indicator2, computeSubSequence = False): | 117 def compute(self, indicator1, indicator2, computeSubSequence = False): |
| 114 if indicator1 and indicator2: | 118 if self.checkIndicator(indicator1) and self.checkIndicator(indicator2): |
| 115 return self._compute(indicator1.getValues(), indicator2.getValues(), computeSubSequence) | 119 return self._compute(indicator1.getValues(), indicator2.getValues(), computeSubSequence) |
| 116 else: | 120 else: |
| 117 return 0 | 121 return 0 |
| 118 | 122 |
| 119 def computeNormalized(self, indicator1, indicator2): | 123 def computeNormalized(self, indicator1, indicator2, computeSubSequence = False): |
| 120 if indicator1 and indicator2: | 124 if self.checkIndicator(indicator1) and self.checkIndicator(indicator2): |
| 121 return self._computeNormalized(indicator1.getValues(), indicator2.getValues()) | 125 return self._computeNormalized(indicator1.getValues(), indicator2.getValues(), computeSubSequence) |
| 122 else: | 126 else: |
| 123 return 0. | 127 return 0. |
| 124 | 128 |
| 125 def computeDistance(self, indicator1, indicator2): | 129 def computeDistance(self, indicator1, indicator2, computeSubSequence = False): |
| 126 if indicator1 and indicator2: | 130 if self.checkIndicator(indicator1) and self.checkIndicator(indicator2): |
| 127 return self._computeDistance(indicator1.getValues(), indicator2.getValues()) | 131 return self._computeDistance(indicator1.getValues(), indicator2.getValues(), computeSubSequence) |
| 128 else: | 132 else: |
| 129 return 1. | 133 return 1. |
| 130 | 134 |
| 131 | 135 |
| 132 class SeverityIndicator(TemporalIndicator): | 136 class SeverityIndicator(TemporalIndicator): |
