Search in sources :

Example 51 with MemoryPeakResults

use of uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults in project GDSC-SMLM by aherbert.

the class DriftCalculator method applyDriftCorrection.

private void applyDriftCorrection(MemoryPeakResults results, double[][] drift) {
    final ExtendedGenericDialog gd = new ExtendedGenericDialog(TITLE);
    gd.addMessage("Apply drift correction to in-memory results?");
    gd.addChoice("Update_method", Settings.UPDATE_METHODS, settings.updateMethod);
    // Option to save the drift unless it was loaded from file
    if (!Settings.DRIFT_FILE.equals(settings.method)) {
        gd.addCheckbox("Save_drift", settings.saveDrift);
    }
    gd.showDialog();
    if (gd.wasCanceled()) {
        return;
    }
    settings.updateMethod = gd.getNextChoiceIndex();
    if (!Settings.DRIFT_FILE.equals(settings.method)) {
        settings.saveDrift = gd.getNextBoolean();
        saveDrift(calculatedTimepoints, lastdx, lastdy);
    }
    if (settings.updateMethod == 0) {
        return;
    }
    final double[] dx = drift[0];
    final double[] dy = drift[1];
    if (settings.updateMethod == 1) {
        // Update the results in memory
        ImageJUtils.log("Applying drift correction to the results set: " + results.getName());
        results.forEach((PeakResultProcedure) result -> {
            result.setXPosition((float) (result.getXPosition() + dx[result.getFrame()]));
            result.setYPosition((float) (result.getYPosition() + dy[result.getFrame()]));
        });
    } else {
        // Create a new set of results
        final MemoryPeakResults newResults = new MemoryPeakResults(results.size());
        newResults.copySettings(results);
        newResults.setName(results.getName() + " (Corrected)");
        MemoryPeakResults.addResults(newResults);
        final boolean truncate = settings.updateMethod == 3;
        ImageJUtils.log("Creating %sdrift corrected results set: " + newResults.getName(), (truncate) ? "truncated " : "");
        results.forEach((PeakResultProcedure) result -> {
            if (truncate && (result.getFrame() < interpolationStart || result.getFrame() > interpolationEnd)) {
                return;
            }
            result.setXPosition((float) (result.getXPosition() + dx[result.getFrame()]));
            result.setYPosition((float) (result.getYPosition() + dy[result.getFrame()]));
            newResults.add(result);
        });
    }
}
Also used : Color(java.awt.Color) Arrays(java.util.Arrays) ImageProcessor(ij.process.ImageProcessor) WindowMethod(uk.ac.sussex.gdsc.core.utils.ImageWindow.WindowMethod) Scanner(java.util.Scanner) Point(java.awt.Point) ResultsImageSettings(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageSettings) Future(java.util.concurrent.Future) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) Locale(java.util.Locale) Blitter(ij.process.Blitter) ImageJImagePeakResults(uk.ac.sussex.gdsc.smlm.ij.results.ImageJImagePeakResults) RoiManager(ij.plugin.frame.RoiManager) PlotWindow(ij.gui.PlotWindow) MathUtils(uk.ac.sussex.gdsc.core.utils.MathUtils) XyrResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.XyrResultProcedure) Fht(uk.ac.sussex.gdsc.core.ij.process.Fht) LinearInterpolator(org.apache.commons.math3.analysis.interpolation.LinearInterpolator) LoessInterpolator(org.apache.commons.math3.analysis.interpolation.LoessInterpolator) ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog) InputSource(uk.ac.sussex.gdsc.smlm.ij.plugins.ResultsManager.InputSource) AlignImagesFft(uk.ac.sussex.gdsc.core.ij.AlignImagesFft) ResultsImageType(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageType) DistanceUnit(uk.ac.sussex.gdsc.smlm.data.config.UnitProtos.DistanceUnit) ConcurrencyUtils(uk.ac.sussex.gdsc.core.utils.concurrent.ConcurrencyUtils) Plot(ij.gui.Plot) Executors(java.util.concurrent.Executors) ImagePlus(ij.ImagePlus) List(java.util.List) FileUtils(uk.ac.sussex.gdsc.core.utils.FileUtils) Pattern(java.util.regex.Pattern) PlugIn(ij.plugin.PlugIn) Roi(ij.gui.Roi) Rectangle(java.awt.Rectangle) SplineInterpolator(org.apache.commons.math3.analysis.interpolation.SplineInterpolator) PolynomialSplineFunction(org.apache.commons.math3.analysis.polynomials.PolynomialSplineFunction) Prefs(ij.Prefs) WindowManager(ij.WindowManager) WindowOrganiser(uk.ac.sussex.gdsc.core.ij.plugin.WindowOrganiser) PeakResult(uk.ac.sussex.gdsc.smlm.results.PeakResult) AtomicReference(java.util.concurrent.atomic.AtomicReference) TrackProgress(uk.ac.sussex.gdsc.core.logging.TrackProgress) OpenDialog(ij.io.OpenDialog) ArrayList(java.util.ArrayList) ImagePeakResultsFactory(uk.ac.sussex.gdsc.smlm.ij.results.ImagePeakResultsFactory) SubPixelMethod(uk.ac.sussex.gdsc.core.ij.AlignImagesFft.SubPixelMethod) PeakResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.PeakResultProcedure) LinkedList(java.util.LinkedList) NoSuchElementException(java.util.NoSuchElementException) ExecutorService(java.util.concurrent.ExecutorService) SimpleImageJTrackProgress(uk.ac.sussex.gdsc.core.ij.SimpleImageJTrackProgress) Files(java.nio.file.Files) ResultsImageSizeMode(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageSizeMode) BufferedWriter(java.io.BufferedWriter) IOException(java.io.IOException) ResultsImageMode(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageMode) Ticker(uk.ac.sussex.gdsc.core.logging.Ticker) FloatProcessor(ij.process.FloatProcessor) Counter(uk.ac.sussex.gdsc.smlm.results.count.Counter) Paths(java.nio.file.Paths) ImageJUtils(uk.ac.sussex.gdsc.core.ij.ImageJUtils) IJ(ij.IJ) ImageStack(ij.ImageStack) Nullable(uk.ac.sussex.gdsc.core.annotation.Nullable) BufferedReader(java.io.BufferedReader) Collections(java.util.Collections) LocalList(uk.ac.sussex.gdsc.core.utils.LocalList) StandardResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.StandardResultProcedure) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog)

