|
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);
}
}
1.7.4