def assert_analyzed_state(self, mba, aligned=False):
        self.assertIsInstance(mba.balance_threshold, float)
        self.assertGreater(mba.balance_threshold, 0.)
        assert_unit_scalar_almost_equal(mba.current_volume, self.load_volume)
        assert_unit_scalar_almost_equal(mba.current_concentration,
                                        self.load_concentration)
        # We know this file is balanced
        self.assertIsInstance(mba.mass_from_method, UnitScalar)
        self.assertFalse(isnan(mba.mass_from_method))
        self.assertIsInstance(mba.mass_from_uv, UnitScalar)
        self.assertFalse(isnan(mba.mass_from_uv))
        if aligned:
            self.assertTrue(mba.balanced)
        else:
            self.assertFalse(mba.balanced)

        # Can compute what values are needed to balance the data:
        new_vol = mba.compute_loaded_vol(tgt_units=column_volumes)
        self.assertEqual(new_vol.units.label, "CV")
        if aligned:
            self.assertAlmostEqual(float(new_vol),
                                   float(self.load_volume),
                                   places=4)

        new_conc = mba.compute_concentration()
        self.assertEqual(new_conc.units.label, "g/L")
        if aligned:
            self.assertAlmostEqual(float(new_conc),
                                   float(self.load_concentration),
                                   places=1)
 def assert_initial_state(self, mba):
     self.assertIsInstance(mba.balance_threshold, float)
     self.assertGreater(mba.balance_threshold, 0.)
     assert_unit_scalar_almost_equal(mba.current_volume, self.load_volume)
     assert_unit_scalar_almost_equal(mba.current_concentration,
                                     self.load_concentration)
     self.assertFalse(mba.balanced)
    def test_compute_with_volume_in_CV_units(self):
        time = UnitScalar(1., units="minute")
        volume = time_to_volume(time, self.flow_rate_vol, to_unit="liter")
        assert_unit_scalar_almost_equal(volume, UnitScalar(1., units="liter"))

        time = UnitScalar(3., units="minute")
        volume = time_to_volume(time, self.flow_rate_vol, to_unit="liter")
        assert_unit_scalar_almost_equal(volume, UnitScalar(3., units="liter"))
    def test_time_std_units_with_vol_flow(self):
        time = UnitScalar(1., units="minute")
        volume = time_to_volume(time, self.flow_rate_vol, self.column)
        assert_unit_scalar_almost_equal(volume, UnitScalar(1., units="CV"))

        time = UnitScalar(3., units="minute")
        volume = time_to_volume(time, self.flow_rate_vol, self.column)
        assert_unit_scalar_almost_equal(volume, UnitScalar(3., units="CV"))
    def test_change_strip_fraction_bad_value(self):
        self.experim.strip_mass_fraction = UnitScalar(2, units="%")
        load = self.experim.method.load.solutions[0]
        self.assertAlmostEqual(load.product_component_assay_values[-1], 2.)

        # This will fail by raising an exception, in the
        self.experim.strip_mass_fraction = UnitScalar(3, units="cm")
        self.assertAlmostEqual(load.product_component_assay_values[-1], 2.)
        assert_unit_scalar_almost_equal(self.experim.strip_mass_fraction,
                                        UnitScalar(2, units="%"))
    def test_get_step_start_time_no_offline_steps(self):
        self.experim.method.offline_steps = []
        load_start = self.experim.get_step_start_time(self.experim.method.load)
        expected = UnitScalar(self.load_time, units="min")
        assert_unit_scalar_almost_equal(load_start, expected)

        strip_step = self.experim.method.get_step_of_type(STRIP_STEP_TYPE)
        strip_start = self.experim.get_step_start_time(strip_step)
        expected = UnitScalar(self.strip_time, units="min")
        assert_unit_scalar_almost_equal(strip_start, expected)
示例#7
0
 def test_g_per_liter_resin_to_cv_conc_units(self):
     """ g/L_resin -> CV, passing concentration in different unit.
     """
     concentration = UnitScalar(8030, units="g/m**3")
     vol = UnitScalar(0.0635, units=chr_units.g_per_liter_resin)
     expected = UnitScalar(0.0635 / 8.03, units="CV")
     new_vol = convert_units(vol,
                             tgt_unit="CV",
                             concentration=concentration)
     assert_unit_scalar_almost_equal(new_vol, expected)
    def test_get_step_start_time_default_offline_steps(self):
        self.assertEqual(self.experim.method.offline_steps,
                         ['Pre-Equilibration', 'Equilibration'])
        load_start = self.experim.get_step_start_time(self.experim.method.load)
        expected = UnitScalar(0., units="min")
        assert_unit_scalar_almost_equal(load_start, expected)

        strip_step = self.experim.method.get_step_of_type(STRIP_STEP_TYPE)
        strip_start = self.experim.get_step_start_time(strip_step)
        expected = UnitScalar(self.strip_time - self.load_time, units="min")
        assert_unit_scalar_almost_equal(strip_start, expected)
    def test_time_std_units_with_lin_flow(self):
        time = UnitScalar(10., units="minute")
        volume = time_to_volume(time,
                                flow_rate=self.flow_rate_lin,
                                column=self.column)
        self.assertAlmostEqual(volume, UnitScalar(np.pi / 4., units="CV"))

        time = UnitScalar(30., units="minute")
        volume = time_to_volume(time, self.flow_rate_lin, column=self.column)
        assert_unit_scalar_almost_equal(volume,
                                        UnitScalar(3 * np.pi / 4., units="CV"))
示例#10
0
    def test_g_per_liter_resin_to_cv(self):
        concentration = UnitScalar(8.03, units="g/L")
        vol = UnitScalar(0.0635, units=chr_units.g_per_liter_resin)
        # without a concentration, the conversion is impossible:
        with self.assertRaises(ValueError):
            convert_units(vol, tgt_unit="CV")

        new_vol = convert_units(vol,
                                tgt_unit="CV",
                                concentration=concentration)
        expected = UnitScalar(0.0635 / 8.03, units="CV")
        assert_unit_scalar_almost_equal(new_vol, expected)
    def test_set_volume(self):
        x = UnitScalar(1e-1, units="m**3")
        with self.assertTraitChanges(self.column, "bed_height_actual", 1):
            self.column.volume = x
        assert_unit_scalar_almost_equal(self.column.volume, x)

        # Do nothing if value is already set
        with self.assertTraitDoesNotChange(self.column, "bed_height_actual"):
            self.column.volume = x

        # Different unit
        x2 = UnitScalar(150, units="liter")
        with self.assertTraitChanges(self.column, "bed_height_actual", 1):
            self.column.volume = x2
        assert_unit_scalar_almost_equal(self.column.volume, x2)
示例#12
0
 def test_parse_g_per_liter_resin_label(self):
     vol = UnitScalar(1, units="g/Liter_resin")
     vol2 = UnitScalar(1, units=chr_units.g_per_liter_resin)
     assert_unit_scalar_almost_equal(vol, vol2)
示例#13
0
 def test_parse_column_volume_label(self):
     vol = UnitScalar(1, units="CV")
     vol2 = UnitScalar(1, units=chr_units.column_volumes)
     assert_unit_scalar_almost_equal(vol, vol2)
 def test_volume_calculation(self):
     actual_col_vol = UnitScalar(157079.63, units=milliliter)
     assert_unit_scalar_almost_equal(self.column.volume,
                                     actual_col_vol,
                                     eps=1e-2)
 def test_set_strip_fraction(self):
     self.load.strip_mass_fraction = UnitScalar(10.0, units='%')
     assert_unit_scalar_almost_equal(self.load.strip_mass_fraction,
                                     UnitScalar(10.0, units='%'))