OSDN Git Service

modified: bin/wish/Display2/tclIndex v2.3.35p0238
authorTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Sat, 13 Feb 2016 04:16:45 +0000 (13:16 +0900)
committerTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Sat, 13 Feb 2016 04:16:45 +0000 (13:16 +0900)
modified:   include/lmrcImageConnectivityNumberCalc.h
modified:   include/lmrcImageFeatureCalc.h
modified:   lib/tclIndex
modified:   src/Objects/DataManip/mrcImage/src/lmrcFFTCentralSection.c

modified:   src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.h
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageDistanceConversion.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.h

modified:   src/Objects/DataManip/mrcImageShape/inc/mrcImageShape.h
modified:   src/Objects/DataManip/mrcImageShape/src/lmrcImageShapeSearch.c

new file:   src/Tools/mrcImage/mrcImageDistanceConversion/src/test/Makefile
new file:   src/Tools/mrcImage/mrcImageDistanceConversion/src/test/data

14 files changed:
bin/wish/Display2/tclIndex
include/lmrcImageConnectivityNumberCalc.h
include/lmrcImageFeatureCalc.h
lib/tclIndex
src/Objects/DataManip/mrcImage/src/lmrcFFTCentralSection.c
src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.c
src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.h
src/Objects/DataManip/mrcImage/src/lmrcImageDistanceConversion.c
src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.c
src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.h
src/Objects/DataManip/mrcImageShape/inc/mrcImageShape.h
src/Objects/DataManip/mrcImageShape/src/lmrcImageShapeSearch.c
src/Tools/mrcImage/mrcImageDistanceConversion/src/test/Makefile [new file with mode: 0644]
src/Tools/mrcImage/mrcImageDistanceConversion/src/test/data [new symlink]

