Skip to content

Commit

Permalink
Merge ElucidataInc#1340 from ElucidataInc/fix_ag_issues
Browse files Browse the repository at this point in the history
Fixes related to storing correct RT bounds
  • Loading branch information
saif-el authored Mar 3, 2021
2 parents e0285be + e6df501 commit 4a96785
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 3 deletions.
14 changes: 14 additions & 0 deletions src/core/libmaven/peakdetector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,13 @@ void PeakDetector::processSlices(vector<mzSlice*>& slices,
make_move_iterator(peakgroups.end()));
};

float minRtOverAllSamples = numeric_limits<float>::max();
for (auto sample : _mavenParameters->samples)
minRtOverAllSamples = min(minRtOverAllSamples, sample->minRt);
float maxRtOverAllSamples = numeric_limits<float>::min();
for (auto sample : _mavenParameters->samples)
maxRtOverAllSamples = max(maxRtOverAllSamples, sample->maxRt);

if (!appendNewGroups)
_mavenParameters->allgroups.clear();

Expand All @@ -587,6 +594,9 @@ void PeakDetector::processSlices(vector<mzSlice*>& slices,
}

mzSlice* slice = slices[s];
slice->rtmin = max(slice->rtmin, minRtOverAllSamples);
slice->rtmax = min(slice->rtmax, maxRtOverAllSamples);

vector<EIC*> eics = pullEICs(slice,
_mavenParameters->samples,
_mavenParameters);
Expand Down Expand Up @@ -1063,6 +1073,7 @@ void PeakDetector::detectIsotopesForParent(PeakGroup& parentGroup,
visibleSamples.push_back(sample);
}

auto parentSlice = parentGroup.getSlice();
MassSlicer massSlicer(_mavenParameters);
massSlicer.generateIsotopeSlices({parentGroup.getCompound()},
findBarplotIsotopes);
Expand All @@ -1073,6 +1084,8 @@ void PeakDetector::detectIsotopesForParent(PeakGroup& parentGroup,
if (slice->isotope.isParent())
continue;

slice->rtmin = parentSlice.rtmin;
slice->rtmax = parentSlice.rtmax;
auto eics = pullEICs(slice, visibleSamples, _mavenParameters);
auto isotopeGroup = integrateEicRegion(eics,
parentGroup.minRt,
Expand All @@ -1092,6 +1105,7 @@ void PeakDetector::detectIsotopesForParent(PeakGroup& parentGroup,
parentGroup.addIsotopeChild(*isotopeGroup);
}
}
massSlicer.clearSlices();
} else {
processCompounds({parentGroup.getCompound()},
false,
Expand Down
7 changes: 5 additions & 2 deletions src/gui/mzroll/eicwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
#include "boxplot.h"
#include "classifierNeuralNet.h"
#include "datastructures/adduct.h"
#include "datastructures/mzSlice.h"
#include "eiclogic.h"
#include "globals.h"
#include "isotopeswidget.h"
Expand Down Expand Up @@ -201,11 +200,15 @@ void EicWidget::mouseDoubleClickEvent(QMouseEvent* event) {
void EicWidget::integrateRegion(float rtMin, float rtMax)
{
const auto& visibleSamples = getMainWindow()->getVisibleSamples();
auto slice = eicParameters->_slice;
auto bounds = visibleSamplesBounds();
slice.rtmin = bounds.rtmin;
slice.rtmax = bounds.rtmax;
auto integratedGroup = PeakDetector::integrateEicRegion(
eicParameters->eics,
rtMin,
rtMax,
eicParameters->_slice,
slice,
visibleSamples,
getMainWindow()->mavenParameters,
getMainWindow()->getClassifier(),
Expand Down
3 changes: 2 additions & 1 deletion src/gui/mzroll/eicwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "stable.h"

#include "datastructures/isotope.h"
#include "datastructures/mzSlice.h"

class EIC;
class EICLogic;
Expand Down Expand Up @@ -37,6 +38,7 @@ Q_OBJECT
void addPeakPositions();
void setBarplotPosition(PeakGroup* group);
void renderPdf(shared_ptr<PeakGroup> group, QPainter* painter);
mzSlice visibleSamplesBounds();

public Q_SLOTS:
void setMzSlice(float mz1, float mz2 = 0.0);
Expand Down Expand Up @@ -255,7 +257,6 @@ public Q_SLOTS:
void cleanup(); //deallocate eics, fragments, peaks, peakgroups
void clearPlot(); //removes non permenent graphics objects
void findPlotBounds(); //find _minX, _maxX...etc
mzSlice visibleSamplesBounds();

float toX(float x);
float toY(float y);
Expand Down
5 changes: 5 additions & 0 deletions src/gui/mzroll/point.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,11 @@ void EicPoint::mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) {
if (_group != nullptr) {
_group = make_shared<PeakGroup>(*_group,
PeakGroup::IntegrationType::Manual);
auto slice = _group->getSlice();
auto bounds = _mw->getEicWidget()->visibleSamplesBounds();
slice.rtmin = bounds.rtmin;
slice.rtmax = bounds.rtmax;
_group->setSlice(slice);
_mw->isotopeWidget->setPeakGroupAndMore(_group, true);
}

Expand Down

0 comments on commit 4a96785

Please sign in to comment.