Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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))
Ejemplo n.º 9
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)
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
    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')
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
    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
Ejemplo n.º 19
0
 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 ) )
Ejemplo n.º 20
0
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
Ejemplo n.º 21
0
 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")