NCCOOS Trac Projects: Top | Web | Platforms | Processing | Viz | Sprints | Sandbox | (Wind)

Changeset 69

Show
Ignore:
Timestamp:
08/20/07 19:19:22
Author:
cbc
Message:

Fulfill ticket #11: Compute minimum altitude

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sodar/trunk/sodar/data.py

    r68 r69  
    114114        self._convert() 
    115115        self._stamp() 
    116         self._timeInterval() 
     116        self._sampleInterval() 
    117117        # correct for missing times 
    118         # compute minium altitude 
     118        self._minimumAltitude() 
    119119        # compute maximum overall altitude 
    120120        # compute number of altitudes 
     
    165165                sample['stamp'] = datatime.datetime.min 
    166166     
    167     def _timeInterval(self): 
    168         """Add a time interval attribute""" 
     167    def _sampleInterval(self): 
     168        """Add a sample interval attribute.""" 
    169169        intervals = zip([sample['stamp'] for sample in self.samples[:-1]], 
    170170                        [sample['stamp'] for sample in self.samples[1:]]) 
     
    179179        for key,value in accumulator.items(): 
    180180            if value == maxVotes: 
    181                 self.timeInterval = key 
     181                self.sampleInterval = key 
    182182                break 
    183         self.timeInterval = getattr(self, 
    184                                     'timeInterval', 
     183        self.sampleInterval = getattr(self, 
     184                                    'sampleInterval', 
    185185                                    datetime.timedelta.resolution) 
     186     
     187    def _minimumAltitude(self): 
     188        """Add a minimum altitude attribute.""" 
     189        accumulator = {} 
     190        for sample in self.samples: 
     191            minalt = sample['body'][0]['ALT'] 
     192            sample['header']['minalt'] = minalt 
     193            if minalt is not n.NaN: 
     194                if minalt in accumulator: 
     195                    accumulator[minalt] += 1 
     196                else: 
     197                    accumulator[minalt] = 1 
     198        maxVotes = max(accumulator.values()) 
     199        for key,value in accumulator.items(): 
     200            if value == maxVotes: 
     201                self.minimumAltitude = key 
     202                break 
     203        self.minimumAltitude = getattr(self, 
     204                                       'minimumAltitude', 
     205                                       0.0) 
    186206 
    187207