public Zipper<Map<Integer, MZipper<RoiContainer>>> exec( Zipper<Map<Integer, MZipper<RoiContainer>>> z, int frame) { JFileChooser fc = new JFileChooser(); int returnVal = fc.showOpenDialog(WindowManager.getCurrentWindow().getCanvas()); Map<Integer, MZipper<RoiContainer>> newRois; if (returnVal == JFileChooser.APPROVE_OPTION) { try { FileInputStream f = new FileInputStream(fc.getSelectedFile().getCanonicalPath()); MroiLisp parser = new MroiLisp(f); parser.ReInit(f); newRois = parser.roiFile(); // z.rights.clear(); // z.rights.add(newRois); // z = z.right(); // return z; return z.insertAndStep(newRois); } catch (IOException e) { IJ.error("Couldn't open from " + fc.getSelectedFile().getName() + ": " + e.getMessage()); } catch (mroi.ParseException e) { IJ.error("Failed in parsing: " + e.getMessage()); } catch (Exception e) { IJ.error("Malformed input file: " + e.getMessage()); } } return z; }
public void run(String arg) { ImageWindow iw = WindowManager.getCurrentWindow(); pw = jutils.getPW4SelCopy(iw); String title = pw.getTitle(); float[][] yvals = pw.getYValues(); float[][] xvals = pw.getXValues(); int length = yvals[0].length; if (pw.getShowErrors()) errs = pw.getErrors(0, false); int[] colors = pw.getColors(); colors[0] = 0; ScriptEngineManager manager = new ScriptEngineManager(); engine = manager.getEngineByName("js"); ce = (Compilable) engine; // hitcounter=0; c2 = 0.0f; iterations = 0; checkc2 = false; double[] stats = new double[3]; tempx = new float[length]; tempdata = new float[length]; System.arraycopy(xvals[0], 0, tempx, 0, length); System.arraycopy(yvals[0], 0, tempdata, 0, length); pw.addPoints(tempx, new float[tempx.length], false); series = pw.getNpts().length - 1; double[] params = new double[10]; int[] fixes = {0, 0, 0, 1, 1, 1, 1, 1, 1, 1}; init_options(params, fixes); if (!init_functions()) { return; } while (showoptions(params, fixes)) { NLLSfit_v2 fitclass; if (checkc2) { fitclass = new NLLSfit_v2(this, 0); } else { fitclass = new NLLSfit_v2(this, 0.0001, 50, 0.1); } float[] fit = fitclass.fitdata(params, fixes, constraints, yvals[0], weights, stats, true); pw.updateSeries(fit, series, false); c2 = (float) stats[1]; iterations = (int) stats[0]; } IJ.log("Chi Squared = " + (float) stats[1]); IJ.log("Iterations = " + (int) stats[0]); for (int i = 0; i < 10; i++) { IJ.log("P" + (i + 1) + " = " + (float) params[i] + " fixed = " + fixes[i]); } IJ.log("AIC = " + (float) stats[2]); // IJ.log("hits = "+hitcounter); set_options(params, fixes); }
public void run(String arg) { GenericDialog gd = new GenericDialog("Options"); double sfreq = 20000.0; gd.addNumericField("Sampling Frequency?", sfreq, 1, 10, null); String[] psfchoice = {"3D Gaussian", "Gaus-Lorentz^2", "2D Gaussian"}; gd.addChoice("PSF Type?", psfchoice, psfchoice[0]); String[] filetypechoice = { "Confocor 3 raw", "Short binary trajectory", "PlotWindow trajectory", "Ascii Text File" }; gd.addChoice("File Type?", filetypechoice, filetypechoice[0]); boolean ch2green = true; gd.addCheckbox("Ch2 is green?", ch2green); gd.showDialog(); if (gd.wasCanceled()) { return; } sfreq = gd.getNextNumber(); int psfflag = gd.getNextChoiceIndex(); int fileflag = gd.getNextChoiceIndex(); ch2green = gd.getNextBoolean(); int nfiles = 0; Object[] histograms = null; int xmax = 0; int ymax = 0; String[] names = null; if (fileflag < 2) { jdataio ioclass = new jdataio(); File[] filearray = ioclass.openfiles(OpenDialog.getDefaultDirectory(), IJ.getInstance()); if (filearray.length == 0) { return; } String dir = filearray[0].getAbsolutePath(); int sepindex = dir.lastIndexOf(File.separator); String newdir = dir.substring(0, sepindex + 1); OpenDialog.setDefaultDirectory(newdir); nfiles = filearray.length / 2; if (nfiles > 25) { nfiles = 25; } histograms = new Object[nfiles]; names = organize_c3_files(filearray); for (int i = 0; i < nfiles; i++) { try { int length1 = (int) (((double) filearray[2 * i].length() - 128.0) / 4.0); int length2 = (int) (((double) filearray[2 * i + 1].length() - 128.0) / 4.0); int length3 = (int) (((double) filearray[2 * i].length()) / 2.0); int length4 = (int) (((double) filearray[2 * i + 1].length()) / 2.0); InputStream instream = new BufferedInputStream(new FileInputStream(filearray[2 * i])); InputStream instream2 = new BufferedInputStream(new FileInputStream(filearray[2 * i + 1])); if (fileflag == 0) { int[] pmdata = new int[length1]; int[] pmdata2 = new int[length2]; if (!ioclass.skipstreambytes(instream, 128)) { showioerror(); instream.close(); return; } if (!ioclass.skipstreambytes(instream2, 128)) { showioerror(); instream2.close(); return; } if (!ioclass.readintelintfile(instream, length1, pmdata)) { showioerror(); instream.close(); return; } if (!ioclass.readintelintfile(instream2, length2, pmdata2)) { showioerror(); instream2.close(); return; } if (ch2green) { histograms[i] = (new pmodeconvert()).pm2pch(pmdata2, pmdata, sfreq, 20000000); } else { histograms[i] = (new pmodeconvert()).pm2pch(pmdata, pmdata2, sfreq, 20000000); } } else { float[] tmdata = new float[length3]; float[] tmdata2 = new float[length4]; if (!ioclass.readintelshortfile(instream, length3, tmdata)) { showioerror(); instream.close(); return; } if (!ioclass.readintelshortfile(instream2, length4, tmdata2)) { showioerror(); instream2.close(); return; } if (ch2green) { histograms[i] = (new pmodeconvert()).create_2Dhistogram(tmdata2, tmdata); } else { histograms[i] = (new pmodeconvert()).create_2Dhistogram(tmdata, tmdata2); } } if (((float[][]) histograms[i]).length > xmax) { xmax = ((float[][]) histograms[i]).length; } if (((float[][]) histograms[i])[0].length > ymax) { ymax = ((float[][]) histograms[i])[0].length; } instream.close(); instream2.close(); } catch (IOException e) { showioerror(); return; } } } else { if (fileflag == 2) { ImageWindow iw = WindowManager.getCurrentWindow(); float[][] trajectories = (float[][]) jutils.runPW4VoidMethod(iw, "getYValues"); float[][] tempxvals = (float[][]) jutils.runPW4VoidMethod(iw, "getXValues"); sfreq = 1.0 / ((double) tempxvals[0][1]); nfiles = trajectories.length / 2; if (nfiles > 25) { nfiles = 25; } names = new String[nfiles + 1]; names[nfiles] = "avg"; histograms = new Object[nfiles]; for (int i = 0; i < nfiles; i++) { names[i] = "trajectory " + (i + 1); if (ch2green) { histograms[i] = (new pmodeconvert()) .create_2Dhistogram(trajectories[2 * i + 1], trajectories[2 * i]); } else { histograms[i] = (new pmodeconvert()) .create_2Dhistogram(trajectories[2 * i], trajectories[2 * i + 1]); } if (((float[][]) histograms[i]).length > xmax) { xmax = ((float[][]) histograms[i]).length; } if (((float[][]) histograms[i])[0].length > ymax) { ymax = ((float[][]) histograms[i])[0].length; } } } else { // here we read tab delimited lines from files jdataio ioclass = new jdataio(); File[] filearray = ioclass.openfiles(OpenDialog.getDefaultDirectory(), IJ.getInstance()); if (filearray.length == 0) { return; } String dir = filearray[0].getAbsolutePath(); int sepindex = dir.lastIndexOf(File.separator); String newdir = dir.substring(0, sepindex + 1); OpenDialog.setDefaultDirectory(newdir); nfiles = filearray.length; if (nfiles > 25) { nfiles = 25; } histograms = new Object[nfiles]; names = new String[nfiles + 1]; names[nfiles] = "avg"; for (int i = 0; i < nfiles; i++) { try { names[i] = filearray[i].getName(); BufferedReader d = new BufferedReader(new FileReader(filearray[i])); String[] lines = new String[256]; int counter = 0; do { lines[counter] = d.readLine(); counter++; } while ((lines[counter - 1] != null && lines[counter - 1] != "") && counter < 256); int numcolumns = 0; for (int j = 0; j < counter - 1; j++) { int temp = getncolumns(lines[j]); if (temp > numcolumns) { numcolumns = temp; } } float[][] temphist2 = null; if (ch2green) { temphist2 = new float[numcolumns][counter - 1]; } else { temphist2 = new float[counter - 1][numcolumns]; } for (int k = 0; k < counter - 1; k++) { float[] temp = tab_delim2float(lines[k]); for (int j = 0; j < numcolumns; j++) { if (ch2green) { temphist2[j][k] = temp[j]; } else { temphist2[k][j] = temp[j]; } } } histograms[i] = temphist2; d.close(); } catch (IOException e) { showioerror(); return; } } for (int i = 0; i < nfiles; i++) { if (((float[][]) histograms[i]).length > xmax) { xmax = ((float[][]) histograms[i]).length; } if (((float[][]) histograms[i])[0].length > ymax) { ymax = ((float[][]) histograms[i])[0].length; } } } } // note that here x is green and y is red float[][][] pch = new float[nfiles][xmax][ymax]; for (int i = 0; i < nfiles; i++) { for (int j = 0; j < ((float[][]) histograms[i]).length; j++) { for (int k = 0; k < ((float[][]) histograms[i])[j].length; k++) { pch[i][j][k] = ((float[][]) histograms[i])[j][k]; } } } final PCH2DFitWindow cw = new PCH2DFitWindow(); cw.init(names, pch, psfflag); final Frame f = new Frame("PCH 2D Analysis"); f.setLocation(10, 10); f.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { f.dispose(); } }); f.add(cw); f.pack(); f.setResizable(false); Insets ins = f.getInsets(); cw.totalSize.height = PCH2DFitWindow.H + ins.bottom + ins.top + 65; cw.totalSize.width = PCH2DFitWindow.WR + ins.left + ins.right; f.setSize(cw.totalSize); f.setVisible(true); cw.requestFocus(); }
public void run(String arg) { GenericDialog gd = new GenericDialog("Options"); gd.addCheckbox("Acceptor_First", true); gd.showDialog(); if (gd.wasCanceled()) return; boolean a1 = gd.getNextBoolean(); int asp = 0; int dsp = 1; int aop = 2; int dop = 3; int atp = 4; int dtp = 5; if (!a1) { asp = 1; dsp = 0; aop = 3; dop = 2; atp = 5; dtp = 4; } ImageWindow iw = WindowManager.getCurrentWindow(); float[][] xvals = (float[][]) jutils.runPW4VoidMethod(iw, "getXValues"); float[][] yvals = (float[][]) jutils.runPW4VoidMethod(iw, "getYValues"); int[] npts = (int[]) jutils.runPW4VoidMethod(iw, "getNpts"); int maxpts = (int) jstatistics.getstatistic("Max", npts, null); int nsets = npts.length / 6; float[][] rtxvals = new float[nsets][maxpts]; float[][] rtavals = new float[nsets][maxpts]; float[][] rtdvals = new float[nsets][maxpts]; int[] rtnpts = new int[nsets]; int fretlength = 10; float[][] stfretvals = new float[nsets][fretlength]; float[][] offfretvals = new float[nsets][fretlength]; TextWindow tw = jutils.selectTable("DNA Damage FRET"); if (tw == null) tw = new TextWindow( "DNA Damage FRET", "title\tacceptor\tdonor\testripe\teoff\tmaxart\tmaxdrt", "", 400, 200); // note that st stands for stripe and off is for areas off the damage stripe for (int i = 0; i < npts.length / 6; i++) { int len = npts[i * 6]; int damageindex = findbleach(yvals[i * 6 + dsp], len); int fretindex = findbleach(yvals[i * 6 + atp], len); IJ.log("set " + i + " damage pos = " + damageindex + " , fret pos = " + fretindex); int predamagestart = damageindex - 4; int prefretstart = fretindex - 5; float staccpredam = getavg(yvals[i * 6 + asp], len, predamagestart, damageindex - 1); float stdonpredam = getavg(yvals[i * 6 + dsp], len, predamagestart, damageindex - 1); float nucaccpredam = getavg(yvals[i * 6 + atp], len, predamagestart, damageindex - 1); float nucdonpredam = getavg(yvals[i * 6 + dtp], len, predamagestart, damageindex - 1); float stdonprefret = getavg(yvals[i * 6 + dsp], len, prefretstart, fretindex - 2); float stdonafret = getavg(yvals[i * 6 + dsp], len, fretindex, fretindex + 3); float offdonprefret = getavg(yvals[i * 6 + dop], len, prefretstart, fretindex - 2); float offdonafret = getavg(yvals[i * 6 + dop], len, fretindex, fretindex + 3); float estripe = 1.0f - stdonprefret / stdonafret; float eoff = 1.0f - offdonprefret / offdonafret; rtnpts[i] = len; for (int j = 0; j < len; j++) { rtxvals[i][j] = j - damageindex - 1; rtavals[i][j] = (yvals[i * 6 + asp][j] / staccpredam) / (yvals[i * 6 + atp][j] / nucaccpredam); rtdvals[i][j] = (yvals[i * 6 + dsp][j] / stdonpredam) / (yvals[i * 6 + dtp][j] / nucdonpredam); } float[] smart = (float[]) algutils.get_subarray(rtavals[i], 0, fretindex); float[] smdrt = (float[]) algutils.get_subarray(rtdvals[i], 0, fretindex); jsmooth.blur1D(smart, 2.0f); jsmooth.blur1D(smdrt, 2.0f); float maxart = 0.0f; float maxdrt = 0.0f; for (int j = 0; j < fretindex - 2; j++) { if (smart[j] > maxart) maxart = smart[j]; if (smdrt[j] > maxdrt) maxdrt = smdrt[j]; } stfretvals[i] = getregion(yvals[i * 6 + dsp], len, prefretstart, fretlength); offfretvals[i] = getregion(yvals[i * 6 + dop], len, prefretstart, fretlength); tw.append( iw.getTitle() + "-" + (i + 1) + "\t" + staccpredam + "\t" + stdonpredam + "\t" + estripe + "\t" + eoff + "\t" + maxart + "\t" + maxdrt); } new PlotWindow4("Stripe_FRET_profiles", "time", "intensity", stfretvals, null).draw(); new PlotWindow4("OffStripe_FRET_profiles", "time", "intensity", offfretvals, null).draw(); new PlotWindow4("Acc_Rt_profiles", "time", "intensity", rtxvals, rtavals, rtnpts).draw(); new PlotWindow4("Don_Rt_profiles", "time", "intensity", rtxvals, rtdvals, rtnpts).draw(); }