Search in sources :

Example 11 with ExtendedGenericDialog

use of uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog in project GDSC-SMLM by aherbert.

the class PcPalmMolecules method getRunMode.

private boolean getRunMode(boolean resultsAvailable) {
    ExtendedGenericDialog gd = new ExtendedGenericDialog(TITLE);
    // Build a list of all images with a region ROI
    final List<String> titles = new LinkedList<>();
    for (final int imageId : ImageJUtils.getIdList()) {
        final ImagePlus imp = WindowManager.getImage(imageId);
        if (imp != null && imp.getRoi() != null && imp.getRoi().isArea()) {
            titles.add(imp.getTitle());
        }
    }
    settings = Settings.load();
    if (!resultsAvailable) {
        settings.runMode = 3;
        gd.addMessage("Simulate molecules for cluster analysis.\n" + "Computes a binary image from localisation data");
        gd.addNumericField("Molecules", settings.numberOfMolecules, 0);
        gd.addNumericField("Simulation_size (um)", settings.simulationSize, 2);
        gd.addNumericField("Blinking_rate", settings.blinkingRate, 2);
        gd.addChoice("Blinking_distribution", Settings.BLINKING_DISTRIBUTION, settings.blinkingDistribution);
        gd.addNumericField("Average_precision (nm)", settings.sigmaS, 2);
        gd.addCheckbox("Show_histograms", settings.showHistograms);
        gd.addCheckbox("Distance_analysis", settings.distanceAnalysis);
        gd.addChoice("Cluster_simulation", Settings.CLUSTER_SIMULATION, settings.clusterSimulation);
        gd.addNumericField("Cluster_number", settings.clusterNumber, 2);
        gd.addNumericField("Cluster_variation (SD)", settings.clusterNumberStdDev, 2);
        gd.addNumericField("Cluster_radius", settings.clusterRadius, 2);
        gd.addCheckbox("Show_cluster_mask", settings.showClusterMask);
        Recorder.recordOption("Run_mode", Settings.RUN_MODE[settings.runMode]);
    } else {
        gd.addMessage("Prepare molecules for cluster analysis.\n" + "Computes a binary image from raw localisation data");
        ResultsManager.addInput(gd, settings.inputOption, InputSource.MEMORY);
        if (!titles.isEmpty()) {
            gd.addCheckbox((titles.size() == 1) ? "Use_ROI" : "Choose_ROI", settings.chooseRoi);
        }
        gd.addChoice("Run_mode", Settings.RUN_MODE, settings.runMode);
    }
    gd.addMessage("Select options for low resolution image:");
    gd.addSlider("Image_size (px)", 512, 2048, settings.lowResolutionImageSize);
    gd.addSlider("ROI_size (um)", 1.5, 4, settings.roiSizeInUm);
    gd.addMessage("Select options for high resolution image:");
    gd.addCheckbox("Show_high_res_image", settings.showHighResolutionImage);
    gd.addSlider("nm_per_pixel_limit", 0, 20, settings.nmPerPixelLimit);
    gd.addMessage("Optionally remove all analysis results from memory");
    gd.addCheckbox("Clear_results", settings.clearResults);
    gd.addHelp(HelpUrls.getUrl("pc-palm-molecules"));
    gd.showDialog();
    if (gd.wasCanceled()) {
        return false;
    }
    if (!resultsAvailable) {
        settings.numberOfMolecules = (int) Math.abs(gd.getNextNumber());
        settings.simulationSize = Math.abs(gd.getNextNumber());
        settings.blinkingRate = Math.abs(gd.getNextNumber());
        settings.blinkingDistribution = gd.getNextChoiceIndex();
        settings.sigmaS = Math.abs(gd.getNextNumber());
        settings.showHistograms = gd.getNextBoolean();
        settings.distanceAnalysis = gd.getNextBoolean();
        settings.clusterSimulation = gd.getNextChoiceIndex();
        settings.clusterNumber = Math.abs(gd.getNextNumber());
        settings.clusterNumberStdDev = Math.abs(gd.getNextNumber());
        settings.clusterRadius = Math.abs(gd.getNextNumber());
        settings.showClusterMask = gd.getNextBoolean();
    } else {
        settings.inputOption = ResultsManager.getInputSource(gd);
        if (!titles.isEmpty()) {
            settings.chooseRoi = gd.getNextBoolean();
        }
        settings.runMode = gd.getNextChoiceIndex();
    }
    settings.lowResolutionImageSize = (int) gd.getNextNumber();
    settings.roiSizeInUm = gd.getNextNumber();
    settings.showHighResolutionImage = gd.getNextBoolean();
    settings.nmPerPixelLimit = Math.abs(gd.getNextNumber());
    settings.clearResults = gd.getNextBoolean();
    settings.save();
    // Check arguments
    try {
        if (!resultsAvailable) {
            ParameterUtils.isAboveZero("Molecules", settings.numberOfMolecules);
            ParameterUtils.isAboveZero("Simulation size", settings.simulationSize);
            ParameterUtils.isEqualOrAbove("Blinking rate", settings.blinkingRate, 1);
            ParameterUtils.isEqualOrAbove("Cluster number", settings.clusterNumber, 1);
        }
        ParameterUtils.isAbove("Image scale", settings.lowResolutionImageSize, 1);
        ParameterUtils.isAboveZero("ROI size", settings.roiSizeInUm);
    } catch (final IllegalArgumentException ex) {
        IJ.error(TITLE, ex.getMessage());
        return false;
    }
    if (!titles.isEmpty() && settings.chooseRoi && resultsAvailable) {
        if (titles.size() == 1) {
            settings.roiImage = titles.get(0);
            Recorder.recordOption("Image", settings.roiImage);
        } else {
            final String[] items = titles.toArray(new String[0]);
            gd = new ExtendedGenericDialog(TITLE);
            gd.addMessage("Select the source image for the ROI");
            gd.addChoice("Image", items, settings.roiImage);
            gd.showDialog();
            if (gd.wasCanceled()) {
                return false;
            }
            settings.roiImage = gd.getNextChoice();
        }
        final ImagePlus imp = WindowManager.getImage(settings.roiImage);
        roiBounds = imp.getRoi().getBounds();
        roiImageWidth = imp.getWidth();
        roiImageHeight = imp.getHeight();
    } else {
        roiBounds = null;
    }
    if (!resultsAvailable && !getPValue()) {
        return false;
    }
    if (settings.clearResults) {
        PcPalmAnalysis.clearResults();
        PcPalmFitting.clearResults();
    }
    return true;
}
Also used : ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog) ImagePlus(ij.ImagePlus) LinkedList(java.util.LinkedList) WeightedObservedPoint(org.apache.commons.math3.fitting.WeightedObservedPoint) ClusterPoint(uk.ac.sussex.gdsc.core.clustering.ClusterPoint)