index dfabbae..685c0e6 100644 (file)
@@ -53,6 +53,7 @@ set auto_index(menuMultiRoiOKCommand) [list source [file join $dir Display2MenuR
 set auto_index(menuMultiRoiAllDeleteCommand) [list source [file join $dir Display2MenuROI.wish]]
 set auto_index(menuMultiRoiDeleteCommand) [list source [file join $dir Display2MenuROI.wish]]
 set auto_index(menuEditCreate) [list source [file join $dir Display2MenuROI.wish]]
+set auto_index(fft2dCmd) [list source [file join $dir fft2dCmd.wish]]
 set auto_index(layerLineRecreate) [list source [file join $dir LayerLineUtil.wish]]
 set auto_index(layerLineCreate) [list source [file join $dir LayerLineUtil.wish]]
 set auto_index(layerLineClear) [list source [file join $dir LayerLineUtil.wish]]
@@ -135,4 +136,3 @@ set auto_index(sectionClearAll) [list source [file join $dir SectionUtil.wish]]
 set auto_index(sectionClear) [list source [file join $dir SectionUtil.wish]]
 set auto_index(sectionChange) [list source [file join $dir SectionUtil.wish]]
 set auto_index(unitCellRecreate) [list source [file join $dir UnitCell.wish]]
-set auto_index(fft2dCmd) [list source [file join $dir fft2dCmd.wish]]
index 7b32372..981ddcb 100644 (file)
 #include <stdio.h>
 #include "mrcImage.h"
 
-#define NEIGHBORHOOD (9)
+#define NEIGHBORHOOD   (9)
+#define NEIGHBORHOOD3D (27)
 #define Z_LINE (3)
 
 extern void lmrcImageConnectivityNumberCalc(mrcImage* in, mrcImage* out, int mode, int form,int invers);
 extern void lmrcImageConnectivityNumberCalc_ver2D(mrcImage* in, mrcImage* out, int mode, int form,int invers);
 extern void lmrcImageConnectivityNumberCalc_ver3D(mrcImage* in, mrcImage* out, int mode, int form);
 extern void mrcNinePixelDataGet(mrcImage* in,mrcImage* out,mrcImageParaTypeReal x,mrcImageParaTypeReal y,mrcImageParaTypeReal z,double data[]);
+extern void mrc27PixelDataGet(mrcImage* in, mrcImageParaTypeReal x,mrcImageParaTypeReal y,mrcImageParaTypeReal z,double data[]);
 
 #endif
index 980644f..46cc9a0 100644 (file)
@@ -82,8 +82,8 @@ typedef struct lmrcImageFeatureEach {
        double complexity;
 
        // Complexity 
-       int flagDiameter;
-       double diameter;
+       int flagRadius;
+       double radius;
        
        // PCA
        float lamda[3];
@@ -125,7 +125,7 @@ extern void lmrcImageSurfaceAreaCalcUsage(FILE* fpt);
 
 extern void lmrcImageCircularityCalc(lmrcImageFeatureList* linfo, int mode);
 extern void lmrcImageComplexityCalc(lmrcImageFeatureList* linfo, int mode);
-extern void lmrcImageDiameterCalc(lmrcImageFeatureList* linfo, int mode);
+extern void lmrcImageRadiusCalc(lmrcImageFeatureList* linfo, int mode);
 
 extern int lmrcImageChainCodeSearch(int* chain, mrcImageParaTypeRealCoord* next, double* dL, mrcImage* in, mrcImageParaTypeRealCoord ori, int chainCodeStart, int mode);
 
index 966373d..f808d10 100644 (file)
@@ -6,20 +6,6 @@
 # element name is the name of a command and the value is
 # a script that loads the command.
 
-set auto_index(Canvas) [list source [file join $dir Canvas.wish]]
-set auto_index(scrolledCanvas) [list source [file join $dir Canvas.wish]]
-set auto_index(colormapSet) [list source [file join $dir Colormap.wish]]
-set auto_index(CommandEntry) [list source [file join $dir CommandEntry.wish]]
-set auto_index(CommandEntryWithSelection) [list source [file join $dir CommandEntry.wish]]
-set auto_index(CommandEntryWithSelectionEntrySet) [list source [file join $dir CommandEntry.wish]]
-set auto_index(CommandEntryWithUpDown) [list source [file join $dir CommandEntry.wish]]
-set auto_index(CommandEntryWithUpDownUp) [list source [file join $dir CommandEntry.wish]]
-set auto_index(CommandEntryWithUpDownDown) [list source [file join $dir CommandEntry.wish]]
-set auto_index(CheckButtonsCreateWithPack) [list source [file join $dir VariousButton.wish]]
-set auto_index(RadioButtonsCreateWithPack) [list source [file join $dir VariousButton.wish]]
-set auto_index(RadioButtonsCreateWithPackWithCommand) [list source [file join $dir VariousButton.wish]]
-set auto_index(RadioButtonsCreate) [list source [file join $dir VariousButton.wish]]
-set auto_index(CheckButtonsCreate) [list source [file join $dir VariousButton.wish]]
 set auto_index(Blt_ActiveLegend) [list source [file join $dir bltGraph.wish]]
 set auto_index(Blt_Crosshairs) [list source [file join $dir bltGraph.wish]]
 set auto_index(Blt_ZoomStack) [list source [file join $dir bltGraph.wish]]
@@ -47,31 +33,16 @@ set auto_index(::blt::SetZoomPoint) [list source [file join $dir bltGraph.wish]]
 set auto_index(::blt::Box) [list source [file join $dir bltGraph.wish]]
 set auto_index(Blt_PostScriptDialog) [list source [file join $dir bltGraph.wish]]
 set auto_index(::blt::ResetPostScript) [list source [file join $dir bltGraph.wish]]
+set auto_index(Canvas) [list source [file join $dir Canvas.wish]]
+set auto_index(scrolledCanvas) [list source [file join $dir Canvas.wish]]
+set auto_index(colormapSet) [list source [file join $dir Colormap.wish]]
+set auto_index(CommandEntry) [list source [file join $dir CommandEntry.wish]]
+set auto_index(CommandEntryWithSelection) [list source [file join $dir CommandEntry.wish]]
+set auto_index(CommandEntryWithSelectionEntrySet) [list source [file join $dir CommandEntry.wish]]
+set auto_index(CommandEntryWithUpDown) [list source [file join $dir CommandEntry.wish]]
+set auto_index(CommandEntryWithUpDownUp) [list source [file join $dir CommandEntry.wish]]
+set auto_index(CommandEntryWithUpDownDown) [list source [file join $dir CommandEntry.wish]]
 set auto_index(eosCommandExecute) [list source [file join $dir commandUtil.wish]]
-set auto_index(defaultLoad) [list source [file join $dir defaultLoad.wish]]
-set auto_index(defaultLoadProcTemplate) [list source [file join $dir defaultLoad.wish]]
-set auto_index(fileSelect) [list source [file join $dir fileSelect.wish]]
-set auto_index(fileSelectResources) [list source [file join $dir fileSelect.wish]]
-set auto_index(fileSelectBindings) [list source [file join $dir fileSelect.wish]]
-set auto_index(fileSelectList) [list source [file join $dir fileSelect.wish]]
-set auto_index(fileSelectOK) [list source [file join $dir fileSelect.wish]]
-set auto_index(fileSelectCancel) [list source [file join $dir fileSelect.wish]]
-set auto_index(fileSelectClick) [list source [file join $dir fileSelect.wish]]
-set auto_index(fileSelectTake) [list source [file join $dir fileSelect.wish]]
-set auto_index(fileSelectComplete) [list source [file join $dir fileSelect.wish]]
-set auto_index(seqFileTemplateChange) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelect) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectBindings) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectList) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileTemplateSelectOK) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileTemplateSelectComplete) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectOK) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectComplete) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectPrev) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectNext) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectCancel) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectClick) [list source [file join $dir seqFileSelect.wish]]
-set auto_index(seqFileSelectTake) [list source [file join $dir seqFileSelect.wish]]
 set auto_index(::CTF::Init) [list source [file join $dir ctfInfo.wish]]
 set auto_index(::CTF::Win) [list source [file join $dir ctfInfo.wish]]
 set auto_index(::CTF::ctfInfoGraphInfoFrameCreate) [list source [file join $dir ctfInfo.wish]]
