diff --git a/.classpath b/.classpath index 90f81ed..2e45e01 100644 --- a/.classpath +++ b/.classpath @@ -18,12 +18,6 @@ - - - - - - diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 71ac301..5723a0f 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,6 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.5 diff --git a/src/main/java/SynQuantVid_.java b/src/main/java/SynQuantVid_.java index 8ad1cb3..ad78e52 100644 --- a/src/main/java/SynQuantVid_.java +++ b/src/main/java/SynQuantVid_.java @@ -45,10 +45,11 @@ public class SynQuantVid_ implements PlugIn, DialogListener{ protected double minFill, maxWHRatio; protected int NumSynSite=0; protected ImagePlus outputImp=null; // detection results output - int[][][][] synIdx; - double[][][][] synZscore; + int [][][][] synIdx; + double [][][][] synZscore; double slideThrZ; int [][][] sliderSynMap; // synapse map after post-processing + int way2combinePostPre = 1; // the way to combine pre- and post-channel, 0:intersect, 1: add pre-zscore to post-zscore boolean fastflag = true; //true: no use because we only use fast version @@ -85,6 +86,8 @@ public boolean showDialog() openData[activeImageIDs.length] = "Null"; gd.addChoice("Post-synapse:", openData, openData[0]); gd.addChoice("Pre-synapse:", openData, openData[activeImageIDs.length]); + String[] combinePrePostChl = {"intersect", "post_channel_mainly","Null"}; + gd.addChoice("Way to combine:", combinePrePostChl, combinePrePostChl[combinePrePostChl.length-1]); gd.addChoice("Dendrite channel", openData, openData[activeImageIDs.length]); gd.showDialog(); if (gd.wasCanceled()){ @@ -102,6 +105,9 @@ public boolean showDialog() } int post_chl = gd.getNextChoiceIndex(); int pre_chl = gd.getNextChoiceIndex(); + way2combinePostPre = gd.getNextChoiceIndex(); + if (way2combinePostPre>1) //user forget to set or single channel + way2combinePostPre = 1; int den_chl = gd.getNextChoiceIndex(); numChannels = 2; // we only care two channels: post- and pre-synaptic channel @@ -153,13 +159,9 @@ public boolean showDialog() * ***/ public void synQuant3D_real() { //// parameter initialization - paraQ3D q = new paraQ3D(numChannels, 0.8); + paraQ3D q = new paraQ3D(numChannels, way2combinePostPre, 0.8); BasicMath bm = new BasicMath(); //// data saving final results -// timePts = imp.getNFrames(); -// synIdx = new int [timePts][zSlice][height][width]; -// synZscore = new double [timePts][zSlice][height][width]; -// q.synZscore = new double [timePts][zSlice][height][width]; slideThrZ = 1000; ppsd3D particle3D_det = null; //short[][] Arr3D = null; @@ -178,9 +180,7 @@ public void synQuant3D_real() { synIdx = new int [timePts][zSlice][height][width]; synZscore = new double [timePts][zSlice][height][width]; } - //if (q._NumChannel == q.NumChannelProcessed + 1 ) { - - //} + double vox_x = imp.getCalibration().pixelWidth; if(vox_x==1)//simulated data vox_x = 2.0757e-7; @@ -191,33 +191,28 @@ public void synQuant3D_real() { long startTime1=System.nanoTime(); ////particle detection - for (int i=1; i <= timePts; i++){ + for (int i=1; i <= timePts; i++) + { q.curTps = i-1; short[][] Arr3D = stack2array(type, stack, i); // #zstack*#pixels in one slice paraP3D p = new paraP3D(fdr, zscore_thres,(int)bm.matrix2DMin(Arr3D),(int)bm.matrix2DMax(Arr3D),MinSize, MaxSize, minFill, maxWHRatio); particle3D_det = new ppsd3D(Arr3D, width, height, vox_x, p,q); -// synIdx[i-1] = particle3D_det.ppsd_main.kMap; -// synZscore[i-1] = particle3D_det.ppsd_main.zMap; - // for the final channel, we save the output results - if (q._NumChannel == q.NumChannelProcessed + 1 ) { // last one + + // for the post channel, we save the output results + if (q._NumChannel == q.NumChannelProcessed + 1 ) + { // last one synIdx[i-1] = particle3D_det.ppsd_main.kMap; synZscore[i-1] = particle3D_det.ppsd_main.zMap; double tmpThrZ = particle3D_det.ppsd_main.thrZ; if (slideThrZ > tmpThrZ) slideThrZ = tmpThrZ; - }else {// not last one + }else + {// pre-channel q.synZscore[q.curTps] = particle3D_det.ppsd_main.zMap; -// if (q.NumChannelProcessed == 0) { // first one -// q.synZscore[q.curTps] = particle3D_det.ppsd_main.zMap; -// }else { //not first, not last -// q.synZscore[q.curTps] = bm.matrix3DAdd(q.synZscore[q.curTps], particle3D_det.ppsd_main.zMap); -// } } } long endTime1=System.nanoTime(); System.out.println("Finished. Data size: "+zSlice+" * "+height+" * "+width+" * "+timePts+" Total running time: "+(endTime1-startTime1)/1e9); - //// results display - q.NumChannelProcessed ++; q.var = 0; // reset variance, preparing for new channel } @@ -261,28 +256,39 @@ public void synQuant3D_real() { // display the results of puncta detection results ImageHandling IH = new ImageHandling(); - if (imp.getNSlices() == 1) { //for 2d data use ROI manager to display results + if (imp.getNSlices() == 1) + { //for 2d data use ROI manager to display results boolean [][] synMap2dBin = new boolean[synZscore[0][0].length][synZscore[0][0][0].length]; - if (sliderSynMap == null) { - for (int i=0; i=zscore_thres) { + if (sliderSynMap == null) + { + for (int i=0; i=zscore_thres) + { synMap2dBin[i][j] = true; } - else { + else + { synMap2dBin[i][j] = false; } } } } - else { + else + { //boolean [][] synMap2dBin = new boolean[sliderSynMap[0].length][sliderSynMap[0][0].length]; - for (int i=0; i0) { + for (int i=0; i0) + { synMap2dBin[i][j] = true; } - else { + else + { synMap2dBin[i][j] = false; } } @@ -295,30 +301,43 @@ public void synQuant3D_real() { ROIImp.show(); IH.DisplayROI(IH.NextLabel,height,width,synMap2d, ROIImp,"Synapse detection results"); } - else {//for 3d data use table to display statistics results + else + {//for 3d data use table to display statistics results boolean [][][] synMap3dBin = new boolean[synZscore[0].length][synZscore[0][0].length][synZscore[0][0][0].length]; - if (sliderSynMap == null) { - for (int k = 0; k=zscore_thres) { + if (sliderSynMap == null) + { + for (int k = 0; k=zscore_thres) + { synMap3dBin[k][i][j] = true; } - else { + else + { synMap3dBin[k][i][j] = false; } } } } } - else { - for (int k = 0; k0) { + else + { + for (int k = 0; k0) + { synMap3dBin[k][i][j] = true; } - else { + else + { synMap3dBin[k][i][j] = false; } } @@ -327,7 +346,8 @@ public void synQuant3D_real() { } int[][][] synMap3d = IH.bwlabel3D(synMap3dBin,26); double [][] puncta_feats = new double [IH.NextLabel][4]; // volume, Mean, Max, Min intensity - for (int i=0; i < IH.NextLabel; i++) { + for (int i=0; i < IH.NextLabel; i++) + { puncta_feats[i][0] = 0; puncta_feats[i][1] = 0; puncta_feats[i][2] = 0; @@ -335,11 +355,15 @@ public void synQuant3D_real() { } double[][] ArrDouble3D = stack2DoubleArray(imp.getType(), imp.getStack(), 1); System.out.println(bm.matrix2DMax(ArrDouble3D)); - for (int k = 0; k= 0) { + if (punctum_id >= 0) + { if (punctum_id >= puncta_feats.length) System.out.print(true); puncta_feats[punctum_id][0] += 1; @@ -368,21 +392,27 @@ public void synQuant3D_real() { det_ft_table.showRowNumbers(false); det_ft_table.show("Puncta statistics on 3D data"); } - if(den_imp != null) { - if (den_imp.getNSlices() == 1 & imp.getNSlices() == 1) { //do quantification + if(den_imp != null) + { + if (den_imp.getNSlices() == 1 & imp.getNSlices() == 1) + { //do quantification boolean [][] kSynR1 = new boolean [synZscore[0][0].length][synZscore[0][0][0].length]; - if (sliderSynMap == null) { + if (sliderSynMap == null) + { for (int i=0; izscore_thres; } } } - else { + else + { for (int i=0; i 0; } } @@ -391,7 +421,8 @@ public void synQuant3D_real() { //show features ResultsTable Ft_table = new ResultsTable(); int DenCnt = 0; - for (int i=0;i= zscore_thres) { + for (int zz=0;zz= zscore_thres) + { sliderSynMap[zz][yy][xx] = 1;//synZscore[i-1][zz][yy][xx]; } } @@ -585,21 +621,28 @@ public void SynapticDisplay(int [][][] kSynR1, int curTimePt){ // } // } double max_intensity = 0; - if(imp.getType() == ImagePlus.GRAY16) { - for(int stackNum=1; stackNum<=curStack.getSize(); stackNum++) { + if(imp.getType() == ImagePlus.GRAY16) + { + for(int stackNum=1; stackNum<=curStack.getSize(); stackNum++) + { double tmp_max = curInStack.getProcessor(stackNum).getStatistics().max; - if (max_intensity < tmp_max) { + if (max_intensity < tmp_max) + { max_intensity = tmp_max; } } } - for(int stackNum=1; stackNum<=curStack.getSize(); stackNum++) { + for(int stackNum=1; stackNum<=curStack.getSize(); stackNum++) + { outIP = curStack.getProcessor(stackNum); inIP = curInStack.getProcessor(stackNum); - for (int i = 0; i < width; i++) { - for(int j = 0;j0) outIP.set(i, j, (((int)200 & 0xff) << 16) @@ -609,7 +652,8 @@ public void SynapticDisplay(int [][][] kSynR1, int curTimePt){ outIP.set(i, j, (((int)0 & 0xff) << 16) + (tmp_val << 8) + ((int)0 & 0xff)); - }else { + }else + { // if(inIP.get(i, j)>255*10) // System.out.println(" "+inIP.get(i, j)); byte tmp_float_val = (byte) ((((double)inIP.get(i, j))/max_intensity)*255); diff --git a/src/main/java/fastppsdcore3D.java b/src/main/java/fastppsdcore3D.java index d1427ab..c51749a 100644 --- a/src/main/java/fastppsdcore3D.java +++ b/src/main/java/fastppsdcore3D.java @@ -56,35 +56,82 @@ public void cumulateZscore(paraQ3D q) { } kMap = IM.bwlabel3D(zMap, 26); nSyn0 = IM.NextLabel; - // Step 3.2. cumulate the zscore from previous channels - if (q.NumChannelProcessed >0){ - double[] pre_z = new double[nSyn0]; - for(int i=0; i< pre_z.length; i++) - pre_z[i] = 0; - for(int i=0; i0 ) { - if(pre_z[kMap[i][j][k]-1] < q.synZscore[q.curTps][i][j][k]) { - pre_z[kMap[i][j][k]-1] = q.synZscore[q.curTps][i][j][k]; + // Step 3.2. cumulate the zscore from previous channels: add z-score of pre-synapse to post-synapse if there is overlap + if (q.NumChannelProcessed > 0){ + if( q._wayCombinePrePost==1) + { + double[] pre_z = new double[nSyn0]; + for(int i=0; i< pre_z.length; i++) + pre_z[i] = 0; + for(int i=0; i0 ) { + if(pre_z[kMap[i][j][k]-1] < q.synZscore[q.curTps][i][j][k]) { + pre_z[kMap[i][j][k]-1] = q.synZscore[q.curTps][i][j][k]; + } } } } } - } - for (int j = nVoxels-1; j >= 0; j--) + for (int j = nVoxels-1; j >= 0; j--) + { + if ( CT.outputArray[j] > 0) { + rmder = j % nPixels; + z = j / nPixels; + y=rmder/width; + x=rmder-y*width; + zMap[z][y][x] = CT.zscore[j] + pre_z[kMap[z][y][x]-1]; + if (thrZ > zMap[z][y][x]) + thrZ = zMap[z][y][x]; + } + } + }else { - if ( CT.outputArray[j] > 0) { - rmder = j % nPixels; - z = j / nPixels; - y=rmder/width; - x=rmder-y*width; - zMap[z][y][x] = CT.zscore[j] + pre_z[kMap[z][y][x]-1]; - if (thrZ > zMap[z][y][x]) - thrZ = zMap[z][y][x]; + double[] pre_z = new double[nSyn0]; + for(int i=0; i< pre_z.length; i++) + pre_z[i] = 0; + for(int i=0; i0) { + if(q.synZscore[q.curTps][i][j][k]>0) { + if(pre_z[kMap[i][j][k]-1] < q.synZscore[q.curTps][i][j][k]) { + pre_z[kMap[i][j][k]-1] = q.synZscore[q.curTps][i][j][k]; + } + }else { + zMap[i][j][k] = 0; + kMap[i][j][k] = 0; + } + } + } + } + } + for (int j = nVoxels-1; j >= 0; j--) + { + if ( CT.outputArray[j] > 0) { + rmder = j % nPixels; + z = j / nPixels; + y=rmder/width; + x=rmder-y*width; + if (kMap[z][y][x]>0) { + if (pre_z[kMap[z][y][x]-1]>0) + zMap[z][y][x] = CT.zscore[j] + pre_z[kMap[z][y][x]-1]; + else { + zMap[z][y][x] = 0; + kMap[z][y][x] = 0; + } + if (thrZ > zMap[z][y][x]) + thrZ = zMap[z][y][x]; + } + else { + CT.outputArray[j] = 0; + } + } } } - }else { + }else + { for (int j = nVoxels-1; j >= 0; j--) { if ( CT.outputArray[j] > 0) { diff --git a/src/main/java/paraQ3D.java b/src/main/java/paraQ3D.java index 79c6da1..24466b0 100644 --- a/src/main/java/paraQ3D.java +++ b/src/main/java/paraQ3D.java @@ -12,6 +12,7 @@ public class paraQ3D{ public int ntry; public double[][][][] synZscore = null; // if we have some prior infor for z-score, this is generally from pre-channel public int _NumChannel; + public int _wayCombinePrePost; public int NumChannelProcessed = 0; // if we have multi-channel, when NumChannelProcessed==_NumChannel, we can do dfr control public int curTps = 0; // indicate which time point we are processing if each channel is a video. start from 0 to t-1 public double varRatio = 0.05; // use the 0.1 location in y=a*x+b to estimate the noise @@ -32,7 +33,8 @@ public void init(short [][] pixels, double Lx,int inntry, int height, int width) Pix_per_synapse = (int)Math.round(1/Lx2); ntry = inntry; } - public paraQ3D(int NumChannel, double varRatioIn){ + public paraQ3D(int NumChannel, int wayCombinePrePost, double varRatioIn){ + _wayCombinePrePost = wayCombinePrePost; _NumChannel = NumChannel; varRatio = varRatioIn; }; diff --git a/target/classes/BestSyn.class b/target/classes/BestSyn.class index b224a1d..5cdd327 100644 Binary files a/target/classes/BestSyn.class and b/target/classes/BestSyn.class differ diff --git a/target/classes/BestSyn3D.class b/target/classes/BestSyn3D.class index 43d96ff..475303e 100644 Binary files a/target/classes/BestSyn3D.class and b/target/classes/BestSyn3D.class differ diff --git a/target/classes/ComponentTree.class b/target/classes/ComponentTree.class index fc067a5..46e1f20 100644 Binary files a/target/classes/ComponentTree.class and b/target/classes/ComponentTree.class differ diff --git a/target/classes/ComponentTree3D.class b/target/classes/ComponentTree3D.class index 23567e7..5ebb1c5 100644 Binary files a/target/classes/ComponentTree3D.class and b/target/classes/ComponentTree3D.class differ diff --git a/target/classes/ComponentTree3D4Fast.class b/target/classes/ComponentTree3D4Fast.class index 879d73f..4940238 100644 Binary files a/target/classes/ComponentTree3D4Fast.class and b/target/classes/ComponentTree3D4Fast.class differ diff --git a/target/classes/Fastppsdreal.class b/target/classes/Fastppsdreal.class index b1fc93a..beca151 100644 Binary files a/target/classes/Fastppsdreal.class and b/target/classes/Fastppsdreal.class differ diff --git a/target/classes/GrowNeurite.class b/target/classes/GrowNeurite.class index 2134dd1..8ecd95d 100644 Binary files a/target/classes/GrowNeurite.class and b/target/classes/GrowNeurite.class differ diff --git a/target/classes/ImageHandling.class b/target/classes/ImageHandling.class index ea8314d..a16fd0d 100644 Binary files a/target/classes/ImageHandling.class and b/target/classes/ImageHandling.class differ diff --git a/target/classes/LinearTest.class b/target/classes/LinearTest.class index a1a64e2..ada7418 100644 Binary files a/target/classes/LinearTest.class and b/target/classes/LinearTest.class differ diff --git a/target/classes/ParaP.class b/target/classes/ParaP.class index eec682d..4b1a808 100644 Binary files a/target/classes/ParaP.class and b/target/classes/ParaP.class differ diff --git a/target/classes/SynInBest.class b/target/classes/SynInBest.class index f9469b9..5e14a3d 100644 Binary files a/target/classes/SynInBest.class and b/target/classes/SynInBest.class differ diff --git a/target/classes/SynQuantVid_.class b/target/classes/SynQuantVid_.class index 037b937..17488b4 100644 Binary files a/target/classes/SynQuantVid_.class and b/target/classes/SynQuantVid_.class differ diff --git a/target/classes/fastppsdcore3D.class b/target/classes/fastppsdcore3D.class index b9f18ab..f4ab6da 100644 Binary files a/target/classes/fastppsdcore3D.class and b/target/classes/fastppsdcore3D.class differ diff --git a/target/classes/paraP3D.class b/target/classes/paraP3D.class index e1a6641..9753746 100644 Binary files a/target/classes/paraP3D.class and b/target/classes/paraP3D.class differ diff --git a/target/classes/paraQ3D.class b/target/classes/paraQ3D.class index d0987c1..f3e0a15 100644 Binary files a/target/classes/paraQ3D.class and b/target/classes/paraQ3D.class differ diff --git a/target/classes/ppsd.class b/target/classes/ppsd.class index 7b26a07..53cded9 100644 Binary files a/target/classes/ppsd.class and b/target/classes/ppsd.class differ diff --git a/target/classes/ppsd3D.class b/target/classes/ppsd3D.class index 12d5c7e..a4f990b 100644 Binary files a/target/classes/ppsd3D.class and b/target/classes/ppsd3D.class differ diff --git a/target/classes/ppsdcore3D.class b/target/classes/ppsdcore3D.class index 9d2c99d..df1323f 100644 Binary files a/target/classes/ppsdcore3D.class and b/target/classes/ppsdcore3D.class differ diff --git a/target/classes/ppsdreal.class b/target/classes/ppsdreal.class index c9fc9de..306152a 100644 Binary files a/target/classes/ppsdreal.class and b/target/classes/ppsdreal.class differ diff --git a/target/classes/scanAll3.class b/target/classes/scanAll3.class index dccfcc9..7ea211f 100644 Binary files a/target/classes/scanAll3.class and b/target/classes/scanAll3.class differ diff --git a/target/classes/scanAllThres3D.class b/target/classes/scanAllThres3D.class index 889e8a3..f1c6fe1 100644 Binary files a/target/classes/scanAllThres3D.class and b/target/classes/scanAllThres3D.class differ diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 2697869..6713355 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,27 +1,27 @@ -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ComponentTree3D4Fast.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ImageHandling.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\BasicMath.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ParaQ.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\SynQuantVid_.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\Convolution.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\BestSyn3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\Fastppsdreal.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\BestSyn.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\GrowNeurite.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\paraP3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\paraQ3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ppsdreal.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\fastppsdcore3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\LinearTest.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\SynInBest.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ParaP.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ComponentTree3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ComponentTree.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ppsd3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\PoissonRegression.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ppsd.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\ppsdcore3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\scanAllThres3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\pgL.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\SynInBest3D.java -C:\Users\Congchao\Desktop\Probjects_Google_Drive\SynQuant3D_\src\main\java\scanAll3.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\Fastppsdreal.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\GrowNeurite.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\pgL.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\SynInBest3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\BestSyn3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\Convolution.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\LinearTest.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\scanAllThres3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\BasicMath.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ppsd.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\scanAll3.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ComponentTree3D4Fast.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\SynQuantVid_.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ParaP.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\fastppsdcore3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ParaQ.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ppsdcore3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ComponentTree3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ComponentTree.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ImageHandling.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ppsdreal.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\BestSyn.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\paraP3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\paraQ3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\PoissonRegression.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\ppsd3D.java +C:\Users\Congchao\Desktop\Probjects_Google_Drive\synQuant\SynQuant\src\main\java\SynInBest.java