Example 52 with MemoryPeakResults

use of uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults in project GDSC-SMLM by aherbert.

the class DriftCalculator method findSpots.

private static Spot[] findSpots(MemoryPeakResults results, Rectangle bounds, int[] limits) {
    final LocalList<Spot> list = new LocalList<>(limits[1] - limits[0] + 1);
    final float minx = bounds.x;
    final float miny = bounds.y;
    final float maxx = (float) bounds.x + bounds.width;
    final float maxy = (float) bounds.y + bounds.height;
    // Find spots within the ROI
    results.forEach(DistanceUnit.PIXEL, (XyrResultProcedure) (x, y, result) -> {
        if (x > minx && x < maxx && y > miny && y < maxy) {
            list.add(new Spot(result.getFrame(), x, y, result.getIntensity()));
        }
    });
    // For each frame pick the strongest spot
    Collections.sort(list, Spot::compare);
    final LocalList<Spot> newList = new LocalList<>(list.size());
    int currentT = -1;
    for (final Spot spot : list) {
        if (currentT != spot.time) {
            newList.add(spot);
            currentT = spot.time;
        }
    }
    return newList.toArray(new Spot[0]);
}
Also used : Color(java.awt.Color) Arrays(java.util.Arrays) ImageProcessor(ij.process.ImageProcessor) WindowMethod(uk.ac.sussex.gdsc.core.utils.ImageWindow.WindowMethod) Scanner(java.util.Scanner) Point(java.awt.Point) ResultsImageSettings(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageSettings) Future(java.util.concurrent.Future) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) Locale(java.util.Locale) Blitter(ij.process.Blitter) ImageJImagePeakResults(uk.ac.sussex.gdsc.smlm.ij.results.ImageJImagePeakResults) RoiManager(ij.plugin.frame.RoiManager) PlotWindow(ij.gui.PlotWindow) MathUtils(uk.ac.sussex.gdsc.core.utils.MathUtils) XyrResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.XyrResultProcedure) Fht(uk.ac.sussex.gdsc.core.ij.process.Fht) LinearInterpolator(org.apache.commons.math3.analysis.interpolation.LinearInterpolator) LoessInterpolator(org.apache.commons.math3.analysis.interpolation.LoessInterpolator) ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog) InputSource(uk.ac.sussex.gdsc.smlm.ij.plugins.ResultsManager.InputSource) AlignImagesFft(uk.ac.sussex.gdsc.core.ij.AlignImagesFft) ResultsImageType(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageType) DistanceUnit(uk.ac.sussex.gdsc.smlm.data.config.UnitProtos.DistanceUnit) ConcurrencyUtils(uk.ac.sussex.gdsc.core.utils.concurrent.ConcurrencyUtils) Plot(ij.gui.Plot) Executors(java.util.concurrent.Executors) ImagePlus(ij.ImagePlus) List(java.util.List) FileUtils(uk.ac.sussex.gdsc.core.utils.FileUtils) Pattern(java.util.regex.Pattern) PlugIn(ij.plugin.PlugIn) Roi(ij.gui.Roi) Rectangle(java.awt.Rectangle) SplineInterpolator(org.apache.commons.math3.analysis.interpolation.SplineInterpolator) PolynomialSplineFunction(org.apache.commons.math3.analysis.polynomials.PolynomialSplineFunction) Prefs(ij.Prefs) WindowManager(ij.WindowManager) WindowOrganiser(uk.ac.sussex.gdsc.core.ij.plugin.WindowOrganiser) PeakResult(uk.ac.sussex.gdsc.smlm.results.PeakResult) AtomicReference(java.util.concurrent.atomic.AtomicReference) TrackProgress(uk.ac.sussex.gdsc.core.logging.TrackProgress) OpenDialog(ij.io.OpenDialog) ArrayList(java.util.ArrayList) ImagePeakResultsFactory(uk.ac.sussex.gdsc.smlm.ij.results.ImagePeakResultsFactory) SubPixelMethod(uk.ac.sussex.gdsc.core.ij.AlignImagesFft.SubPixelMethod) PeakResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.PeakResultProcedure) LinkedList(java.util.LinkedList) NoSuchElementException(java.util.NoSuchElementException) ExecutorService(java.util.concurrent.ExecutorService) SimpleImageJTrackProgress(uk.ac.sussex.gdsc.core.ij.SimpleImageJTrackProgress) Files(java.nio.file.Files) ResultsImageSizeMode(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageSizeMode) BufferedWriter(java.io.BufferedWriter) IOException(java.io.IOException) ResultsImageMode(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageMode) Ticker(uk.ac.sussex.gdsc.core.logging.Ticker) FloatProcessor(ij.process.FloatProcessor) Counter(uk.ac.sussex.gdsc.smlm.results.count.Counter) Paths(java.nio.file.Paths) ImageJUtils(uk.ac.sussex.gdsc.core.ij.ImageJUtils) IJ(ij.IJ) ImageStack(ij.ImageStack) Nullable(uk.ac.sussex.gdsc.core.annotation.Nullable) BufferedReader(java.io.BufferedReader) Collections(java.util.Collections) LocalList(uk.ac.sussex.gdsc.core.utils.LocalList) StandardResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.StandardResultProcedure) LocalList(uk.ac.sussex.gdsc.core.utils.LocalList) Point(java.awt.Point)