@@ -103,6 +74,8 @@ set auto_index(::CTF::ctfInfoCTFCalculation) [list source [file join $dir ctfInf
 set auto_index(::CTF::ctfInfoScatteringCalc) [list source [file join $dir ctfInfo.wish]]
 set auto_index(::CTF::ctfInfoListGet) [list source [file join $dir ctfInfo.wish]]
 set auto_index(::CTF::ctfInfoAppend) [list source [file join $dir ctfInfo.wish]]
+set auto_index(defaultLoad) [list source [file join $dir defaultLoad.wish]]
+set auto_index(defaultLoadProcTemplate) [list source [file join $dir defaultLoad.wish]]
 set auto_index(fileSaveSureWin) [list source [file join $dir fileSave.wish]]
 set auto_index(fileSaveSureOK) [list source [file join $dir fileSave.wish]]
 set auto_index(fileSaveSureCancel) [list source [file join $dir fileSave.wish]]
@@ -116,6 +89,15 @@ set auto_index(fileSaveCancel) [list source [file join $dir fileSave.wish]]
 set auto_index(fileSaveClick) [list source [file join $dir fileSave.wish]]
 set auto_index(fileSaveTake) [list source [file join $dir fileSave.wish]]
 set auto_index(fileSaveComplete) [list source [file join $dir fileSave.wish]]
+set auto_index(fileSelect) [list source [file join $dir fileSelect.wish]]
+set auto_index(fileSelectResources) [list source [file join $dir fileSelect.wish]]
+set auto_index(fileSelectBindings) [list source [file join $dir fileSelect.wish]]
+set auto_index(fileSelectList) [list source [file join $dir fileSelect.wish]]
+set auto_index(fileSelectOK) [list source [file join $dir fileSelect.wish]]
+set auto_index(fileSelectCancel) [list source [file join $dir fileSelect.wish]]
+set auto_index(fileSelectClick) [list source [file join $dir fileSelect.wish]]
+set auto_index(fileSelectTake) [list source [file join $dir fileSelect.wish]]
+set auto_index(fileSelectComplete) [list source [file join $dir fileSelect.wish]]
 set auto_index(fileCanBeOverwritten) [list source [file join $dir fileUtil.wish]]
 set auto_index(relativePathGet) [list source [file join $dir fileUtil.wish]]
 set auto_index(bltResetBindings) [list source [file join $dir graphFeature.wish]]
@@ -137,5 +119,23 @@ set auto_index(bltZoomX) [list source [file join $dir graphFeature.wish]]
 set auto_index(SetZoom) [list source [file join $dir graphFeature.wish]]
 set auto_index(SetZoomX) [list source [file join $dir graphFeature.wish]]
 set auto_index(SetPrint) [list source [file join $dir graphFeature.wish]]
+set auto_index(seqFileTemplateChange) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelect) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectBindings) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectList) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileTemplateSelectOK) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileTemplateSelectComplete) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectOK) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectComplete) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectPrev) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectNext) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectCancel) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectClick) [list source [file join $dir seqFileSelect.wish]]
+set auto_index(seqFileSelectTake) [list source [file join $dir seqFileSelect.wish]]
 set auto_index(NotSupportedCommand) [list source [file join $dir tclUtil.wish]]
 set auto_index(debugPrint) [list source [file join $dir tclUtil.wish]]
+set auto_index(CheckButtonsCreateWithPack) [list source [file join $dir VariousButton.wish]]
+set auto_index(RadioButtonsCreateWithPack) [list source [file join $dir VariousButton.wish]]
+set auto_index(RadioButtonsCreateWithPackWithCommand) [list source [file join $dir VariousButton.wish]]
+set auto_index(RadioButtonsCreate) [list source [file join $dir VariousButton.wish]]
+set auto_index(CheckButtonsCreate) [list source [file join $dir VariousButton.wish]]
index adac909..741606d 100644 (file)
@@ -16,6 +16,118 @@ static char __sccs_id[] = "%Z%lmrcFFTCentralSection ver%I%; Date:%D% %Z%";
 
 #include "Memory.h"
 #include "./lmrcFFTCentralSection.h"
