package cz.cuni.lf1.lge.ThunderSTORM.calibration;
import ij.IJ;
import org.yaml.snakeyaml.Yaml;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DoubleDefocusCalibration<T extends DefocusCalibration> extends DefocusCalibration {
public T cal1, cal2;
public DoubleDefocusCalibration(String calName, Homography.TransformationMatrix homography, T cal1, T cal2) {
super(calName);
this.homography = homography;
this.cal1 = cal1;
this.cal2 = cal2;
}
@Override
public void saveToFile(String path) throws IOException {
FileWriter fw = null;
try {
File file = new File(path);
fw = new FileWriter(file);
List<Object> objects = new ArrayList<Object>();
objects.add(cal1);
objects.add(cal2);
if (homography != null) objects.add(homography);
new Yaml(new Homography.TransformationMatrix.YamlRepresenter()).dumpAll(objects.iterator(), fw);
IJ.log("Calibration file saved to: " + file.getAbsolutePath());
IJ.showStatus("Calibration file saved to " + file.getAbsolutePath());
} finally {
if(fw != null) {
fw.close();
}
}
}
// TODO: the following is just a dummy implementation which is not applicable for fitting!!!
@Override
public double evalDefocus(double z, double w0, double a, double b, double c, double d) {
throw new NotImplementedException();
}
@Override
public double evalDefocus2(double z, double w0, double a, double b, double c, double d) {
throw new NotImplementedException();
}
@Override
public double dwx(double z) {
throw new NotImplementedException();
}
@Override
public double dwy(double z) {
throw new NotImplementedException();
}
@Override
public double dwx2(double z) {
throw new NotImplementedException();
}
@Override
public double dwy2(double z) {
throw new NotImplementedException();
}
@Override
public DaostormCalibration getDaoCalibration() {
throw new NotImplementedException();
}
}