Search in sources :

Example 16 with Filter

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

the class FilterAnalysis method addSnrFilters.

private void addSnrFilters(List<FilterSet> filterSets) {
    if (!settings.snrFilter) {
        return;
    }
    for (double w = settings.minWidth; w <= settings.maxWidth; w += settings.incWidth) {
        final WidthFilter wf = new WidthFilter((float) w);
        final List<Filter> filters = new LinkedList<>();
        for (int snr = settings.minSnr; snr <= settings.maxSnr; snr++) {
            filters.add(new AndFilter(wf, new SnrFilter(snr)));
        }
        filterSets.add(new FilterSet(filters));
    }
}
Also used : AndFilter(uk.ac.sussex.gdsc.smlm.results.filter.AndFilter) FilterSet(uk.ac.sussex.gdsc.smlm.results.filter.FilterSet) Filter(uk.ac.sussex.gdsc.smlm.results.filter.Filter) AndFilter(uk.ac.sussex.gdsc.smlm.results.filter.AndFilter) PrecisionFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionFilter) SnrHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrHysteresisFilter) WidthFilter(uk.ac.sussex.gdsc.smlm.results.filter.WidthFilter) SnrFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrFilter) OrFilter(uk.ac.sussex.gdsc.smlm.results.filter.OrFilter) PrecisionHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionHysteresisFilter) TraceFilter(uk.ac.sussex.gdsc.smlm.results.filter.TraceFilter) SnrFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrFilter) LinkedList(java.util.LinkedList) WidthFilter(uk.ac.sussex.gdsc.smlm.results.filter.WidthFilter)

Example 17 with Filter

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

the class FilterAnalysis method addSnrHysteresisFilters.

private void addSnrHysteresisFilters(List<FilterSet> filterSets) {
    if (!settings.hysteresisSnrFilter) {
        return;
    }
    for (double w = settings.minWidth; w <= settings.maxWidth; w += settings.incWidth) {
        final WidthFilter wf = new WidthFilter((float) w);
        for (int snrGap = settings.minSnrGap; snrGap <= settings.maxSnrGap; snrGap += settings.incSnrGap) {
            final List<Filter> filters = new LinkedList<>();
            for (int snr = settings.minSnr; snr <= settings.maxSnr; snr++) {
                filters.add(new AndFilter(wf, new SnrHysteresisFilter(2, 0, 1, 0, snr, snrGap)));
            }
            filterSets.add(new FilterSet(filters));
        }
    }
}
Also used : AndFilter(uk.ac.sussex.gdsc.smlm.results.filter.AndFilter) FilterSet(uk.ac.sussex.gdsc.smlm.results.filter.FilterSet) Filter(uk.ac.sussex.gdsc.smlm.results.filter.Filter) AndFilter(uk.ac.sussex.gdsc.smlm.results.filter.AndFilter) PrecisionFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionFilter) SnrHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrHysteresisFilter) WidthFilter(uk.ac.sussex.gdsc.smlm.results.filter.WidthFilter) SnrFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrFilter) OrFilter(uk.ac.sussex.gdsc.smlm.results.filter.OrFilter) PrecisionHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionHysteresisFilter) TraceFilter(uk.ac.sussex.gdsc.smlm.results.filter.TraceFilter) LinkedList(java.util.LinkedList) SnrHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrHysteresisFilter) WidthFilter(uk.ac.sussex.gdsc.smlm.results.filter.WidthFilter)

Example 18 with Filter

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

the class FilterAnalysis method addTraceFilters.

private void addTraceFilters(List<FilterSet> filterSets) {
    if (!settings.traceFilter) {
        return;
    }
    for (double d = settings.minDistance; d <= settings.maxDistance; d += settings.incDistance) {
        final SnrFilter snr = new SnrFilter(settings.maxSnr);
        final List<Filter> filters = new LinkedList<>();
        for (int t = settings.minTime; t <= settings.maxTime; t += settings.incTime) {
            filters.add(new OrFilter(snr, new TraceFilter(d, t)));
        }
        filterSets.add(new FilterSet(filters));
    }
}
Also used : FilterSet(uk.ac.sussex.gdsc.smlm.results.filter.FilterSet) Filter(uk.ac.sussex.gdsc.smlm.results.filter.Filter) AndFilter(uk.ac.sussex.gdsc.smlm.results.filter.AndFilter) PrecisionFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionFilter) SnrHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrHysteresisFilter) WidthFilter(uk.ac.sussex.gdsc.smlm.results.filter.WidthFilter) SnrFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrFilter) OrFilter(uk.ac.sussex.gdsc.smlm.results.filter.OrFilter) PrecisionHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionHysteresisFilter) TraceFilter(uk.ac.sussex.gdsc.smlm.results.filter.TraceFilter) TraceFilter(uk.ac.sussex.gdsc.smlm.results.filter.TraceFilter) SnrFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrFilter) OrFilter(uk.ac.sussex.gdsc.smlm.results.filter.OrFilter) LinkedList(java.util.LinkedList)

Example 19 with Filter

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

the class FilterAnalysis method addPrecisionFilters.

