OSDN Git Service

lmrcImageProjectionMIP() v2.4.11p0353
authorTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Wed, 23 Mar 2022 19:35:20 +0000 (04:35 +0900)
committerTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Wed, 23 Mar 2022 19:35:20 +0000 (04:35 +0900)
mrc2hdf Thumbnail

 Your branch is up to date with 'origin/master'.

 Changes to be committed:
modified:   bin/wish/Display2/tclIndex
modified:   include/lmrcImageProjection.h
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageProjection.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageProjection.h
modified:   src/Tools/filter/mrc2hdf/src/mrc2hdf.c
modified:   src/Tools/filter/mrc2hdf/src/mrc2hdf.html
modified:   src/Tools/filter/mrc2hdf/src/test/Makefile

 Changes not staged for commit:
modified:   include/eosMATH.h

bin/wish/Display2/tclIndex
include/lmrcImageProjection.h
src/Objects/DataManip/mrcImage/src/lmrcImageProjection.c
src/Objects/DataManip/mrcImage/src/lmrcImageProjection.h
src/Tools/filter/mrc2hdf/src/mrc2hdf.c
src/Tools/filter/mrc2hdf/src/mrc2hdf.html
src/Tools/filter/mrc2hdf/src/test/Makefile

index c4c3f5a..03796f9 100644 (file)
@@ -6,17 +6,43 @@
 # element name is the name of a command and the value is
 # a script that loads the command.
 
