controls/DebugVariablePanel/DebugVariableItem.py
changeset 1267 fae0809eae98
parent 1220 16c283246241
child 1268 f049c901c85b
equal deleted inserted replaced
1266:4282f62c1cf0 1267:fae0809eae98
   170         Return variable value range
   170         Return variable value range
   171         @return: (minimum_value, maximum_value)
   171         @return: (minimum_value, maximum_value)
   172         """
   172         """
   173         return self.MinValue, self.MaxValue
   173         return self.MinValue, self.MaxValue
   174     
   174     
   175     def OrthogonalDataAndRange(self, start_tick, end_tick):
   175     def GetDataAndValueRange(self, start_tick, end_tick, full_range=True):
   176         """
   176         """
   177         Return variable value range
   177         Return variable data and value range for a given tick range
   178         @param start_tick: Start tick of given range (default None, first data)
   178         @param start_tick: Start tick of given range (default None, first data)
   179         @param end_tick: end tick of given range (default None, last data)
   179         @param end_tick: end tick of given range (default None, last data)
       
   180         @param full_range: Value range is calculated on whole data (False: only
       
   181         calculated on data in given range)
   180         @return: (numpy.array([(tick, value, forced),...]), 
   182         @return: (numpy.array([(tick, value, forced),...]), 
   181                   min_value, max_value)
   183                   min_value, max_value)
   182         """
   184         """
   183         # Calculate min_value and max_value so that range size is greater
   185         # Get data in given tick range
   184         # than 1.0
   186         data = self.GetData(start_tick, end_tick)
   185         if self.MinValue is not None and self.MaxValue is not None:
   187         
   186             center = (self.MinValue + self.MaxValue) / 2.
   188         # Value range is calculated on whole data
   187             range = max(1.0, self.MaxValue - self.MinValue)
   189         if full_range:
   188         else:
   190             return data, self.MinValue, self.MaxValue
   189             center = 0.5
   191         
   190             range = 1.0
   192         # Check that data in given range is not empty
   191         return (self.GetData(start_tick, end_tick), 
   193         values = data[:, 1]
   192                 center - range * 0.55, center + range * 0.55)
   194         if len(values) > 0:
       
   195             # Return value range for data in given tick range
       
   196             return (data,
       
   197                     data[numpy.argmin(values), 1],
       
   198                     data[numpy.argmax(values), 1])
       
   199         
       
   200         # Return default values
       
   201         return data, None, None
   193     
   202     
   194     def ResetData(self):
   203     def ResetData(self):
   195         """
   204         """
   196         Reset data stored when store data option enabled
   205         Reset data stored when store data option enabled
   197         """
   206         """