Source code for pycif.plugins.obsparsers.icos.utils

# -*- coding: utf-8 -*-

import os
import pandas as pd
import numpy as np
from dateutil.tz import tzoffset


[docs] def convert_unit(df, params, unit="ppm", default_unit="ppm"): """Converts between ppb, ppm, ppt. Default is conversion to ppm """ if "unit" in df.columns: for p in params: # Change missing unit to default unit df.loc[df["unit"] == "", "unit"] = default_unit # First conversion to ppm as a common reference unit df.loc[df["unit"] == "ppt", p] /= 1e6 df.loc[df["unit"] == "ppb", p] /= 1e3 df.loc[df["unit"] == "ppbv", p] /= 1e3 df.loc[df["unit"] == "nmol.mol-1", p] /= 1e3 df.loc[df["unit"] == "nmol.mol-¹", p] /= 1e3 # Then conversion to target unit if needed if unit in ["ppb", "ppbv", "nmol.mol-1", "nmol.mol-¹"]: df[p] *= 1e3 elif unit == "ppt": df[p] *= 1e6 elif unit in ["ppm", "umol.mol-1", "umol.mol-¹"]: pass else: raise ValueError(unit + " is not a valid unit for conversion") df["unit"] = unit return df