Source code for mocca.peak.quantify

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Jan  4 15:49:54 2022

@author: haascp
"""

from mocca.peak.models import ProcessedPeak
from mocca.components.quant_funcs import get_integrate_wl_index, integrate_on_wl


[docs]def quantify_peak(peak, quant_comp_db, quali_comp_db): """ Takes a peak with an integral and quantifies it by calculating the corresponding concentration if the compound is present in the quantification database. """ if peak.compound_id in quant_comp_db: quant_comp = quant_comp_db[peak.compound_id] integral_wl = integrate_on_wl(peak, quant_comp.integrate_wl_idx) if peak.istd and not any(istd_peak.compound_id == peak.compound_id for istd_peak in peak.istd): scores = quant_comp.calib_scores max_score_version = peak.istd[0].compound_id max_score = 0 istd_peak = peak.istd[0] for istd_p in [peak for peak in peak.istd if peak.concentration]: if scores[istd_p.compound_id] > max_score: max_score_version = istd_p.compound_id max_score = scores[istd_p.compound_id] istd_peak = istd_p istd_wl_idx = get_integrate_wl_index(istd_peak.compound_id, quali_comp_db) istd_integral_wl = integrate_on_wl(istd_peak, istd_wl_idx) concentration = (integral_wl * istd_peak.concentration / istd_integral_wl / quant_comp.calib_factors[max_score_version]) else: concentration = (integral_wl / quant_comp.calib_factors['absolute']) else: concentration = None return ProcessedPeak(left=peak.left, right=peak.right, maximum=peak.maximum, dataset=peak.dataset, idx=peak.idx, saturation=peak.saturation, pure=peak.pure, integral=peak.integral, istd=peak.istd, offset=peak.offset, compound_id=peak.compound_id, concentration=concentration, is_compound=peak.is_compound)