+void
+lmrcImageFFTRhoFilter(mrcImage* volFT, mrcImage* count, int mode)
+{
+       mrcImageParaTypeReal X3d, Y3d, Z3d;
+       double re3d, im3d, sum;
+
+       for(Z3d = -volFT->HeaderN.z/2.0; Z3d <  volFT->HeaderN.z/2.0; Z3d++) { 
+       for(Y3d = -volFT->HeaderN.y/2.0; Y3d <  volFT->HeaderN.y/2.0; Y3d++) { 
+       for(X3d = 0;                     X3d <= volFT->HeaderN.x/2.0; X3d++) { 
+               mrcPixelDataGet(volFT, X3d, Y3d, Z3d, &re3d, mrcPixelRePart, linfo->InterpMode);
+               mrcPixelDataGet(volFT, X3d, Y3d, Z3d, &im3d, mrcPixelImPart, linfo->InterpMode);
+               mrcPixelDataGet(count, X3d, Y3d, Z3d, &sum,  mrcPixelRePart, linfo->InterpMode);
+               if(0<sum) {
+                       re3d /= sum;
+                       im3d /= sum;
+               } else {
+                       re3d = 0;
+                       im3d = 0;
+               }
+               mrcPixelDataSet(volFT, X3d, Y3d, Z3d, re3d, mrcPixelRePart);
+               mrcPixelDataSet(volFT, X3d, Y3d, Z3d, im3d, mrcPixelImPart);
+       }
+       }
+       }
+}
+
+void
+lmrcImageFFTCentralSectionPut(mrcImage* volFT, mrcImage* count, mrcImage* template3D, mrcImage* in, double probablity, lmrcFFTCentralSectionInfo* linfo, int* c, int mode)
+{
+       mrcImageParaTypeReal X2d, Y2d, Z2d;
+       mrcImageParaTypeReal X3d, Y3d, Z3d;
+       int i, n, k0;
+       Matrix3D mat;
+       double re3d, im3d;
+       double re3d0, im3d0;
+       double re2d, im2d;
+       double re2d0, im2d0;
+       double phaseShift;
+       mrcImage* volFT;
+
+
+       if(c==0) {
+               volFT->Header = template3D->Header;
+               count->Header = template3D->Header;
+               mrcInit(volFT, NULL);
+               mrcInit(count, NULL);
+       }
+       c++;
+
+       lmrcImageFFTCenterChange(volFT, 0);
+
+       matrix3DRotationAntiSetFollowingEulerAngle(mat, linfo->EulerMode, linfo->Rot1, linfo->Rot2, linfo->Rot3, MATRIX_3D_MODE_INITIALIZE);    
+
+       for(Y2d = -out->HeaderN.y/2.0; Y2d <  out->HeaderN.y/2.0; Y2d++) { 
+       for(X2d = 0;                   X2d <= out->HeaderN.x/2.0; X2d++) { 
+               X3d = mat[0][0]*X2d + mat[1][0]*Y2d; // + mat[2][0]*Z2d(0);
+               Y3d = mat[0][1]*X2d + mat[1][1]*Y2d; // + mat[2][1]*Z2d(0); 
+               Z3d = mat[0][2]*X2d + mat[1][2]*Y2d; // + mat[2][2]*Z2d(0);
+
+               if(-volFT->HeaderN.x/2 < X3d && X3d < volFT->HeaderN.x/2 
+                &&-volFT->HeaderN.y/2 < Y3d && Y3d < volFT->HeaderN.y/2 
+                &&-volFT->HeaderN.z/2 < Z3d && Z3d < volFT->HeaderN.z/2) {
+                       mrcPixelDataGet(volFT, X3d, Y3d, Z3d, &re3d, mrcPixelRePart, linfo->InterpMode);
+                       mrcPixelDataGet(volFT, X3d, Y3d, Z3d, &im3d, mrcPixelImPart, linfo->InterpMode);
+               } else {
+                       re3d = 0;
+                       im3d = 0;
+               }
+               phaseShift = 2*M_PI*(-linfo->TransX*X2d/out->HeaderN.x - linfo->TransY*Y2d/out->HeaderN.y);                     
+
+               re2d = re3d*cos(phaseShift) - im3d*sin(phaseShift);
+               im2d = re3d*sin(phaseShift) + im3d*cos(phaseShift);
+       
+               DEBUGPRINT5("coord: %f %f <- %f %f %f\n", X2d, Y2d, X3d, Y3d, Z3d); 
+               DEBUGPRINT4("data:  %f %f <- %f %f \n", re2d, im2d, re3d, im3d); 
+               DEBUGPRINT5("3d: %f %f at %f %f %f\n", re3d, im3d, X3d, Y3d, Z3d);
+               DEBUGPRINT4("2d: %f %f at %f %f \n", re2d, im2d, X2d, Y2d);
+
+               mrcPixelDataGet(in, X2d0, Y2d0, 0, &re2d0, mrcPixelRePart, linfo->InterpMode);
+               mrcPixelDataGet(in, X2d0, Y2d0, 0, &im2d0, mrcPixelImPart, linfo->InterpMode);
+
+               re3d = re2d+re2d0*probability;
+               im3d = im2d+im2d0*probability;
+
+               re3d0 = re3d*cos(-phaseShift) - im3d*sin(-phaseShift);
+               im3d0 = re3d*sin(-phaseShift) + im3d*cos(-phaseShift);
+
+               if(-volFT->HeaderN.x/2 < X3d && X3d < volFT->HeaderN.x/2 
+                &&-volFT->HeaderN.y/2 < Y3d && Y3d < volFT->HeaderN.y/2 
+                &&-volFT->HeaderN.z/2 < Z3d && Z3d < volFT->HeaderN.z/2) {
+                       mrcPixelDataSet(volFT, X3d, Y3d, Z3d, re3d0, mrcPixelRePart);
+                       mrcPixelDataSet(volFT, X3d, Y3d, Z3d, im3d0, mrcPixelImPart);
+               } 
+
+               if(-volFT->HeaderN.x/2 < X3d && X3d < volFT->HeaderN.x/2 
+                &&-volFT->HeaderN.y/2 < Y3d && Y3d < volFT->HeaderN.y/2 
+                &&-volFT->HeaderN.z/2 < Z3d && Z3d < volFT->HeaderN.z/2) {
+                       mrcPixelDataGet(counter, X3d, Y3d, Z3d, &re3d0, mrcPixelRePart, linfo->InterpMode);
+                       mrcPixelDataSet(counter, X3d, Y3d, Z3d, re3d0+1, mrcPixelRePart);
+               } 
+               }
+       }
+       }
+
+       lmrcImageFFTCenterChange(volFT, 0);     
+       lmrcImageFFTCenterChange(out, 0);       
+
+       if(!IsFT(volume, "lmrcFFTCentralSectionGet", 0)) {
+               mrcImageFree(volFT, 0);
+               memoryFree(volFT);
+       }
+}
 
 void 
 lmrcFFTCentralSectionGet(mrcImage* out, mrcImage* template, mrcImage* volume, lmrcFFTCentralSectionInfo* linfo, int mode)
index 664da7a..a4ab246 100755 (executable)
@@ -163,6 +163,87 @@ lmrcImageConnectivityNumberCalc_ver3D(mrcImage* in,mrcImage* out,int mode,int fo
 }
 
 void
