diff --git a/common/python/nomadcore/unit_conversion/unit_conversion.py b/common/python/nomadcore/unit_conversion/unit_conversion.py index dfe24285ab1b0990e3962b6ac89286579fe5bf4b..134cbf1a94356d48876b51307a1f547b1577b3f9 100644 --- a/common/python/nomadcore/unit_conversion/unit_conversion.py +++ b/common/python/nomadcore/unit_conversion/unit_conversion.py @@ -12,6 +12,7 @@ import re import logging from pint import UnitRegistry import cachetools +import numpy as np logger = logging.getLogger(__name__) # disable warnings from pint logging.getLogger("pint").setLevel(logging.ERROR) @@ -58,7 +59,13 @@ def convert_unit(value, unit, target_unit=None): """ factor = get_multiplicative_factor(unit, target_unit) if factor is not None: - return value * factor + try: + if isinstance(value, (list, tuple)): + return (np.array(value) * factor).tolist() + else: + return value * factor + except Exception as e: + logger.error('could not perform optimized unit conversion', exc_info=e) # Check that the unit is valid unit_def = ureg_cached(unit)