Example 53 with MemoryPeakResults

use of uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults in project GDSC-SMLM by aherbert.

the class CropResults method cropResults.

/**
 * Apply the filters to the data.
 */
private void cropResults() {
    final MemoryPeakResults newResults = createNewResults();
    // These bounds are integer. But this is because the results are meant to come from an image.
    final Rectangle integerBounds = results.getBounds(true);
    // The crop bounds can be floating point...
    // Border
    final double border = settings.getBorder();
    final double xx = integerBounds.x + border;
    final double yy = integerBounds.y + border;
    final double w = Math.max(0, integerBounds.width - 2 * border);
    final double h = Math.max(0, integerBounds.height - 2 * border);
    Rectangle2D pixelBounds = new Rectangle2D.Double(xx, yy, w, h);
    // Bounding box
    if (settings.getSelectRegion()) {
        final Rectangle2D boxBounds = new Rectangle2D.Double(settings.getX(), settings.getY(), settings.getWidth(), settings.getHeight());
        pixelBounds = pixelBounds.createIntersection(boxBounds);
    }
    // and create another intersection
    if (myUseRoi) {
        final ImagePlus imp = WindowManager.getImage(settings.getRoiImage());
        if (imp != null && imp.getRoi() != null) {
            final Rectangle roi = imp.getRoi().getBounds();
            final int roiImageWidth = imp.getWidth();
            final int roiImageHeight = imp.getHeight();
            final double xscale = (double) roiImageWidth / integerBounds.width;
            final double yscale = (double) roiImageHeight / integerBounds.height;
            final Rectangle2D roiBounds = new Rectangle2D.Double(roi.x / xscale, roi.y / yscale, roi.width / xscale, roi.height / yscale);
            pixelBounds = pixelBounds.createIntersection(roiBounds);
        }
    }
    final Rectangle2D bounds = pixelBounds;
    final Predicate<PeakResult> testZ = getZFilter();
    // Copy the results if the origin is reset
    final Consumer<PeakResult> consumer = settings.getResetOrigin() ? r -> newResults.add(r.copy()) : newResults::add;
    if (bounds.getWidth() > 0 && bounds.getHeight() > 0) {
        results.forEach(DistanceUnit.PIXEL, (XyrResultProcedure) (x, y, result) -> {
            if (bounds.contains(x, y) && testZ.test(result)) {
                consumer.accept(result);
            }
        });
    }
    if (settings.getPreserveBounds()) {
        newResults.setBounds(integerBounds);
    } else {
        // Get the lower and upper integer limits
        final int x = (int) Math.floor(bounds.getX());
        final int y = (int) Math.floor(bounds.getY());
        final int ux = (int) Math.ceil(bounds.getX() + bounds.getWidth());
        final int uy = (int) Math.ceil(bounds.getY() + bounds.getHeight());
        // Ensure the width and height are at least 1
        newResults.setBounds(new Rectangle(x, y, Math.max(1, ux - x), Math.max(1, uy - y)));
        if (settings.getResetOrigin()) {
            newResults.translate(-x, -y);
        }
    }
    IJ.showStatus(newResults.size() + " Cropped localisations");
}
Also used : Rectangle(java.awt.Rectangle) Rectangle2D(java.awt.geom.Rectangle2D) PassPeakResultPredicate(uk.ac.sussex.gdsc.smlm.results.predicates.PassPeakResultPredicate) IdentityTypeConverter(uk.ac.sussex.gdsc.core.data.utils.IdentityTypeConverter) WindowManager(ij.WindowManager) PeakResult(uk.ac.sussex.gdsc.smlm.results.PeakResult) OptionListener(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog.OptionListener) CoordinatePredicateUtils(uk.ac.sussex.gdsc.core.ij.roi.CoordinatePredicateUtils) PeakResultValueParameter(uk.ac.sussex.gdsc.smlm.results.PeakResultValueParameter) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) MathUtils(uk.ac.sussex.gdsc.core.utils.MathUtils) UnitHelper(uk.ac.sussex.gdsc.smlm.data.config.UnitHelper) CropResultsSettings(uk.ac.sussex.gdsc.smlm.ij.settings.GUIProtos.CropResultsSettings) SettingsManager(uk.ac.sussex.gdsc.smlm.ij.settings.SettingsManager) CoordinatePredicate(uk.ac.sussex.gdsc.core.ij.roi.CoordinatePredicate) XyrResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.XyrResultProcedure) ConversionException(uk.ac.sussex.gdsc.core.data.utils.ConversionException) Predicate(java.util.function.Predicate) ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog) InputSource(uk.ac.sussex.gdsc.smlm.ij.plugins.ResultsManager.InputSource) DistanceUnit(uk.ac.sussex.gdsc.smlm.data.config.UnitProtos.DistanceUnit) TextUtils(uk.ac.sussex.gdsc.core.utils.TextUtils) CalibrationHelper(uk.ac.sussex.gdsc.smlm.data.config.CalibrationHelper) Consumer(java.util.function.Consumer) ImagePlus(ij.ImagePlus) ImageJUtils(uk.ac.sussex.gdsc.core.ij.ImageJUtils) IJ(ij.IJ) MinMaxResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.MinMaxResultProcedure) MinMaxPeakResultPredicate(uk.ac.sussex.gdsc.smlm.results.predicates.MinMaxPeakResultPredicate) PlugIn(ij.plugin.PlugIn) TypeConverter(uk.ac.sussex.gdsc.core.data.utils.TypeConverter) LocalList(uk.ac.sussex.gdsc.core.utils.LocalList) Rectangle(java.awt.Rectangle) Rectangle2D(java.awt.geom.Rectangle2D) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) ImagePlus(ij.ImagePlus) PeakResult(uk.ac.sussex.gdsc.smlm.results.PeakResult)