+mrc27PixelDataGet(mrcImage* in, mrcImageParaTypeReal x, mrcImageParaTypeReal y, mrcImageParaTypeReal z, double data[])
+{
+
+       mrcImageParaTypeReal x0 = x , y0 = y , z0 = z ;
+       int i;
+
+       for( i = 0 ; i < NEIGHBORHOOD3D ; i++ ){
+               if( ( x0 >= -0.5 && x0 < in->HeaderN.x-0.5 ) 
+                && ( y0 >= -0.5 && y0 < in->HeaderN.y-0.5 ) 
+                && ( z0 >= -0.5 && z0 < in->HeaderN.z-0.5 ) ){         
+                       mrcPixelDataGet(in , x0, y0, z0, &data[i], mrcPixelRePart,mrcPixelHowNearest);
+               }else{
+                       //mrcPixelDataGet(in , x , y , z, &data[i], mrcPixelRePart,mrcPixelHowNearest);
+                       data[i]=0.0;
+               }
+               
+               switch(i) {
+                       case 0:
+                               x0 += 1;
+                               break;
+                       case 1:
+                               x0  = x;
+                               y0 += 1;
+                               break;
+                       case 2:
+                               y0  = y;
+                               z0 += 1;
+                               break;
+                       case 3:
+                               z0  = z;
+                               x0 -= 1;
+                               break;
+                       case 4:
+                               x0 =  x;
+                               y0 -= 1;
+                               break;
+                       case 5:
+                               y0 =  y;
+                               z0 -= 1;
+                               break;
+                       case 6:
+                               z  =  z;
+                               x0 += 1;
+                               y0 += 1;
+                               break;
+                       case 7:
+                               x0 =  x;
+                               z0 += 1;
+                               break;
+                       case 8:
+                               y0 =  y;
+                               x0 += 1;
+                               break;
+                       case 9:
+                               z0 =  z;
+                               x0 -= 2;
+                               y0 += 1;
+                               break;
+                       case 10:
+                       case 11:
+                       case 12:
+                       case 13:
+                       case 14:
+                       case 15:
+                       case 16:
+                       case 17:
+                       case 18:
+                       case 19:
+                       case 20:
+                       case 21:
+                       case 22:
+                       case 23:
+                       case 24:
+                       case 25:
+                       case 26:
+                               break;
+               }
+       }
+}
+
+void
 mrcNinePixelDataGet(mrcImage* in,mrcImage* out,mrcImageParaTypeReal x,mrcImageParaTypeReal y,mrcImageParaTypeReal z,double data[])
 {
        mrcImageParaTypeReal x0 = x , y0 = y , z0 = z ;
@@ -176,7 +257,9 @@ mrcNinePixelDataGet(mrcImage* in,mrcImage* out,mrcImageParaTypeReal x,mrcImagePa
 
        for( i = 0 ; i < NEIGHBORHOOD ; i++ ){
        
-               if( ( x0 >= 0 && x0 < in->HeaderN.x ) && ( y0 >= 0 && y0 < in->HeaderN.y ) && ( z0 >= 0 && z0 < in->HeaderN.z ) ){              
+               if( ( x0 >= -0.5 && x0 < in->HeaderN.x-0.5 ) 
+                && ( y0 >= -0.5 && y0 < in->HeaderN.y-0.5 ) 
+                && ( z0 >= -0.5 && z0 < in->HeaderN.z-0.5 ) ){         
                        mrcPixelDataGet(in , x0, y0, z0, &data[i], mrcPixelRePart,mrcPixelHowNearest);
                }else{
                        //mrcPixelDataGet(in , x , y , z, &data[i], mrcPixelRePart,mrcPixelHowNearest);
index 7b32372..981ddcb 100755 (executable)
 #include <stdio.h>
 #include "mrcImage.h"
 
-#define NEIGHBORHOOD (9)
+#define NEIGHBORHOOD   (9)
+#define NEIGHBORHOOD3D (27)
 #define Z_LINE (3)
 
 extern void lmrcImageConnectivityNumberCalc(mrcImage* in, mrcImage* out, int mode, int form,int invers);
 extern void lmrcImageConnectivityNumberCalc_ver2D(mrcImage* in, mrcImage* out, int mode, int form,int invers);
 extern void lmrcImageConnectivityNumberCalc_ver3D(mrcImage* in, mrcImage* out, int mode, int form);
 extern void mrcNinePixelDataGet(mrcImage* in,mrcImage* out,mrcImageParaTypeReal x,mrcImageParaTypeReal y,mrcImageParaTypeReal z,double data[]);
+extern void mrc27PixelDataGet(mrcImage* in, mrcImageParaTypeReal x,mrcImageParaTypeReal y,mrcImageParaTypeReal z,double data[]);
 
 #endif
index 6d64a2a..4d28a9d 100755 (executable)
 #include "lmrcImageConnectivityNumberCalc.h"
 
 void
-lmrcImageDistanceConversion(mrcImage* in,mrcImage* out,int mode,int form)
+lmrcImageDistanceConversion(mrcImage* in,mrcImage* out, int mode, int form)
 {
-       if( (mode == lmrcImageDistanceConversionMode4Neibour        || mode == 4) && in->HeaderN.z == 1) {
+       if( (mode == lmrcImageDistanceConversionMode4Neibour        || mode ==  4)) {
                lmrcImageDistanceConversion_4Neighborhood(in,out);
-       } else if( (mode == lmrcImageDistanceConversionMode8Neibour || mode == 8) && in->HeaderN.z == 1) {
+       } else if( (mode == lmrcImageDistanceConversionMode8Neibour || mode ==  8)) {
                lmrcImageDistanceConversion_8Neighborhood(in,out);
-       } else if( (mode ==lmrcImageDistanceConversionMode6Neibour  || mode == 6) && 1 < in->HeaderN.z){
+       } else if( (mode ==lmrcImageDistanceConversionMode6Neibour  || mode ==  6)){
                lmrcImageDistanceConversion_6Neighborhood(in,out);
-       } else if( (mode ==lmrcImageDistanceConversionMode18Neibour || mode == 18) && 1 < in->HeaderN.z){
+       } else if( (mode ==lmrcImageDistanceConversionMode18Neibour || mode == 18)){
                lmrcImageDistanceConversion_18Neighborhood(in,out);
-       } else if( (mode ==lmrcImageDistanceConversionMode26Neibour || mode == 26) && 1 < in->HeaderN.z){ 
+       } else if( (mode ==lmrcImageDistanceConversionMode26Neibour || mode == 26)){ 
                lmrcImageDistanceConversion_26Neighborhood(in,out);
        } else {
                fprintf(stderr, "Not suported: %d\n", mode);
@@ -47,6 +47,115 @@ lmrcImageDistanceConversion(mrcImage* in,mrcImage* out,int mode,int form)
        }       
 }      
 
+
+/*
+       26-neighbor
+*/
+void
+lmrcImageDistanceConversion_26Neighborhood(mrcImage* in, mrcImage* out)
+{
+       mrcImageParaTypeReal x, y, z;
+       mrcImageParaTypeReal x_max, y_max, z_max;
+       int n = 0;
+       double data[28];
+       double min;
+
+       out->Header = in->Header;
+       mrcInit(out,NULL);
+       for(z=0; z < in->HeaderN.z; z++){
+       for(y=0; y < in->HeaderN.y; y++){
+       for(x=0; x < in->HeaderN.x; x++){
+               mrcPixelDataGet(in, x, y, z, &data[0], mrcPixelRePart, mrcPixelHowNearest);             
+               if(data[0]==1) {
+               } else if(data[0]==0) {
+                       min = 0.0;
+               } else {
+               }
+               mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
+       }
+       }
+       }
+
+       for(z=in->HeaderN.z-1; 0<=z; z--){
+       for(y=in->HeaderN.y-1; 0<=y; y--){
+       for(x=in->HeaderN.x-1; 0<=x; x--){ 
+       }
+       }
+       }
+}
+
+/*
+       18-neighbor
+*/
+void
+lmrcImageDistanceConversion_18Neighborhood(mrcImage* in, mrcImage* out)
+{
+       mrcImageParaTypeReal x, y, z;
+       mrcImageParaTypeReal x_max, y_max, z_max;
+       int n = 0;
+       double data[28];
+       double min;
+
+       out->Header = in->Header;
+       mrcInit(out,NULL);
+       for(z=0; z < in->HeaderN.z; z++){
+       for(y=0; y < in->HeaderN.y; y++){
+       for(x=0; x < in->HeaderN.x; x++){
+               mrcPixelDataGet(in, x, y, z, &data[0], mrcPixelRePart, mrcPixelHowNearest);             
+               if(data[0]==1) {
+               } else if(data[0]==0) {
+                       min = 0.0;
+               } else {
+               }
+               mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
+       }
+       }
+       }
+
+       for(z=in->HeaderN.z-1; 0<=z; z--){
+       for(y=in->HeaderN.y-1; 0<=y; y--){
+       for(x=in->HeaderN.x-1; 0<=x; x--){ 
+       }
+       }
+       }
+}
+
+/*
+       6-neighbor
+*/
+void
+lmrcImageDistanceConversion_6Neighborhood(mrcImage* in, mrcImage* out)
+{
+       mrcImageParaTypeReal x, y, z;
+       mrcImageParaTypeReal x_max, y_max, z_max;
+       int n = 0;
+       double data[28];
+       double min;
+
+       out->Header = in->Header;
+       mrcInit(out,NULL);
+       for(z=0; z < in->HeaderN.z; z++){
+       for(y=0; y < in->HeaderN.y; y++){
+       for(x=0; x < in->HeaderN.x; x++){
+               mrcPixelDataGet(in, x, y, z, &data[0], mrcPixelRePart, mrcPixelHowNearest);             
+               if(data[0]==1) {
+               } else if(data[0]==0) {
+                       min = 0.0;
+               } else {
+               }
+               mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
+       }
+       }
+       }
+
+       for(z=in->HeaderN.z-1; 0<=z; z--){
+       for(y=in->HeaderN.y-1; 0<=y; y--){
+       for(x=in->HeaderN.x-1; 0<=x; x--){ 
+       }
+       }
+       }
+}
+
 void
 lmrcImageDistanceConversion_4Neighborhood(mrcImage* in,mrcImage* out)
 { 
@@ -59,8 +168,8 @@ lmrcImageDistanceConversion_4Neighborhood(mrcImage* in,mrcImage* out)
        out->Header = in->Header;
        mrcInit(out,NULL);
        for(z=0; z < in->HeaderN.z; z++){
-        for(y=0; y < in->HeaderN.y; y++){
-         for(x=0; x < in->HeaderN.x; x++){
+       for(y=0; y < in->HeaderN.y; y++){
+       for(x=0; x < in->HeaderN.x; x++){
                mrcNinePixelDataGet(in,out,x,y,z,data);
                data[5] += 1.0 ; data[7] += 1.0 ;
                if( data[0] == 1.0 ){
@@ -81,13 +190,13 @@ lmrcImageDistanceConversion_4Neighborhood(mrcImage* in,mrcImage* out)
                        }
                }       
                mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
-         }
-        }
+       }
+       }
        }
        x_max = x-1.0 ; y_max = y-1.0 ; z_max = z-1.0 ;
        for(z = z_max ; z >= 0.0 ; z--){
-        for(y = y_max ; y >= 0.0 ; y--){
-         for(x = x_max ; x >= 0.0 ; x--){
+       for(y = y_max ; y >= 0.0 ; y--){
+       for(x = x_max ; x >= 0.0 ; x--){
                mrcNinePixelDataGet(in,out,x,y,z,data);
                data[1] += 1.0 ; data[3] += 1.0 ;
                min = data[0];
@@ -99,8 +208,8 @@ lmrcImageDistanceConversion_4Neighborhood(mrcImage* in,mrcImage* out)
                }
                mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
                mrcPixelDataSet(out,x,y,z,min,mrcPixelRePart);
-         }
-        }
+       }
+       }
        }
 }
 
@@ -117,8 +226,8 @@ lmrcImageDistanceConversion_8Neighborhood(mrcImage* in,mrcImage* out)
        out->Header = in->Header;
        mrcInit(out,NULL);
        for(z=0; z < in->HeaderN.z; z++){
-        for(y=0; y < in->HeaderN.y; y++){
-         for(x=0; x < in->HeaderN.x; x++){
+       for(y=0; y < in->HeaderN.y; y++){
+       for(x=0; x < in->HeaderN.x; x++){
                mrcNinePixelDataGet(in,out,x,y,z,data); 
                data[5] += 1.0 ; data[6] += 1.0;
                data[7] += 1.0 ; data[8] += 1.0;
@@ -137,16 +246,16 @@ lmrcImageDistanceConversion_8Neighborhood(mrcImage* in,mrcImage* out)
                                if( min > data[i] ){
                                        min = data[i];
                                }
-                       }       
+                       }
                }
                mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
-         }
-        }
+       }
+       }
        }
        x_max = x-1.0 ; y_max = y-1.0 ; z_max = z-1.0 ;
        for(z = z_max ; z >= 0.0 ; z--){
-        for(y = y_max ; y >= 0.0 ; y--){
-         for(x = x_max ; x >= 0.0 ; x--){
+       for(y = y_max ; y >= 0.0 ; y--){
+       for(x = x_max ; x >= 0.0 ; x--){
                mrcNinePixelDataGet(in,out,x,y,z,data);
                data[1] += 1.0 ; data[2] += 1.0 ; 
                data[3] += 1.0 ; data[4] += 1.0 ;
@@ -158,8 +267,8 @@ lmrcImageDistanceConversion_8Neighborhood(mrcImage* in,mrcImage* out)
                }       
                mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
                mrcPixelDataSet(out,x,y,z,min,mrcPixelRePart);
-         }
-        }
+       }
+       }
        }
 }
 
