Search in sources :

Example 6 with Filter

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

the class BenchmarkFilterAnalysis method scoreFilters.

private FilterScoreResult[] scoreFilters(FilterSet filterSet, boolean createTextResult) {
    if (filterSet.size() == 0)
        return null;
    initialiseScoring(filterSet);
    FilterScoreResult[] scoreResults = new FilterScoreResult[filterSet.size()];
    if (scoreResults.length == 1) {
        // No need to multi-thread this			
        scoreResults[0] = scoreFilter((DirectFilter) filterSet.getFilters().get(0), minimalFilter, createTextResult, coordinateStore);
    } else {
        // Multi-thread score all the result
        final int nThreads = getThreads(scoreResults.length);
        final BlockingQueue<ScoreJob> jobs = new ArrayBlockingQueue<ScoreJob>(nThreads * 2);
        final List<ScoreWorker> workers = new LinkedList<ScoreWorker>();
        final List<Thread> threads = new LinkedList<Thread>();
        for (int i = 0; i < nThreads; i++) {
            final ScoreWorker worker = new ScoreWorker(jobs, scoreResults, createTextResult, (coordinateStore == null) ? null : coordinateStore.newInstance());
            final Thread t = new Thread(worker);
            workers.add(worker);
            threads.add(t);
            t.start();
        }
        int index = 0;
        totalProgress = scoreResults.length;
        stepProgress = Utils.getProgressInterval(totalProgress);
        progress = 0;
        for (Filter filter : filterSet.getFilters()) {
            if (IJ.escapePressed())
                break;
            put(jobs, new ScoreJob((DirectFilter) filter, index++));
        }
        // Finish all the worker threads by passing in a null job
        for (int i = 0; i < threads.size(); i++) {
            put(jobs, new ScoreJob(null, -1));
        }
        // Wait for all to finish
        for (int i = 0; i < threads.size(); i++) {
            try {
                threads.get(i).join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        threads.clear();
        IJ.showProgress(1);
        // In case the threads were interrupted
        if (Utils.isInterrupted())
            scoreResults = null;
    }
    finishScoring();
    return scoreResults;
}
Also used : IDirectFilter(gdsc.smlm.results.filter.IDirectFilter) DirectFilter(gdsc.smlm.results.filter.DirectFilter) LinkedList(java.util.LinkedList) ArrayBlockingQueue(java.util.concurrent.ArrayBlockingQueue) IDirectFilter(gdsc.smlm.results.filter.IDirectFilter) DirectFilter(gdsc.smlm.results.filter.DirectFilter) Filter(gdsc.smlm.results.filter.Filter) MultiPathFilter(gdsc.smlm.results.filter.MultiPathFilter) MaximaSpotFilter(gdsc.smlm.filters.MaximaSpotFilter)

Example 7 with Filter

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

the class FilterAnalysis method addSNRFilters.

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

Example 8 with Filter

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

the class FilterAnalysis method addPrecisionFilters.

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

Example 9 with Filter

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

the class FilterAnalysis method addSNRHysteresisFilters.

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

Example 10 with Filter

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

the class BenchmarkFilterAnalysis method setStrength.

/**
	 * Sets the strength on all the filters.
	 *
	 * @param filterSet
	 *            the filter set
	 * @return the filter set
	 */
private FilterSet setStrength(FilterSet filterSet) {
    if (ss_lower != null) {
        for (Filter f : filterSet.getFilters()) {
            final DirectFilter df = (DirectFilter) f;
            df.setStrength(df.computeStrength(ss_lower, ss_upper));
        }
    }
    return filterSet;
}
Also used : IDirectFilter(gdsc.smlm.results.filter.IDirectFilter) DirectFilter(gdsc.smlm.results.filter.DirectFilter) Filter(gdsc.smlm.results.filter.Filter) MultiPathFilter(gdsc.smlm.results.filter.MultiPathFilter) MaximaSpotFilter(gdsc.smlm.filters.MaximaSpotFilter) IDirectFilter(gdsc.smlm.results.filter.IDirectFilter) DirectFilter(gdsc.smlm.results.filter.DirectFilter)

Aggregations

Filter (gdsc.smlm.results.filter.Filter)18 DirectFilter (gdsc.smlm.results.filter.DirectFilter)10 MaximaSpotFilter (gdsc.smlm.filters.MaximaSpotFilter)9 FilterSet (gdsc.smlm.results.filter.FilterSet)9 MultiPathFilter (gdsc.smlm.results.filter.MultiPathFilter)9 PrecisionFilter (gdsc.smlm.results.filter.PrecisionFilter)9 SNRFilter (gdsc.smlm.results.filter.SNRFilter)9 WidthFilter (gdsc.smlm.results.filter.WidthFilter)9 AndFilter (gdsc.smlm.results.filter.AndFilter)8 IDirectFilter (gdsc.smlm.results.filter.IDirectFilter)8 OrFilter (gdsc.smlm.results.filter.OrFilter)8 PrecisionHysteresisFilter (gdsc.smlm.results.filter.PrecisionHysteresisFilter)8 SNRHysteresisFilter (gdsc.smlm.results.filter.SNRHysteresisFilter)8 TraceFilter (gdsc.smlm.results.filter.TraceFilter)8 FilenameFilter (java.io.FilenameFilter)7 LinkedList (java.util.LinkedList)7 ArrayList (java.util.ArrayList)6 GenericDialog (ij.gui.GenericDialog)3 NonBlockingGenericDialog (ij.gui.NonBlockingGenericDialog)3 ClassificationResult (gdsc.core.match.ClassificationResult)2