View Javadoc
1   package com.github.celldynamics.quimp.plugin.protanalysis;
2   
3   import java.awt.event.ActionEvent;
4   import java.awt.geom.Point2D;
5   import java.io.FileWriter;
6   import java.io.IOException;
7   import java.io.PrintWriter;
8   import java.nio.file.Path;
9   import java.nio.file.Paths;
10  import java.util.HashMap;
11  import java.util.List;
12  import java.util.Map;
13  
14  import com.github.celldynamics.quimp.QParamsQconf;
15  import com.github.celldynamics.quimp.QuimpException;
16  import com.github.celldynamics.quimp.filesystem.QconfLoader;
17  import com.github.celldynamics.quimp.plugin.AbstractPluginOptions;
18  import com.github.celldynamics.quimp.plugin.qanalysis.STmap;
19  
20  /**
21   * Action (referenced as ActionListener) for saving tracks to csv if "Track" button is hit.
22   * 
23   * <p>Read:
24   * <ol>
25   * <li>{@link AbstractPluginOptions#paramFile}
26   * <li>{@link ProtAnalysisOptions#saveTracks}
27   * </ol>
28   * 
29   * @author p.baniukiewicz
30   *
31   */
32  @SuppressWarnings("serial")
33  public class ActionSaveTracks extends ActionTrackPoints {
34  
35    /**
36     * Action creator.
37     * 
38     * @param ui reference to outer class.
39     */
40    public ActionSaveTracks(ProtAnalysisUi ui) {
41      super(ui);
42    }
43  
44    @Override
45    public void actionPerformed(ActionEvent arg0) {
46      PrintWriter pw;
47      if (options.saveTracks.getValue()) {
48        QconfLoader qconfLoader = ui.getModel().getQconfLoader();
49        STmap[] stMap = ((QParamsQconf) qconfLoader.getQp()).getLoadedDataContainer().getQState();
50        HashMap<Integer, List<Point2D>> tmpSelected = extractPoints(stMap);
51        for (Map.Entry<Integer, List<Point2D>> entry : tmpSelected.entrySet()) {
52          Integer cellNo = entry.getKey(); // cell number
53          List<Point2D> points = entry.getValue(); // users points
54          MaximaFinderquimp/plugin/protanalysis/MaximaFinder.html#MaximaFinder">MaximaFinder mf = new MaximaFinder(ui.getImagePlus().getProcessor());
55          mf.setMaxima(points);
56  
57          TrackCollection trackCollection = getTracks(stMap, cellNo, mf);
58          try {
59            Path fileToSave = Paths.get(qconfLoader.getQp().getPath(), "tracks_" + cellNo + ".csv");
60            pw = new PrintWriter(new FileWriter(fileToSave.toFile()));
61            trackCollection.saveTracks(pw);
62            pw.flush();
63            pw.close();
64            logger.info("Saved tracks in " + fileToSave.toString());
65          } catch (IOException e) {
66            new QuimpException(e, ui.getModel().getSink()).handleException(null,
67                    "Exception thrown when saving maps");
68            break;
69          }
70        }
71      }
72    }
73  
74  }