ThreeB 1.1
|
Plugin class to load up an old 3B run. More...
Public Member Functions | |
void | run (String arg) |
Private Member Functions | |
void | close (InputStream i) |
Plugin class to load up an old 3B run.
Definition at line 27 of file ThreeBLoader.java.
void ThreeBLoader::close | ( | InputStream | i | ) | [inline, private] |
Definition at line 29 of file ThreeBLoader.java.
Referenced by run().
{ //Not sure what to do here... if(i != null) { try{ i.close(); } catch(IOException ioe) { Toolkit.getDefaultToolkit().beep(); ij.IJ.showStatus("Error closing file: " + ioe.getMessage()); } } }
void ThreeBLoader::run | ( | String | arg | ) | [inline] |
Definition at line 45 of file ThreeBLoader.java.
References EControlPanel::append(), close(), EControlPanel::send_status_text_message(), EControlPanel::send_update_canvas_event(), Spot::x, and Spot::y.
{ InputStream in = null; String name; double ps; try{ if(arg.equals("test")) { name = "test_data.txt"; try{ in = new GZIPInputStream(getClass().getClassLoader().getResourceAsStream("test_data.txt.gz")); } catch(IOException ioe) { Toolkit.getDefaultToolkit().beep(); ij.IJ.showStatus("Could not open test data: " + ioe.getMessage()); return; } ps=100; } else { OpenDialog o = new OpenDialog("Open 3B run...", null); name = o.getFileName(); try{ in = new FileInputStream(o.getDirectory() + o.getFileName()); } catch(java.io.FileNotFoundException ferr) { Toolkit.getDefaultToolkit().beep(); ij.IJ.showStatus("Error opening file: " + ferr.getMessage()); return; } GenericDialog g = new GenericDialog("Pixel size"); g.addNumericField("Pixel size", 100., 0, 5, "nm"); g.showDialog(); ps = g.getNextNumber(); } //Yay @ cargoculting InputStreamReader d = new InputStreamReader(in); BufferedReader r = new BufferedReader(d); String line; final ArrayList<Spot> spots = new ArrayList<Spot>(); int iterations=0; Rectangle roi=null; final double pixel_size_in_nm_ = ps; while((line = r.readLine()) != null) { String tokens[] = line.split("\\p{Space}+"); if(tokens[0].equals("PIXELS")) { if((tokens.length - 1)%2 != 0) throw new IOException("corrupt file (bad pixels line)"); for(int i=1; i < tokens.length; i+= 2) { int x, y; try { x = Integer.parseInt(tokens[i+0]); y = Integer.parseInt(tokens[i+1]); } catch(NumberFormatException nerr) { throw new IOException("corrupt file (bad pixel coordinate)"); } if(roi == null) roi = new Rectangle(x, y, 1, 1); else roi.add(x, y); } } if(tokens[0].matches("PASS[0-9]+:")) { iterations++; if((tokens.length - 1)%4 != 0) throw new IOException("corrupt file (pad pass line)"); for(int i=1; i < tokens.length; i+= 4) { Spot s = new Spot(); try { s.x = Double.parseDouble(tokens[i+2]); s.y = Double.parseDouble(tokens[i+3]); } catch(NumberFormatException nerr) { throw new IOException("corrupt file (bad spot position)"); } spots.add(s); } } } if(roi == null) throw new IOException("corrupt file (no ROI)"); final String fname = name; final Rectangle roi_ = roi; final int its = iterations; SwingUtilities.invokeLater( new Runnable() { public void run() { EControlPanel e = new EControlPanel(roi_, pixel_size_in_nm_, fname, null); e.append(spots, its); e.send_update_canvas_event(); e.send_status_text_message("Using " + fname + ": " + Integer.toString(its) + " iterations."); } } ); } catch(IOException another_ioe){ Toolkit.getDefaultToolkit().beep(); ij.IJ.showStatus("Error reading data: " + another_ioe.getMessage()); } finally{ close(in); } }