From: Takuo Yasunaga Date: Sat, 13 Feb 2016 04:16:45 +0000 (+0900) Subject: modified: bin/wish/Display2/tclIndex X-Git-Tag: v2.3.65p0294~65^2~14 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=485b7e4cc2b98ea64c5849177f92c8c148a2226c;p=eos%2Fbase.git modified: bin/wish/Display2/tclIndex 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 --- diff --git a/bin/wish/Display2/tclIndex b/bin/wish/Display2/tclIndex index dfabbae0c3..685c0e6bc5 100644 --- a/bin/wish/Display2/tclIndex +++ b/bin/wish/Display2/tclIndex @@ -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]] diff --git a/include/lmrcImageConnectivityNumberCalc.h b/include/lmrcImageConnectivityNumberCalc.h index 7b323725ca..981ddcb25e 100644 --- a/include/lmrcImageConnectivityNumberCalc.h +++ b/include/lmrcImageConnectivityNumberCalc.h @@ -16,12 +16,14 @@ #include #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 diff --git a/include/lmrcImageFeatureCalc.h b/include/lmrcImageFeatureCalc.h index 980644fd87..46cc9a0bc4 100644 --- a/include/lmrcImageFeatureCalc.h +++ b/include/lmrcImageFeatureCalc.h @@ -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); diff --git a/lib/tclIndex b/lib/tclIndex index 966373d6b8..f808d10ce2 100644 --- a/lib/tclIndex +++ b/lib/tclIndex @@ -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]] diff --git a/src/Objects/DataManip/mrcImage/src/lmrcFFTCentralSection.c b/src/Objects/DataManip/mrcImage/src/lmrcFFTCentralSection.c index adac90984f..741606dd8d 100644 --- a/src/Objects/DataManip/mrcImage/src/lmrcFFTCentralSection.c +++ b/src/Objects/DataManip/mrcImage/src/lmrcFFTCentralSection.c @@ -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(0Header = 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) diff --git a/src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.c b/src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.c index 664da7a7a4..a4ab246d36 100755 --- a/src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.c +++ b/src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.c @@ -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); diff --git a/src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.h b/src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.h index 7b323725ca..981ddcb25e 100755 --- a/src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.h +++ b/src/Objects/DataManip/mrcImage/src/lmrcImageConnectivityNumberCalc.h @@ -16,12 +16,14 @@ #include #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 diff --git a/src/Objects/DataManip/mrcImage/src/lmrcImageDistanceConversion.c b/src/Objects/DataManip/mrcImage/src/lmrcImageDistanceConversion.c index 6d64a2a4a8..4d28a9d9a4 100755 --- a/src/Objects/DataManip/mrcImage/src/lmrcImageDistanceConversion.c +++ b/src/Objects/DataManip/mrcImage/src/lmrcImageDistanceConversion.c @@ -23,17 +23,17 @@ #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); } diff --git a/src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.c b/src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.c index 3df32c7b88..729a61fd25 100644 --- a/src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.c +++ b/src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.c @@ -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(0each[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(0each[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; } } } diff --git a/src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.h b/src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.h index 980644fd87..46cc9a0bc4 100644 --- a/src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.h +++ b/src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.h @@ -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); diff --git a/src/Objects/DataManip/mrcImageShape/inc/mrcImageShape.h b/src/Objects/DataManip/mrcImageShape/inc/mrcImageShape.h index 120edec7af..59807c2946 100644 --- a/src/Objects/DataManip/mrcImageShape/inc/mrcImageShape.h +++ b/src/Objects/DataManip/mrcImageShape/inc/mrcImageShape.h @@ -31,6 +31,12 @@ typedef enum lmrcImageShapeMode { lmrcImageShapeModeMax=3 } lmrcImageShapeMode; +typedef enum lmrcImageShapeContactMode { + lmrcImageShapeContactModeNoShape=-1, + lmrcImageShapeContactModeSylinderSylinder=0, + lmrcImageShapeContaxtModeMax=1 +} lmrcImageShapeContactMode; + /* constant end */ diff --git a/src/Objects/DataManip/mrcImageShape/src/lmrcImageShapeSearch.c b/src/Objects/DataManip/mrcImageShape/src/lmrcImageShapeSearch.c index 08caf79fa9..a3f395a04d 100644 --- a/src/Objects/DataManip/mrcImageShape/src/lmrcImageShapeSearch.c +++ b/src/Objects/DataManip/mrcImageShape/src/lmrcImageShapeSearch.c @@ -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; zHeaderN.z; z++) { + for(y=0; yHeaderN.y; y++) { + for(x=0; xHeaderN.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 index 0000000000..e5a1469802 --- /dev/null +++ b/src/Tools/mrcImage/mrcImageDistanceConversion/src/test/Makefile @@ -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 index 0000000000..5cded8f757 --- /dev/null +++ b/src/Tools/mrcImage/mrcImageDistanceConversion/src/test/data @@ -0,0 +1 @@ +../../../../../..//data/mrcImageDistanceConversion \ No newline at end of file