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