-set auto_index(display2BindingSet) [list source [file join $dir Display2Binding.wish]]
-set auto_index(colormapChange) [list source [file join $dir Display2Colormap.wish]]
-set auto_index(display2DesktopSet) [list source [file join $dir Display2Desktop.wish]]
-set auto_index(display2ETCSet) [list source [file join $dir Display2ETCSet.wish]]
-set auto_index(fileOpenWinCreate) [list source [file join $dir Display2File.wish]]
-set auto_index(fileNewWinCreate) [list source [file join $dir Display2File.wish]]
-set auto_index(seqFileOpenWinCreate) [list source [file join $dir Display2File.wish]]
-set auto_index(seqFileNewWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(roiAreaSelectStart) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(roiAreaSelectMotion) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(roiAreaSelectEnd) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(roiAreaSelectOK) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(projectionRecreate) [list source [file join $dir ProjectionUtil.wish]]
+set auto_index(projectionCreate) [list source [file join $dir ProjectionUtil.wish]]
+set auto_index(projectionClear) [list source [file join $dir ProjectionUtil.wish]]
+set auto_index(projectionChange) [list source [file join $dir ProjectionUtil.wish]]
 set auto_index(fileOpen) [list source [file join $dir Display2Image.wish]]
 set auto_index(mainImagePut) [list source [file join $dir Display2Image.wish]]
 set auto_index(overviewImagePut) [list source [file join $dir Display2Image.wish]]
+set auto_index(roiAreaFFT) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(splineNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(rectangleNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(lineNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(pointDistance) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(pointDistance2) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(vectorAngle) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(coordGetInMainImageToReal) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(coordGetInMainImageToCanvas) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(dataGetInMainImageToReal) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(dataGetInMainImageToCanvas) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(pointSet) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(roiAreaZoomIn) [list source [file join $dir RoiAreaZoom.wish]]
+set auto_index(roiAreaZoomOut) [list source [file join $dir RoiAreaZoom.wish]]
+set auto_index(roiAreaZoom) [list source [file join $dir RoiAreaZoom.wish]]
+set auto_index(colormapChange) [list source [file join $dir Display2Colormap.wish]]
+set auto_index(display2SetVar) [list source [file join $dir Display2Init.wish]]
+set auto_index(display2InitVar) [list source [file join $dir Display2Init.wish]]
+set auto_index(display2InitVarSet) [list source [file join $dir Display2Init.wish]]
+set auto_index(diplay2CanvasInit) [list source [file join $dir Display2Init.wish]]
+set auto_index(display2Init) [list source [file join $dir Display2Init.wish]]
+set auto_index(roiInformationWinCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiLineInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiSplineInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiRectangleInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiAnalysisFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
 set auto_index(histgramGraphCreate) [list source [file join $dir Display2Info.wish]]
 set auto_index(display2InformationWinCreate) [list source [file join $dir Display2Info.wish]]
 set auto_index(fileReopen) [list source [file join $dir Display2Info.wish]]
@@ -28,41 +54,7 @@ set auto_index(sectionInformationWinCreate) [list source [file join $dir Display
 set auto_index(ctfInformationWinCreate) [list source [file join $dir Display2Info.wish]]
 set auto_index(unitCellInformationWinCreate) [list source [file join $dir Display2Info.wish]]
 set auto_index(scaleInfoWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(roiInformationWinCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(roiLineInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(roiSplineInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(roiRectangleInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(roiAnalysisFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(display2SetVar) [list source [file join $dir Display2Init.wish]]
-set auto_index(display2InitVar) [list source [file join $dir Display2Init.wish]]
-set auto_index(display2InitVarSet) [list source [file join $dir Display2Init.wish]]
-set auto_index(diplay2CanvasInit) [list source [file join $dir Display2Init.wish]]
-set auto_index(display2Init) [list source [file join $dir Display2Init.wish]]
-set auto_index(display2MenuSet) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuFileCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuSeqFileCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuWindowCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuInfoCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuHelpCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuExitCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(display2MenuSet2) [list source [file join $dir Display2Menu2.wish]]
-set auto_index(roiRelatedObjectRecreate) [list source [file join $dir Display2MenuROI.wish]]
-set auto_index(menuRoiCreate) [list source [file join $dir Display2MenuROI.wish]]
-set auto_index(menuRoiCancelCommand) [list source [file join $dir Display2MenuROI.wish]]
-set auto_index(menuRoiSingleMultiTransform) [list source [file join $dir Display2MenuROI.wish]]
-set auto_index(menuMultiRoiOKCommand) [list source [file join $dir Display2MenuROI.wish]]
-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(layerLineChange) [list source [file join $dir LayerLineUtil.wish]]
-set auto_index(projectionRecreate) [list source [file join $dir ProjectionUtil.wish]]
-set auto_index(projectionCreate) [list source [file join $dir ProjectionUtil.wish]]
-set auto_index(projectionClear) [list source [file join $dir ProjectionUtil.wish]]
-set auto_index(projectionChange) [list source [file join $dir ProjectionUtil.wish]]
 set auto_index(roiAreaCreateStart) [list source [file join $dir RoiAreaCreate.wish]]
 set auto_index(roiAreaCreateMotion) [list source [file join $dir RoiAreaCreate.wish]]
 set auto_index(roiAreaCreateEnd) [list source [file join $dir RoiAreaCreate.wish]]
@@ -80,15 +72,22 @@ set auto_index(roiSplineEnd) [list source [file join $dir RoiAreaCreate.wish]]
 set auto_index(splineCreate) [list source [file join $dir RoiAreaCreate.wish]]
 set auto_index(knobShow) [list source [file join $dir RoiAreaCreate.wish]]
 set auto_index(knobHide) [list source [file join $dir RoiAreaCreate.wish]]
-set auto_index(roiMultiAreaInfoSave) [list source [file join $dir RoiAreaFile.wish]]
-set auto_index(roiMultiAreaInfoLoad) [list source [file join $dir RoiAreaFile.wish]]
-set auto_index(roiAreaFileSave) [list source [file join $dir RoiAreaFile.wish]]
-set auto_index(roiAreaMoveStart) [list source [file join $dir RoiAreaMove.wish]]
-set auto_index(roiAreaMoveMotion) [list source [file join $dir RoiAreaMove.wish]]
-set auto_index(roiAreaMoveEnd) [list source [file join $dir RoiAreaMove.wish]]
-set auto_index(rectangleMove) [list source [file join $dir RoiAreaMove.wish]]
-set auto_index(lineMove) [list source [file join $dir RoiAreaMove.wish]]
-set auto_index(splineMove) [list source [file join $dir RoiAreaMove.wish]]
+set auto_index(display2BindingSet) [list source [file join $dir Display2Binding.wish]]
+set auto_index(display2MenuSet) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuFileCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuSeqFileCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuWindowCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuInfoCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuHelpCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuExitCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(roiRelatedObjectRecreate) [list source [file join $dir Display2MenuROI.wish]]
+set auto_index(menuRoiCreate) [list source [file join $dir Display2MenuROI.wish]]
+set auto_index(menuRoiCancelCommand) [list source [file join $dir Display2MenuROI.wish]]
+set auto_index(menuRoiSingleMultiTransform) [list source [file join $dir Display2MenuROI.wish]]
+set auto_index(menuMultiRoiOKCommand) [list source [file join $dir Display2MenuROI.wish]]
+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(roiAreaResizeStart) [list source [file join $dir RoiAreaResize.wish]]
 set auto_index(roiAreaResizeMotion) [list source [file join $dir RoiAreaResize.wish]]
 set auto_index(roiAreaResizeEnd) [list source [file join $dir RoiAreaResize.wish]]
@@ -105,29 +104,18 @@ set auto_index(lineRotate) [list source [file join $dir RoiAreaRotate.wish]]
 set auto_index(lineRotateCalc) [list source [file join $dir RoiAreaRotate.wish]]
 set auto_index(splineRotate) [list source [file join $dir RoiAreaRotate.wish]]
 set auto_index(splineRotateCalc) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(roiAreaSelectStart) [list source [file join $dir RoiAreaSelect.wish]]
-set auto_index(roiAreaSelectMotion) [list source [file join $dir RoiAreaSelect.wish]]
-set auto_index(roiAreaSelectEnd) [list source [file join $dir RoiAreaSelect.wish]]
-set auto_index(roiAreaSelectOK) [list source [file join $dir RoiAreaSelect.wish]]
-set auto_index(roiAreaFFT) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(splineNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(rectangleNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(lineNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(pointDistance) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(pointDistance2) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(vectorAngle) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(coordGetInMainImageToReal) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(coordGetInMainImageToCanvas) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(dataGetInMainImageToReal) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(dataGetInMainImageToCanvas) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(pointSet) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(roiAreaZoomIn) [list source [file join $dir RoiAreaZoom.wish]]
-set auto_index(roiAreaZoomOut) [list source [file join $dir RoiAreaZoom.wish]]
-set auto_index(roiAreaZoom) [list source [file join $dir RoiAreaZoom.wish]]
-set auto_index(ScaleRecreate) [list source [file join $dir ScaleUtil.wish]]
-set auto_index(ScaleCreate) [list source [file join $dir ScaleUtil.wish]]
-set auto_index(ScaleClear) [list source [file join $dir ScaleUtil.wish]]
-set auto_index(ScaleChange) [list source [file join $dir ScaleUtil.wish]]
+set auto_index(roiMultiAreaInfoSave) [list source [file join $dir RoiAreaFile.wish]]
+set auto_index(roiMultiAreaInfoLoad) [list source [file join $dir RoiAreaFile.wish]]
+set auto_index(roiAreaFileSave) [list source [file join $dir RoiAreaFile.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(layerLineChange) [list source [file join $dir LayerLineUtil.wish]]
+set auto_index(fileOpenWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(fileNewWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(seqFileOpenWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(seqFileNewWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(display2DesktopSet) [list source [file join $dir Display2Desktop.wish]]
 set auto_index(sectionInit) [list source [file join $dir SectionUtil.wish]]
 set auto_index(sectionRecreateAll) [list source [file join $dir SectionUtil.wish]]
 set auto_index(sectionRecreate) [list source [file join $dir SectionUtil.wish]]
@@ -136,4 +124,16 @@ set auto_index(sectionCreate) [list source [file join $dir SectionUtil.wish]]
 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(ScaleRecreate) [list source [file join $dir ScaleUtil.wish]]
+set auto_index(ScaleCreate) [list source [file join $dir ScaleUtil.wish]]
+set auto_index(ScaleClear) [list source [file join $dir ScaleUtil.wish]]
+set auto_index(ScaleChange) [list source [file join $dir ScaleUtil.wish]]
 set auto_index(unitCellRecreate) [list source [file join $dir UnitCell.wish]]
+set auto_index(display2MenuSet2) [list source [file join $dir Display2Menu2.wish]]
+set auto_index(roiAreaMoveStart) [list source [file join $dir RoiAreaMove.wish]]
+set auto_index(roiAreaMoveMotion) [list source [file join $dir RoiAreaMove.wish]]
+set auto_index(roiAreaMoveEnd) [list source [file join $dir RoiAreaMove.wish]]
+set auto_index(rectangleMove) [list source [file join $dir RoiAreaMove.wish]]
+set auto_index(lineMove) [list source [file join $dir RoiAreaMove.wish]]
+set auto_index(splineMove) [list source [file join $dir RoiAreaMove.wish]]
+set auto_index(display2ETCSet) [list source [file join $dir Display2ETCSet.wish]]
index abfc58e..ebe3187 100644 (file)
@@ -16,5 +16,7 @@ typedef struct lmrcImageProjectionInfo{
 /* prototype begin */
 extern void lmrcImageProjection(mrcImage* out, mrcImage* in,
                                                                lmrcImageProjectionInfo* linfo);
+extern void lmrcImageProjectionMIP(mrcImage* out, mrcImage* in,
+                                                               lmrcImageProjectionInfo* linfo);
 /* prototype end */
 #endif
index 271dfaf..0715d13 100755 (executable)
@@ -129,3 +129,125 @@ lmrcImageProjection( mrcImage* out, mrcImage* in,
 }
 
 
+void
+lmrcImageProjectionMIP( mrcImage* out, mrcImage* in,
+                                   lmrcImageProjectionInfo* linfo)
+{
+       mrcImageParaTypeReal x, y, z;
+       double data, dataout;
+
+       switch(linfo->mode) {
+       case 0: { // along z-axis
+         out->Header = in->Header;
+         out->HeaderN.x = in->HeaderN.x;
+         out->HeaderN.y = in->HeaderN.y;
+         out->HeaderN.z = 1.0;
+         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, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(out, x, y, 0.0, &dataout, mrcPixelRePart, mrcPixelHowNearest);
+            if(dataout<data) dataout = data;
+                       mrcPixelDataSet(out, x, y, 0.0, dataout, mrcPixelRePart);
+         }
+         }
+         }
+         break;
+       }
+       case 1: { // along x-axis
+         out->Header = in->Header;
+         out->HeaderN.x = in->HeaderN.y;
+         out->HeaderN.y = in->HeaderN.z;
+         out->HeaderN.z = 1;
+         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, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(out, y, z, 0.0, &dataout, mrcPixelRePart, mrcPixelHowNearest);
+            if(dataout<data) dataout = data;
+                       mrcPixelDataSet(out, y, z, 0.0, dataout, mrcPixelRePart);
+         }
+         }
+         }
+         break;
+       }
+       case 2: { // along y-axis
+         out->Header = in->Header;
+         out->HeaderN.x = in->HeaderN.z;
+         out->HeaderN.y = in->HeaderN.x;
+         out->HeaderN.z = 1.0;
+         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, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(out, z, x, 0.0, &dataout, mrcPixelRePart, mrcPixelHowNearest);
+            if(dataout<data) dataout = data;
+                       mrcPixelDataSet(out, z, x, 0.0, dataout, mrcPixelRePart);
+         }
+         }
+         }
+         break;
+       }
+       case 3: { // to y-axis
+         out->Header = in->Header;
+         out->HeaderN.x = in->HeaderN.y;
+         out->HeaderN.y = 1.0;
+         out->HeaderN.z = 1.0;
+         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, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(out, y, 0.0, 0.0, &dataout, mrcPixelRePart, mrcPixelHowNearest);
+            if(dataout<data) dataout = data;
+                       mrcPixelDataSet(out, y, 0.0, 0.0, dataout, mrcPixelRePart);
+         }
+         }
+         }
+         break;
+       }
+       case 4: { // to x-axis
+         out->Header = in->Header;
+         out->HeaderN.y = 1.0;
+         out->HeaderN.z = 1.0;
+         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, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(out, x, 0.0, 0.0, &dataout, mrcPixelRePart, mrcPixelHowNearest);
+            if(dataout<data) dataout = data;
+                       mrcPixelDataSet(out, x, 0.0, 0.0, dataout, mrcPixelRePart);
+         }
+         }
+         }
+         break;
+       } 
+       case 5: { // to z-axis
+         out->Header = in->Header;
+         out->HeaderN.x = out->HeaderN.z;
+         out->HeaderN.y = 1.0;
+         out->HeaderN.z = 1.0;
+         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, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(out, z, 0.0, 0.0, &dataout, mrcPixelRePart, mrcPixelHowNearest);
+            if(dataout<data) dataout = data;
+                       mrcPixelDataSet(out, z, 0.0, 0.0, dataout, mrcPixelRePart);
+         }
+         }
+         }
+         break;
+       } 
+       default: {
+         fprintf(stderr, "Not supported Mode: %ld\n", linfo->mode);
+       }
+  }
+}
+
+
index abfc58e..ebe3187 100755 (executable)
@@ -16,5 +16,7 @@ typedef struct lmrcImageProjectionInfo{
 /* prototype begin */
 extern void lmrcImageProjection(mrcImage* out, mrcImage* in,
                                                                lmrcImageProjectionInfo* linfo);
+extern void lmrcImageProjectionMIP(mrcImage* out, mrcImage* in,
+                                                               lmrcImageProjectionInfo* linfo);
 /* prototype end */
 #endif
index b5c1817..d02bb68 100755 (executable)
@@ -233,7 +233,7 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
     mrcImageParaTypeReal xorg, yorg, zorg;
     int irange, numrange;
     unsigned char* thumbImage;
-    double sum, min, max;
+    double sum, min, max, mean;
     mrcImage tmpImage;
     lmrcImageProjectionInfo lpro;
 
@@ -263,10 +263,15 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
     dims[1] = in[0].HeaderN.y;
     dims[2] = in[0].HeaderN.x;
 
+    /*
     chunk[0] = dims[0];
     chunk[1] = dims[1];
     chunk[2] = dims[2];
-
+    */
+    chunk[0] = 32;
+    chunk[1] = 64;
+    chunk[2] = 64;
+    
     datasetPropertyID = H5Pcreate(H5P_DATASET_CREATE);
     status = H5Pset_chunk(datasetPropertyID, 3, chunk);
 
@@ -306,6 +311,7 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
 
         for(i=0; i<256; i++) hist[i] = 0;
         for(i=0; i<1024; i++) hist1024[i] = 0;
+        // image
         DEBUGPRINT("image\n");
         if(in[itime].HeaderAMax<=in[itime].HeaderAMin) {
             fprintf(stderr, "Image data is flat\n");
@@ -318,7 +324,7 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
             irange=1<<ires;
             DEBUGPRINT2("res: %d irange %d\n", ires, irange);
             for(z=0; z<dims[0]; z++) { 
-                if(0==(((int)(z/dims[0]*100))%10)) {
+                if(0==(((int)(z/(double)(dims[0]-1)*100))%10)) {
                     DEBUGPRINT2("%d/%llu\n", (int)z, dims[0]);
                 }
             for(y=0; y<dims[1]; y++) { 
@@ -353,9 +359,9 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
                     data = 0;
                 }
                 image[i64] = (float)data; 
-            }
-            }
-            }
+            } // x
+            } // y
+            } // z
             
             DEBUGPRINT("MIN/MAX\n");
             min= max = image[0];
@@ -373,10 +379,12 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
                 hist[iLevel]++;
             }
         }
+        // Image
         DEBUGPRINT("H5Dcreate");
         dsetID = H5Dcreate(gIDChannel, tmp, H5T_IEEE_F32LE, dspaceID, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
         status = H5Dwrite(dsetID, H5T_IEEE_F32LE, H5S_ALL, H5S_ALL, H5P_DEFAULT, image);
         DEBUGPRINT3("%s End: dataset %lld status %d\n", tmp, dsetID, status);
+        memoryFree(image);
         status = H5Dclose(dsetID);
         status = H5Sclose(dspaceID);
         // Histogram
@@ -406,12 +414,12 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
     }
         status = H5Gclose(gIDTime);
     }
