package cz.cuni.lf1.lge.ThunderSTORM.drift;
import cz.cuni.lf1.lge.ThunderSTORM.estimators.PSF.MoleculeDescriptor;
import java.awt.geom.Point2D;
import org.apache.commons.math3.analysis.polynomials.PolynomialSplineFunction;
public class DriftResults {
//interpolated drift
private PolynomialSplineFunction xFunction;
private PolynomialSplineFunction yFunction;
//actual estimated drift data
private double[] driftDataFrame;
private double[] driftDataX;
private double[] driftDataY;
//
private int minFrame;
private int maxFrame;
//units of the drift, both for original values interpolation
MoleculeDescriptor.Units units;
public DriftResults(PolynomialSplineFunction xFunction,
PolynomialSplineFunction yFunction,
double[] driftDataFrame,
double[] driftDataX,
double[] driftDataY,
int minFrame, int maxFrame,
MoleculeDescriptor.Units units) {
this.xFunction = xFunction;
this.yFunction = yFunction;
this.driftDataFrame = driftDataFrame;
this.driftDataX = driftDataX;
this.driftDataY = driftDataY;
this.minFrame = minFrame;
this.maxFrame = maxFrame;
this.units = units;
}
public int getBinCount() {
return driftDataFrame.length;
}
public double[] getDriftDataFrame() {
return driftDataFrame;
}
public double[] getDriftDataX() {
return driftDataX;
}
public double[] getDriftDataY() {
return driftDataY;
}
public int getMinFrame() {
return minFrame;
}
public int getMaxFrame() {
return maxFrame;
}
public Point2D.Double getInterpolatedDrift(double frameNumber) {
return new Point2D.Double(xFunction.value(frameNumber), yFunction.value(frameNumber));
}
public MoleculeDescriptor.Units getUnits() {
return units;
}
}