Example 12 with ExtendedGenericDialog

use of uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog in project GDSC-SMLM by aherbert.

the class PeakResultTableModelFrame method doEditTableSettings.

private void doEditTableSettings() {
    final PeakResultTableModel model = getModel();
    if (model == null) {
        return;
    }
    final ResultsTableSettings.Builder tableSettings = model.getTableSettings().toBuilder();
    // Copied from ResultsManager.addTableResultsOptions
    final ExtendedGenericDialog egd = new ExtendedGenericDialog("Table Settings", this);
    egd.addChoice("Table_distance_unit", SettingsManager.getDistanceUnitNames(), tableSettings.getDistanceUnitValue());
    egd.addChoice("Table_intensity_unit", SettingsManager.getIntensityUnitNames(), tableSettings.getIntensityUnitValue());
    egd.addChoice("Table_angle_unit", SettingsManager.getAngleUnitNames(), tableSettings.getAngleUnitValue());
    egd.addCheckbox("Table_show_fitting_data", tableSettings.getShowFittingData());
    egd.addCheckbox("Table_show_noise_data", tableSettings.getShowNoiseData());
    egd.addCheckbox("Table_show_precision", tableSettings.getShowPrecision());
    egd.addSlider("Table_precision", 0, 10, tableSettings.getRoundingPrecision());
    egd.addCheckbox("Table_show_counter", tableSettings.getShowRowCounter());
    egd.showDialog();
    if (egd.wasCanceled()) {
        return;
    }
    tableSettings.setDistanceUnitValue(egd.getNextChoiceIndex());
    tableSettings.setIntensityUnitValue(egd.getNextChoiceIndex());
    tableSettings.setAngleUnitValue(egd.getNextChoiceIndex());
    tableSettings.setShowFittingData(egd.getNextBoolean());
    tableSettings.setShowNoiseData(egd.getNextBoolean());
    tableSettings.setShowPrecision(egd.getNextBoolean());
    tableSettings.setRoundingPrecision((int) egd.getNextNumber());
    tableSettings.setShowRowCounter(egd.getNextBoolean());
    model.setTableSettings(tableSettings.build());
}
Also used : ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog) ResultsTableSettings(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsTableSettings)