private void addPrecisionFilters(List<FilterSet> filterSets) {
    if (!settings.precisionFilter) {
        return;
    }
    final List<Filter> filters = new LinkedList<>();
    for (int p = settings.minPrecision; p <= settings.maxPrecision; p++) {
        filters.add(new PrecisionFilter(p));
    }
    filterSets.add(new FilterSet(filters));
}
Also used : FilterSet(uk.ac.sussex.gdsc.smlm.results.filter.FilterSet) Filter(uk.ac.sussex.gdsc.smlm.results.filter.Filter) AndFilter(uk.ac.sussex.gdsc.smlm.results.filter.AndFilter) PrecisionFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionFilter) SnrHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrHysteresisFilter) WidthFilter(uk.ac.sussex.gdsc.smlm.results.filter.WidthFilter) SnrFilter(uk.ac.sussex.gdsc.smlm.results.filter.SnrFilter) OrFilter(uk.ac.sussex.gdsc.smlm.results.filter.OrFilter) PrecisionHysteresisFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionHysteresisFilter) TraceFilter(uk.ac.sussex.gdsc.smlm.results.filter.TraceFilter) PrecisionFilter(uk.ac.sussex.gdsc.smlm.results.filter.PrecisionFilter) LinkedList(java.util.LinkedList)

Example 20 with Filter

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

the class PeakFit method configureSmartFilter.

/**
 * Show a dialog to configure the smart filter.
 *
 * <p>If the fit configuration isSmartFilter is not enabled then this method returns true. If it
 * is enabled then a dialog is shown to input the configuration for a smart filter. If no valid
 * filter can be created from the input then the method returns false.
 *
 * <p>Note: If the smart filter is successfully configured then the user may want to disable the
 * standard fit validation.
 *
 * @param fitConfig the fit config
 * @return true, if successful
 */
public static boolean configureSmartFilter(final FitConfiguration fitConfig) {
    if (!fitConfig.isSmartFilter()) {
        return true;
    }
    final ExtendedGenericDialog gd = new ExtendedGenericDialog(TITLE);
    String xml = fitConfig.getSmartFilterString();
    if (TextUtils.isNullOrEmpty(xml)) {
        xml = fitConfig.getDefaultSmartFilterXml();
    }
    gd.addMessage("Smart filter (used to pick optimum results during fitting)");
    gd.addTextAreas(uk.ac.sussex.gdsc.core.utils.XmlUtils.convertQuotes(xml), null, 8, 60);
    // Add message about precision filtering
    gd.addMessage(TextUtils.wrap("Note: Smart filters using precision may require a local background level. " + "Ensure the camera calibration is correct including any bias.", 80));
    gd.showDialog();
    if (gd.wasCanceled()) {
        return false;
    }
    xml = gd.getNextText();
    final Filter f = Filter.fromXml(xml);
    if (!(f instanceof DirectFilter)) {
        return false;
    }
    fitConfig.setDirectFilter((DirectFilter) f);
    return true;
}
Also used : Filter(uk.ac.sussex.gdsc.smlm.results.filter.Filter) DirectFilter(uk.ac.sussex.gdsc.smlm.results.filter.DirectFilter) PlugInFilter(ij.plugin.filter.PlugInFilter) SpotFilter(uk.ac.sussex.gdsc.smlm.filters.SpotFilter) DirectFilter(uk.ac.sussex.gdsc.smlm.results.filter.DirectFilter) ExtendedGenericDialog(uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog)

Aggregations

Filter (uk.ac.sussex.gdsc.smlm.results.filter.Filter)21 DirectFilter (uk.ac.sussex.gdsc.smlm.results.filter.DirectFilter)12 FilterSet (uk.ac.sussex.gdsc.smlm.results.filter.FilterSet)11 PrecisionFilter (uk.ac.sussex.gdsc.smlm.results.filter.PrecisionFilter)10 SnrFilter (uk.ac.sussex.gdsc.smlm.results.filter.SnrFilter)10 WidthFilter (uk.ac.sussex.gdsc.smlm.results.filter.WidthFilter)10 MaximaSpotFilter (uk.ac.sussex.gdsc.smlm.filters.MaximaSpotFilter)9 AndFilter (uk.ac.sussex.gdsc.smlm.results.filter.AndFilter)9 IDirectFilter (uk.ac.sussex.gdsc.smlm.results.filter.IDirectFilter)9 MultiPathFilter (uk.ac.sussex.gdsc.smlm.results.filter.MultiPathFilter)9 OrFilter (uk.ac.sussex.gdsc.smlm.results.filter.OrFilter)9 PrecisionHysteresisFilter (uk.ac.sussex.gdsc.smlm.results.filter.PrecisionHysteresisFilter)9 SnrHysteresisFilter (uk.ac.sussex.gdsc.smlm.results.filter.SnrHysteresisFilter)9 TraceFilter (uk.ac.sussex.gdsc.smlm.results.filter.TraceFilter)9 ArrayList (java.util.ArrayList)8 LinkedList (java.util.LinkedList)8 ExtendedGenericDialog (uk.ac.sussex.gdsc.core.ij.gui.ExtendedGenericDialog)7 GenericDialog (ij.gui.GenericDialog)5 List (java.util.List)4 IJ (ij.IJ)3