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));
}
}
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));
}
}
}
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));
}
}
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));
}
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;
}
Aggregations