-        //memoryFree(image);
         dims[0]/=2;
         dims[1]/=2;
         dims[2]/=2;
         status = H5Gclose(gIDRes);
     }
+    // DataSetInfo
     DEBUGPRINT("DataSetInfo\n");
     {
         char* dsiGroupName[] = {"Channel 0", "Image", "Imaris", "ImarisDataSet", "Log", "TImeInfo"};
@@ -424,9 +432,9 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
         }
         // Channel 0
         lhdfAttributeString(dsiGroupID[0], "Name", "No");
-        lhdfAttributeString(dsiGroupID[0], "Color", "1 0 0");
+        lhdfAttributeString(dsiGroupID[0], "Color", "1.000 0.000 0.000");
         lhdfAttributeString(dsiGroupID[0], "ColorMode", "BaseColor");
-        lhdfAttributeReal2String(dsiGroupID[0], "ColorOpacity", 1.00);
+        lhdfAttributeReal2String(dsiGroupID[0], "ColorOpacity", 1.000);
         lhdfAttributeReal2String(dsiGroupID[0], "Min", in[0].HeaderAMax);
         lhdfAttributeReal2String(dsiGroupID[0], "Max", in[0].HeaderAMin);
         // Image
@@ -439,6 +447,11 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
         lhdfAttributeReal2String(dsiGroupID[1], "ExtMax0", (in[0].HeaderStartN.x+dims[2]-1)*in[0].HeaderLength.x);
         lhdfAttributeReal2String(dsiGroupID[1], "ExtMax1", (in[0].HeaderStartN.y+dims[1]-1)*in[0].HeaderLength.y);
         lhdfAttributeReal2String(dsiGroupID[1], "ExtMax2", (in[0].HeaderStartN.z+dims[0]-1)*in[0].HeaderLength.z);
