Skip to content

Chromatogram Integration

This example loads a peak table from the test data, extracts chromatograms, and then integrates them with the linear peak-shape model.

The same pattern works for other available models such as emg, asym_gauss, sgolay, and no_integration.

"""Extract chromatograms and integrate them with a simple peak-shape model."""

from pathlib import Path

import emzed


def main():
    data_path = _find_data_file("peaks.table")

    peaks = emzed.io.load_table(str(data_path))
    chromatograms = emzed.extract_chromatograms(peaks)

    integrated = emzed.quantification.integrate_chromatograms(
        chromatograms,
        "linear",
        show_progress=False,
    )

    _print_columns(integrated)
    print()

    integrated.set_col_format("peakmap", None)
    integrated.set_col_format("chromatogram", None)
    integrated.set_col_format("model_chromatogram", None)
    integrated.print_(max_rows=None)


def _print_columns(table):
    print("columns:")
    for name in table.col_names:
        print(f"  - {name}")


def _find_data_file(name):
    for path in (Path.cwd(), *Path.cwd().parents):
        data_path = path / "tests" / "data" / name
        if data_path.exists():
            return data_path
    raise RuntimeError(f"could not find test data file: {name}")


if __name__ == "__main__":
    main()
needed 0.2 seconds
columns:
  - id
  - feature_id
  - feature_size
  - mz
  - mzmin
  - mzmax
  - rt
  - rtmin
  - rtmax
  - intensity
  - quality
  - fwhm
  - z
  - peakmap
  - source
  - chromatogram
  - rtmin_chromatogram
  - rtmax_chromatogram
  - peak_shape_model_chromatogram
  - area_chromatogram
  - rmse_chromatogram
  - model_chromatogram
  - valid_model_chromatogram

id   feature_id  feature_size  mz           mzmin        mzmax        rt        rtmin     rtmax     intensity  quality   fwhm      z    source              rtmin_chromatogram  rtmax_chromatogram  peak_shape_model_chromatogram  area_chromatogram  rmse_chromatogram  valid_model_chromatogram
int  int         int           MzType       MzType       MzType       RtType    RtType    RtType    float      float     RtType    int  str                 RtType              RtType              str                            float              float              bool                    
---  ----------  ------------  -----------  -----------  -----------  --------  --------  --------  ---------  --------  --------  ---  ------------------  ------------------  ------------------  -----------------------------  -----------------  -----------------  ------------------------
  0           0             1   219.174787   219.174530   219.175095    0.13 m    0.00 m    0.17 m   1.85e+04  2.78e-04    0.00 m    0  test_smaller.mzXML    0.00 m              0.17 m                                   linear           1.71e+06  0.00e+00                               True
  1           1             1   256.159512   256.159210   256.159790    0.14 m    0.11 m    0.19 m   7.64e+05  1.15e-02    0.01 m    0  test_smaller.mzXML    0.11 m              0.19 m                                   linear           2.35e+06  0.00e+00                               True
  2           2             1   258.156445   258.156189   258.156860    0.14 m    0.11 m    0.18 m   5.06e+05  7.60e-03    0.01 m    0  test_smaller.mzXML    0.11 m              0.18 m                                   linear           1.48e+06  0.00e+00                               True
  3           3             1   292.913525   292.912384   292.915649    0.21 m    0.14 m    0.24 m   8.66e+05  1.30e-02    0.01 m    0  test_smaller.mzXML    0.14 m              0.24 m                                   linear           1.92e+06  0.00e+00                               True
  4           4             1   292.922200   292.921661   292.922638    0.15 m    0.08 m    0.24 m   2.30e+07  3.46e-01    0.06 m    0  test_smaller.mzXML    0.08 m              0.24 m                                   linear           3.13e+07  0.00e+00                               True
  5           5             1   330.877830   330.877441   330.878357    0.22 m    0.17 m    0.24 m   3.34e+05  5.03e-03    0.02 m    0  test_smaller.mzXML    0.17 m              0.24 m                                   linear           9.22e+05  0.00e+00                               True
  6           6             1   390.898699   390.897858   390.899323    0.17 m    0.10 m    0.24 m   1.71e+07  2.56e-01    0.06 m    0  test_smaller.mzXML    0.10 m              0.24 m                                   linear           2.20e+07  0.00e+00                               True
  7           7             1   428.854329   428.853729   428.855072    0.20 m    0.17 m    0.24 m   5.42e+05  8.15e-03    0.03 m    0  test_smaller.mzXML    0.17 m              0.24 m                                   linear           1.07e+06  0.00e+00                               True
  8           8             1   488.875282   488.874207   488.876068    0.17 m    0.10 m    0.24 m   1.43e+07  2.14e-01    0.06 m    0  test_smaller.mzXML    0.10 m              0.24 m                                   linear           1.82e+07  0.00e+00                               True
  9           9             1   526.830925   526.830078   526.831970    0.19 m    0.17 m    0.24 m   5.83e+05  8.76e-03    0.03 m    0  test_smaller.mzXML    0.17 m              0.24 m                                   linear           9.56e+05  0.00e+00                               True
 10          10             1   586.851983   586.850098   586.852905    0.16 m    0.11 m    0.24 m   8.58e+06  1.29e-01    0.06 m    0  test_smaller.mzXML    0.11 m              0.24 m                                   linear           1.10e+07  0.00e+00                               True