Skip to content

Quantity and Measurement interoperability with uncertainties #1614

@MichaelTiemannOSC

Description

@MichaelTiemannOSC

Related to #1611, Pint+uncertainties creates some interesting interoperabilities between Measurements (which store nominal value and error terms along with units) and Quantity (which, with uncertainties, can store nominal_value and std_dev jointly as a UFloat magnitude). It is therefore logical that Quantities could be created from Measurements, and vice-versa. This issue provides a reference for a test case.

    @helpers.requires_uncertainties
    def test_issue1614():
        from uncertainties import UFloat, ufloat

	q = module_registry.Quantity(1.0, "m")
        assert isinstance(q, module_registry.Quantity)
	m = module_registry.Measurement(2.0, 0.3, "m")
        assert isinstance(m, module_registry.Measurement)

        u1 = ufloat(1.2, 3.4)
        u2 = ufloat(5.6, 7.8)
        q1_u = module_registry.Quantity(u1, "m")
        m1 = module_registry.Measurement(q1_u)
	assert m1.value.magnitude == u1.nominal_value
        assert m1.error.magnitude == u1.std_dev
        m2 = module_registry.Measurement(5.6, 7.8)  # dimensionless                                                                                                                                                                                                                     
        q2_u = module_registry.Quantity(m2)
	assert isinstance(q2_u.magnitude, UFloat)
        assert q2_u.magnitude.nominal_value == m2.value
        assert q2_u.magnitude.nominal_value == u2.nominal_value
        assert q2_u.magnitude.std_dev == m2.error
	assert q2_u.magnitude.std_dev == u2.std_dev

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions