From 753018310141ea9fbca72482a2423528f9b7da50 Mon Sep 17 00:00:00 2001 From: fherrmannsdoerfer Date: Wed, 26 Aug 2015 17:56:31 +0200 Subject: [PATCH 1/6] immer gleiche Bildposition --- STORMVis/src/main/java/calc/Calc.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STORMVis/src/main/java/calc/Calc.java b/STORMVis/src/main/java/calc/Calc.java index d946468..75713d0 100644 --- a/STORMVis/src/main/java/calc/Calc.java +++ b/STORMVis/src/main/java/calc/Calc.java @@ -657,8 +657,8 @@ public static ArrayList addFilteredPoints3D(ArrayList colo double posZ = 0; switch (mode){ case 1: - posX = (sl[0]-xMin)/pixelsize; //position of current localization - posY = (sl[1]-yMin)/pixelsize; + posX = (sl[0]+5000)/pixelsize; //position of current localization + posY = (sl[1]+5000)/pixelsize; posZ = (sl[2])-zMin; break; case 2: From 017d0396b6c2945e321fe3dc52cfc68d9c85c40d Mon Sep 17 00:00:00 2001 From: fherrmannsdoerfer Date: Thu, 27 Aug 2015 22:35:48 +0200 Subject: [PATCH 2/6] fixed STORM simulation --- .../src/main/java/calc/StormPointFinder.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/STORMVis/src/main/java/calc/StormPointFinder.java b/STORMVis/src/main/java/calc/StormPointFinder.java index 0b540c6..e1a5fcd 100644 --- a/STORMVis/src/main/java/calc/StormPointFinder.java +++ b/STORMVis/src/main/java/calc/StormPointFinder.java @@ -115,14 +115,14 @@ private static float[][] createStormPoints(float[][] listEndPoints, ParameterSet frame[k1] = (int) (calc.random.nextDouble()*frames); idxList.add(k1); if (ps.getCoupleSigmaIntensity()){ - x[k1] = (float) (listEndPointsTranspose[0][idxArray.get(k1).intValue()] + calc.random.nextFloat()*(sxy/Math.sqrt(intensity[k1]/meanPhotonNumber))); - y[k1] = (float) (listEndPointsTranspose[1][idxArray.get(k1).intValue()] + calc.random.nextFloat()*(sxy/Math.sqrt(intensity[k1]/meanPhotonNumber))); - z[k1] = (float) (listEndPointsTranspose[2][idxArray.get(k1).intValue()] + calc.random.nextFloat()*(sz/Math.sqrt(intensity[k1]/meanPhotonNumber))); + x[k1] = (float) (listEndPointsTranspose[0][idxArray.get(k1).intValue()] + calc.random.nextGaussian()*(sxy/Math.sqrt(intensity[k1]/meanPhotonNumber))); + y[k1] = (float) (listEndPointsTranspose[1][idxArray.get(k1).intValue()] + calc.random.nextGaussian()*(sxy/Math.sqrt(intensity[k1]/meanPhotonNumber))); + z[k1] = (float) (listEndPointsTranspose[2][idxArray.get(k1).intValue()] + calc.random.nextGaussian()*(sz/Math.sqrt(intensity[k1]/meanPhotonNumber))); } else { - x[k1] = (listEndPointsTranspose[0][idxArray.get(k1).intValue()] + calc.random.nextFloat()*(sxy)); - y[k1] = (listEndPointsTranspose[1][idxArray.get(k1).intValue()] + calc.random.nextFloat()*(sxy)); - z[k1] = (listEndPointsTranspose[2][idxArray.get(k1).intValue()] + calc.random.nextFloat()*(sz)); + x[k1] = (float) (listEndPointsTranspose[0][idxArray.get(k1).intValue()] + calc.random.nextGaussian()*(sxy)); + y[k1] = (float) (listEndPointsTranspose[1][idxArray.get(k1).intValue()] + calc.random.nextGaussian()*(sxy)); + z[k1] = (float) (listEndPointsTranspose[2][idxArray.get(k1).intValue()] + calc.random.nextGaussian()*(sz)); } } @@ -193,14 +193,14 @@ private static float[][] createStormPointsRealisticBleaching(float[][] listEndPo if (blinkingTest <= (kOn/kOff)){ float intensity = intensities.get((int) (calc.random.nextDouble()*intensities.size()-1)); if (ps.getCoupleSigmaIntensity()){ - x = (float) (listEndPoints[i][0] + calc.random.nextFloat()*(sxy/Math.sqrt(intensity/meanPhotonNumber))); - y = (float) (listEndPoints[i][1] + calc.random.nextFloat()*(sxy/Math.sqrt(intensity/meanPhotonNumber))); - z = (float) (listEndPoints[i][2] + calc.random.nextFloat()*(sz/Math.sqrt(intensity/meanPhotonNumber))); + x = (float) (listEndPoints[i][0] + calc.random.nextGaussian()*(sxy/Math.sqrt(intensity/meanPhotonNumber))); + y = (float) (listEndPoints[i][1] + calc.random.nextGaussian()*(sxy/Math.sqrt(intensity/meanPhotonNumber))); + z = (float) (listEndPoints[i][2] + calc.random.nextGaussian()*(sz/Math.sqrt(intensity/meanPhotonNumber))); } else { - x = (float) (listEndPoints[i][0] + calc.random.nextFloat()*(sxy)); - y = (float) (listEndPoints[i][1] + calc.random.nextFloat()*(sxy)); - z = (float) (listEndPoints[i][2] + calc.random.nextFloat()*(sz)); + x = (float) (listEndPoints[i][0] + calc.random.nextGaussian()*(sxy)); + y = (float) (listEndPoints[i][1] + calc.random.nextGaussian()*(sxy)); + z = (float) (listEndPoints[i][2] + calc.random.nextGaussian()*(sz)); } float tmpLoc[] = {x,y,z,frame,intensity}; allStormPoints.add(tmpLoc); From 0109531c447938585d1b8a2886326b0535f481f7 Mon Sep 17 00:00:00 2001 From: fherrmannsdoerfer Date: Sat, 29 Aug 2015 14:30:11 +0200 Subject: [PATCH 3/6] seed set to 2 --- STORMVis/src/main/java/calc/Calc.java | 13 +++++++------ STORMVis/src/main/java/gui/Gui.java | 2 +- .../src/main/java/parsing/TriangleObjectParser.java | 6 +++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/STORMVis/src/main/java/calc/Calc.java b/STORMVis/src/main/java/calc/Calc.java index 75713d0..19210be 100644 --- a/STORMVis/src/main/java/calc/Calc.java +++ b/STORMVis/src/main/java/calc/Calc.java @@ -642,8 +642,9 @@ public static ArrayList addFilteredPoints3D(ArrayList colo float yMax = dims.get(3); float zMin = dims.get(4); float zMax = dims.get(5); - - zMax = zMax - zMin; +zMax = borders.get(5) ; +zMin = borders.get(4) ; +zMax = zMax - zMin; System.out.println("zMax: "+zMax+" zMin: "+zMin); float[][] redChannel = coloredImage.get(0); @@ -722,13 +723,13 @@ public static ArrayList addFilteredPoints3D(ArrayList colo private static float getColor(double posZ, float zMax, int color) { - if (posZ < 0.25* zMax){ + if (posZ < 0.25* zMax&& posZ>0){ //blue rises from 0 to 1 if (color == 2){ return (float) (4*posZ / zMax); } } - else if (posZ < 0.5* zMax){ + else if (posZ < 0.5* zMax&& posZ>0){ //green rises from 0 to 1 blue stays one if (color == 1){ return (float)(4*posZ/zMax - 1); @@ -737,7 +738,7 @@ else if (posZ < 0.5* zMax){ return (float) 1;//(2 - 4*posZ/zMax) ; } } - else if (posZ < 0.75* zMax){ + else if (posZ < 0.75* zMax&& posZ>0){ //green stays one, blue goes to zero again if (color == 1){ return (float) 1;//(4*posZ/zMax - 2); @@ -746,7 +747,7 @@ else if (posZ < 0.75* zMax){ return (float) (3 - 4*posZ/zMax); } } - else { + else if (posZ Date: Sat, 29 Aug 2015 21:52:32 +0200 Subject: [PATCH 4/6] changesmadetoday-grenzen und random number glaube ich --- STORMVis/src/main/java/calc/Calc.java | 6 ++++-- STORMVis/src/main/java/gui/Gui.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/STORMVis/src/main/java/calc/Calc.java b/STORMVis/src/main/java/calc/Calc.java index 19210be..3a554ad 100644 --- a/STORMVis/src/main/java/calc/Calc.java +++ b/STORMVis/src/main/java/calc/Calc.java @@ -684,7 +684,9 @@ public static ArrayList addFilteredPoints3D(ArrayList colo try{ float weight = (float) (factor*intensity* Math.exp(factor2*(Math.pow((k-posX),2)+Math.pow((l-posY),2)))); - redChannel[k][l] = redChannel[k][l] + getColor(posZ,zMax,0) * weight; + float tmp = getColor(posZ,zMax,0) * weight; + System.out.println(tmp); + redChannel[k][l] = redChannel[k][l] + tmp; greenChannel[k][l] = greenChannel[k][l] +getColor(posZ,zMax,1) * weight; blueChannel[k][l] = blueChannel[k][l] +getColor(posZ,zMax,2) * weight; @@ -747,7 +749,7 @@ else if (posZ < 0.75* zMax&& posZ>0){ return (float) (3 - 4*posZ/zMax); } } - else if (posZ0) { //green goes to zero red rises if (color == 0){ return (float) (4*posZ/zMax - 3); diff --git a/STORMVis/src/main/java/gui/Gui.java b/STORMVis/src/main/java/gui/Gui.java index e25d8c9..f7415f4 100644 --- a/STORMVis/src/main/java/gui/Gui.java +++ b/STORMVis/src/main/java/gui/Gui.java @@ -1726,7 +1726,7 @@ private void calculate() { private void setUpRandomNumberGenerator() { if (reproducibleOutputchkBox.isSelected()){ - this.random = new Random(2); + this.random = new Random(1); } else { this.random = new Random(System.currentTimeMillis()); } From e88110a80e78730d6dfe904bd0f23866076594b1 Mon Sep 17 00:00:00 2001 From: fherrmannsdoerfer Date: Tue, 6 Oct 2015 09:39:01 +0200 Subject: [PATCH 5/6] new Branch --- STORMVis/src/main/java/inout/FileManager.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/STORMVis/src/main/java/inout/FileManager.java b/STORMVis/src/main/java/inout/FileManager.java index f1cd813..59df9cc 100644 --- a/STORMVis/src/main/java/inout/FileManager.java +++ b/STORMVis/src/main/java/inout/FileManager.java @@ -274,6 +274,8 @@ private static void writeLogFile(DataSet dataset, String basename,ArrayList Date: Wed, 7 Oct 2015 18:12:21 +0200 Subject: [PATCH 6/6] batch processing --- .../batchProcessing/startBatchProcessing.java | 212 ++++++++++++++++++ STORMVis/src/main/java/calc/Calc.java | 8 +- 2 files changed, 216 insertions(+), 4 deletions(-) create mode 100644 STORMVis/src/main/java/batchProcessing/startBatchProcessing.java diff --git a/STORMVis/src/main/java/batchProcessing/startBatchProcessing.java b/STORMVis/src/main/java/batchProcessing/startBatchProcessing.java new file mode 100644 index 0000000..7a377c7 --- /dev/null +++ b/STORMVis/src/main/java/batchProcessing/startBatchProcessing.java @@ -0,0 +1,212 @@ +package batchProcessing; + +import gui.DataTypeDetector; +import gui.ParserWrapper; +import gui.DataTypeDetector.DataType; +import inout.FileManager; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +import javax.swing.JProgressBar; + +import calc.Calc; +import calc.STORMCalculator; +import model.DataSet; +import model.LineDataSet; +import model.TriangleDataSet; + +public class startBatchProcessing { + static List allDataSets = new ArrayList(); + private static Random random; + private static String EXTENSIONIMAGEOUTPUT = ".tif"; + + public static void main(String[] args) { + File file = new File("C:\\Users\\herrmannsdoerfer\\Desktop\\OLD\\Models\\Microtubule-CrossingSiterescaled.wimp"); + proceedFileImport(file); + SimulationParameter params = new SimulationParameter(); + params.backgroundPerMicroMeterCubed = 50; + params.coupleSigmaIntensity = true; + params.detectionEfficiency = 100; + params.epitopeDensity = (float) 1.625; + params.fluorophoresPerLabel = 1; + params.kOff = 2000; + params.kOn = 1; + params.labelEpitopeDistance = 16; + params.labelingEfficiency = 10; + params.makeItReproducible = true; + params.MeanPhotonNumber = 3000; + params.radiusOfFilament = 10; + params.recordedFrames = 10000; + params.sigmaXY = 4; + params.sigmaZ = 8; + params.viewStatus = 1; + ArrayList sigmas = new ArrayList(Arrays.asList(1.f,4.f,8.f,12.f)); + ArrayList le = new ArrayList(Arrays.asList(1.f,5.f,10.f,50.f)); + int counter = 0; + for (int i =0; i getBorders(){ + DataSet thisDataSet = allDataSets.get(0); + ArrayList retList = new ArrayList(); + retList.add(Calc.min(thisDataSet.stormData,0)); + retList.add(Calc.max(thisDataSet.stormData,0)); + retList.add(Calc.min(thisDataSet.stormData,1)); + retList.add(Calc.max(thisDataSet.stormData,1)); + retList.add(Calc.min(thisDataSet.stormData,2)); + retList.add(Calc.max(thisDataSet.stormData,2)); + + return retList; + + } + + private static void furtherProceedFileImport(DataSet data, DataType type){ + if(data.dataType.equals(DataType.TRIANGLES)) { + System.out.println("Triangles parsed correctly."); + } + else if(type.equals(DataType.LINES)) { + System.out.println("Lines parsed correctly."); + } + else if(type.equals(DataType.PLY)){ + System.out.println("PLY file parsed."); + } + + allDataSets.add(data); + + LineDataSet lines = (LineDataSet) allDataSets.get(allDataSets.size()-1); + + + + } + private static void calculate(SimulationParameter params) { + setUpRandomNumberGenerator(params.makeItReproducible) ; + int currentRow= 0; + allDataSets.get(currentRow).getParameterSet().setPabs((float) (params.labelingEfficiency/100.));//Labeling efficiency + allDataSets.get(currentRow).getParameterSet().setAoa((float) ((90)/180*Math.PI)); + allDataSets.get(currentRow).getParameterSet().setDeff((float) (params.detectionEfficiency/100)); //detection efficiency + allDataSets.get(currentRow).getParameterSet().setIlpmm3(params.backgroundPerMicroMeterCubed); //background per cubic micro meter + allDataSets.get(currentRow).getParameterSet().setLoa(params.labelEpitopeDistance); //label epitope distance + allDataSets.get(currentRow).getParameterSet().setFpab(params.fluorophoresPerLabel);//fluorophores per label + allDataSets.get(currentRow).getParameterSet().setKOn(params.kOn); + allDataSets.get(currentRow).getParameterSet().setKOff(params.kOff); + allDataSets.get(currentRow).getParameterSet().setBleachConst((float) 0); + allDataSets.get(currentRow).getParameterSet().setFrames(params.recordedFrames); // recorded frames + allDataSets.get(currentRow).getParameterSet().setSxy(params.sigmaXY); + allDataSets.get(currentRow).getParameterSet().setSz(params.sigmaZ); + allDataSets.get(currentRow).getParameterSet().setPsfwidth((float) 380); + allDataSets.get(currentRow).getParameterSet().setMeanPhotonNumber(params.MeanPhotonNumber); + if(allDataSets.get(currentRow).dataType == DataType.LINES) { + allDataSets.get(currentRow).getParameterSet().setBspnm(params.epitopeDensity); + allDataSets.get(currentRow).getParameterSet().setRof(params.radiusOfFilament); + } + else { + allDataSets.get(currentRow).getParameterSet().setBspsnm(params.epitopeDensity); + } + allDataSets.get(currentRow).getParameterSet().setMergedPSF(false); + allDataSets.get(currentRow).getParameterSet().setApplyBleaching(false); + allDataSets.get(currentRow).getParameterSet().setCoupleSigmaIntensity(params.coupleSigmaIntensity); + STORMCalculator calc = new STORMCalculator(allDataSets.get(currentRow), random); + calc = new STORMCalculator(allDataSets.get(currentRow),random); + //calc = new STORMCalculator(allDataSets.get(currentRow)); + calc.execute(); + while(!calc.isDone()){ + try { + Thread.sleep(100); + //System.out.println(calc.isCancelled()+" "+calc.isDone()); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + // When calc has finished, grab the new dataset + //allDataSets.set(currentRow, calc.getCurrentDataSet()); + //visualizeAllSelectedData(); + } + private static void proceedFileImport(File file) { + System.out.println("Path: " + file.getAbsolutePath()); + DataType type = DataType.UNKNOWN; + try { + type = DataTypeDetector.getDataType(file.getAbsolutePath()); + System.out.println(type.toString()); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + DataSet data = ParserWrapper.parseFileOfType(file.getAbsolutePath(), type); + data.setName(file.getName()); + data.setProgressBar(new JProgressBar()); + furtherProceedFileImport(data,type); + } + + private static void setUpRandomNumberGenerator(boolean makeItReproducible) { + if (makeItReproducible){ + random = new Random(2); + } else { + random = new Random(System.currentTimeMillis()); + } + } + + private static void exportData(String path, String name, SimulationParameter params){ + if (!path.endsWith(EXTENSIONIMAGEOUTPUT)) { + path += EXTENSIONIMAGEOUTPUT; + } + if(name.endsWith(EXTENSIONIMAGEOUTPUT)){ + name = name.substring(0, name.length()-4); + } + System.out.println("Path to write project: " + path); + System.out.println("project name: " + name); + FileManager.ExportToFile(allDataSets.get(0), path, params.viewStatus,params.borders); + } +} + + +class SimulationParameter{ + float labelingEfficiency; + float detectionEfficiency; + float backgroundPerMicroMeterCubed; + float labelEpitopeDistance; + float fluorophoresPerLabel; + int recordedFrames; + float kOn; + float kOff; + float sigmaXY; + float sigmaZ; + int MeanPhotonNumber; + float radiusOfFilament; + float epitopeDensity; + boolean coupleSigmaIntensity; + boolean makeItReproducible; + ArrayList borders; + int viewStatus = 0; + SimulationParameter(){ + + } +} \ No newline at end of file diff --git a/STORMVis/src/main/java/calc/Calc.java b/STORMVis/src/main/java/calc/Calc.java index 3a554ad..7c3bdf5 100644 --- a/STORMVis/src/main/java/calc/Calc.java +++ b/STORMVis/src/main/java/calc/Calc.java @@ -642,9 +642,9 @@ public static ArrayList addFilteredPoints3D(ArrayList colo float yMax = dims.get(3); float zMin = dims.get(4); float zMax = dims.get(5); -zMax = borders.get(5) ; -zMin = borders.get(4) ; -zMax = zMax - zMin; + zMax = borders.get(5) ; + zMin = borders.get(4) ; + zMax = zMax - zMin; System.out.println("zMax: "+zMax+" zMin: "+zMin); float[][] redChannel = coloredImage.get(0); @@ -685,7 +685,7 @@ public static ArrayList addFilteredPoints3D(ArrayList colo float weight = (float) (factor*intensity* Math.exp(factor2*(Math.pow((k-posX),2)+Math.pow((l-posY),2)))); float tmp = getColor(posZ,zMax,0) * weight; - System.out.println(tmp); + //System.out.println(tmp); redChannel[k][l] = redChannel[k][l] + tmp; greenChannel[k][l] = greenChannel[k][l] +getColor(posZ,zMax,1) * weight; blueChannel[k][l] = blueChannel[k][l] +getColor(posZ,zMax,2) * weight;