45#include <qjsonarray.h>
55 const QJsonObject &json_params)
100 for(
auto charge : charge_arr)
139 QString old_ms1_id = cbor_spectrum.
getId();
145 QString new_ms1_id = spectrum_tube.
push_back(cbor_spectrum);
155 std::vector<QcborSpectrumPrecursor> precursor_list = cbor_spectrum.
getPrecursorList();
156 if(precursor_list.size() == 1)
159 QString spectrum_ref = precursor_list.at(0).getSpectrumRef();
164 [spectrum_ref](
const std::pair<QString, QcborSpectrum> &pair) {
165 return pair.first == spectrum_ref;
181 std::vector<QcborSpectrumPrecursor> new_precursor_list;
182 new_precursor_list.push_back(precursor);
186 std::vector<QcborSpectrum> spectrum_list =
190 bool report_original_spectrum =
true;
194 spectrum.getPrecursorList().at(0);
202 if(original_ms1_peak_range.
contains(
205 report_original_spectrum =
false;
209 QString new_id = spectrum_tube.
push_back(spectrum);
218 if(report_original_spectrum)
220 QString new_id = spectrum_tube.
push_back(cbor_spectrum);
234 QObject::tr(
"ERROR: precursor ref %1 not found for current spectrum %2")
236 .arg(cbor_spectrum.
getId()));
241 qDebug() << cbor_spectrum.
getId();
243 QObject::tr(
"ERROR: precursor_list.size() != 1 (%1)").arg(precursor_list.size()));
250std::vector<QcborSpectrum>
258 auto it_cache_ms1_trace =
261 [ms1_spectrum](
const auto &item) { return item.first == &ms1_spectrum; });
265 ms1_trace_sp = std::make_shared<Trace>();
275 ms1_trace_sp = it_cache_ms1_trace->second;
288 std::vector<QcborSpectrum> potential_precursors;
289 double precursor_intensity = 0;
291 if(selected_ion_list.size() != 1)
296 precursor_intensity = selected_ion_list.at(0).getIntensity(&is_ok);
300 QObject::tr(
"ERROR: precursor intensity not found in spectrum %1")
301 .arg(ms2_spectrum.
getId()));
302 precursor_intensity = 0;
315 double intensity = data_point.y;
316 double mz = data_point.x;
328 std::vector<QcborSpectrumPrecursor> precursor_list;
329 precursor_list.push_back(copy_precursor);
331 qDebug() << copy_precursor;
335 potential_precursors.push_back(new_ms2);
341 return potential_precursors;
try to detect complementary ions and assign maximum intensity of both elements
pappso::Trace & filter(pappso::Trace &data_points) const override
try to detect complementary ions and assign maximum intensity of both elements
pappso::Trace & filter(pappso::Trace &data_points) const override
Trace & filter(Trace &data_points) const override
get all the datapoints and remove different isotope and add their intensity and change to charge = 1 ...
keep N datapoints form the greatest intensities to the lowest
Trace & filter(Trace &data_points) const override
remove datapoints below or equal to the given Y value (intensity)
Trace & filter(Trace &data_points) const override
Trace & filter(Trace &trace) const override
bool contains(pappso_double) const
static PrecisionPtr getPpmInstance(pappso_double value)
get a ppm precision pointer
static PrecisionPtr getDaltonInstance(pappso_double value)
get a Dalton precision pointer
A simple container of DataPoint instances.
overrides QCborStreamWriter base class to provide convenient functions
MzcborCopyReplaceBase(CborStreamWriter *cbor_output_p, const QString &operation)
pappso::PrecisionPtr m_ms2Tolerance
std::size_t m_ms2nMostIntense
virtual ~MzcborPrecursorFinder()
std::size_t m_minimumComplementIon
std::vector< QcborSpectrum > findPotentialPrecursorIonData(const QcborSpectrum &ms1_spectrum, const QcborSpectrum &ms2_spectrum, const QcborSpectrumPrecursor &precursor)
void setRetentionTimeRangeInSeconds(double rt_start, double rt_stop)
pappso::PrecisionPtr m_ms1Tolerance
virtual void processQcborSpectrum(SpectrumTube &spectrum_tube, QcborSpectrum &cbor_spectrum)
std::deque< std::pair< QString, QcborSpectrum > > m_spectrumMs1List
std::size_t m_maxSpectrumMs1ListSize
std::map< QString, QString > m_ms1idOldToNew
MzcborPrecursorFinder(CborStreamWriter *cbor_output_p, const QJsonObject &json_params)
std::vector< std::int8_t > m_potentialPrecursorChargeStateList
double m_intensityRatioThreshold
std::deque< std::pair< const QcborSpectrum *, TraceSPtr > > m_cacheMs1Trace
QJsonValue getParameterValue(const QString &name) const
std::vector< SelectedIon > getSelectedIonList() const
void setSelectedIon(double mz, double intensity, int charge)
void setSpectrumRef(const QString &spectrum_ref)
void decodeTrace(pappso::Trace &trace) const
std::vector< QcborSpectrumPrecursor > getPrecursorList() const
double getRetentionTimeInSeconds() const
void setPrecursorList(std::vector< QcborSpectrumPrecursor > &precursor_list)
const QString push_back(QcborSpectrum &spectrum)
read mzcbor stream or file, process it and write processed mzcbor output
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
std::shared_ptr< Trace > TraceSPtr
PSI precursor object for mzML/mzCBOR.
Low level CBOR map to store an mzCBOR Spectrum object.
Low level CBOR map to store an mzCBOR Spectrum object.