OSDN Git Service

ticket #34993 v2.2.15p0127
authorTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Wed, 18 Mar 2015 09:42:43 +0000 (18:42 +0900)
committerTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Wed, 18 Mar 2015 09:42:43 +0000 (18:42 +0900)
clusterLogWriteBinary2

ticket #34996
mrcImageMeanFreePath

24 files changed:
include/Array.h
src/Objects/DataManip/transform/doc/transform.html
src/Objects/DataManip/transform/src/lmrc2Dto3D.c
src/Objects/General/Array/inc/Array.h
src/Objects/General/Array/src/arrayPCA.c
src/Objects/General/Cluster/src/clusterLogWrite.c
src/Objects/General/eosFunc/doc/eosFunc.html
src/Tools/Cluster/clusterLogASCII2Binary/src/clusterLogASCII2Binary.c
src/Tools/Cluster/clusterLogASCII2Binary/src/test/Makefile
src/Tools/Config/Define.inc
src/Tools/Makefile [changed from file to symlink]
src/Tools/mrcImage/mrcImageMeanFreePathCalc/Config/OptionControlFile
src/Tools/mrcImage/mrcImageMeanFreePathCalc/inc/mrcImageMeanFreePathCalc.h
src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/argCheck.c
src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/init.c
src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.c
src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.html
src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.pane
src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/test/Makefile
src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/usage.c
src/Tools/mrcImage/mrcImageShapeSearch/src/mrcImageShapeSearch.c
src/Tools/mrcImage/mrcImageShapeSearch/src/mrcImageShapeSearch.html
src/Tools/mrcImage/mrcImageShapeSearch/src/test/Makefile
src/Tools/rec3d/mrc2Dto3D/src/test/Makefile

index 7cf2451..4bbb255 100644 (file)
@@ -31,6 +31,10 @@ extern void arrayFree(Array* a, char* message);
 extern void arrayReadFromFile(FILE* fpt, Array* a, char* message);
 extern void arrayWriteToFile(FILE* fpt, Array* a, char* message);
 
+// mode: 0 
+//  memoryAllocate u, C, lambda, ave;  
+//       0<
+//  Not Allocate
 extern void arrayPCA(Array* u, Array* C, Array* lambda, Array* X, Array* ave, int mode);
 extern void arrayPCATransform(Array* XX, Array* X, Array* ave, Array* u, int mode);
 extern void arrayPCAPrint(FILE* fpt, Array* u, Array* lambda, int mode);
index 053b4bf..0096d71 100644 (file)
@@ -3,67 +3,6 @@
 <H2>Information from source codes</H2>
 </A>
 <PRE>
-../src/lAllCommonLineCalculation.c:
-
-../src/lAngularWeightCalculation.c:
-
-../src/lCommonLineCalculation.c:
-
-../src/lCommonLineDataSetInPlaneRotation.c:
-
-../src/lCommonLinesDataSet.c:
-
-../src/lDescartesIntoPolar.c:
-
-../src/lEvaluateCorrelationMapwithCommonLine.c:
-
-../src/lFETOrientationSearchByAnnealing.c:
-
-../src/lFETOrientationSearchByFeatureAlignment.c:
-
-../src/lFETOrientationSearchByFeatureAlignmentInitSet.c:
-
-../src/lFETOrientationSearchByFeatureAlignmentSphere.c:
-
-../src/lFETmapOrientationSearchBySimultaneousFitting.c:
-
-../src/lFETsmallMapSetCreate_forSimultaneousMinimization.c:
-
-../src/lInitialDataFileRead.c:
-
-../src/lJcalulation.c:
-
-../src/lLcalculation.c:
-
-../src/lPlaneRotationAngleSet.c:
-
-../src/lllDataSeparationInfoPrint.c:
-
-../src/lllDataSeparationInfoRead.c:
-
-../src/lllDataSeparationInfoSet.c:
-
-../src/lllDatarMaxLimitForSeparation.c:
-
-../src/lllExtract.c:
-
-../src/lllExtractCtfinfFileCreate.c:
-
-../src/lllExtractWithSeparation.c:
-
-../src/lllExtractdYEstimate.c:
-
-../src/lmrc2Dto3D.c:
-
-../src/lmrc2Dto3DSIRT.c:
-
-../src/lmrc3Dto2D.c:
-
-../src/lmrcImageFileListAndEulerAngleDataRead.c:
-
-../src/lmrcImageOneLineGet.c:
-
-../src/lmrcImageSinogramCorrelationAdditionalWeight.c:
 </PRE>
 <HR>
 <A NAME="include">
