def test_style_manager_ranges(self): test_quantity = Quantity(test_data, name="vp", units="m/s", family_name="pvelocity") # unit_system optional, since kgs is default self.assertEqual(style_manager.get_range(test_quantity, unit_system="kgs"), (1.5, 6.5)) self.assertEqual(style_manager.get_range(test_quantity.invert(), unit_system="kgs"), (500.0, 0.0))
def _from_display_units(self, value, quantity): family_name = self._get_family_name(quantity) project_quantity = Quantity(value, units=self._get_display_units(quantity), family_name=family_name) return Quantity(project_quantity, units=quantity.units, family_name=family_name)
def get_data_for(self, name, units=None): """ Returns the data associated with a specified trait, optionally in a specified set of units. """ if (units is None) or (not self.is_quantity(name)): return getattr(self, name) return Quantity( Quantity(getattr(self, name), self.get_units_for(name)), units)
def test_propagation_base(self): """ Tests that propagation works for an original quantity. """ q1 = Quantity(10, units="m", family_name="depth") q1.propagate_data_changes() self.assertEqual(10, q1.data, "Propagation modified the base data.") return
def test_propagation_base(self): """ Tests that propagation works for an original quantity. """ q1 = Quantity(10, units='m', family_name='depth') q1.propagate_data_changes() self.assertEqual(10, q1.data, "Propagation modified the base data.") return
def test_smart_unit_notequal(self): """ test smart unit class __ne__ method""" qm1 = Quantity(1, units='m', family_name='depth') qm2 = Quantity(2, units='m', family_name='depth') qft = Quantity(1, units='feet', family_name='depth') self.assertTrue(not (qm1.units != qm2.units)) self.assertTrue(qm1.units != qft.units) return
def test_get_original(self): q1 = Quantity(10, units="m", family_name="depth") q2 = q1.change_unit_system("IMPERIAL") q3 = q1.change_unit_system("METRIC") self.assertEqual(q1, q1.get_original(), "Original quantity's get_original method failed to return self.") self.assertEqual(q1, q2.get_original(), "First child get_original failed to return original.") self.assertEqual(q1, q3.get_original(), "Second child get_original failed to return original.") return
def test_style_manager_ranges(self): test_quantity = Quantity( test_data, name="vp", units='m/s', family_name="pvelocity") # unit_system optional, since kgs is default self.assertEqual(style_manager.get_range(test_quantity, unit_system='kgs'), (1.5, 6.5)) self.assertEqual(style_manager.get_range(test_quantity.invert(), unit_system='kgs'), (500.0, 0.0))
def get_quantity_for(self, name, units=None): """ Returns a Quantity object associated with a specified trait, optionally in a specified set of units. """ if self.is_quantity(name): quantity = Quantity(getattr(self, name), self.get_units_for(name)) if units is not None: return Quantity(quantity, units) return quantity if units is None: units = dimensionless return Quantity(getattr(self, name), units)
def test_get_original(self): q1 = Quantity(10, units='m', family_name='depth') q2 = q1.change_unit_system('IMPERIAL') q3 = q1.change_unit_system('METRIC') self.assertEqual(q1, q1.get_original(), "Original quantity's get_original method failed to return self.") self.assertEqual(q1, q2.get_original(), "First child get_original failed to return original.") self.assertEqual(q1, q3.get_original(), "Second child get_original failed to return original.") return
def _to_display_units(self, quantity): family_name = self._get_family_name(quantity) project_quantity = Quantity(quantity, units=self._get_display_units(quantity), family_name=family_name) return project_quantity.data
def test_propagation(self): """ Tests data propagation for a single converted quantity. """ q1 = Quantity(10, units="m", family_name="depth") q2 = q1.change_unit_system("IMPERIAL") q3 = q1.change_unit_system("METRIC") q2.data = 2 * q2.data q2.propagate_data_changes() self.assertAlmostEqual(20.0, q1.data, 1, "Propagation test expected data 20, got %s" % str(q1.data)) q3.data = 3 * q3.data q3.propagate_data_changes() self.assertAlmostEqual(30.0, q1.data, 1, "Propagation test expected data 30, got %s" % str(q1.data)) return
def test_conversion_tracks_parents(self): """ Test that a _converted_from traits is set appropriately. Quantity converted from another quantity via change_unit_system has the _converted_from trait set appropriately. """ metric_system = unit_manager.get_unit_system("METRIC") metric_depth = metric_system.units("depth") q1 = Quantity(32, units="m", family_name="depth") q2 = q1.change_unit_system("IMPERIAL") q3 = q2.change_unit_system("METRIC") self.assertEqual(q1, q2._converted_from, "Conversion failed to track conversion parent.") self.assertEqual(q2, q3._converted_from, "Conversion failed to track conversion parent.") return
def test_propagation(self): """ Tests data propagation for a single converted quantity. """ q1 = Quantity(10, units='m', family_name='depth') q2 = q1.change_unit_system('IMPERIAL') q3 = q1.change_unit_system('METRIC') q2.data = 2 * q2.data q2.propagate_data_changes() self.assertAlmostEqual(20., q1.data, 1, "Propagation test expected data 20, got %s" % str(q1.data)) q3.data = 3 * q3.data q3.propagate_data_changes() self.assertAlmostEqual(30., q1.data, 1, "Propagation test expected data 30, got %s" % str(q1.data)) return
def test_conversion_tracks_parents(self): """ Test that a _converted_from traits is set appropriately. Quantity converted from another quantity via change_unit_system has the _converted_from trait set appropriately. """ metric_system = unit_manager.get_unit_system('METRIC') metric_depth = metric_system.units('depth') q1 = Quantity(32, units='m', family_name='depth') q2 = q1.change_unit_system('IMPERIAL') q3 = q2.change_unit_system('METRIC') self.assertEqual(q1, q2._converted_from, "Conversion failed to track conversion parent.") self.assertEqual(q2, q3._converted_from, "Conversion failed to track conversion parent.") return
def test_style_manager(self): test_quantity = Quantity(test_data, name="vp", units='m/s', family_name="pvelocity") self.assertEqual(style_manager.get_info(test_quantity, 'line'), 'solid') self.assertEqual(style_manager.get_info(test_quantity, 'color'), 'black')
def QuantityTrait ( default_value, units, family_name, auto_set = False, display_units = None ): """ Returns a trait definition for a Quantity whose default value is 'default_value' (a float). The quantity's units are specified by 'units' (a units object), and the family name of the units (e.g. density) is specified by 'family_name' (a string). If display_units is given, it is used for the display of the Quantity, otherwise the default units for the given family_name is used. """ return Trait( Quantity( default_value, units = units, family_name = family_name ), QuantityHandler( family_name, display_units ), auto_set = auto_set)
def create_resource(self): """ Creates the resource. """ # Create a new quantity. quantity = Quantity(self.value, self.units, name=self.name, family_name=self.value_unit_family) # Bind it in the namespace self.parent_folder.obj.bind(self.name, quantity) return
def validate ( self, object, name, value ): try: if isinstance( value, Quantity ): if value.family_name == self.family_name: return value else: if self.display_units is None: units = unit_manager.default_units_for( self.family_name ) else: units = self.display_units return Quantity( value, units = units, family_name = self.family_name ) except: pass self.error( object, name, self.repr( value ) )
def convert_quantity_old(q, unit_system): # I think importing within the function is needed to avoid circularity from scimath.units.quantity import Quantity try: units = unit_system.units(q.family_name) except KeyError: logger.exception("Could not convert quantity: %s to system: %s" % (q,unit_system)) return q.clone() if q.units == units: q = q.clone() else: data = units_convert(q.data, q.units, units) q = Quantity(data, units=units, name=q.name or q.family_name, family_name=q.family_name) return q
def test_unit_parser_dimensionless(self): dless = Quantity(1.0, units="", family_name="unknown") self.assert_(is_dimensionless(dless.units), "Dimensionless units not properly parsed")
def test_unit_parser_caps(self): mpers_in_caps = Quantity(1.0, units="M/S", family_name="pvelocity") self.assertEqual(mpers_in_caps.units.derivation, meters_per_second.derivation, "Capitalized units rejected")