Example 54 with MemoryPeakResults

use of uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults in project GDSC-SMLM by aherbert.

the class CropResults method roiCropResults.

private void roiCropResults() {
    final MemoryPeakResults newResults = createNewResults();
    // These bounds are integer. But this is because the results are meant to come from an image.
    final Rectangle integerBounds = results.getBounds(true);
    final ImagePlus imp = WindowManager.getImage(settings.getRoiImage());
    if (imp == null) {
        IJ.error(TITLE, "No ROI image: " + settings.getRoiImage());
        return;
    }
    final CoordinatePredicate roiTest = CoordinatePredicateUtils.createContainsPredicate(imp.getRoi());
    if (roiTest == null) {
        IJ.error(TITLE, "Not an area ROI");
        return;
    }
    // Scale the results to the size of the image with the ROI
    final int roiImageWidth = imp.getWidth();
    final int roiImageHeight = imp.getHeight();
    final double ox = integerBounds.getX();
    final double oy = integerBounds.getY();
    final double xscale = roiImageWidth / integerBounds.getWidth();
    final double yscale = roiImageHeight / integerBounds.getHeight();
    final Predicate<PeakResult> testZ = getZFilter();
    results.forEach(DistanceUnit.PIXEL, (XyrResultProcedure) (x, y, result) -> {
        if (roiTest.test((x - ox) * xscale, (y - oy) * yscale) && testZ.test(result)) {
            newResults.add(result);
        }
    });
    if (settings.getPreserveBounds()) {
        newResults.setBounds(integerBounds);
    } else {
        newResults.setBounds(null);
        newResults.getBounds(true);
    }
    IJ.showStatus(newResults.size() + " Cropped localisations");
}
Also used : Rectangle(java.awt.Rectangle) Rectangle2D(java.awt.geom.Rectangle2D) PassPeakResultPredicate(uk.ac.sussex.gdsc.smlm.results.predicates.PassPeakResultPredicate) IdentityTypeConverter(uk.ac.sussex.gdsc.core.data.utils.IdentityTypeConverter) WindowManager(ij.WindowManager) PeakResult(uk.ac.sussex.gdsc.smlm.results.PeakResult) OptionListener(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog.OptionListener) CoordinatePredicateUtils(uk.ac.sussex.gdsc.core.ij.roi.CoordinatePredicateUtils) PeakResultValueParameter(uk.ac.sussex.gdsc.smlm.results.PeakResultValueParameter) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) MathUtils(uk.ac.sussex.gdsc.core.utils.MathUtils) UnitHelper(uk.ac.sussex.gdsc.smlm.data.config.UnitHelper) CropResultsSettings(uk.ac.sussex.gdsc.smlm.ij.settings.GUIProtos.CropResultsSettings) SettingsManager(uk.ac.sussex.gdsc.smlm.ij.settings.SettingsManager) CoordinatePredicate(uk.ac.sussex.gdsc.core.ij.roi.CoordinatePredicate) XyrResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.XyrResultProcedure) ConversionException(uk.ac.sussex.gdsc.core.data.utils.ConversionException) Predicate(java.util.function.Predicate) ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog) InputSource(uk.ac.sussex.gdsc.smlm.ij.plugins.ResultsManager.InputSource) DistanceUnit(uk.ac.sussex.gdsc.smlm.data.config.UnitProtos.DistanceUnit) TextUtils(uk.ac.sussex.gdsc.core.utils.TextUtils) CalibrationHelper(uk.ac.sussex.gdsc.smlm.data.config.CalibrationHelper) Consumer(java.util.function.Consumer) ImagePlus(ij.ImagePlus) ImageJUtils(uk.ac.sussex.gdsc.core.ij.ImageJUtils) IJ(ij.IJ) MinMaxResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.MinMaxResultProcedure) MinMaxPeakResultPredicate(uk.ac.sussex.gdsc.smlm.results.predicates.MinMaxPeakResultPredicate) PlugIn(ij.plugin.PlugIn) TypeConverter(uk.ac.sussex.gdsc.core.data.utils.TypeConverter) LocalList(uk.ac.sussex.gdsc.core.utils.LocalList) Rectangle(java.awt.Rectangle) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) ImagePlus(ij.ImagePlus) CoordinatePredicate(uk.ac.sussex.gdsc.core.ij.roi.CoordinatePredicate) PeakResult(uk.ac.sussex.gdsc.smlm.results.PeakResult)

