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]]
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]]
#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
double complexity;
// Complexity
- int flagDiameter;
- double diameter;
+ int flagRadius;
+ double radius;
// PCA
float lamda[3];
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);
# 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]]
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]]
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]]
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]]
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]]
#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)
}
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 ;
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);
#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
#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);
}
}
+
+/*
+ 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)
{
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 ){
}
}
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];
}
mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
mrcPixelDataSet(out,x,y,z,min,mrcPixelRePart);
- }
- }
+ }
+ }
}
}
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;
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 ;
}
mrcPixelDataSet(in,x,y,z,min,mrcPixelRePart);
mrcPixelDataSet(out,x,y,z,min,mrcPixelRePart);
- }
- }
+ }
+ }
}
}
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 ){
}
}
mrcPixelDataSet(out,x,y,z,data[0],mrcPixelRePart);
- }
- }
+ }
+ }
}
mrcStatDataSet(out,0);
}
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++) {
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");
}
}
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;
}
}
}
double complexity;
// Complexity
- int flagDiameter;
- double diameter;
+ int flagRadius;
+ double radius;
// PCA
float lamda[3];
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);
lmrcImageShapeModeMax=3
} lmrcImageShapeMode;
+typedef enum lmrcImageShapeContactMode {
+ lmrcImageShapeContactModeNoShape=-1,
+ lmrcImageShapeContactModeSylinderSylinder=0,
+ lmrcImageShapeContaxtModeMax=1
+} lmrcImageShapeContactMode;
+
/* constant end */
}
}
-// 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)
{
--- /dev/null
+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
--- /dev/null
+../../../../../..//data/mrcImageDistanceConversion
\ No newline at end of file