Example 13 with ExtendedGenericDialog

use of uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog in project GDSC-SMLM by aherbert.

the class PeakFit method newWizardDialog.

private static ExtendedGenericDialog newWizardDialog(String... messages) {
    final ExtendedGenericDialog gd = new ExtendedGenericDialog(TITLE);
    gd.addHelp(HelpUrls.getUrl("simple-fit"));
    final String header = "-=-";
    gd.addMessage(header + " " + TITLE + " Configuration Wizard " + header);
    for (final String message : messages) {
        gd.addMessage(TextUtils.wrap(message, 80));
    }
    return gd;
}
Also used : ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog)

Example 14 with ExtendedGenericDialog

use of uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog in project GDSC-SMLM by aherbert.

the class PeakFit method addSingleFrameOverlay.

private void addSingleFrameOverlay() {
    // If a single frame was processed add the peaks as an overlay if they are in memory
    ImagePlus localImp = this.imp;
    if (fitMaxima && singleFrame > 0 && source instanceof IJImageSource) {
        final String title = source.getName();
        localImp = WindowManager.getImage(title);
    }
    if (singleFrame > 0 && localImp != null) {
        MemoryPeakResults memoryResults = null;
        for (final PeakResults r : this.results.toArray()) {
            if (r instanceof MemoryPeakResults) {
                memoryResults = (MemoryPeakResults) r;
                break;
            }
        }
        if (memoryResults == null || memoryResults.size() == 0) {
            return;
        }
        final ExtendedGenericDialog gd = new ExtendedGenericDialog(TITLE);
        gd.enableYesNoCancel();
        gd.hideCancelButton();
        gd.addMessage("Add the fitted localisations as an overlay?");
        gd.showDialog();
        if (!gd.wasOKed()) {
            return;
        }
        final LUT lut = LutHelper.createLut(LutColour.ICE);
        final Overlay o = new Overlay();
        final int size = memoryResults.size();
        final Counter j = new Counter(size);
        final ImagePlus finalImp = localImp;
        memoryResults.forEach(DistanceUnit.PIXEL, (XyResultProcedure) (x, y) -> {
            final PointRoi roi = new OffsetPointRoi(x, y);
            final Color c = LutHelper.getColour(lut, j.decrementAndGet(), size);
            roi.setStrokeColor(c);
            roi.setFillColor(c);
            if (finalImp.getStackSize() > 1) {
                roi.setPosition(singleFrame);
            }
            o.add(roi);
        });
        localImp.setOverlay(o);
        localImp.getWindow().toFront();
    }
}
Also used : Color(java.awt.Color) Choice(java.awt.Choice) Arrays(java.util.Arrays) Calibration(uk.ac.sussex.gdsc.smlm.data.config.CalibrationProtos.Calibration) UnitConverterUtils(uk.ac.sussex.gdsc.smlm.data.config.UnitConverterUtils) ImageProcessor(ij.process.ImageProcessor) ImageSource(uk.ac.sussex.gdsc.smlm.results.ImageSource) Filter(uk.ac.sussex.gdsc.smlm.results.filter.Filter) PSFType(uk.ac.sussex.gdsc.smlm.data.config.PSFProtos.PSFType) StringUtils(org.apache.commons.lang3.StringUtils) ResultsSettings(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsSettings) Panel(java.awt.Panel) Vector(java.util.Vector) Matcher(java.util.regex.Matcher) YesNoCancelDialog(ij.gui.YesNoCancelDialog) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) Map(java.util.Map) FitProtosHelper(uk.ac.sussex.gdsc.smlm.data.config.FitProtosHelper) ImageJImageConverter(uk.ac.sussex.gdsc.smlm.ij.utils.ImageJImageConverter) FilePeakResults(uk.ac.sussex.gdsc.smlm.results.FilePeakResults) EnumSet(java.util.EnumSet) LutHelper(uk.ac.sussex.gdsc.core.ij.process.LutHelper) InputSource(uk.ac.sussex.gdsc.smlm.ij.plugins.ResultsManager.InputSource) DistanceUnit(uk.ac.sussex.gdsc.smlm.data.config.UnitProtos.DistanceUnit) GuiProtosHelper(uk.ac.sussex.gdsc.smlm.ij.settings.GuiProtosHelper) TextUtils(uk.ac.sussex.gdsc.core.utils.TextUtils) Scrollbar(java.awt.Scrollbar) ImagePlus(ij.ImagePlus) CalibrationProtosHelper(uk.ac.sussex.gdsc.smlm.data.config.CalibrationProtosHelper) FitEngineSettings(uk.ac.sussex.gdsc.smlm.data.config.FitProtos.FitEngineSettings) PeakResultProcedureX(uk.ac.sussex.gdsc.smlm.results.procedures.PeakResultProcedureX) Prefs(ij.Prefs) FrameCounter(uk.ac.sussex.gdsc.smlm.results.count.FrameCounter) WindowManager(ij.WindowManager) PeakResult(uk.ac.sussex.gdsc.smlm.results.PeakResult) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) PointRoi(ij.gui.PointRoi) DataFilterMethod(uk.ac.sussex.gdsc.smlm.data.config.FitProtos.DataFilterMethod) GenericDialog(ij.gui.GenericDialog) FitConfiguration(uk.ac.sussex.gdsc.smlm.engine.FitConfiguration) Overlay(ij.gui.Overlay) IntFunction(java.util.function.IntFunction) SeriesOpener(uk.ac.sussex.gdsc.core.ij.SeriesOpener) FitWorker(uk.ac.sussex.gdsc.smlm.engine.FitWorker) FitEngine(uk.ac.sussex.gdsc.smlm.engine.FitEngine) File(java.io.File) AggregatedImageSource(uk.ac.sussex.gdsc.smlm.results.AggregatedImageSource) DirectFilter(uk.ac.sussex.gdsc.smlm.results.filter.DirectFilter) ImageJTablePeakResults(uk.ac.sussex.gdsc.smlm.ij.results.ImageJTablePeakResults) ImageStack(ij.ImageStack) CameraModel(uk.ac.sussex.gdsc.smlm.model.camera.CameraModel) PsfHelper(uk.ac.sussex.gdsc.smlm.data.config.PsfHelper) FitJob(uk.ac.sussex.gdsc.smlm.engine.FitJob) ResultsTableSettings(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsTableSettings) FitTask(uk.ac.sussex.gdsc.smlm.engine.FitParameters.FitTask) ItemListener(java.awt.event.ItemListener) PSFParameter(uk.ac.sussex.gdsc.smlm.data.config.PSFProtos.PSFParameter) FitSolver(uk.ac.sussex.gdsc.smlm.data.config.FitProtos.FitSolver) ResultsImageSettings(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageSettings) ImageJPluginLoggerHelper(uk.ac.sussex.gdsc.core.ij.ImageJPluginLoggerHelper) XyResultProcedure(uk.ac.sussex.gdsc.smlm.results.procedures.XyResultProcedure) InterlacedImageSource(uk.ac.sussex.gdsc.smlm.results.InterlacedImageSource) ImageJImagePeakResults(uk.ac.sussex.gdsc.smlm.ij.results.ImageJImagePeakResults) PeakResults(uk.ac.sussex.gdsc.smlm.results.PeakResults) MathUtils(uk.ac.sussex.gdsc.core.utils.MathUtils) CalibrationWriter(uk.ac.sussex.gdsc.smlm.data.config.CalibrationWriter) PlugInFilter(ij.plugin.filter.PlugInFilter) PsfProtosHelper(uk.ac.sussex.gdsc.smlm.data.config.PsfProtosHelper) FitParameters(uk.ac.sussex.gdsc.smlm.engine.FitParameters) SettingsManager(uk.ac.sussex.gdsc.smlm.ij.settings.SettingsManager) ItemEvent(java.awt.event.ItemEvent) CameraType(uk.ac.sussex.gdsc.smlm.data.config.CalibrationProtos.CameraType) ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog) PeakResultsList(uk.ac.sussex.gdsc.smlm.results.PeakResultsList) TrackProgressAdaptor(uk.ac.sussex.gdsc.core.logging.TrackProgressAdaptor) ResultsImageType(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageType) FitEngineConfiguration(uk.ac.sussex.gdsc.smlm.engine.FitEngineConfiguration) OffsetPointRoi(uk.ac.sussex.gdsc.core.ij.gui.OffsetPointRoi) GridBagConstraints(java.awt.GridBagConstraints) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) BitFlagUtils(uk.ac.sussex.gdsc.core.utils.BitFlagUtils) List(java.util.List) SpotFilter(uk.ac.sussex.gdsc.smlm.filters.SpotFilter) LUT(ij.process.LUT) Pattern(java.util.regex.Pattern) FitQueue(uk.ac.sussex.gdsc.smlm.engine.FitQueue) SeriesImageSource(uk.ac.sussex.gdsc.smlm.ij.SeriesImageSource) TypeConverter(uk.ac.sussex.gdsc.core.data.utils.TypeConverter) Roi(ij.gui.Roi) ParameterisedFitJob(uk.ac.sussex.gdsc.smlm.engine.ParameterisedFitJob) IntStream(java.util.stream.IntStream) Rectangle(java.awt.Rectangle) Insets(java.awt.Insets) PrecisionMethod(uk.ac.sussex.gdsc.smlm.data.config.FitProtos.PrecisionMethod) PSFCalculatorSettings(uk.ac.sussex.gdsc.smlm.ij.settings.GUIProtos.PSFCalculatorSettings) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) PSF(uk.ac.sussex.gdsc.smlm.data.config.PSFProtos.PSF) ResultsFileSettings(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsFileSettings) AtomicReference(java.util.concurrent.atomic.AtomicReference) TextField(java.awt.TextField) OptionListener(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog.OptionListener) IJImageSource(uk.ac.sussex.gdsc.smlm.ij.IJImageSource) NoiseEstimatorMethod(uk.ac.sussex.gdsc.smlm.data.config.FitProtos.NoiseEstimatorMethod) ResultsProtosHelper(uk.ac.sussex.gdsc.smlm.data.config.ResultsProtosHelper) TemplateSettings(uk.ac.sussex.gdsc.smlm.data.config.TemplateProtos.TemplateSettings) FastMleSteppingFunctionSolver(uk.ac.sussex.gdsc.smlm.fitting.nonlinear.FastMleSteppingFunctionSolver) SystemColor(java.awt.SystemColor) AstigmatismModel(uk.ac.sussex.gdsc.smlm.data.config.PSFProtos.AstigmatismModel) Iterator(java.util.Iterator) Checkbox(java.awt.Checkbox) Label(java.awt.Label) LutColour(uk.ac.sussex.gdsc.core.ij.process.LutHelper.LutColour) CalibrationReader(uk.ac.sussex.gdsc.smlm.data.config.CalibrationReader) TimeUnit(uk.ac.sussex.gdsc.smlm.data.config.UnitProtos.TimeUnit) Counter(uk.ac.sussex.gdsc.smlm.results.count.Counter) ImageJUtils(uk.ac.sussex.gdsc.core.ij.ImageJUtils) IJ(ij.IJ) PerPixelCameraModel(uk.ac.sussex.gdsc.smlm.model.camera.PerPixelCameraModel) OffsetPointRoi(uk.ac.sussex.gdsc.core.ij.gui.OffsetPointRoi) Color(java.awt.Color) SystemColor(java.awt.SystemColor) LUT(ij.process.LUT) ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog) ImagePlus(ij.ImagePlus) IJImageSource(uk.ac.sussex.gdsc.smlm.ij.IJImageSource) FrameCounter(uk.ac.sussex.gdsc.smlm.results.count.FrameCounter) Counter(uk.ac.sussex.gdsc.smlm.results.count.Counter) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) FilePeakResults(uk.ac.sussex.gdsc.smlm.results.FilePeakResults) ImageJTablePeakResults(uk.ac.sussex.gdsc.smlm.ij.results.ImageJTablePeakResults) ImageJImagePeakResults(uk.ac.sussex.gdsc.smlm.ij.results.ImageJImagePeakResults) PeakResults(uk.ac.sussex.gdsc.smlm.results.PeakResults) MemoryPeakResults(uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults) Overlay(ij.gui.Overlay) PointRoi(ij.gui.PointRoi) OffsetPointRoi(uk.ac.sussex.gdsc.core.ij.gui.OffsetPointRoi)

