ActionSaveTracks.java
package com.github.celldynamics.quimp.plugin.protanalysis;
import java.awt.event.ActionEvent;
import java.awt.geom.Point2D;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.github.celldynamics.quimp.QParamsQconf;
import com.github.celldynamics.quimp.QuimpException;
import com.github.celldynamics.quimp.QuimpException.MessageSinkTypes;
import com.github.celldynamics.quimp.filesystem.QconfLoader;
import com.github.celldynamics.quimp.plugin.AbstractPluginOptions;
import com.github.celldynamics.quimp.plugin.qanalysis.STmap;
import ij.IJ;
/**
* Action (referenced as ActionListener) for saving tracks to csv if "Track" button is hit.
*
* <p>Read:
* <ol>
* <li>{@link AbstractPluginOptions#paramFile}
* <li>{@link ProtAnalysisOptions#saveTracks}
* </ol>
*
* @author p.baniukiewicz
*
*/
@SuppressWarnings("serial")
public class ActionSaveTracks extends ActionTrackPoints {
/**
* Action creator.
*
* @param ui reference to outer class.
*/
public ActionSaveTracks(ProtAnalysisUi ui) {
super(ui);
}
@Override
public void actionPerformed(ActionEvent arg0) {
PrintWriter pw;
if (options.saveTracks.getValue()) {
QconfLoader qconfLoader = ui.getModel().getQconfLoader();
STmap[] stMap = ((QParamsQconf) qconfLoader.getQp()).getLoadedDataContainer().getQState();
HashMap<Integer, List<Point2D>> tmpSelected = extractPoints(stMap);
for (Map.Entry<Integer, List<Point2D>> entry : tmpSelected.entrySet()) {
Integer cellNo = entry.getKey(); // cell number
List<Point2D> points = entry.getValue(); // users points
MaximaFinder mf = new MaximaFinder(ui.getImagePlus().getProcessor());
mf.setMaxima(points);
TrackCollection trackCollection = getTracks(stMap, cellNo, mf);
try {
Path fileToSave = Paths.get(qconfLoader.getQp().getPath(), "tracks_" + cellNo + ".csv");
pw = new PrintWriter(new FileWriter(fileToSave.toFile()));
trackCollection.saveTracks(pw);
pw.flush();
pw.close();
logger.info("Saved tracks in " + fileToSave.toString());
if (ui.getModel().getSink() == MessageSinkTypes.GUI
|| ui.getModel().getSink() == MessageSinkTypes.IJERROR) {
IJ.log("Saved tracks in " + fileToSave.toString());
}
} catch (IOException e) {
new QuimpException(e, ui.getModel().getSink()).handleException(null,
"Exception thrown when saving tracks");
break;
}
}
}
}
}