+        if(1<nres) {
+            lhdfAttributeString(dsiGroupID[1], "ResampleDimensionX", "true");
+            lhdfAttributeString(dsiGroupID[1], "ResampleDimensionY", "true");
+            lhdfAttributeString(dsiGroupID[1], "ResampleDimensionZ", "true");
+        }
         lhdfAttributeString(dsiGroupID[1], "Unit", "um");
         lhdfAttributeInt2String(dsiGroupID[1], "X", dims[2]);
         lhdfAttributeInt2String(dsiGroupID[1], "Y", dims[1]);
@@ -458,42 +471,77 @@ lmrc2hdfimaris(hid_t* out, mrcImage* in, lmrc2hdfInfo* linfo, int mode)
     DEBUGPRINT("DataSetTimes\n");
     DEBUGPRINT("Thumbnail\n");
     // Thumbnail
-    sprintf(tmp, "%s/%s", groupName[3], "Data");
-    thumbImage = (unsigned char*) memoryAllocate(sizeof(unsigned char)*dims[0]*dims[1], "in imaris");
-    lpro.mode = 0;
-    lmrcImageProjection(&tmpImage, &in[0], &lpro); 
-
-    min = FLT_MAX;
-    max = FLT_MIN;
-    for(x=0; x<dims[2]; x++) {
-    for(y=0; y<dims[1]; y++) {
-        mrcPixelDataGet(&tmpImage, x, y, 0, &data, mrcPixelRePart, mrcPixelHowNearest);
-        if(data<min) min = data;
-        if(max<data) max = data;
-    }
-    }
-    DEBUGPRINT1("min: %f\n", min);
-    DEBUGPRINT1("max: %f\n", max);
-    for(x=0; x<dims[2]; x++) {
-    for(y=0; y<dims[1]; y++) {
-        mrcPixelDataGet(&tmpImage, x, y, 0, &data, mrcPixelRePart, mrcPixelHowNearest);
-        if(max<=min) { 
-            thumbImage[(int)(x+y*dims[2])] = 0;
-        } else {
-            thumbImage[(int)(x+y*dims[2])] = (int)(255*((data-min)/(max-min)-0.5));
+    {
+      hsize_t dimsT[4];
+      double zoomx, zoomy;
+      hsize_t dimsX, dimsY;
+      float orgx, orgy, orgz;
+      zoomx = zoomy = 1;
+      if(in[0].HeaderN.x<in[0].HeaderN.y) {
+          zoomx *= in[0].HeaderN.x/(double)in[0].HeaderN.y;
+      } else {
+          zoomy *= in[0].HeaderN.y/(double)in[0].HeaderN.x; 
+      }
+      dimsT[0] = dimsX = ((int)(256*zoomx));
+      dimsT[1] = ((int)(256*zoomy))*4; // RGBA
+      dimsY = dimsT[1]/4;
+      dimsT[2]=dimsT[3]=1;
+        DEBUGPRINT2("zoom: %f %f\n", zoomx, zoomy);
+        DEBUGPRINT4("dimsT: %llu %llu - %llu %llu\n", dimsT[0], dimsT[1], dimsX, dimsY);
+        sprintf(tmp, "%s/%s", groupName[3], "Data");
+        thumbImage = (unsigned char*) memoryAllocate(sizeof(unsigned char)*dimsT[0]*dimsT[1], "in imaris");
+        lpro.mode = 0;
+        lmrcImageProjectionMIP(&tmpImage, &in[0], &lpro); 
+        {
+#ifdef DEBUG2
+            mrcFileWrite(&tmpImage, "/tmp/tmpImage.mrc", "in tet", 0);
+#endif
         }
-    }
-    }
 
-    dspaceID = H5Screate_simple(2, &(dims[1]), NULL);
-    sprintf(tmp, "%s/%s", groupName[3], "Data");
-    dsetID = H5Dcreate2(groupID[3], tmp, H5T_STD_U8LE, dspaceID, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
-    status = H5Dwrite(dsetID, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, thumbImage);
-    mrcImageFree(&tmpImage, "in lmrc2hdfimaris");   
+        min = FLT_MAX;
+        max = FLT_MIN;
+        sum = 0;
+        for(x=0; x<in[0].HeaderN.x; x++) {
+        for(y=0; y<in[0].HeaderN.y; y++) {
+            mrcPixelDataGet(&tmpImage, x, y, 0, &data, mrcPixelRePart, mrcPixelHowNearest);
+            sum += data;
+            if(data<min) min = data;
+            if(max<data) max = data;
+        }
+        }
+        mean = sum/in[0].HeaderN.x/in[0].HeaderN.y;
+
+        DEBUGPRINT1("min:  %f\n", min);
+        DEBUGPRINT1("max:  %f\n", max);
+        DEBUGPRINT1("mean: %f\n", mean);
+        for(x=0; x<dimsX; x++) {
+        for(y=0; y<dimsY; y++) {
+            orgx =  x/(dimsX - 1)*(in[0].HeaderN.x-1);
+            orgy =  y/(dimsY - 1)*(in[0].HeaderN.y-1);
+            mrcPixelDataGet(&tmpImage, orgx, orgy, 0, &data, mrcPixelRePart, mrcPixelHowNearest);
+            if(max==min) { 
+                thumbImage[(int)(y*4+x*dimsT[1])] = 0;
+            } else {
+                data = (int)(255.0*(data-(mean - (mean - min)/3))/((mean + (max-mean)/3)  - (mean - (mean-min)/3))+0.5);
+                if(data<0) data = 0;
+                if(255<data) data = 255;
+                thumbImage[(int)(y*4+x*dimsT[1])] = data;
+            }
+            thumbImage[(int)(y*4+1+x*dimsT[1])] = 0;
+            thumbImage[(int)(y*4+2+x*dimsT[1])] = 0;
+            thumbImage[(int)(y*4+3+x*dimsT[1])] = 255;
+        }
+        }
 
-    status = H5Dclose(dsetID);
-    status = H5Sclose(dspaceID);
+        dspaceID = H5Screate_simple(2, &(dimsT[0]), NULL);  // H5S dimension
+        sprintf(tmp, "%s/%s", groupName[3], "Data");        // Group Name
+        dsetID = H5Dcreate2(groupID[3], tmp, H5T_STD_U8LE, dspaceID, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+        status = H5Dwrite(dsetID, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, thumbImage);  // Write
+        mrcImageFree(&tmpImage, "in lmrc2hdfimaris");   
 
+        status = H5Dclose(dsetID);
+        status = H5Sclose(dspaceID);
+    }
     for(i=nGroup-1; i>=0; i--) {
         status = H5Gclose(groupID[i]);
     }
index 2436d28..99f2a2e 100755 (executable)
@@ -1 +1,21 @@
-/bin/bash: mrc2hdf: No such file or directory
+<HTML>
+<HEAD>
+<TITLE>mrc2hdf</TITLE>
+</HEAD>
+<BODY>
+<H1>mrc2hdf</H1>
+<H2>Usage</H2>
+<PRE>
+Usage: mrc2hdf
+Options:
+    [-i[nput]            In                  (NULL      ).as(inFile::mrcInfo     ) ] :Optional  :Input
+    [-I[nput]            InList              (NULL      ).as(inFileList::mrcInfo ) ] :Optional  :Input:FileList
+    [-o[utput]           Out                 (NULL      ).as(outFile             ) ] :Essential :OutputDataFile
+    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile
+    [-nres[olution]      nResolution         (1         ).as(Integer             ) ] :Optional  :Pyramidal Resolution
+    [-M[ode]             hdf5mode            (1         ).as(Integer             ) ] :Optional  :Mode:0 hdf5 1 imaris
+    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode
+----- Additional Usage -----
+</PRE>
+</BODY>
+</HTML>
index e2d26a2..548ef7f 100644 (file)
@@ -9,16 +9,28 @@ help:
        @echo "----- Help Message Check -----"
        @../$(OSTYPE)/$(OBJECTNAME)      -h
 
-exec:
-       @echo "----- Execution Check -----"
-<<<<<<< HEAD
-       ../$(OSTYPE)/$(OBJECTNAME) 
-=======
-       rm -rf data/test.ims data/test2.ims
+exec: data/test.ims data/test2.ims data/test-5.ims data/test2-5.ims data/test4.ims
+       @echo "----- Execution End -----"
+
+
+data/test.ims:data/test.mrc
+       rm -rf data/test.ims 
        ../$(OSTYPE)/$(OBJECTNAME) -i data/test.mrc -o data/test.ims
-       ../$(OSTYPE)/$(OBJECTNAME) -i data/test.mrc -o data/test-4.ims -nres 4
+
+data/test-5.ims:data/test.mrc
+       rm -rf data/test-5.ims 
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test.mrc -o data/test-5.ims -nres 5
+
+data/test2.ims:data/test.mrc
+       rm -rf data/test2.ims 
        ../$(OSTYPE)/$(OBJECTNAME) -I data/test.lst -o data/test2.ims
->>>>>>> b4bcf0bc43fa5bd4779cc02ccecd9fcba2de9d48
-       @echo "----- Calc check -----"          
+
+data/test4.ims:data/test.mrc
+       rm -rf data/test4.ims 
+       ../$(OSTYPE)/$(OBJECTNAME) -I data/test4.lst -o data/test4.ims
+
+data/test2-5.ims:data/test.mrc
+       rm -rf data/test2-5.ims 
+       ../$(OSTYPE)/$(OBJECTNAME) -I data/test.lst -o data/test2-5.ims -nres 4
 
 clean: