def test_add_delete_cosmetic_attributes(self): """Test ParameterHandler.to_dict() function when some parameters are in different units (proper behavior is to convert all quantities to the last- read unit) """ from simtk import unit bh = BondHandler(skip_version_check=True) bh.add_parameter({ 'smirks': '[*:1]-[*:2]', 'length': 1 * unit.angstrom, 'k': 10 * unit.kilocalorie_per_mole / unit.angstrom**2 }) bh.add_parameter({ 'smirks': '[*:1]=[*:2]', 'length': 0.2 * unit.nanometer, 'k': 0.4 * unit.kilojoule_per_mole / unit.nanometer**2 }) assert not (bh.attribute_is_cosmetic('pilot')) # Ensure the cosmetic attribute is present by default during output bh.add_cosmetic_attribute('pilot', 'alice') param_dict = bh.to_dict() assert ('pilot', 'alice') in param_dict.items() assert bh.attribute_is_cosmetic('pilot') # Ensure the cosmetic attribute isn't present if we request that it be discarded param_dict = bh.to_dict(discard_cosmetic_attributes=True) assert 'pilot' not in param_dict # Manually delete the cosmetic attribute and ensure it doesn't get written out bh.delete_cosmetic_attribute('pilot') param_dict = bh.to_dict() assert 'pilot' not in param_dict assert not (bh.attribute_is_cosmetic('pilot'))
def test_to_dict_maintain_units(self): """Test ParameterHandler.to_dict() function when parameters were provided in different units """ from simtk import unit bh = BondHandler(skip_version_check=True) bh.add_parameter({'smirks': '[*:1]-[*:2]', 'length': 1*unit.angstrom, 'k': 10*unit.kilocalorie_per_mole/unit.angstrom**2}) bh.add_parameter({'smirks': '[*:1]=[*:2]', 'length': 0.2*unit.nanometer, 'k': 0.4*unit.kilojoule_per_mole/unit.nanometer**2}) bh_dict = bh.to_dict() assert bh_dict['Bond'][0]['length'] == unit.Quantity(1., unit.angstrom) assert bh_dict['Bond'][0]['length'].unit == unit.angstrom assert bh_dict['Bond'][1]['length'] == unit.Quantity(0.2, unit.nanometer) assert bh_dict['Bond'][1]['length'].unit == unit.nanometer
def test_different_units_to_dict(self): """Test ParameterHandler.to_dict() function when some parameters are in different units (proper behavior is to convert all quantities to the last- read unit) """ from simtk import unit bh = BondHandler(skip_version_check=True) bh.add_parameter({'smirks': '[*:1]-[*:2]', 'length': 1*unit.angstrom, 'k': 10*unit.kilocalorie_per_mole/unit.angstrom**2}) bh.add_parameter({'smirks': '[*:1]=[*:2]', 'length': 0.2*unit.nanometer, 'k': 0.4*unit.kilojoule_per_mole/unit.nanometer**2}) bh_dict = bh.to_dict() assert bh_dict['Bond'][0]['length'] == unit.Quantity(value=1, unit=unit.angstrom) assert bh_dict['Bond'][1]['length'] == unit.Quantity(value=2, unit=unit.angstrom)