@@ -172,8 +281,8 @@ lmrcImageMakingFrame(mrcImage* in,mrcImage* out,int mode)
        double max;
 
        for( z=0; z < in->HeaderN.z; z++){
-        for( y=0; y < in->HeaderN.y; y++){
-         for( x=0; x < in->HeaderN.x; x++){
+       for( y=0; y < in->HeaderN.y; y++){
+       for( x=0; x < in->HeaderN.x; x++){
                max = 0.0;
                mrcNinePixelDataGet(in,out,x,y,z,data);
                if( mode == 0 ){
@@ -200,8 +309,8 @@ lmrcImageMakingFrame(mrcImage* in,mrcImage* out,int mode)
                        }       
                }       
                mrcPixelDataSet(out,x,y,z,data[0],mrcPixelRePart);
-         }
-        }
+       }
+       }
        }
        mrcStatDataSet(out,0);
 }
index 3df32c7..729a61f 100644 (file)
@@ -41,11 +41,11 @@ lmrcImageFeaturePrint(FILE* fpt, lmrcImageFeatureList* linfo, int mode)
        if(linfo->each[0].flagComplexity) {
                fprintf(fpt, " %12s", "complexity");
        }
-       if(!linfo->each[0].flagDiameter) {
-               lmrcImageDiameterCalc(linfo, 0);
+       if(!linfo->each[0].flagRadius) {
+               lmrcImageRadiusCalc(linfo, 0);
        }
-       if(linfo->each[0].flagDiameter) {
-               fprintf(fpt, " %12s", "diameter");
+       if(linfo->each[0].flagRadius) {
+               fprintf(fpt, " %12s", "radius");
        }
        fprintf(fpt, "\n");
        for(i=0; i<=linfo->Number; i++) {
@@ -70,8 +70,8 @@ lmrcImageFeaturePrint(FILE* fpt, lmrcImageFeatureList* linfo, int mode)
                if(linfo->each[i].flagComplexity) {
                        fprintf(fpt, " %12.4f", linfo->each[i].complexity);
                }
-               if(linfo->each[i].flagDiameter) {
-                       fprintf(fpt, " %12.4f", linfo->each[i].diameter);
+               if(linfo->each[i].flagRadius) {
+                       fprintf(fpt, " %12.4f", linfo->each[i].radius);
                }
                fprintf(fpt, "\n");
        }
@@ -140,32 +140,32 @@ lmrcImageComplexityCalc(lmrcImageFeatureList* linfo, int mode)
 }
 
 void
-lmrcImageDiameterCalc(lmrcImageFeatureList* linfo, int mode)
+lmrcImageRadiusCalc(lmrcImageFeatureList* linfo, int mode)
 {
        int i;
 
        if(linfo->each[0].flagPerimeter) {
                for(i=0; i<=linfo->Number; i++) {
                        if(0<linfo->each[i].perimeter) {
-                               linfo->each[i].diameter=sqrt(linfo->each[i].area/M_PI);
+                               linfo->each[i].radius=sqrt(linfo->each[i].area/M_PI);
                        } else {
-                               linfo->each[i].diameter=1e4;
+                               linfo->each[i].radius=1e4;
                        }
-                       linfo->each[i].flagDiameter=1;
+                       linfo->each[i].flagRadius=1;
                }
        } else if(linfo->each[0].flagSurfaceArea) {
                for(i=0; i<=linfo->Number; i++) {
                        if(0<linfo->each[i].surfaceArea) {
-                               linfo->each[i].diameter=pow(linfo->each[i].area/(4./3.*M_PI), 1.0/3.0);
+                               linfo->each[i].radius=pow(linfo->each[i].area/(4./3.*M_PI), 1.0/3.0);
                        } else {
-                               linfo->each[i].diameter=1e4;
+                               linfo->each[i].radius=1e4;
                        }
-                       linfo->each[i].flagDiameter=1;
+                       linfo->each[i].flagRadius=1;
                }
        } else {
-               fprintf(stderr, "Cannot calculate diameter because of no perimeter/surfaceArea\n");
+               fprintf(stderr, "Cannot calculate radius because of no perimeter/surfaceArea\n");
                for(i=0; i<=linfo->Number; i++) {
-                       linfo->each[i].flagDiameter=0;
+                       linfo->each[i].flagRadius=0;
                }
        }
 }
index 980644f..46cc9a0 100644 (file)
@@ -82,8 +82,8 @@ typedef struct lmrcImageFeatureEach {
        double complexity;
 
        // Complexity 
-       int flagDiameter;
-       double diameter;
+       int flagRadius;
+       double radius;
        
        // PCA
        float lamda[3];
@@ -125,7 +125,7 @@ extern void lmrcImageSurfaceAreaCalcUsage(FILE* fpt);
 
 extern void lmrcImageCircularityCalc(lmrcImageFeatureList* linfo, int mode);
 extern void lmrcImageComplexityCalc(lmrcImageFeatureList* linfo, int mode);
-extern void lmrcImageDiameterCalc(lmrcImageFeatureList* linfo, int mode);
+extern void lmrcImageRadiusCalc(lmrcImageFeatureList* linfo, int mode);
 
 extern int lmrcImageChainCodeSearch(int* chain, mrcImageParaTypeRealCoord* next, double* dL, mrcImage* in, mrcImageParaTypeRealCoord ori, int chainCodeStart, int mode);
 
index 120edec..59807c2 100644 (file)
@@ -31,6 +31,12 @@ typedef enum lmrcImageShapeMode {
     lmrcImageShapeModeMax=3
 } lmrcImageShapeMode;
 
+typedef enum lmrcImageShapeContactMode {
+    lmrcImageShapeContactModeNoShape=-1,
+    lmrcImageShapeContactModeSylinderSylinder=0,
+    lmrcImageShapeContaxtModeMax=1
+} lmrcImageShapeContactMode;
+
 
 /* constant end */
 
index 08caf79..a3f395a 100644 (file)
@@ -36,7 +36,47 @@ lmrcImageShapeSearch(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo* linf
        }
 }
 
-// Sylindar
+void
+lmrcImageShapeContactSearch(mrcImage* contact, lmrcImageShapeSearchInfo* linfo, mrcImage* in, int mode)
+{
+       switch(mode) {
+               case lmrcImageShapeContactModeSylinderSylinder: {
+                       lmrcImageShapeContactCalc0(contact, linfo, in, mode);
+                       break;
+               }
+               default: {
+                       fprintf(stderr, "Not supported mode: %d\n", mode);
+                       break;
+               }
+       }
+}
+
+
+void
+lmrcImageShapeContactSearch0(mrcImage* contact, lmrcImageShapeSearchInfo* linfo, mrcImage* in, int mode)
+{
+       mrcParaTypeReal x, y, z;
+       mrcParaTypeReal x0, y0, z0;
+       double data;
+       int* vote;
+
+       vote = memoryAllocate(sizeof(int)*lmrcImageShapeContactModeMax, "in lmrcImageShapeContactSearch0");
+       contact->Header = in->Header;
+       mrcInit(contact, NULL);
+
+       for(z=0; z<in->HeaderN.z; z++) {
+       for(y=0; y<in->HeaderN.y; y++) {
+       for(x=0; x<in->HeaderN.x; x++) {
+               mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+               // Sylinder-Sylinder contact                                            
+       }
+       }
+       }
+//shape
+//OutVectorMRC[3]
+
+}
+
 void
 lmrcImageShapeSearchCalc0(mrcImage* out, mrcImage* in, lmrcImageShapeSearchInfo* linfo, int mode)
 {
diff --git a/src/Tools/mrcImage/mrcImageDistanceConversion/src/test/Makefile b/src/Tools/mrcImage/mrcImageDistanceConversion/src/test/Makefile
new file mode 100644 (file)
index 0000000..e5a1469
--- /dev/null
@@ -0,0 +1,24 @@
+include ../../Config/Define.inc
+include ../../../Config/Define.inc
+include ../../../../Config/Define.inc
+include ../../../../../Config/Define.inc
+
+all: help exec
+
+help:
+       @echo "----- Help Message Check -----"
+       @../$(OSTYPE)/$(OBJECTNAME)      -h
+
+exec:
+       @echo "----- Execution Check -----"
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/121p-move-2d.bin -o data/121p-move-2d.distance4 -m 4
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/121p-move-2d.bin -o data/121p-move-2d.distance8 -m 8 
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/121p-move.bin -o data/121p-move.distance4 -m 4
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/121p-move.bin -o data/121p-move.distance8 -m 8 
+       @echo "----- Calc check -----"          
+
+clean:
+
+init:
+       mrcImageBinalization -i data/121p-move-2d.mrc -o data/121p-move-2d.bin -t 1
+       mrcImageBinalization -i data/121p-move.mrc -o data/121p-move.bin -t 1
diff --git a/src/Tools/mrcImage/mrcImageDistanceConversion/src/test/data b/src/Tools/mrcImage/mrcImageDistanceConversion/src/test/data
new file mode 120000 (symlink)
index 0000000..5cded8f
--- /dev/null
@@ -0,0 +1 @@
+../../../../../..//data/mrcImageDistanceConversion
\ No newline at end of file