package org.signalml.plugin.newstager.logic.book.tag.helper;
import org.signalml.plugin.newstager.data.book.NewStagerAdaptedAtom;
import org.signalml.plugin.newstager.data.tag.NewStagerBookAtomFilterData;
import org.signalml.plugin.newstager.logic.helper.NewStagerRangeGabor;
import org.signalml.util.MinMaxRange;
public class NewStagerAmpBookAtomFilter extends NewStagerBookAtomFilterBase {
public NewStagerAmpBookAtomFilter(
NewStagerBookAtomFilterData data) {
super(data);
MinMaxRange amplitude = data.threshold.amplitude;
if (amplitude == null) {
return;
}
final double samplingFrequency = data.bookInfo.samplingFrequency;
final int signalSize = (int)(data.bookInfo.offsetDimension / samplingFrequency); //TODO maybe change to double?
final INewStagerBookAtomSelector oldSelector = this.selector;
final double min = amplitude.getMin();
this.selector = new INewStagerBookAtomSelector() {
@Override
public boolean matches(NewStagerAdaptedAtom atom) {
return oldSelector.matches(atom)
&& NewStagerRangeGabor.HRangeGabor(signalSize,
samplingFrequency, atom.scale, atom.frequency,
atom.position, atom.amplitude, atom.phase) >= min;
}
};
}
}