index 6c9dc0f..727a136 100755 (executable)
@@ -416,11 +416,13 @@ void
 lmrc2Dto3DSimpleBackProjectionForEach(mrcImage* out, mrcImage* prj, lmrc2Dto3DInfo* linfo, Matrix3D Matrix, long mode)
 {
        mrcImageParaTypeReal x, y, z;
+       mrcImageParaTypeReal tmpx, tmpy, tmpz;
        mrcImageParaTypeReal prjx, prjy, prjz;
        double projdata, data;
        mrcImageParaTypeReal    gx, gy, gz;
        mrcImageParaTypeReal    g3x, g3y, g3z;
        floatVector v; 
+       int index;
 
        floatVectorInit(&v, 4);
        v.data[3] = 1.0;
@@ -433,21 +435,32 @@ lmrc2Dto3DSimpleBackProjectionForEach(mrcImage* out, mrcImage* prj, lmrc2Dto3DIn
        gz  = 0.0;
 
        for(z=0; z<out->HeaderN.z; z++) {
+               v.data[2] = z-g3z;
        for(y=0; y<out->HeaderN.y; y++) {
+               v.data[1] = y-g3y; 
        for(x=0; x<out->HeaderN.x; x++) {
+               index = x + y*out->HeaderN.x + z*out->HeaderN.x*out->HeaderN.y; 
                v.data[0] = x-g3x; 
-               v.data[1] = y-g3y; 
-               v.data[2] = z-g3z;
-               matrix3DMultiplyVector(&v, Matrix);
-               prjx = v.data[0] + gx; 
-               prjy = v.data[1] + gy;
-               prjz = v.data[2] + g3z;
+               //matrix3DMultiplyVector(&v, Matrix);
+
+               tmpx = Matrix[0][0]*v.data[0]+ Matrix[1][0]*v.data[1] +  Matrix[2][0]*v.data[2];        
+               tmpy = Matrix[0][1]*v.data[0]+ Matrix[1][1]*v.data[1] +  Matrix[2][1]*v.data[2];        
+               tmpz = Matrix[0][2]*v.data[0]+ Matrix[1][2]*v.data[1] +  Matrix[2][2]*v.data[2];        
+
+               prjx = tmpx + gx; 
+               prjy = tmpy + gy;
+               prjz = tmpz + g3z;
+               //prjx = v.data[0] + gx; 
+               //prjy = v.data[1] + gy;
+               //prjz = v.data[2] + g3z;
+               //mrcPixelDataGet(out, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
 
-               mrcPixelDataGet(out, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
                if( -0.5<=prjx && prjx<prj->HeaderN.x-0.5
                  &&-0.5<=prjy && prjy<prj->HeaderN.y-0.5) {
+                               data = out->ImageFloatImage[index];
                                mrcPixelDataGet(prj, prjx, prjy, 0.0, &projdata, mrcPixelRePart, linfo->InterpolationMode);
-                               mrcPixelDataSet(out, x, y, z, data + projdata, mrcPixelRePart);
+                               //mrcPixelDataSet(out, x, y, z, data + projdata, mrcPixelRePart);
+                               out->ImageFloatImage[index] = data + projdata;
                }
        }
        }
@@ -458,11 +471,16 @@ void
 lmrc2Dto3DFilteredBackProjectionForEach(mrcImage* out, mrcImage* prj, lmrc2Dto3DInfo* linfo, Matrix3D Matrix, long mode)
 {
        mrcImageParaTypeReal x, y, z;
+       mrcImageParaTypeReal tmpx, tmpy, tmpz;
+       mrcImageParaTypeReal tmpxx, tmpyx, tmpzx;
+       mrcImageParaTypeReal tmpxy, tmpyy, tmpzy;
+       mrcImageParaTypeReal tmpxz, tmpyz, tmpzz;
        mrcImageParaTypeReal prjx, prjy, prjz;
        double projdata, data, normz;
        mrcImageParaTypeReal    gx, gy, gz;
        mrcImageParaTypeReal    g3x, g3y, g3z;
        floatVector v; 
+       int index;
 
        floatVectorInit(&v, 4);
        v.data[3] = 1.0;
@@ -475,22 +493,42 @@ lmrc2Dto3DFilteredBackProjectionForEach(mrcImage* out, mrcImage* prj, lmrc2Dto3D
        gz  = 0.0;
 
        for(z=0; z<out->HeaderN.z; z++) {
+               v.data[2] = z-g3z;
+               tmpxz = Matrix[2][0]*v.data[2]; 
+               tmpyz = Matrix[2][1]*v.data[2]; 
+               tmpzz = Matrix[2][2]*v.data[2]; 
+
        for(y=0; y<out->HeaderN.y; y++) {
+               v.data[1] = y-g3y; 
+               tmpxy = Matrix[1][0]*v.data[1]; 
+               tmpyy = Matrix[1][1]*v.data[1]; 
+               tmpzy = Matrix[1][2]*v.data[1]; 
+
        for(x=0; x<out->HeaderN.x; x++) {
+               index = x + y*out->HeaderN.x + z*out->HeaderN.x*out->HeaderN.y; 
                v.data[0] = x-g3x; 
-               v.data[1] = y-g3y; 
-               v.data[2] = z-g3z;
-               matrix3DMultiplyVector(&v, Matrix);
-               prjx = v.data[0] + gx; 
-               prjy = v.data[1] + gy;
-               prjz = v.data[2] + g3z;
+               tmpxx = Matrix[0][0]*v.data[0]; 
+               tmpyx = Matrix[0][1]*v.data[0]; 
+               tmpzx = Matrix[0][2]*v.data[0]; 
+               //matrix3DMultiplyVector(&v, Matrix);
+               tmpx = tmpxx + tmpxy +  tmpxz;  
+               tmpy = tmpyx + tmpyy +  tmpyz;  
+               tmpz = tmpzx + tmpzy +  tmpzz;  
+
+               //prjx = v.data[0] + gx; 
+               //prjy = v.data[1] + gy;
+               //prjz = v.data[2] + g3z;
+               prjx = tmpx + gx; 
+               prjy = tmpy + gy;
+               prjz = tmpz + g3z;
                if(-0.5<=prjz && prjz < out->HeaderN.z - 0.5) { 
-                       mrcPixelDataGet(out, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+                       //mrcPixelDataGet(out, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
                        if( -0.5<=prjx && prjx<prj->HeaderN.x-0.5
                          &&-0.5<=prjy && prjy<prj->HeaderN.y-0.5) {
+                               data = out->ImageFloatImage[index];
                                mrcPixelDataGet(prj, prjx, prjy, 0.0, &projdata, mrcPixelRePart, linfo->InterpolationMode);
                                if(linfo->flagDouble && linfo->rhoInfo.flagThicknessWeight) {
-                                       normz = fabs(v.data[2]/g3z); 
+                                       normz = fabs(tmpz/g3z); 
                                        if(normz < 0.9) {
                                        
                                        } else if(normz < 1) { 
@@ -499,7 +537,8 @@ lmrc2Dto3DFilteredBackProjectionForEach(mrcImage* out, mrcImage* prj, lmrc2Dto3D
                                                projdata = 0; 
                                        }
                                } 
-                               mrcPixelDataSet(out, x, y, z, data + projdata, mrcPixelRePart);
+                       //      mrcPixelDataSet(out, x, y, z, data + projdata, mrcPixelRePart);
+                               out->ImageFloatImage[index] = data + projdata;
                        }
                }
        }
index 7cf2451..4bbb255 100755 (executable)
@@ -31,6 +31,10 @@ extern void arrayFree(Array* a, char* message);
 extern void arrayReadFromFile(FILE* fpt, Array* a, char* message);
 extern void arrayWriteToFile(FILE* fpt, Array* a, char* message);
 
+// mode: 0 
+//  memoryAllocate u, C, lambda, ave;  
+//       0<
+//  Not Allocate
 extern void arrayPCA(Array* u, Array* C, Array* lambda, Array* X, Array* ave, int mode);
 extern void arrayPCATransform(Array* XX, Array* X, Array* ave, Array* u, int mode);
 extern void arrayPCAPrint(FILE* fpt, Array* u, Array* lambda, int mode);
index f04f972..2cc769d 100755 (executable)
@@ -10,6 +10,8 @@
 #%Z%
 */
 static char __sccs_id[] = "%Z%arrayPCA ver%I%; Date:%D% %Z%";
+#undef DEBUG
+#include "genUtil.h"
 
 #include "../inc/Array.h"
 /*
@@ -133,24 +135,25 @@ arrayPCA(Array* u, Array* C, Array* lambda, Array* X, Array* average, int mode)
        TmpX.n[1] = X->n[1];
        arrayInit(&TmpX, "TmpX in arrayPCA");
 
-       lambda->dim = 1; 
-       lambda->n[0] = X->n[0]; 
-       arrayInit(lambda, "lambda in arrayPCA");
-
-       average->dim = 1; 
-       average->n[0] = X->n[0]; 
-       arrayInit(average, "average in arrayPCA");
+       if(0==mode) {
+               lambda->dim = 1; 
+               lambda->n[0] = X->n[0]; 
+               arrayInit(lambda, "lambda in arrayPCA");
 
-       C->dim = 2; 
-       C->n[0] = X->n[0]; 
-       C->n[1] = X->n[0]; 
-       arrayInit(C, "C in arrayPCA");
+               average->dim = 1; 
+               average->n[0] = X->n[0]; 
+               arrayInit(average, "average in arrayPCA");
 
-       u->dim = 2; 
-       u->n[0] = X->n[0]; 
-       u->n[1] = X->n[0]; 
-       arrayInit(u, "u in arrayPCA");
+               C->dim = 2; 
+               C->n[0] = X->n[0]; 
+               C->n[1] = X->n[0]; 
+               arrayInit(C, "C in arrayPCA");
 
+               u->dim = 2; 
+               u->n[0] = X->n[0]; 
+               u->n[1] = X->n[0]; 
+               arrayInit(u, "u in arrayPCA");
+       }
        /* Calc TmpX : subtraction of average */ 
        for(i=0; i<X->n[0]; i++) {
                ave = 0;
@@ -187,7 +190,9 @@ arrayPCA(Array* u, Array* C, Array* lambda, Array* X, Array* average, int mode)
        }
        }
        jacobi(a, n, d, v, &nrot); //
-       fprintf(stderr, "nrot for PCA: %d\n", nrot);
+#ifdef DEBUB
+       DEBUGPRINT1("nrot for PCA: %d\n", nrot);
+#endif
        eigsrt(d, v, n); //
 
        for(i=0; i<n; i++) {
@@ -196,4 +201,6 @@ arrayPCA(Array* u, Array* C, Array* lambda, Array* X, Array* average, int mode)
                arrayDataSet2(*u, i, j, v[i+1][j+1]);
        }
        }
+
+       arrayFree(&TmpX, "TmpX in arrayPCA");
 }
index 217ad13..d322cd3 100755 (executable)
@@ -41,7 +41,7 @@ clusterLogWriteBinary2(clusterLog* in, FILE* fpt, int mode)
        clusterLogOneRecord * cluster;
 
        cluster = in->current;
-       return clusterLogWriteOneRecord(cluster, fpt, mode);    
+       return clusterLogWriteOneRecordBinary2(cluster, fpt, mode);     
 }
 
 clusterLogOneRecord*
index 33ff77d..d184578 100644 (file)
@@ -3,7 +3,6 @@
 <H2>Information from source codes</H2>
 </A>
 <PRE>
-../src/eosFunc.c:
 </PRE>
 <HR>
 <A NAME="include">
index 491d632..1666ec7 100755 (executable)
@@ -17,6 +17,7 @@
 
 #define DEBUG
 #include "genUtil.h"
+#include "File.h"
 #include "Cluster.h"
 
 /*
@@ -37,6 +38,7 @@ main(int argc, char* argv[])
 {
        clusterLog* cluster=NULL;
        clusterLogASCII2BinaryInfo info;
+       FILE* fpt;
 
        init0(&info);
     argCheck(&info, argc, argv);
@@ -46,6 +48,9 @@ main(int argc, char* argv[])
        cluster = clusterLogReadAll(cluster, info.fptIn, 0);
 
        clusterLogWriteAllBinary(cluster, info.Out, 0);
+
+       fpt = fileOpen(info.Out, "w");
+       clusterLogWriteAllBinary2(cluster, fpt, 0);
        exit(EXIT_SUCCESS);
 }
 
index d24d9af..8f1806b 100755 (executable)
@@ -11,7 +11,7 @@ help:
 
 exec:
        @echo "----- Execution Check -----"
-       ../$(OSTYPE)/$(OBJECTNAME) -i test.log -o test.logbin
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test.log -o data/test.logbin
        @echo "----- Calc check -----"          
 
 clean:
index 0a1d2d9..ab73dee 100755 (executable)
@@ -565,3 +565,6 @@ WORLDNAME=Tools
 WORLDNAME=Tools
 WORLDNAME=Tools
 WORLDNAME=Tools
+WORLDNAME=Tools
+WORLDNAME=Tools
+WORLDNAME=Tools
deleted file mode 100755 (executable)
index ad841104b1b4aa83ce554496adb2d2476544f988..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,5 +0,0 @@
-include ../Config/Define.inc
-include Config/Define.inc
-include .Source
-
-include Config/Target.inc
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..80a2401a7dc3d8e1cdc121c22208bd28b6887cf3
--- /dev/null
@@ -0,0 +1 @@
+/Users/tacyas/Eos/src/Config/Template/ToolsHomeTemplate.Dir/Makefile
\ No newline at end of file
index 725d55d..001c4cd 100755 (executable)
@@ -6,5 +6,6 @@
 "-Ob","-O[utput]b[lack]","Output: black","Optional","1","1","OutBlack","outFile::mrcImage","NULL"
 "-Owe","-O[utput]w[hite]e[dge]","Output: whiteEdge","Optional","1","1","OutWhiteEdge","outFile::mrcImage","NULL"
 "-Obe","-O[utput]b[lack]e[dge]","Output: blackEdge","Optional","1","1","OutBlackEdge","outFile::mrcImage","NULL"
+"-lt","-l[ine]t[hickness]","[pixel]","Optional","2","1","LineThicknessX","Real","1","2","LineThicknessY","Real","1"
 "-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
 "-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
index f71483f..fe156b8 100755 (executable)
@@ -37,6 +37,12 @@ typedef struct mrcImageMeanFreePathCalcInfo {
     char* OutBlackEdge;
     FILE* fptOutBlackEdge;
     
+    long flagLineThicknessX;
+    float LineThicknessX;
+    
+    long flagLineThicknessY;
+    float LineThicknessY;
+    
     long flagconfigFile;
     char* configFile;
     FILE* fptconfigFile;
index b2e8d04..6287c33 100755 (executable)
@@ -94,6 +94,20 @@ argCheck(mrcImageMeanFreePathCalcInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
+                SCASE("lt") {
+                    if(i+2<argc) {
+                        info->LineThicknessX = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagLineThicknessX++;
+                        info->LineThicknessY = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagLineThicknessY++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
                 SCASE("c") {
                     if(i+1<argc) {
                         info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
index ba10623..9aba563 100755 (executable)
@@ -18,6 +18,8 @@ init0(mrcImageMeanFreePathCalcInfo* info)
     info->fptOutBlack = NULL;    info->flagOutBlack = 0;
     info->fptOutWhiteEdge = NULL;    info->flagOutWhiteEdge = 0;
     info->fptOutBlackEdge = NULL;    info->flagOutBlackEdge = 0;
+    info->LineThicknessX = 1;    info->flagLineThicknessX = 0;
+    info->LineThicknessY = 1;    info->flagLineThicknessY = 0;
     info->fptconfigFile = NULL;    info->flagconfigFile = 0;
     info->mode = 0;    info->flagmode = 0;
 }
@@ -56,6 +58,12 @@ init1(mrcImageMeanFreePathCalcInfo* info)
         info->fptOutBlackEdge = fileOpen(info->OutBlackEdge, "w");
     }
     
+    if(info->flagLineThicknessX) {
+    }
+    
+    if(info->flagLineThicknessY) {
+    }
+    
     if(info->flagconfigFile) {
         info->fptconfigFile = fileOpen(info->configFile, "r");
     }
index 5c29731..93592f8 100755 (executable)
@@ -44,6 +44,7 @@ typedef struct lmrcImageMeanFreePathCalcInfo {
 
        // Control: Input
        mrcImageParaTypeRealCoord Length;
+       mrcImageParaTypeRealCoord LineThickness;   
 
 } lmrcImageMeanFreePathCalcInfo;
 
@@ -75,6 +76,9 @@ main(int argc, char* argv[])
        mrcFileRead(&in, info.In, "in main", 0);
 
        linfo.Length = in.HeaderLength;
+       linfo.LineThickness.x = info.LineThicknessX;
+       linfo.LineThickness.y = info.LineThicknessY;
+       linfo.LineThickness.z = 1;
 
        lmrcImageMeanFreePathCalc(&in, &linfo, info.mode);
 
@@ -174,8 +178,12 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
        int* countBlackEdge; 
        int* countWhiteEdge; 
        int x, y, z;
+       int srcx, srcy;
+       int minx, miny;
+       int maxx, maxy;
        int flagEdge;
        double data;
+       double data0;
        double prevData;
        int lengthWhite;
        int lengthBlack;
@@ -203,13 +211,25 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
        linfo->N = in->HeaderN.z;
 
        for(y=0; y<in->HeaderN.y; y++) {
+               miny = floor(y - linfo->LineThickness.y/2.0 + 0.5); 
+               maxy = floor(y + linfo->LineThickness.y/2.0 + 0.5); 
        for(x=0; x<in->HeaderN.x; x++) {
+               minx = floor(x - linfo->LineThickness.x/2.0 + 0.5); 
+               maxx = floor(x + linfo->LineThickness.x/2.0 + 0.5); 
+
                flagEdge = 1;
                lengthWhite = 0;
                lengthBlack = 0;
-       
+
                // Start
-               mrcPixelDataGet(in, x, y, 0, &data, mrcPixelRePart, mrcPixelHowNearest);
+               data = 1;
+               for(srcy=miny; srcy<maxy; srcy++) { 
+               for(srcx=minx; srcx<maxx; srcx++) { 
+                       mrcPixelDataGet(in, srcx, srcy, 0, &data0, mrcPixelRePart, mrcPixelHowNearest);
+                       data *= data0;
+               }
+               }
+               //mrcPixelDataGet(in, x, y, 0, &data, mrcPixelRePart, mrcPixelHowNearest);
                if(0<data) {
                        countWhiteEdge[0]++;            
                        lengthWhite++;
@@ -221,7 +241,15 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
 
                // Interval
                for(z=1; z<in->HeaderN.z-1; z++) {
-                       mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+                       data = 1;
+                       for(srcy=miny; srcy<maxy; srcy++) { 
+                       for(srcx=minx; srcx<maxx; srcx++) { 
+                               mrcPixelDataGet(in, srcx, srcy, z, &data0, mrcPixelRePart, mrcPixelHowNearest);
+                               data *= data0;
+                       }
+                       }
+                       //mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+
                        if(0<prevData) {
                                if(0<data) { // White continue
                                        if(flagEdge) {
@@ -278,7 +306,14 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
 
                // End
                z = in->HeaderN.z-1;
-               mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+               data = 1;
+               for(srcy=miny; srcy<maxy; srcy++) { 
+               for(srcx=minx; srcx<maxx; srcx++) { 
+                       mrcPixelDataGet(in, srcx, srcy, z, &data0, mrcPixelRePart, mrcPixelHowNearest);
+                       data *= data0;
+               }
+               }
+               //mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
 
                if(0<prevData) {
                        if(0<data) { // White continue
index a6835f7..96e8c83 100755 (executable)
@@ -14,6 +14,8 @@ Options:
     [-O[utput]b[lack]    OutBlack            (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output: black
     [-O[utput]w[hite]e[dge]OutWhiteEdge        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output: whiteEdge
     [-O[utput]b[lack]e[dge]OutBlackEdge        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output: blackEdge
+    [-l[ine]t[hickness]  LineThicknessX      (1         ).as(Real                ) 
+                         LineThicknessY      (1         ).as(Real                ) ] :Optional  :[pixel]
     [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile
     [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode
 ----- Additional Usage -----
index 098f7d7..7fe7e64 100755 (executable)
@@ -13,8 +13,9 @@
         -O 1 0 1 0 0 1 -1x1+1+6.000000 ' ' 'OutBlack' 'Output: black' Ob
         -O 1 0 1 0 0 1 -1x1+1+7.500000 ' ' 'OutWhiteEdge' 'Output: whiteEdge' Owe
         -O 1 0 1 0 0 1 -1x1+1+9.000000 ' ' 'OutBlackEdge' 'Output: blackEdge' Obe
-        -I 1 0 1 0 0 1 -1x1+1+10.500000 ' ' 'configFile' 'ConfigurationFile' c
-        -i 1 0 1 0 0 -1x1+1+12.000000 0 0 0 0 0 'mode' 'Mode' m
+        -I  1 0 0 1 0 1 -1x1+1+10 ' ' '1' 'LineThicknessX' [pixel]
+        -I 1 0 1 0 0 1 -1x1+1+12.000000 ' ' 'configFile' 'ConfigurationFile' c
+        -i 1 0 1 0 0 -1x1+1+13.500000 0 0 0 0 0 'mode' 'Mode' m
     -E
   -E
 -E
index 349fa32..f91f2e9 100755 (executable)
@@ -15,6 +15,12 @@ exec:
        ../$(OSTYPE)/$(OBJECTNAME) -i data/test.bin -o data/test.mfp16 -m 16 -Ow data/test.white16 -Owe data/test.whiteEdge16 -Ob data/test.black16 -Obe data/test.blackEdge16
        @echo "----- Calc check -----"          
 
+exec2:
+       @echo "----- Execution Check -----"
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test.bin -o data/test.mfp2 -m 0 -Ow data/test.white2 -Owe data/test.whiteEdge2 -Ob data/test.black2 -Obe data/test.blackEdge2 -lt 2 2 
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test.bin -o data/test.mfp216 -m 16 -Ow data/test.white216 -Owe data/test.whiteEdge216 -Ob data/test.black216 -Obe data/test.blackEdge216 -lt 2 2
+       @echo "----- Calc check -----"          
+
 init:
        pdb2mrc -i data/121p.pdb2 -o data/test.mrc -nx 32 -ny 32 -nz 32 -dx 2 -dy 2 -dz 2 -Sx -32 -Sy -32 -Sz -32 -sig 1.6 -w 1.0
        mrcImageBinalization -i data/test.mrc -o data/test.bin -m 32
index 03f13cc..7dca4a0 100755 (executable)
@@ -13,6 +13,7 @@ usage(char* thisProgram)
     fprintf(stderr, "    [-O[utput]b[lack]    OutBlack            (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output: black\n");
     fprintf(stderr, "    [-O[utput]w[hite]e[dge]OutWhiteEdge        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output: whiteEdge\n");
     fprintf(stderr, "    [-O[utput]b[lack]e[dge]OutBlackEdge        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output: blackEdge\n");
+    fprintf(stderr, "    [-l[ine]t[hickness]  LineThicknessX      (1         ).as(Real                ) \n                         LineThicknessY      (1         ).as(Real                ) ] :Optional  :[pixel]\n");
     fprintf(stderr, "    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile\n");
     fprintf(stderr, "    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode\n");
     additionalUsage();
index 35af594..935eeb1 100755 (executable)
@@ -23,7 +23,7 @@
 #include "mrcImage.h"
 
 typedef struct lmrcImageShapeSearchInfo {
-       float radius; // Sylinder, half disk  
+       float radius; // Sylinder, half disk, sphere   
        float minRadius;
        float maxRadius;
        float delRadius;
@@ -60,19 +60,22 @@ typedef struct lmrcImageShapeSearchInfo {
        mrcImage SD;      // SD for all 
        mrcImage Max;     // Max for all 
        mrcImage Zscore;  // Z-score;
+       mrcImage PCA;     // PCA
        int nShapeInfo;
        mrcImage* shapeInfo; // Shape, Orientation, ... 
 } lmrcImageShapeSearchInfo;
 
 typedef enum lmrcImageShapeSearchMode {
        lmrcImageShapeSearchModeSylinder=0,
-       lmrcImageShapeSearchModeHalfDisk=1
+       lmrcImageShapeSearchModeDisk=1,
+       lmrcImageShapeSearchModeSphere=2
 } lmrcImageShapeSearchMode;
 
 extern void    lmrcImageShapeSearch(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo* linfo, int mode);
 extern void    lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo* linfo, int mode);
 extern void    lmrcImageShapeSearchSylinder(double* data, mrcImage* in, Matrix3D mat, lmrcImageShapeSearchInfo* linfo, int mode);
-extern void    lmrcImageShapeSearchHalfDisk(double* data, mrcImage* in, Matrix3D mat, lmrcImageShapeSearchInfo* linfo, int mode);
+extern void    lmrcImageShapeSearchDisk(double* data, mrcImage* in, Matrix3D mat, lmrcImageShapeSearchInfo* linfo, int mode);
+extern void    lmrcImageShapeSearchSphere(double* data, mrcImage* in, lmrcImageShapeSearchInfo* linfo, int mode);
 extern void lmrcImageShapeSearchModePrint(FILE* fpt);
 
 int
@@ -126,6 +129,8 @@ main(int argc, char* argv[])
        mrcFileWrite(&linfo.Zscore, filename, "in main", 0);
        sprintf(filename, "%s.max", info.Out);  
        mrcFileWrite(&linfo.Max, filename, "in main", 0);
+       sprintf(filename, "%s.PCA", info.Out);  
+       mrcFileWrite(&linfo.PCA, filename, "in main", 0);
        for(i=0; i<linfo.nShapeInfo; i++) {
                sprintf(filename, "%s.shapeinfo-%02d", info.Out, i);    
                mrcFileWrite(&linfo.shapeInfo[i], filename, "in main", 0);
@@ -146,7 +151,8 @@ void
 lmrcImageShapeSearchModePrint(FILE* fpt)
 {
        fprintf(fpt, "%d: Cylinder with radius and length\n", lmrcImageShapeSearchModeSylinder);
-       fprintf(fpt, "%d: Half disk with radius and length(thickness)\n", lmrcImageShapeSearchModeHalfDisk);
+       fprintf(fpt, "%d: Disk with radius and length(thickness)\n", lmrcImageShapeSearchModeDisk);
+       fprintf(fpt, "%d: Sphere with radius \n", lmrcImageShapeSearchModeSphere);
 }
 
 
@@ -158,7 +164,11 @@ lmrcImageShapeSearch(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo* linf
                        lmrcImageShapeSearchCalc0(out, in, linfo, mode);
                        break;
                }
-               case lmrcImageShapeSearchModeHalfDisk: {
+               case lmrcImageShapeSearchModeDisk: {
+                       lmrcImageShapeSearchCalc0(out, in, linfo, mode);
+                       break;
+               }
+               case lmrcImageShapeSearchModeSphere: {
                        lmrcImageShapeSearchCalc0(out, in, linfo, mode);
                        break;
                }
@@ -175,6 +185,7 @@ lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo*
 {
        float x, y, z;
        float srcx, srcy, srcz;
+       float srcx0, srcy0, srcz0;
        float dstx, dsty, dstz;
        float theta, phi, psi, radius, length;
        int iPhi, iTheta, iPsi, iRadius, iLength;       
@@ -189,6 +200,16 @@ lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo*
        floatVector v;
        int i, imax;
        int k, k0, nVoxel;
+       int PCAMode=0;
+       int numPoint;
+       Array U;
+       Array C;
+       Array Lambda;
+       double L0, L1, L2;
+       Array X;
+       Array Ave;
+       mrcImageParaTypeInteger nCube; 
+       double W;
 
        nPhi   = (int)((linfo->maxPhi     - linfo->minPhi)  /linfo->delPhi)  +1;
        nTheta = (int)((linfo->maxTheta   - linfo->minTheta)/linfo->delTheta)+1;
@@ -212,6 +233,8 @@ lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo*
        mrcInit(&linfo->Zscore, NULL);
        linfo->Max.Header = in->Header;
        mrcInit(&linfo->Max, NULL);
+       linfo->PCA.Header = in->Header;
+       mrcInit(&linfo->PCA, NULL);
        linfo->nShapeInfo = 5;
        linfo->shapeInfo = (mrcImage*)memoryAllocate(sizeof(mrcImage)*linfo->nShapeInfo, "in MFPCalc");
        for(i=0; i<linfo->nShapeInfo; i++) {
@@ -219,6 +242,14 @@ lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo*
                mrcInit(&linfo->shapeInfo[i], NULL);
        }
 
+       X.dim = 2;
+       X.n[0] = 3;
+       nCube = ((int)(MAX(linfo->maxLength, 2*linfo->maxRadius+1)+3)/2)*2; 
+       X.n[1] = nCube*nCube*nCube; 
+       arrayInit(&X, "in");
+       
+       DEBUGPRINT1("nCube: %d\n", nCube);
+
        for(z=0; z<in->HeaderN.z; z++) {
                DEBUGPRINT1("z: %f\n", z);
                linfo->z = z;
@@ -229,6 +260,78 @@ lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo*
                linfo->x = x;
 
                k0 = (int)(x + y*in->HeaderN.x + z*in->HeaderN.x*in->HeaderN.y); 
+
+               //mrcPixelDataGet(in, x, y, z, &d, mrcPixelRePart, mrcPixelHowNearest);
+               k = x + y*in->HeaderN.x + z*in->HeaderN.x*in->HeaderN.y;
+               d = in->ImageFloatImage[k];
+               if(0<d) {
+               numPoint = 0;
+               for(srcz=-nCube/2; srcz<nCube/2; srcz++) {
+               for(srcy=-nCube/2; srcy<nCube/2; srcy++) {
+               for(srcx=-nCube/2; srcx<nCube/2; srcx++) {
+                       //mrcPixelDataGet(in, x+srcx, y+srcy, z+srcz, &d, mrcPixelRePart, mrcPixelHowNearest);  
+                       srcx0 = x + srcx;
+                       srcy0 = y + srcy;
+                       srcz0 = z + srcz;
+                       k = srcx0 + srcy0*in->HeaderN.x + srcz0*in->HeaderN.x*in->HeaderN.y;
+                       d = in->ImageFloatImage[k];
+                       if(0<d) {
+                               arrayDataSet2(X, 0, numPoint, srcx0);
+                               arrayDataSet2(X, 1, numPoint, srcy0);
+                               arrayDataSet2(X, 2, numPoint, srcz0);
+                               numPoint++;
+                       }
+               }
+               }
+               }
+               //DEBUGPRINT4("%f %f %f numPoint: %d\n", x, y, z, numPoint);
+               if(16<numPoint) {
+                       X.n[1] = numPoint;
+                       arrayPCA(&U, &C, &Lambda, &X, &Ave, PCAMode);
+                       if(PCAMode==0) PCAMode=1;
+                       L0 = arrayDataGet1(Lambda, 0);
+                       L1 = arrayDataGet1(Lambda, 1);
+                       L2 = arrayDataGet1(Lambda, 2);
+
+                       switch(mode) {
+                               case lmrcImageShapeSearchModeSylinder: {        
+                                       W = ((L1!=0)?(L0/L1):1)*(L2!=0?(L0/L2):1);              
+#ifdef DEBUG
+                                       if(4000<W) {
+                                               DEBUGPRINT3("%f %f %f\n", x, y, z);
+                                               DEBUGPRINT4("W: %f %f %f %f\n", W, L0, L1, L2);
+                                       }
+#endif
+                                       break;
+                               }
+                               case lmrcImageShapeSearchModeDisk: {    
+                                       W = ((L2!=0)?((L0/L2)*(L1/L2)):1);              
+#ifdef DEBUG
+                                       if(1000<W) {
+                                               DEBUGPRINT3("%f %f %f\n", x, y, z);
+                                               DEBUGPRINT4("W: %f %f %f %f\n", W, L0, L1, L2);
+                                       }
+#endif
+                                       break;
+                               }
+                               case lmrcImageShapeSearchModeSphere: {  
+                                       W = L0*L1+L1*L2+L2*L0/SQR(L0+L1+L2);            
+                                       break;
+                               }
+                               default: {
+                                       W = 1;
+                                       break;
+                               }
+                       }
+               } else {
+                       W = 1;
+               }
+               } else {
+                       W = 1;
+               }
+               //mrcPixelDataSet(&linfo->PCA, x, y, z, W, mrcPixelRePart);
+               linfo->PCA.ImageFloatImage[k] = W;
+               if(1<W) {
                for(iPhi=0; iPhi<nPhi; iPhi++) { // Three Rotation      
                        phi = linfo->minPhi + iPhi*linfo->delPhi;
                for(iTheta=0; iTheta<nTheta; iTheta++) {        
@@ -263,8 +366,12 @@ lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo*
 #endif
                                        break;
                                }
-                               case lmrcImageShapeSearchModeHalfDisk: {        
-                                       lmrcImageShapeSearchHalfDisk(&data[index], in, mat, linfo, mode);               
+                               case lmrcImageShapeSearchModeDisk: {    
+                                       lmrcImageShapeSearchDisk(&data[index], in, mat, linfo, mode);           
+                                       break;
+                               }
+                               case lmrcImageShapeSearchModeSphere: {  
+                                       lmrcImageShapeSearchSphere(&data[index], in, mat, linfo, mode);         
                                        break;
                                }
                                default: {
@@ -306,6 +413,13 @@ lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo*
                DEBUGPRINT3("%f %f %f \n", max, ave, sd);       
                }
 #endif
+               } else {
+                       ave = 0;
+                       sd  = 0;
+                       max = 0;
+                       imax = 0;
+               }
+
                //mrcPixelDataSet(&linfo->average, x, y, z, ave, mrcPixelRePart);
                linfo->average.ImageFloatImage[k0] = ave;
 
@@ -332,7 +446,7 @@ lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo*
                linfo->shapeInfo[3].ImageFloatImage[k0] =  i*linfo->delRadius + linfo->minRadius;
 
                i =  imax/(nPhi*nTheta*nPsi*nRadius);
-               mrcPixelDataSet(&linfo->shapeInfo[4], x, y, z, i*linfo->delLength + linfo->minLength, mrcPixelRePart);
+               //mrcPixelDataSet(&linfo->shapeInfo[4], x, y, z, i*linfo->delLength + linfo->minLength, mrcPixelRePart);
                linfo->shapeInfo[4].ImageFloatImage[k0] =  i*linfo->delLength + linfo->minLength;
        }
        }
@@ -452,8 +566,124 @@ lmrcImageShapeSearchSylinder(double* data, mrcImage* in, Matrix3D mat, lmrcImage
 }
 
 void
-lmrcImageShapeSearchHalfDisk(double* data, mrcImage* in, Matrix3D mat, lmrcImageShapeSearchInfo* linfo, int mode)
+lmrcImageShapeSearchDisk(double* data, mrcImage* in, Matrix3D mat, lmrcImageShapeSearchInfo* linfo, int mode)
 {
-       DEBUGPRINT("Not yet supported\n");
+
+       double p, l, r;
+       double x, y, z;
+       double zz;
+       double srcx, srcy, srcz;
+       double dstx, dsty, dstz;
+       double scorePos, scoreNeg;
+       double cp, sp, d;
+       int k, k0;
+       int countPos, countNeg;
+
+       //DEBUGPRINT("lmrcImageShapeSearchSylinder start\n");
+       scorePos = 0; 
+       scoreNeg = 0; 
+       countPos = 0;
+       countNeg = 0;
+       for(p=0; p<2*M_PI;  p+=linfo->delPsi) {
+               cp = cos(p);
+               sp = sin(p);
+       for(r=0; r<=linfo->radius; r+=linfo->delRadius) {
+               x = r*cp;
+               y = r*sp;
+       for(l=0; l<=linfo->length; l+=linfo->delLength) {
+               z = l-linfo->length/2; 
+
+               srcx = mat[0][0]*x + mat[1][0]*y + mat[2][0]*z;
+               srcy = mat[0][1]*x + mat[1][1]*y + mat[2][1]*z; 
+               srcz = mat[0][2]*x + mat[1][2]*y + mat[2][2]*z;
+
+               dstx = linfo->x + srcx; 
+               dsty = linfo->y + srcy;
+               dstz = linfo->z + srcz; 
+               if(-0.5<dstx && dstx < in->HeaderN.x-0.5
+                &&-0.5<dsty && dsty < in->HeaderN.y-0.5
+                &&-0.5<dstz && dstz < in->HeaderN.z-0.5) {
+                       k = (int)(dstx+0.5) + (int)(dsty+0.5)*in->HeaderN.x + (int)(dstz+0.5)*in->HeaderN.x*in->HeaderN.y; 
+                       d = in->ImageFloatImage[k];
+               } else {
+                       d = 0;
+               }
+
+               countPos++;
+               scorePos += d;
+       }
+       // Edge Check
+       for(zz = -1; zz <= 1; zz+=2) {
+               x = r*cos(p);
+               y = r*sin(p);
+               z = l - (linfo->length/2 + linfo->delLength)*zz;     
+               srcx = mat[0][0]*x + mat[1][0]*y + mat[2][0]*z;
+               srcy = mat[0][1]*x + mat[1][1]*y + mat[2][1]*z; 
+               srcz = mat[0][2]*x + mat[1][2]*y + mat[2][2]*z;
+               dstx = linfo->x + srcx;
+               dsty = linfo->y + srcy;
+               dstz = linfo->z + srcz; 
+
+               if(-0.5<dstx && dstx < in->HeaderN.x-0.5
+                &&-0.5<dsty && dsty < in->HeaderN.y-0.5
+                &&-0.5<dstz && dstz < in->HeaderN.z-0.5) {
+                               k = (int)(dstx+0.5) + (int)(dsty+0.5)*in->HeaderN.x + (int)(dstz+0.5)*in->HeaderN.x*in->HeaderN.y; 
+                               d = in->ImageFloatImage[k];
+               } else {
+                               d = 0;
+               }
+               scoreNeg += d;
+               countNeg++;
+       }
+
+       }
+       }
+       k0 =  (int)(linfo->x+0.5) + (int)(linfo->y+0.5)*in->HeaderN.x + (int)(linfo->z+0.5)*in->HeaderN.x*in->HeaderN.y; 
+       *data = (0.8*scorePos/countPos - 0.2*scoreNeg/countNeg);
+#ifdef DEBUG2
+       //DEBUGPRINT1("data: %f\n", score);
+       if(0<score) {
+               DEBUGPRINT1("data: %f\n", score);
+       }
+#endif
+}
+
+
+void
+lmrcImageShapeSearchSphere(double* data, mrcImage* in, Matrix3D mat, lmrcImageShapeSearchInfo* linfo, int mode)
+{
+
+       double phi, psi, r;
+       double x, y, z;
+       double zz;
+       double srcx, srcy, srcz;
+       double dstx, dsty, dstz;
+       double scorePos, scoreNeg;
+       double cp, sp, d;
+       int k, k0;
+       int countPos, countNeg;
+
+       //DEBUGPRINT("lmrcImageShapeSearchSylinder start\n");
+       scorePos = 0; 
+       scoreNeg = 0; 
+       countPos = 0;
+       countNeg = 0;
+       for(phi=0; phi<2*M_PI;  phi+=linfo->delPhi) {
+       for(psi=0; psi<2*M_PI;  psi+=linfo->delPsi) {
+       for(r=0; r<=linfo->radius; r+=linfo->delRadius) {
+               
+               countPos++;
+               scorePos += d;
+       }
+       // Edge Check
+               scoreNeg += d;
+               countNeg++;
+       }
+
+       }
+       }
+       k0 =  (int)(linfo->x+0.5) + (int)(linfo->y+0.5)*in->HeaderN.x + (int)(linfo->z+0.5)*in->HeaderN.x*in->HeaderN.y; 
+       *data = (0.8*scorePos/countPos - 0.2*scoreNeg/countNeg);
 }
 
+
index 575433d..d65fcc9 100755 (executable)
@@ -32,7 +32,7 @@ Options:
     [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode
 ----- Additional Usage -----
 0: Cylinder with radius and length
-1: Half disk with radius and length(thickness)
+1: Disk with radius and length(thickness)
 </PRE>
 </BODY>
 </HTML>
index 2658be2..afbdf7d 100755 (executable)
@@ -3,7 +3,7 @@ include ../../../Config/Define.inc
 include ../../../../Config/Define.inc
 include ../../../../../Config/Define.inc
 
-all: help exec
+all: help exec exec2
 
 help:
        @echo "----- Help Message Check -----"
@@ -12,10 +12,19 @@ help:
 exec:
        @echo "----- Execution Check -----"
        time ../$(OSTYPE)/$(OBJECTNAME) -i data/test-sylinder.bin -o data/test-sylinder.syl -r 3 5 1 -l 5 5 1 -Phi 0 359 45 -Theta  0 179 45 -Psi 0 0 90 -m 0 -thres 0.5 
+
+exec2:
+       time ../$(OSTYPE)/$(OBJECTNAME) -i data/test-disk.bin -o data/test-disk.disk -r 6 6 1 -l 3 5 1 -Phi 0 359 45 -Theta  0 179 45 -Psi 0 0 90 -m 1 -thres 0.5 
+       @echo "----- Calc check -----"          
+
+exec3:
+       time ../$(OSTYPE)/$(OBJECTNAME) -i data/test-disk.bin -o data/test-disk.disk -r 6 6 1 -l 3 5 1 -Phi 0 359 45 -Theta  0 179 45 -Psi 0 0 90 -m 2 -thres 0.5 
        @echo "----- Calc check -----"          
 
 init:
        mrcImageModelCreate -o data/test-sylinder.mrc -nx 32 -ny 32 -nz 32 -r 3 -l 20 -m 8
        mrcImageBinalization -i data/test-sylinder.mrc -o data/test-sylinder.bin -m 32
+       mrcImageModelCreate -o data/test-disk.mrc -nx 32 -ny 32 -nz 32 -r 10 -l 3 -m 8
+       mrcImageBinalization -i data/test-disk.mrc -o data/test-disk.bin -m 32
 
 clean:
index a55ae0e..b9f558b 100755 (executable)
@@ -3,7 +3,7 @@ include ../../../Config/Define.inc
 include ../../../../Config/Define.inc
 include ../../../../../Config/Define.inc
 
-all: help exec
+all: help exec exec2
 
 help:
        @echo "----- Help Message Check -----"
@@ -14,6 +14,11 @@ exec:
        time ../$(OSTYPE)/$(OBJECTNAME) -i data/test.mrc2d3d -o data/test.mrc2d3d.mrc3d -Double -CounterThreshold 1 -WeightMode 3 -m 1 -InterpolationMode 2 -DoubleCounter data/test.mrc2d3d.mrc3d.counter 2> /dev/null
        time ~/Eos/bin/$(OSTYPE)/$(OBJECTNAME) -i data/test.mrc2d3d -o data/test.mrc2d3d.mrc3d -Double -CounterThreshold 1 -WeightMode 3 -m 1 -InterpolationMode 2 -DoubleCounter data/test.mrc2d3d.mrc3d.counter 2> /dev/null
 
+exec2:
+       @echo "----- Execution Check 2-----"
+       time ../$(OSTYPE)/$(OBJECTNAME) -i data/test2.mrc2d3d -o data/test2.mrc2d3d.mrc3d -Double -CounterThreshold 1 -WeightMode 3 -m 1 -InterpolationMode 2 -DoubleCounter data/test2.mrc2d3d.mrc3d.counter 2> /dev/null
+       time ~/Eos/bin/$(OSTYPE)/$(OBJECTNAME) -i data/test2.mrc2d3d -o data/test2.mrc2d3d.mrc3d -Double -CounterThreshold 1 -WeightMode 3 -m 1 -InterpolationMode 2 -DoubleCounter data/test2.mrc2d3d.mrc3d.counter 2> /dev/null
+
 exec-pthread:
        @echo "----- Execution Check -----"
        time ../$(OSTYPE)/$(OBJECTNAME) -i data/test.mrc2d3d -o data/test.mrc2d3d.mrc3d-pthread -Double -CounterThreshold 1 -WeightMode 3 -m 1 -InterpolationMode 2 -DoubleCounter data/test.mrc2d3d.mrc3d.counter-pthread -pthread 8 
@@ -55,4 +60,23 @@ prepare2:
        pdb2mrc -i data/1vomTrans.pdb -o data/test2.mrc3d -nx 81 -ny 81 -nz 81 -dx 2.5 -dy 2.5 -dz 2.5 -Sx -100 -Sy -100 -Sz -100 -sig 2.5
        pdb2mrc2d -i data/1vomTrans.pdb -o data/test2.mrc2d -d 2.5 2.5 -s -100 -100 -Rot 30 30 -n 81 81 -O data/test2.mrc2d3d -m 1 -sig 2.5 
 
+prepare-all:
+       # GC: 6.727136e+01    3.631518e+01   -2.983928e+01
+       pdb2mrc   -i data/1vomTrans.pdb -o data/test00.mrc3d -nx 10 -ny 10 -nz 10 -dx 20 -dy 20 -dz 20 -Sx -100 -Sy -100 -Sz -100 -sig 2.5 
+       pdb2mrc2d -i data/1vomTrans.pdb -o data/test00.mrc2d -d 20 20     -s -100 -100 -Rot 10 10 -n 10 10 -O data/test00.mrc2d3d -m 1 -sig 2.5 
+       pdb2mrc   -i data/1vomTrans.pdb -o data/test01.mrc3d -nx 20 -ny 20 -nz 20 -dx 10 -dy 10 -dz 20 -Sx -100 -Sy -100 -Sz -100 -sig 2.5 
+       pdb2mrc2d -i data/1vomTrans.pdb -o data/test01.mrc2d -d 10 10     -s -100 -100 -Rot 10 10 -n 20 20 -O data/test01.mrc2d3d -m 1 -sig 2.5 
+       pdb2mrc   -i data/1vomTrans.pdb -o data/test02.mrc3d -nx 40 -ny 40 -nz 40 -dx 5 -dy 5 -dz 5 -Sx -100 -Sy -100 -Sz -100 -sig 2.5 
+       pdb2mrc2d -i data/1vomTrans.pdb -o data/test02.mrc2d -d 5 5       -s -100 -100 -Rot 10 10 -n 40 40 -O data/test02.mrc2d3d -m 1 -sig 2.5 
+       pdb2mrc   -i data/1vomTrans.pdb -o data/test03.mrc3d -nx 80 -ny 80 -nz 80 -dx 2.5 -dy 2.5 -dz 2.5 -Sx -100 -Sy -100 -Sz -100 -sig 2.5 
+       pdb2mrc2d -i data/1vomTrans.pdb -o data/test03.mrc2d -d 2.5 2.5   -s -100 -100 -Rot 10 10 -n 80 80 -O data/test03.mrc2d3d -m 1 -sig 2.5
+       pdb2mrc   -i data/1vomTrans.pdb -o data/test04.mrc3d -nx 160 -ny 160 -nz 160 -dx 1.25 -dy 1.25 -dz 1.25 -Sx -100 -Sy -100 -Sz -100 -sig 2.5 
+       pdb2mrc2d -i data/1vomTrans.pdb -o data/test04.mrc2d -d 1.25 1.25 -s -100 -100 -Rot 10 10 -n 160 160 -O data/test04.mrc2d3d -m 1 -sig 2.5
+
+exec-all:
+       time ../$(OSTYPE)/$(OBJECTNAME) -i data/test00.mrc2d3d -o data/test00.mrc2d3d.mrc3d -m 1 -InterpolationMode 2 -single 1 2> /dev/null
+       time ../$(OSTYPE)/$(OBJECTNAME) -i data/test01.mrc2d3d -o data/test01.mrc2d3d.mrc3d -m 1 -InterpolationMode 2 -single 1 2> /dev/null
+       time ../$(OSTYPE)/$(OBJECTNAME) -i data/test02.mrc2d3d -o data/test02.mrc2d3d.mrc3d -m 1 -InterpolationMode 2 -single 1 2> /dev/null
+       time ../$(OSTYPE)/$(OBJECTNAME) -i data/test03.mrc2d3d -o data/test03.mrc2d3d.mrc3d -m 1 -InterpolationMode 2 -single 1 2> /dev/null
+       time ../$(OSTYPE)/$(OBJECTNAME) -i data/test04.mrc2d3d -o data/test04.mrc2d3d.mrc3d -m 1 -InterpolationMode 2 -single 1 2> /dev/null
 clean: