Skip to content

bgc_data_processing.units

Unit conversion functions.

convert_umol_by_kg_to_mmol_by_m3(data_umol_by_kg)

Convert umol/kg to mmol/m3 using sewater denisty.

Parameters:

Name Type Description Default
data_umol_by_kg Series

Original data (in umol/kg)

required

Returns:

Type Description
Series

Converted data (mmol/m3)

Source code in src/bgc_data_processing/units.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def convert_umol_by_kg_to_mmol_by_m3(
    data_umol_by_kg: pd.Series,
) -> pd.Series:
    """Convert umol/kg to mmol/m3 using sewater denisty.

    Parameters
    ----------
    data_umol_by_kg : pd.Series
        Original data (in umol/kg)

    Returns
    -------
    pd.Series
        Converted data (mmol/m3)
    """
    kg_by_m3 = 1025  # seawater density: 1025 kg <=> 1 m3
    mmol_by_umol = 10 ** (-3)  # 1000 mmol = 1 mol
    return data_umol_by_kg * mmol_by_umol * kg_by_m3

convert_doxy_ml_by_l_to_mmol_by_m3(data_ml_by_l)

Convert dissolved oxygen from mL/L to mmol/m3.

Parameters:

Name Type Description Default
data_ml_by_l Series

Original data (mL/L)

required

Returns:

Type Description
Series

Converted data (mmol/m3)

Source code in src/bgc_data_processing/units.py
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def convert_doxy_ml_by_l_to_mmol_by_m3(
    data_ml_by_l: pd.Series,
) -> pd.Series:
    """Convert dissolved oxygen from mL/L to mmol/m3.

    Parameters
    ----------
    data_ml_by_l : pd.Series
        Original data (mL/L)

    Returns
    -------
    pd.Series
        Converted data (mmol/m3)
    """
    return data_ml_by_l * 44.6608009

convert_nitrate_mgc_by_m3_to_umol_by_l(data_mgc_m3)

Convert nitrate concentration from mgC/m3 to μmol/L.

Parameters:

Name Type Description Default
data_mgc_m3 Series

Original data (mgC/m3)

required

Returns:

Type Description
Series

Converted data (μmol/L)

Source code in src/bgc_data_processing/units.py
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
def convert_nitrate_mgc_by_m3_to_umol_by_l(
    data_mgc_m3: pd.Series,
) -> pd.Series:
    """Convert nitrate concentration from mgC/m3 to μmol/L.

    Parameters
    ----------
    data_mgc_m3 : pd.Series
        Original data (mgC/m3)

    Returns
    -------
    pd.Series
        Converted data (μmol/L)
    """
    mgc_by_mgno3 = 6.625 * 12.01  # 6.625*12.01 mg(NO3) <=> 1 mg(C)
    mgno3_by_mgc = 1 / mgc_by_mgno3
    g_by_molno3 = 62.009  # Nitrate molar mass: 62.009 g <=> 1 mol
    mg_by_g = 1_000  # 1000 mg = 1 g
    mg_by_molno3 = mg_by_g * g_by_molno3
    molno3_by_mg = 1 / mg_by_molno3
    l_by_m3 = 1_000  # 1000 L <=> 1 m3
    umol_by_mol = 1_000_000  # 1 000 000 μmol = 1 mol
    return data_mgc_m3 * mgno3_by_mgc * molno3_by_mg * umol_by_mol / l_by_m3

convert_silicate_mgc_by_m3_to_umol_by_l(data_mgc_m3)

Convert silicate concentration from mgC/m3 to μmol/L.

Parameters:

Name Type Description Default
data_mgc_m3 Series

Original data (mgC/m3)

required

Returns:

Type Description
Series

Converted data (μmol/L)

Source code in src/bgc_data_processing/units.py
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
def convert_silicate_mgc_by_m3_to_umol_by_l(
    data_mgc_m3: pd.Series,
) -> pd.Series:
    """Convert silicate concentration from mgC/m3 to μmol/L.

    Parameters
    ----------
    data_mgc_m3 : pd.Series
        Original data (mgC/m3)

    Returns
    -------
    pd.Series
        Converted data (μmol/L)
    """
    mgc_by_mgsi02 = 6.625 * 12.01  # 6.625*12.01 mg(SiO2) <=> 1 mg(C)
    mgsi02_by_mgc = 1 / mgc_by_mgsi02
    g_by_molsi02 = 76.083  # Silicate molar mass: 76.083 g <=> 1 mol
    mg_by_g = 1_000  # 1000 mg = 1 g
    mg_by_molsi02 = mg_by_g * g_by_molsi02
    molsi02_by_mg = 1 / mg_by_molsi02
    l_by_m3 = 1_000  # 1000 L <=> 1 m3
    umol_by_mol = 1_000_000  # 1 000 000 μmol = 1 mol
    return data_mgc_m3 * mgsi02_by_mgc * molsi02_by_mg * umol_by_mol / l_by_m3

convert_phosphate_mgc_by_m3_to_umol_by_l(data_mgc_m3)

Convert phosphate concentration from mgC/m3 to μmol/L.

Parameters:

Name Type Description Default
data_mgc_m3 Series

Original data (mgC/m3)

required

Returns:

Type Description
Series

Converted data (μmol/L)

Source code in src/bgc_data_processing/units.py
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
def convert_phosphate_mgc_by_m3_to_umol_by_l(
    data_mgc_m3: pd.Series,
) -> pd.Series:
    """Convert phosphate concentration from mgC/m3 to μmol/L.

    Parameters
    ----------
    data_mgc_m3 : pd.Series
        Original data (mgC/m3)

    Returns
    -------
    pd.Series
        Converted data (μmol/L)
    """
    mgc_by_mgh3po4 = 107 * 12.01  # 107*12.01 mg(H3PO4) <=> 1 mg(C)
    mgh3po4_by_mgc = 1 / mgc_by_mgh3po4
    g_by_molh3po4 = 94.9714  # Phosphate molar mass:  94.9714 g <=> 1 mol
    mg_by_g = 1_000  # 1000 mg = 1 g
    mg_by_molh3po4 = mg_by_g * g_by_molh3po4
    molh3po4_by_mg = 1 / mg_by_molh3po4
    l_by_m3 = 1_000  # 1000 L <=> 1 m3
    umol_by_mol = 1_000_000  # 1 000 000 μmol = 1 mol
    return data_mgc_m3 * mgh3po4_by_mgc * molh3po4_by_mg * umol_by_mol / l_by_m3