Example 15 with ExtendedGenericDialog

use of uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog in project GDSC-SMLM by aherbert.

the class PeakFit method getPixelPitch.

private static boolean getPixelPitch(CalibrationWriter calibration) {
    final ExtendedGenericDialog gd = newWizardDialog("Enter the size of each pixel. This is required to ensure the dimensions of the image" + " are calibrated.", "E.g. a camera with a 6.45um pixel size and a 60x objective will have a pitch of" + " 6450/60 = 107.5nm.");
    // TODO - Add a pop-up calculator...
    gd.addNumericField("Calibration", calibration.getNmPerPixel(), 2, 6, "nm/px");
    gd.showDialog();
    if (gd.wasCanceled()) {
        return false;
    }
    calibration.setNmPerPixel(Math.abs(gd.getNextNumber()));
    return true;
}
Also used : ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog)

Aggregations

ExtendedGenericDialog (uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog)151 NonBlockingExtendedGenericDialog (uk.ac.sussex.gdsc.core.ij.gui.NonBlockingExtendedGenericDialog)38 CalibrationWriter (uk.ac.sussex.gdsc.smlm.data.config.CalibrationWriter)21 MemoryPeakResults (uk.ac.sussex.gdsc.smlm.results.MemoryPeakResults)14 Checkbox (java.awt.Checkbox)13 ImagePlus (ij.ImagePlus)12 File (java.io.File)11 Rectangle (java.awt.Rectangle)10 TextField (java.awt.TextField)10 ResultsImageSettings (uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsImageSettings)10 FitConfiguration (uk.ac.sussex.gdsc.smlm.engine.FitConfiguration)10 Choice (java.awt.Choice)9 ArrayList (java.util.ArrayList)9 DistanceUnit (uk.ac.sussex.gdsc.smlm.data.config.UnitProtos.DistanceUnit)9 LocalList (uk.ac.sussex.gdsc.core.utils.LocalList)8 CalibrationReader (uk.ac.sussex.gdsc.smlm.data.config.CalibrationReader)7 ResultsSettings (uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsSettings)7 ResultsTableSettings (uk.ac.sussex.gdsc.smlm.data.config.ResultsProtos.ResultsTableSettings)7 IJ (ij.IJ)6 GenericDialog (ij.gui.GenericDialog)5