Example 55 with MemoryPeakResults

use of uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults in project GDSC-SMLM by aherbert.

the class CropResults method createNewResults.

private MemoryPeakResults createNewResults() {
    final MemoryPeakResults newResults = new MemoryPeakResults();
    newResults.copySettings(results);
    newResults.setName(outputName);
    MemoryPeakResults.addResults(newResults);
    return newResults;
}
Also used : MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults)

Aggregations

MemoryPeakResults (uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults)138 PeakResult (uk.ac.sussex.gdsc.smlm.results.PeakResult)61 List (java.util.List)47 ExtendedGenericDialog (uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog)46 IJ (ij.IJ)39 DistanceUnit (uk.ac.sussex.gdsc.smlm.data.config.UnitProtos.DistanceUnit)39 ImageJUtils (uk.ac.sussex.gdsc.core.ij.ImageJUtils)38 PeakResultProcedure (uk.ac.sussex.gdsc.smlm.results.procedures.PeakResultProcedure)38 ArrayList (java.util.ArrayList)36 AtomicReference (java.util.concurrent.atomic.AtomicReference)36 PlugIn (ij.plugin.PlugIn)34 MathUtils (uk.ac.sussex.gdsc.core.utils.MathUtils)33 Counter (uk.ac.sussex.gdsc.smlm.results.count.Counter)33 ImagePlus (ij.ImagePlus)31 Rectangle (java.awt.Rectangle)31 SimpleArrayUtils (uk.ac.sussex.gdsc.core.utils.SimpleArrayUtils)31 LocalList (uk.ac.sussex.gdsc.core.utils.LocalList)28 TextUtils (uk.ac.sussex.gdsc.core.utils.TextUtils)28 SettingsManager (uk.ac.sussex.gdsc.smlm.ij.settings.SettingsManager)28 FrameCounter (uk.ac.sussex.gdsc.smlm.results.count.FrameCounter)28