OSDN Git Service

Merge branch 'master' of git.osdn.jp:/gitroot/eos/base v2.3.73p0312
authorTakuo Yasunaga <yasunaga@bio.kyutech.jp>
Thu, 17 Dec 2020 10:19:03 +0000 (19:19 +0900)
committerTakuo Yasunaga <yasunaga@bio.kyutech.jp>
Thu, 17 Dec 2020 10:19:03 +0000 (19:19 +0900)
 Conflicts:
src/Tools/Config/Define.inc
src/Tools/mrcImage/mrcImageFeatureCalc/src/mrcImageFeatureCalc.pane

 It looks like you may be committing a merge.
 If this is not correct, please remove the file
.git/MERGE_HEAD
 and try again.

 Please enter the commit message for your changes. Lines starting
 with '#' will be ignored, and an empty message aborts the commit.

 On branch master
 Your branch and 'origin/master' have diverged,
 and have 1 and 13 different commits each, respectively.
   (use "git pull" to merge the remote branch into yours)

 All conflicts fixed but you are still merging.

 Changes to be committed:
new file:   bin/mrcImageDensityWeightedAreaCalc
modified:   include/lmrcImageCalcArea.h
modified:   include/lmrcImageCrystalCreate.h
modified:   include/lmrcImageFeatureCalc.h
modified:   include/lmrcImageNormalizing.h
new file:   src/Objects/DataManip/mrcImage/src/:w
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageCalcArea.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageCalcArea.h
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageCrystalCreate.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageCrystalCreate.h
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.h
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageNormalizing.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageNormalizing.h
modified:   src/Objects/DataManip/mrcImage/src/mrcImageInfo.c
modified:   src/Objects/Makefile
modified:   src/Tools/Config/Define.inc
modified:   src/Tools/eosPoint/.Source.org
modified:   src/Tools/eosPoint/eosPointICP/Config/OptionControlFile
modified:   src/Tools/eosPoint/eosPointICP/inc/eosPointICP.h
new file:   src/Tools/eosPoint/eosPointICP/inc/eosPointICP.h.org
modified:   src/Tools/eosPoint/eosPointICP/src/argCheck.c
modified:   src/Tools/eosPoint/eosPointICP/src/eosPointICP.c
modified:   src/Tools/eosPoint/eosPointICP/src/eosPointICP.pane
modified:   src/Tools/eosPoint/eosPointICP/src/init.c
new file:   src/Tools/eosPoint/eosPointICP/src/test/Makefile
new file:   src/Tools/eosPoint/eosPointICP/src/test/data
modified:   src/Tools/eosPoint/eosPointICP/src/usage.c
modified:   src/Tools/mrcImage/.Source
modified:   src/Tools/mrcImage/.Source.org
modified:   src/Tools/mrcImage/mrcImage3DPad2/src/mrcImage3DPad2.c
modified:   src/Tools/mrcImage/mrcImageCrystalCreate/Config/OptionControlFile
modified:   src/Tools/mrcImage/mrcImageCrystalCreate/inc/mrcImageCrystalCreate.h
modified:   src/Tools/mrcImage/mrcImageCrystalCreate/src/argCheck.c
modified:   src/Tools/mrcImage/mrcImageCrystalCreate/src/init.c
modified:   src/Tools/mrcImage/mrcImageCrystalCreate/src/mrcImageCrystalCreate.c
modified:   src/Tools/mrcImage/mrcImageCrystalCreate/src/mrcImageCrystalCreate.html
modified:   src/Tools/mrcImage/mrcImageCrystalCreate/src/mrcImageCrystalCreate.pane
new file:   src/Tools/mrcImage/mrcImageCrystalCreate/src/test/Makefile
new file:   src/Tools/mrcImage/mrcImageCrystalCreate/src/test/data
modified:   src/Tools/mrcImage/mrcImageCrystalCreate/src/usage.c
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/Define.inc
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/OptionControlFile
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/Target.inc
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Makefile
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/doc/Makefile
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/inc/config.h
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/inc/mrcImageDensityWeightedAreaCalc.h
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/.Depend
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/.Source
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/Makefile
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/X86MAC64
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/argCheck.c
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/init.c
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.c
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.html
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.pane
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/test/Makefile
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/test/data
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/usage.c
new file:   src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/util.c
modified:   src/Tools/mrcImage/mrcImageFeatureCalc/Config/OptionControlFile
modified:   src/Tools/mrcImage/mrcImageFeatureCalc/inc/mrcImageFeatureCalc.h
modified:   src/Tools/mrcImage/mrcImageFeatureCalc/src/argCheck.c
modified:   src/Tools/mrcImage/mrcImageFeatureCalc/src/init.c
modified:   src/Tools/mrcImage/mrcImageFeatureCalc/src/mrcImageFeatureCalc.c
modified:   src/Tools/mrcImage/mrcImageFeatureCalc/src/mrcImageFeatureCalc.html
modified:   src/Tools/mrcImage/mrcImageFeatureCalc/src/mrcImageFeatureCalc.pane
modified:   src/Tools/mrcImage/mrcImageFeatureCalc/src/usage.c

69 files changed:
bin/mrcImageDensityWeightedAreaCalc [new symlink]
include/lmrcImageCalcArea.h
include/lmrcImageCrystalCreate.h
include/lmrcImageFeatureCalc.h
include/lmrcImageNormalizing.h
src/Objects/DataManip/mrcImage/src/:w [new file with mode: 0644]
src/Objects/DataManip/mrcImage/src/lmrcImageCalcArea.c
src/Objects/DataManip/mrcImage/src/lmrcImageCalcArea.h
src/Objects/DataManip/mrcImage/src/lmrcImageCrystalCreate.c
src/Objects/DataManip/mrcImage/src/lmrcImageCrystalCreate.h
src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.c
src/Objects/DataManip/mrcImage/src/lmrcImageFeatureCalc.h
src/Objects/DataManip/mrcImage/src/lmrcImageNormalizing.c
src/Objects/DataManip/mrcImage/src/lmrcImageNormalizing.h
src/Objects/DataManip/mrcImage/src/mrcImageInfo.c
src/Objects/Makefile [changed mode: 0644->0755]
src/Tools/Config/Define.inc
src/Tools/eosPoint/.Source.org [changed mode: 0644->0755]
src/Tools/eosPoint/eosPointICP/Config/OptionControlFile
src/Tools/eosPoint/eosPointICP/inc/eosPointICP.h
src/Tools/eosPoint/eosPointICP/inc/eosPointICP.h.org [new file with mode: 0755]
src/Tools/eosPoint/eosPointICP/src/argCheck.c
src/Tools/eosPoint/eosPointICP/src/eosPointICP.c
src/Tools/eosPoint/eosPointICP/src/eosPointICP.pane
src/Tools/eosPoint/eosPointICP/src/init.c
src/Tools/eosPoint/eosPointICP/src/test/Makefile [new file with mode: 0755]
src/Tools/eosPoint/eosPointICP/src/test/data [new symlink]
src/Tools/eosPoint/eosPointICP/src/usage.c
src/Tools/mrcImage/.Source
src/Tools/mrcImage/.Source.org
src/Tools/mrcImage/mrcImage3DPad2/src/mrcImage3DPad2.c
src/Tools/mrcImage/mrcImageCrystalCreate/Config/OptionControlFile
src/Tools/mrcImage/mrcImageCrystalCreate/inc/mrcImageCrystalCreate.h
src/Tools/mrcImage/mrcImageCrystalCreate/src/argCheck.c
src/Tools/mrcImage/mrcImageCrystalCreate/src/init.c
src/Tools/mrcImage/mrcImageCrystalCreate/src/mrcImageCrystalCreate.c
src/Tools/mrcImage/mrcImageCrystalCreate/src/mrcImageCrystalCreate.html
src/Tools/mrcImage/mrcImageCrystalCreate/src/mrcImageCrystalCreate.pane
src/Tools/mrcImage/mrcImageCrystalCreate/src/test/Makefile [new file with mode: 0644]
src/Tools/mrcImage/mrcImageCrystalCreate/src/test/data [new symlink]
src/Tools/mrcImage/mrcImageCrystalCreate/src/usage.c
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/Define.inc [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/OptionControlFile [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/Target.inc [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Makefile [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/doc/Makefile [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/inc/config.h [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/inc/mrcImageDensityWeightedAreaCalc.h [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/.Depend [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/.Source [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/Makefile [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/X86MAC64 [new symlink]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/argCheck.c [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/init.c [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.c [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.html [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.pane [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/test/Makefile [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/test/data [new symlink]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/usage.c [new file with mode: 0755]
src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/util.c [new file with mode: 0755]
src/Tools/mrcImage/mrcImageFeatureCalc/Config/OptionControlFile
src/Tools/mrcImage/mrcImageFeatureCalc/inc/mrcImageFeatureCalc.h
src/Tools/mrcImage/mrcImageFeatureCalc/src/argCheck.c
src/Tools/mrcImage/mrcImageFeatureCalc/src/init.c
src/Tools/mrcImage/mrcImageFeatureCalc/src/mrcImageFeatureCalc.c
src/Tools/mrcImage/mrcImageFeatureCalc/src/mrcImageFeatureCalc.html
src/Tools/mrcImage/mrcImageFeatureCalc/src/mrcImageFeatureCalc.pane
src/Tools/mrcImage/mrcImageFeatureCalc/src/usage.c

diff --git a/bin/mrcImageDensityWeightedAreaCalc b/bin/mrcImageDensityWeightedAreaCalc
new file mode 120000 (symlink)
index 0000000..eddb955
--- /dev/null
@@ -0,0 +1 @@
+../sbin/MachineIndependent
\ No newline at end of file
index 0e0375b..412bd7e 100644 (file)
@@ -9,5 +9,13 @@
 #
 */
 
+#ifndef __LMRC_IMAGE_CALC_AREA_H
+#define __LMRC_IMAGE_CALC_AREA_H
+
 #include "mrcImage.h"
 void lmrcImageCalcArea(mrcImage* area, mrcImage* label, mrcImage* in, int neighbor, int mode);
+
+void lmrcImageCalcDensityWeightedArea(mrcImage* densityWeightedArea, mrcImage* label, mrcImage* in, mrcImage* inDensity, int neighbor, int mode);
+
+
+#endif // __LMRC_IMAGE_CALC_AREA_H
index 7e6553a..49d8c4f 100644 (file)
@@ -12,6 +12,19 @@ typedef struct lmrcImageCrystalCreateInfo {
        long nx;
        long ny;
        long nz;
+       float ax;
+       float ay;
+       float az;
+       float bx;
+       float by;
+       float bz;
+       float cx;
+       float cy;
+       float cz;
+       float sx;
+       float sy;
+       float sz;
+  long pixelMode;
 } lmrcImageCrystalCreateInfo;
 /* struct end */
 
index 46cc9a0..dce148d 100644 (file)
@@ -122,7 +122,6 @@ extern void lmrcImageSurfaceAreaCalc(mrcImage* out, mrcImage* in, lmrcImageSurfa
 extern void lmrcImageSurfaceAreaCalcPrint(FILE* fpt, lmrcImageSurfaceAreaCalcInfo linfo, int mode);
 extern void lmrcImageSurfaceAreaCalcUsage(FILE* fpt);
 
-
 extern void lmrcImageCircularityCalc(lmrcImageFeatureList* linfo, int mode);
 extern void lmrcImageComplexityCalc(lmrcImageFeatureList* linfo, int mode);
 extern void lmrcImageRadiusCalc(lmrcImageFeatureList* linfo, int mode);
index f34f145..58c83e0 100644 (file)
@@ -26,7 +26,8 @@ typedef enum lmrcImageNormalizingMode {
        lmrcImageNormalizingModeUsingContour=2,
        lmrcImageNormalizingModeUsingContourWithSolventFlattening=3,
        lmrcImageNormalizingModeNoEstimation=4,
-       lmrcImageNormalizingModeAssumeGaussian=5
+       lmrcImageNormalizingModeAssumeGaussian=5,
+       lmrcImageNormalizingModeMin75percent=6
 } lmrcImageNormalizingMode ;
 
 typedef struct lmrcImageNormalizingInfo {
diff --git a/src/Objects/DataManip/mrcImage/src/:w b/src/Objects/DataManip/mrcImage/src/:w
new file mode 100644 (file)
index 0000000..2ecb2b5
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+# %M% %Y% %I%
+# The latest update : %G% at %U%
+#
+#%Z% lmrcImageCrystalCreate ver %I%
+#%Z% Created by 
+#%Z%
+#%Z% Usage : lmrcImageCrystalCreate 
+#%Z% Attention
+#%Z%
+*/
+#define DEBUG
+#include "genUtil.h"
+#include "lmrcImageCrystalCreate.h"
+
+
+void 
+lmrcImageCrystalCreate(mrcImage* out, mrcImage* in, lmrcImageCrystalCreateInfo* info)
+{
+       mrcImageParaTypeReal x, y, z;
+       mrcImageParaTypeReal orgx, orgy, orgz;
+       mrcImageParaTypeReal realx, realy, realz;
+       mrcImageParaTypeReal ix, iy, iz;
+       mrcImageParaTypeReal da, db, dc;
+       mrcImageParaTypeReal orgda, orgdb, orgdc;
+       mrcImageParaTypeReal La, Lb, Lc;
+  int flagInCrystal;
+       double data;
+
+  DEBUGPRINT("start lmrcImageCrystalCreate\n");
+       out->Header = in->Header;
+  /*
+       out->HeaderN.x *= info->nx;
+       out->HeaderN.y *= info->ny;
+       out->HeaderN.z *= info->nz;
+  */
+  DEBUGPRINT3("A: %f %f %f\n", info->ax, info->ay, info->az);
+  DEBUGPRINT3("B: %f %f %f\n", info->bx, info->by, info->bz);
+  DEBUGPRINT3("C: %f %f %f\n", info->cx, info->cy, info->cz);
+  DEBUGPRINT3("N: %ld %ld %ld\n", info->nx, info->ny, info->nz);
+  out->HeaderN.x = (int)((info->nx*info->ax + info->ny*info->bx + info->nz*info->cx)/out->HeaderLength.x+0.5);  
+  out->HeaderN.y = (int)((info->nx*info->ay + info->ny*info->by + info->nz*info->cy)/out->HeaderLength.y+0.5);  
+  out->HeaderN.z = (int)((info->nx*info->az + info->ny*info->bz + info->nz*info->cz)/out->HeaderLength.z+0.5);  
+  DEBUGPRINT3("inN: %d %d %d\n", in->HeaderN.x, in->HeaderN.y, in->HeaderN.z);
+  DEBUGPRINT3("outN: %d %d %d\n", out->HeaderN.x, out->HeaderN.y, out->HeaderN.z);
+
+       mrcInit(out, NULL);
+
+  La = SQR(info->ax) + SQR(info->ay) + SQR(info->az); if(0<La) { La = sqrt(La); } else { La = 0;} 
+  Lb = SQR(info->bx) + SQR(info->by) + SQR(info->bz); if(0<Lb) { Lb = sqrt(Lb); } else { Lb = 0;} 
+  Lc = SQR(info->cx) + SQR(info->cy) + SQR(info->cz); if(0<Lc) { Lc = sqrt(Lc); } else { Lc = 0;} 
+
+  DEBUGPRINT3("L: %f %f %f\n", La, Lb, Lc);
+
+       for(z=0; z<out->HeaderN.z; z++) {
+       for(y=0; y<out->HeaderN.y; y++) {
+       for(x=0; x<out->HeaderN.x; x++) {
+    realx = (x+in->HeaderStartN.x)*in->HeaderLength.x - info->sx;
+    realy = (y+in->HeaderStartN.y)*in->HeaderLength.y - info->sy;
+    realz = (z+in->HeaderStartN.z)*in->HeaderLength.z - info->sz;
+    da = (realx*info->ax + realy*info->ay + realz*info->az)/La;
+    db = (realx*info->bx + realy*info->by + realz*info->bz)/Lb;
+    dc = (realx*info->cx + realy*info->cy + realz*info->cz)/Lc;
+    //DEBUGPRINT3("d: %f %f %f\n", da, db, dc);
+    DEBUGPRINT6("d: %f %f %f at %f %f %f\n", da, db, dc, realx, realy, realz);
+    if(0<=da && da<=info->nx 
+     &&0<=db && db<=info->ny
+     &&0<=dc && dc<=info->nz) {
+      flagInCrystal = 1;
+    } else {
+      flagInCrystal = 0;
+    }
+    if(flagInCrystal) { // in cyrstal
+        orgda = da - (int)da;
+        orgdb = db - (int)db;
+        orgdc = dc - (int)dc;
+
+        orgx = (orgda*info->ax + orgdb*info->bx + orgdc*info->cx)/in->HeaderLength.x - in->HeaderStartN.x;  
+        orgy = (orgda*info->ay + orgdb*info->by + orgdc*info->cy)/in->HeaderLength.y - in->HeaderStartN.y;  
+        orgz = (orgda*info->az + orgdb*info->bz + orgdc*info->cz)/in->HeaderLength.z - in->HeaderStartN.z;  
+
+                               mrcPixelDataGet(in,  orgx, orgy, orgz, &data, mrcPixelRePart, info->pixelMode);
+                               mrcPixelDataSet(out,    x,    y,    z,  data, mrcPixelRePart);
+        /*
+                               for(ix=0; ix<info->nx; ix++) {
+                               for(iy=0; iy<info->ny; iy++) {
+                               for(iz=0; iz<info->nz; iz++) {
+                                       mrcPixelDataSet(out, ix*in->HeaderN.x+x, 
+                                                                                                iy*in->HeaderN.y+y, 
+                                                                                                iz*in->HeaderN.z+z,
+                                                                                                data, mrcPixelRePart);
+                               }
+             }
+             }
+        */
+    }
+       }
+       }
+       }
+}
index de08375..76e82c3 100755 (executable)
@@ -12,6 +12,7 @@
 #undef DEBUG
 #include "genUtil.h"
 #include "Memory.h"
+#include "./lmrcImageDensity.h"
 #include "./lmrcImageLabeling.h"
 #include "./lmrcImageCalcArea.h"
 
@@ -63,3 +64,83 @@ lmrcImageCalcArea(mrcImage* area, mrcImage* label, mrcImage* in, int neighbor, i
        mrcStatDataSet(area, 0);
 }
 
+
+void
+lmrcImageCalcDensityWeightedArea(mrcImage* area, mrcImage* label, mrcImage* in, mrcImage* inDensity, int neighbor, int mode)
+{
+       mrcImageParaTypeReal x, y, z;
+       double data, data0, data1;
+       int maxLabel, i, inde;
+       double* sum;
+       int total;
+  lmrcImageDensityInfoInfo linfo;
+
+       DEBUGPRINT("lmrcImageCalcArea Start\n");
+       lmrcImageLabeling(label, in, neighbor, 0);
+       mrcStatDataSet(label, 0);
+
+       maxLabel = (int)(label->HeaderAMax+0.5);
+       sum = (double*)memoryAllocate(sizeof(double)*(maxLabel+1), "in lmrcImageCalcArea");
+
+       for(i=0; i<maxLabel+1; i++) {
+               sum[i] = 0;
+       }
+       for(x=0; x<label->HeaderN.x; x++) {
+       for(y=0; y<label->HeaderN.y; y++) {
+       for(z=0; z<label->HeaderN.z; z++) {
+               mrcPixelDataGet(label, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+               mrcPixelDataGet(inDensity, x, y, z, &data1, mrcPixelRePart, mrcPixelHowNearest);
+               i = (int)(data+0.5);
+               sum[i]+=data1;
+       }
+       }
+       }
+
+       area->Header = in->Header;
+       mrcInit(area, NULL);
+
+       for(x=0; x<area->HeaderN.x; x++) {
+       for(y=0; y<area->HeaderN.y; y++) {
+       for(z=0; z<area->HeaderN.z; z++) {
+               mrcPixelDataGet(label, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+               if(fabs(data)<1e-6) {
+                       mrcPixelDataSet(area,  x, y, z, 0, mrcPixelRePart);
+               } else {
+                       mrcPixelDataSet(area,  x, y, z, sum[(int)(data+0.5)], mrcPixelRePart);
+               }
+       }
+       }
+       }
+
+  linfo.deltaVolume = 0.25;
+  lmrcImageDensityInfo(&linfo, area, mrcImageDensityInfoPercentageVolume);
+
+  switch(mode) {
+    case 0: 
+      break;
+    case 1: // 75%
+       for(x=0; x<area->HeaderN.x; x++) {
+       for(y=0; y<area->HeaderN.y; y++) {
+       for(z=0; z<area->HeaderN.z; z++) {
+               mrcPixelDataGet(label, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+               mrcPixelDataGet(area, x, y, z, &data1, mrcPixelRePart, mrcPixelHowNearest);
+               if(fabs(data)<1e-6) {
+                       mrcPixelDataSet(area,  x, y, z, 0, mrcPixelRePart);
+               } else {
+          data0 = data1/linfo.percentageVolume.data[1]*0.75;
+                       mrcPixelDataSet(area,  x, y, z, data0, mrcPixelRePart);
+               }
+       }
+       }
+      }
+      break;
+    default: {
+      fprintf(stderr, "Not supported mode in lmrcImageCalcDensityWeightedArea: %d\n", mode);
+      exit(EXIT_FAILURE);
+      break;
+    }
+  }
+       mrcStatDataSet(area, 0);
+}
+
+
index 0e0375b..412bd7e 100755 (executable)
@@ -9,5 +9,13 @@
 #
 */
 
+#ifndef __LMRC_IMAGE_CALC_AREA_H
+#define __LMRC_IMAGE_CALC_AREA_H
+
 #include "mrcImage.h"
 void lmrcImageCalcArea(mrcImage* area, mrcImage* label, mrcImage* in, int neighbor, int mode);
+
+void lmrcImageCalcDensityWeightedArea(mrcImage* densityWeightedArea, mrcImage* label, mrcImage* in, mrcImage* inDensity, int neighbor, int mode);
+
+
+#endif // __LMRC_IMAGE_CALC_AREA_H
index ba84075..eb0129d 100755 (executable)
@@ -9,7 +9,8 @@
 #%Z% Attention
 #%Z%
 */
-
+#undef DEBUG
+#include "genUtil.h"
 #include "lmrcImageCrystalCreate.h"
 
 
@@ -17,30 +18,118 @@ void
 lmrcImageCrystalCreate(mrcImage* out, mrcImage* in, lmrcImageCrystalCreateInfo* info)
 {
        mrcImageParaTypeReal x, y, z;
+       mrcImageParaTypeReal orgx, orgy, orgz;
+       mrcImageParaTypeReal realx, realy, realz;
        mrcImageParaTypeReal ix, iy, iz;
+       mrcImageParaTypeReal da, db, dc;
+       mrcImageParaTypeReal orgda, orgdb, orgdc;
+       mrcImageParaTypeReal La, Lb, Lc;
+  double det, Ax, Ay, Az, Bx, By, Bz, Cx, Cy, Cz;
+
+  int flagInCrystal;
        double data;
 
+  DEBUGPRINT("start lmrcImageCrystalCreate\n");
        out->Header = in->Header;
+  /*
        out->HeaderN.x *= info->nx;
        out->HeaderN.y *= info->ny;
        out->HeaderN.z *= info->nz;
+  */
+  DEBUGPRINT3("A: %f %f %f\n", info->ax, info->ay, info->az);
+  DEBUGPRINT3("B: %f %f %f\n", info->bx, info->by, info->bz);
+  DEBUGPRINT3("C: %f %f %f\n", info->cx, info->cy, info->cz);
+  DEBUGPRINT3("N: %ld %ld %ld\n", info->nx, info->ny, info->nz);
+  out->HeaderN.x = (int)((info->nx*info->ax + info->ny*info->bx + info->nz*info->cx)/out->HeaderLength.x+0.5);  
+  out->HeaderN.y = (int)((info->nx*info->ay + info->ny*info->by + info->nz*info->cy)/out->HeaderLength.y+0.5);  
+  out->HeaderN.z = (int)((info->nx*info->az + info->ny*info->bz + info->nz*info->cz)/out->HeaderLength.z+0.5);  
+  DEBUGPRINT3("inN: %d %d %d\n", in->HeaderN.x, in->HeaderN.y, in->HeaderN.z);
+  DEBUGPRINT3("outN: %d %d %d\n", out->HeaderN.x, out->HeaderN.y, out->HeaderN.z);
+
        mrcInit(out, NULL);
 
-       for(x=0; x<in->HeaderN.x; x++) {
-               for(y=0; y<in->HeaderN.y; y++) {
-                       for(z=0; z<in->HeaderN.z; z++) {
-                               mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+  La = SQR(info->ax) + SQR(info->ay) + SQR(info->az); if(0<La) { La = sqrt(La); } else { La = 0;} 
+  Lb = SQR(info->bx) + SQR(info->by) + SQR(info->bz); if(0<Lb) { Lb = sqrt(Lb); } else { Lb = 0;} 
+  Lc = SQR(info->cx) + SQR(info->cy) + SQR(info->cz); if(0<Lc) { Lc = sqrt(Lc); } else { Lc = 0;} 
+
+  det = info->ax*info->by*info->cz
+       +info->bx*info->cy*info->az 
+       +info->cx*info->ay*info->bz 
+       -info->cx*info->by*info->az 
+       -info->bx*info->ay*info->cz 
+       -info->ax*info->cy*info->bz; 
+  if(fabs(det)==0) {
+    fprintf(stderr, "Two of a, b, c are parallel. Please check\n");
+    exit(EXIT_FAILURE);
+  } else {
+    DEBUGPRINT1("Det of A, B, C: %f\n", det);
+  }
+  Ax =  (info->by*info->cz - info->cy*info->bz)/det;
+  Ay = -(info->bx*info->cz - info->cx*info->bz)/det;
+  Az =  (info->bx*info->cy - info->cx*info->by)/det;
+  Bx = -(info->ay*info->cz - info->cy*info->az)/det;
+  By =  (info->ax*info->cz - info->cx*info->az)/det;
+  Bz = -(info->ax*info->cy - info->cx*info->ay)/det;
+  Cx =  (info->ay*info->bz - info->by*info->az)/det;
+  Cy = -(info->ax*info->bz - info->bx*info->az)/det;
+  Cz =  (info->ax*info->by - info->bx*info->ay)/det;
+
+  DEBUGPRINT3("A-1: %f %f %f\n", Ax, Ay, Az);  
+  DEBUGPRINT3("B-1: %f %f %f\n", Bx, By, Bz);  
+  DEBUGPRINT3("C-1: %f %f %f\n", Cx, Cy, Cz);  
+  DEBUGPRINT3("L: %f %f %f\n", La, Lb, Lc);
+
+       for(z=0; z<out->HeaderN.z; z++) {
+       for(y=0; y<out->HeaderN.y; y++) {
+       for(x=0; x<out->HeaderN.x; x++) {
+    realx = (x+out->HeaderStartN.x)*in->HeaderLength.x - info->sx;
+    realy = (y+out->HeaderStartN.y)*in->HeaderLength.y - info->sy;
+    realz = (z+out->HeaderStartN.z)*in->HeaderLength.z - info->sz;
+
+    
+    da = Ax*realx + Ay*realy + Az*realz; 
+    db = Bx*realx + By*realy + Bz*realz;
+    dc = Cx*realx + Cy*realy + Cz*realz;
+    //DEBUGPRINT3("d: %f %f %f\n", da, db, dc);
+    DEBUGPRINT6("d: %f %f %f at %f %f %f\n", da, db, dc, realx, realy, realz);
+
+    /*
+    if(0<=da && da<info->nx 
+     &&0<=db && db<info->ny
+     &&0<=dc && dc<info->nz) {
+      flagInCrystal = 1;
+    } else {
+      flagInCrystal = 0;
+    }
+    */
+    flagInCrystal = 1;
+
+    if(flagInCrystal) { // in cyrstal
+        orgda = da - floor(da);
+        orgdb = db - floor(db);
+        orgdc = dc - floor(dc);
+
+        orgx = (orgda*info->ax + orgdb*info->bx + orgdc*info->cx)/in->HeaderLength.x - in->HeaderStartN.x;  
+        orgy = (orgda*info->ay + orgdb*info->by + orgdc*info->cy)/in->HeaderLength.y - in->HeaderStartN.y;  
+        orgz = (orgda*info->az + orgdb*info->bz + orgdc*info->cz)/in->HeaderLength.z - in->HeaderStartN.z;  
+        DEBUGPRINT6("org: %f %f %f at %f %f %f\n", orgda, orgdb, orgdc, orgx, orgy, orgz);
+
+                               mrcPixelDataGet(in,  orgx, orgy, orgz, &data, mrcPixelRePart, info->pixelMode);
+                               mrcPixelDataSet(out,    x,    y,    z,  data, mrcPixelRePart);
+        /*
                                for(ix=0; ix<info->nx; ix++) {
-                                       for(iy=0; iy<info->ny; iy++) {
-                                               for(iz=0; iz<info->nz; iz++) {
-                                                       mrcPixelDataSet(out, ix*in->HeaderN.x+x, 
+                               for(iy=0; iy<info->ny; iy++) {
+                               for(iz=0; iz<info->nz; iz++) {
+                                       mrcPixelDataSet(out, ix*in->HeaderN.x+x, 
                                                                                                 iy*in->HeaderN.y+y, 
                                                                                                 iz*in->HeaderN.z+z,
                                                                                                 data, mrcPixelRePart);
-                                               }
-                                       }
                                }
-                       }
-               }
+             }
+             }
+        */
+    }
+       }
+       }
        }
 }
index 7e6553a..49d8c4f 100755 (executable)
@@ -12,6 +12,19 @@ typedef struct lmrcImageCrystalCreateInfo {
        long nx;
        long ny;
        long nz;
+       float ax;
+       float ay;
+       float az;
+       float bx;
+       float by;
+       float bz;
+       float cx;
+       float cy;
+       float cz;
+       float sx;
+       float sy;
+       float sz;
+  long pixelMode;
 } lmrcImageCrystalCreateInfo;
 /* struct end */
 
index 729a61f..c88aa53 100644 (file)
@@ -11,7 +11,7 @@
 */
 static char __sccs_id[] = "%Z%lmrcImageFeatureCalc ver%I%; Date:%D% %Z%";
 
-#undef DEBUG
+#define DEBUG
 #include "genUtil.h"
 #include "Memory.h"
 #include "./lmrcImageFeatureCalc.h"
@@ -284,16 +284,17 @@ lmrcImagePerimeterCalc(mrcImage* out, mrcImage* in, lmrcImagePerimeterCalcInfo*
 {
        int x, y, z;
        int x1, y1, z1;
-       int flag, flagIn, chainCode, chainCodeStart, startChainCode, flagStart, absChainCode;
+       int flag, flagIn, chainCode, chainCodeStart, startChainCode, previousChainCode, flagStart, absChainCode;
        double data0;
        double data1;
        double data2;
        double data3;
        mrcImage* area;
-       mrcImage* label;        
+       mrcImage* label;
        mrcImage* chain;
-       double L, dL;
+       double L, dL, labelID, chainID;
        mrcImageParaTypeRealCoord ori, next;
+  int errorFlag = 0;
 
        DEBUGPRINT1("lmrcImagePerimeterCalc Start mode : %d\n", mode);
        out->Header = in->Header; 
@@ -316,14 +317,20 @@ lmrcImagePerimeterCalc(mrcImage* out, mrcImage* in, lmrcImagePerimeterCalcInfo*
        for(y=0; y<in->HeaderN.y; y++) {        
        for(x=0; x<in->HeaderN.x; x++) {        
                mrcPixelDataSet(out,    x, y, 0, -1, mrcPixelRePart);
-               mrcPixelDataSet(chain,  x, y, 0, -1, mrcPixelRePart);
+               mrcPixelDataSet(chain,  x, y, 0, -2, mrcPixelRePart);
        }
        }
        for(y=0; y<in->HeaderN.y; y++) {        
        for(x=0; x<in->HeaderN.x; x++) {        
                DEBUGPRINT2("Loop: %d %d\n", x, y);
                mrcPixelDataGet(area, x, y, 0, &data0, mrcPixelRePart, mrcPixelHowNearest);
+               mrcPixelDataGet(chain, x, y, 0, &chainID, mrcPixelRePart, mrcPixelHowNearest);
+    mrcPixelDataGet(label, x, y, 0, &labelID, mrcPixelRePart, mrcPixelHowNearest);
+    if(0<labelID && -2==chainID) {
                if(1<data0) {  // in Area
+      if(((int)labelID/10)*10 == labelID) {
+        fprintf(stderr, "%f/%f\n", labelID, label->HeaderAMax);
+      }
                        switch(mode) { // Edge or Not
                                case 0: 
                                case 2: // 8-neighbor 
@@ -339,12 +346,12 @@ lmrcImagePerimeterCalc(mrcImage* out, mrcImage* in, lmrcImagePerimeterCalcInfo*
                                        break;
                        }
                        if(flag) { // Edge
-                               mrcPixelDataGet(chain,  x, y, 0, &data1, mrcPixelRePart, mrcPixelHowNearest);
-                               if(0<=data1) { // Already Calc 
+                               mrcPixelDataGet(chain,  x, y, 0, &chainID, mrcPixelRePart, mrcPixelHowNearest);
+                               if(0<=chainID) { // Already Calc 
                                        // Skip;
                                } else {      // First Calc
                                        flag = 1;
-                                       chainCodeStart = 0;
+                                       chainCodeStart = 0; // First Search from right because bottom left is the origin and first scan direction is x-axis whereas the next is y
                                        ori.x = x;
                                        ori.y = y;
                                        ori.z = 0;
@@ -355,7 +362,7 @@ lmrcImagePerimeterCalc(mrcImage* out, mrcImage* in, lmrcImagePerimeterCalcInfo*
                                                        break;
                                                }
                                                case 2:
-                                               case 3: { // Relative
+                                               case 3: { // If relative, startChainCode must be absolute.
                                                        startChainCode = (startChainCode + chainCodeStart)%8;
                                                        break;
                                                }
@@ -368,13 +375,14 @@ lmrcImagePerimeterCalc(mrcImage* out, mrcImage* in, lmrcImagePerimeterCalcInfo*
                                        L = 0;                          
                                        while(flag) { // Loop
                                                flagIn = lmrcImageChainCodeSearch(&chainCode, &next, &dL, in, ori, chainCodeStart, mode);
-                                               if(flagIn<0) {  // No Edge: Single Point
-                                                       DEBUGPRINT2("Single Points: %f %f\n", ori.x, ori.y);
+                                               if(flagIn<0) {  // No Edge, i.e., Single Point
+                                                       //DEBUGPRINT2("Single Points: %f %f\n", ori.x, ori.y);
                                                        L = 0;
                                                        mrcPixelDataSet(chain, x, y, 0, -1, mrcPixelRePart); // No chainCode 
                                                        mrcPixelDataSet(out,   x, y, 0,  0, mrcPixelRePart); // Length 
-                                                       flag = 0;
-                                               } else {        // Edge
+                                                       flag = 0; // End
+              errorFlag = -1;
+                                               } else {        // If Edge
                                                        switch(mode) {
                                                                case 0:
                                                                case 1: { // Absolute
@@ -394,26 +402,34 @@ lmrcImagePerimeterCalc(mrcImage* out, mrcImage* in, lmrcImagePerimeterCalcInfo*
                                                        }
 
                                                        if(ori.x==x && ori.y == y && absChainCode == startChainCode) {  // Start or End
-                                                               if(flagStart) { // Start
-                                                                       DEBUGPRINT4("Start Points: %f %f %d %d\n", ori.x, ori.y, chainCode, absChainCode);
+                // start position (x,y), ori is a current position, the same direction   
+                                                               if(flagStart) { // If Start point, 
+                                                                       //DEBUGPRINT4("Start Points: %f %f %d %d\n", ori.x, ori.y, chainCode, absChainCode);
                                                                        flagStart = 0;
-                                                               } else {        // End
-                                                                       DEBUGPRINT4("End Points:   %f %f %d %d\n", ori.x, ori.y, chainCode, absChainCode);
-                                                                       flag = 0;
+                                                               } else {        // If End point,
+                                                                       //DEBUGPRINT4("End Points:   %f %f %d %d\n", ori.x, ori.y, chainCode, absChainCode);
+                  errorFlag = 1;
+                                                                       flag = 0; 
                                                                }
-                                                               mrcPixelDataSet(chain, x, y, 0, chainCode, mrcPixelRePart);
-                                                       } else {                                                     // Connect
-                                                               // On the way
-                                                               DEBUGPRINT6("On the way Points: %f %f chain %d start %d %d chain %d\n", ori.x, ori.y, chainCode, x, y, startChainCode);
-                                                               DEBUGPRINT5("Next Points:       %f %f L: %f abs: %d <- %d\n", next.x, next.y, L, absChainCode, chainCode);
-                                                               mrcPixelDataSet(chain, ori.x, ori.y, 0, chainCode, mrcPixelRePart);
-                                                               mrcPixelDataSet(out,   ori.x, ori.y, 0, -1,        mrcPixelRePart);
+                                                               mrcPixelDataSet(chain, x, y, 0, chainCode, mrcPixelRePart); // Chain Code Set 
+                                                       } else { // Connection
+                                                               // On the way, 
+                                                               //DEBUGPRINT6("On the way Points: %f %f chain %d start %d %d chain %d\n", ori.x, ori.y, chainCode, x, y, startChainCode);
+                                                               //DEBUGPRINT5("Next Points:       %f %f L: %f abs: %d <- %d\n", next.x, next.y, L, absChainCode, chainCode);
+                                                               mrcPixelDataGet(chain, ori.x, ori.y, 0, &chainID, mrcPixelRePart, mrcPixelHowNearest);
+                if(0<=chainID) { // Allready traced, looped perimeters  
+                  flag = 0;
+                  errorFlag = -1;
+                } else {
+                                                                 mrcPixelDataSet(chain, ori.x, ori.y, 0, chainCode, mrcPixelRePart);
+                                                                 mrcPixelDataSet(out,   ori.x, ori.y, 0, -1,        mrcPixelRePart);
+                }
                                                        }
                                                        L+=dL;
-                                                       mrcPixelDataSet(out, x, y, 0, L, mrcPixelRePart);
+                                                       mrcPixelDataSet(out, x, y, 0, errorFlag*L, mrcPixelRePart); 
                                                }
                                                ori = next;
-                                               chainCodeStart = (absChainCode-_SEARCH_DIRECTION+8)%8;
+                                               chainCodeStart = (absChainCode-_SEARCH_DIRECTION+8)%8; // Next search
                                        }
                                }
                        } else { // Inside
@@ -427,6 +443,7 @@ lmrcImagePerimeterCalc(mrcImage* out, mrcImage* in, lmrcImagePerimeterCalcInfo*
                        mrcPixelDataSet(out,   x, y, 0, -1, mrcPixelRePart);
                        mrcPixelDataSet(chain, x, y, 0, -1, mrcPixelRePart);
                }
+    }
        }
        }
 }
@@ -445,7 +462,7 @@ lmrcImageChainCodeSearch(int* chain, mrcImageParaTypeRealCoord* next, double* pd
        y = ori.y;
        
        flagIn = -1;
-       for(chainCode=chainCodeStart; chainCode<chainCodeStart+8 && flagIn<0; chainCode++) {
+       for(chainCode=(chainCodeStart-0+8)%8; chainCode<chainCodeStart+8 && flagIn<0; chainCode++) {
                switch(mode) {
                        case 0:   // 8-neighbor 
                        case 2: { // 8-neighbor 
@@ -558,6 +575,6 @@ lmrcImageChainCodeSearch(int* chain, mrcImageParaTypeRealCoord* next, double* pd
                        }
                }
        }
-       DEBUGPRINT3("ChainCode: %d abs %d start %d\n", *chain, chainCode-1, chainCodeStart)
+       //DEBUGPRINT3("ChainCode: %d abs %d start %d\n", *chain, chainCode-1, chainCodeStart)
        return *chain;
 }
index 46cc9a0..dce148d 100644 (file)
@@ -122,7 +122,6 @@ extern void lmrcImageSurfaceAreaCalc(mrcImage* out, mrcImage* in, lmrcImageSurfa
 extern void lmrcImageSurfaceAreaCalcPrint(FILE* fpt, lmrcImageSurfaceAreaCalcInfo linfo, int mode);
 extern void lmrcImageSurfaceAreaCalcUsage(FILE* fpt);
 
-
 extern void lmrcImageCircularityCalc(lmrcImageFeatureList* linfo, int mode);
 extern void lmrcImageComplexityCalc(lmrcImageFeatureList* linfo, int mode);
 extern void lmrcImageRadiusCalc(lmrcImageFeatureList* linfo, int mode);
index b8329f9..641d37e 100755 (executable)
@@ -1,13 +1,4 @@
-/*
-# %M% %Y% %I%
-# The latest update : %G% at %U%
-#%Z% lmrcImageNormalizing ver %I%
-#%Z% Created by tacyas
-#%Z%
-#%Z% Usage : lmrcImageNormalizing
-#%Z% Attention
-#%Z%
-*/
+/* # %M% %Y% %I% # The latest update : %G% at %U% #%Z% lmrcImageNormalizing ver %I% #%Z% Created by tacyas #%Z% #%Z% Usage : lmrcImageNormalizing #%Z% Attention #%Z% */
 #include <stdlib.h>
 #include <stdio.h>
 static char __sccs_id[] = "%Z%lmrcImageNormalizing ver%I%; Date:%D% %Z%";
@@ -55,6 +46,8 @@ lmrcImageNormalizingModePrint(FILE* fpt, int mode)
        fprintf(fpt, "             data = A*data + B \n");
        fprintf(fpt, "%3d: Assume the density as gaussion.\n", lmrcImageNormalizingModeAssumeGaussian);
        fprintf(fpt, "             data = A*Normalized(data) + B , where normalized means (average=0, SD=1)\n");
+       fprintf(fpt, "%3d: Min-75percent: Background and Object(75)\n", lmrcImageNormalizingModeMin75percent);
+       fprintf(fpt, "             data = A*(data-Min)/(75percent-Min)x0.75 + B \n");
 }
 
 void 
@@ -155,6 +148,18 @@ lmrcImageNormalizing(mrcImage* out, mrcImage* in, lmrcImageNormalizingInfo* linf
                        }
                        break;
                }
+               case lmrcImageNormalizingModeMin75percent: {
+                       for(x=0; x<in->HeaderN.x; x++) {
+                               for(y=0; y<in->HeaderN.y; y++) {
+                                       for(z=0; z<in->HeaderN.z; z++) {
+                                               mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+                                               data = linfo->A*(data - in->HeaderAMin)/(in->HeaderAMax - in->HeaderAMax)*0.75 + linfo->B;
+                                               mrcPixelDataSet(out, x, y, z, data, mrcPixelRePart);
+                                       }
+                               }
+                       }
+                       break;
+               }
                case lmrcImageNormalizingModeUsingContour: {
                        for(x=0; x<in->HeaderN.x; x++) {
                                for(y=0; y<in->HeaderN.y; y++) {
index f34f145..58c83e0 100755 (executable)
@@ -26,7 +26,8 @@ typedef enum lmrcImageNormalizingMode {
        lmrcImageNormalizingModeUsingContour=2,
        lmrcImageNormalizingModeUsingContourWithSolventFlattening=3,
        lmrcImageNormalizingModeNoEstimation=4,
-       lmrcImageNormalizingModeAssumeGaussian=5
+       lmrcImageNormalizingModeAssumeGaussian=5,
+       lmrcImageNormalizingModeMin75percent=6
 } lmrcImageNormalizingMode ;
 
 typedef struct lmrcImageNormalizingInfo {
index 255f916..8995b86 100755 (executable)
@@ -1002,6 +1002,5 @@ lmrcImageInformation(mrcImageInformation* info, mrcImage* img)
                        exit(EXIT_FAILURE);
                }
        }
-               
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index 1f12516..9ee2d89 100644 (file)
@@ -1,31 +1 @@
 WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
-WORLDNAME=Tools
old mode 100644 (file)
new mode 100755 (executable)
index 0e1572c..e17b902
@@ -1,6 +1,2 @@
-SOURCE=\
-eosPointCurvatureInfo \
-eosPointICP \
-eosPointProjector \
-eosPointRotation \
+SOURCE_FILE =\
 #LastSource
index 551f257..3ff4ac8 100755 (executable)
@@ -7,4 +7,9 @@
 "-o","-o[utput]","OutputDataFile","Essential","1","1","Out","outFile","NULL"
 "-ot","-o[utput]t[ype]","OutputDataFile","Essential","1","1","OutType","Integer","2"
 "-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
+"-EAMode","-EAMode","Euler Angle","Optional","1","1","EAMode","String","ZEYS"
+"-Iter","-Iter[ationLimit]","IteretionLimit","Optional","1","1","IterationLimit","Integer","10000"
+"-Pattern","-Pattern","Pickup Pattern","Optional","1","1","Pattern","Integer","10"
+"-Thres","-Thres[hold]","Threshold","Optional","1","1","ScoreThreshold","Real","0.0"
+"-Pick","-Pick[upPercent]","Pickup Percent","Optional","1","1","Pickup","Real","0.8"
 "-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
index c37d8db..0cb71a5 100755 (executable)
@@ -33,22 +33,25 @@ typedef struct eosPointICPInfo {
     
     long flagOutType;
     long OutType;
-
+    
+    long flagconfigFile;
+    char* configFile;
+    FILE* fptconfigFile;
+    
     long flagEAMode;
     char* EAMode;
-
+    
     long flagIterationLimit;
     long IterationLimit;
-
+    
     long flagPattern;
     long Pattern;
-
+    
     long flagScoreThreshold;
-    double ScoreThreshold;
+    float ScoreThreshold;
     
-    long flagconfigFile;
-    char* configFile;
-    FILE* fptconfigFile;
+    long flagPickup;
+    float Pickup;
     
     long flagmode;
     long mode;
diff --git a/src/Tools/eosPoint/eosPointICP/inc/eosPointICP.h.org b/src/Tools/eosPoint/eosPointICP/inc/eosPointICP.h.org
new file mode 100755 (executable)
index 0000000..c37d8db
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef EOSPOINTICP_H
+#define EOSPOINTICP_H
+#include <stdio.h>
+#include <stdlib.h>
+
+#define OPTION_FLAG     '-'
+#define OPTION_FLAG_POS (0)
+#define OPTION_POS      (1)
+
+
+
+
+typedef struct eosPointICPInfo {
+    long flagRedirect;
+
+    long flagIn;
+    char* In;
+    FILE* fptIn;
+    
+    long flagInType;
+    long InType;
+    
+    long flagRef;
+    char* Ref;
+    FILE* fptRef;
+    
+    long flagRefType;
+    long RefType;
+    
+    long flagOut;
+    char* Out;
+    FILE* fptOut;
+    
+    long flagOutType;
+    long OutType;
+
+    long flagEAMode;
+    char* EAMode;
+
+    long flagIterationLimit;
+    long IterationLimit;
+
+    long flagPattern;
+    long Pattern;
+
+    long flagScoreThreshold;
+    double ScoreThreshold;
+    
+    long flagconfigFile;
+    char* configFile;
+    FILE* fptconfigFile;
+    
+    long flagmode;
+    long mode;
+    
+} eosPointICPInfo;
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern void argCheck(eosPointICPInfo* info, int argc, char* avgv[]);
+extern void khorosInit(int argc, char* avgv[]);
+extern void init0(eosPointICPInfo* info);
+extern void init1(eosPointICPInfo* info);
+extern void usage(char* usage);
+extern void additionalUsage(void);
+extern void htmlBeforeUsage(char* usage);
+extern void htmlAfterUsage(char* usage);
+#ifdef __cplusplus
+};
+#endif
+#endif /* EOSPOINTICP_H */
index 37c728b..9613d57 100755 (executable)
@@ -94,12 +94,29 @@ argCheck(eosPointICPInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
-                SCASE("EA"){
-                    info->EAMode = stringGetNthWord(argv[i+1], 1, " ,");
-                    i++;
-                    info->flagEAMode++;
+                SCASE("c") {
+                    if(i+1<argc) {
+                        info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagconfigFile++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
                 }
-                SCASE("il"){
+                SCASE("EAMode") {
+                    if(i+1<argc) {
+                        info->EAMode = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagEAMode++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("Iter") {
                     if(i+1<argc) {
                         info->IterationLimit = stringGetNthIntegerData(argv[i+1], 1, " ,");
                         i++;
@@ -110,7 +127,7 @@ argCheck(eosPointICPInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
-                SCASE("p"){
+                SCASE("Pattern") {
                     if(i+1<argc) {
                         info->Pattern = stringGetNthIntegerData(argv[i+1], 1, " ,");
                         i++;
@@ -121,7 +138,7 @@ argCheck(eosPointICPInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
-                SCASE("ST"){
+                SCASE("Thres") {
                     if(i+1<argc) {
                         info->ScoreThreshold = stringGetNthRealData(argv[i+1], 1, " ,");
                         i++;
@@ -132,11 +149,11 @@ argCheck(eosPointICPInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
-                SCASE("c") {
+                SCASE("Pick") {
                     if(i+1<argc) {
-                        info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
+                        info->Pickup = stringGetNthRealData(argv[i+1], 1, " ,");
                         i++;
-                        info->flagconfigFile++;
+                        info->flagPickup++;
                     } else {
                         usage(argv[0]);
                         exit(EXIT_FAILURE);
index bc6ecf7..f2a1a6f 100755 (executable)
@@ -500,10 +500,9 @@ void icpAlgorhythm(eosPoint *inP, eosPoint *refP, double score_threshold, int it
 }
 
 //座標をピックアップする pickup_percentの割合でflagが立つ
-void pickupPoint(eosPoint* inP, eosPoint* pickup_inP, int cnt_in_point)
+void pickupPoint(eosPoint* inP, eosPoint* pickup_inP, int cnt_in_point, double pickup_percent)
 {
        int i, j, pickup_flag;
-       float pickup_percent = 0.8;
 
        eosPointTop(inP);  
        eosPointInit(pickup_inP, NULL);
@@ -575,8 +574,13 @@ void writeOutput(eosPointICPInfo* info, eosPointIcpResult best_icp_result_set, e
        fprintf(info->fptOut,"ref\t\t\t\ticp_result\n");
        for (i = 0; i < count; i++){
                moveRefAccordingToCP(closest_index_pair[i], refP);
-               fprintf(info->fptOut, "%lf %lf %lf\t%lf %lf %lf\n", refP->current->p.coord.data[0], refP->current->p.coord.data[1], refP->current->p.coord.data[2],
-                                                                                                                       final_inP.current->p.coord.data[0], final_inP.current->p.coord.data[1], final_inP.current->p.coord.data[2]);
+               fprintf(info->fptOut, "%lf %lf %lf\t%lf %lf %lf\n", 
+      refP->current->p.coord.data[0], 
+      refP->current->p.coord.data[1], 
+      refP->current->p.coord.data[2],
+                       final_inP.current->p.coord.data[0], 
+      final_inP.current->p.coord.data[1], 
+      final_inP.current->p.coord.data[2]);
                eosPointNext(&final_inP);
        }
 }
@@ -637,7 +641,7 @@ int main(int argc, char *argv[])
 
        for(icp_pattern=1;icp_pattern<=info.Pattern;icp_pattern++){
                progressBar(icp_pattern, info.Pattern);
-               pickupPoint(&inP, &pickup_inP, cnt_in_point);
+               pickupPoint(&inP, &pickup_inP, cnt_in_point, info.Pickup);
                icpAlgorhythm(&pickup_inP, &refP, info.ScoreThreshold, info.IterationLimit, &icp_result_set);
                MemorizeStateOfMinimumScore(&best_icp_result_set, icp_result_set, icp_pattern);
        }
index 6597e51..df2f4a9 100755 (executable)
         -O 1 0 1 1 0 1 -1x1+1+7.500000 ' ' 'Out' 'OutputDataFile' o
         -i 1 0 1 1 0 -1x1+1+9.000000 0 0 2 0 0 'OutType' 'OutputDataFile' ot
         -I 1 0 1 0 0 1 -1x1+1+10.500000 ' ' 'configFile' 'ConfigurationFile' c
-        -i 1 0 1 0 0 -1x1+1+12.000000 0 0 0 0 0 'mode' 'Mode' m
+        -s 1 0 1 0 0 -1x1+1+12.000000 0 0 0 0 0 'EAMode' 'Euler Angle' EAMode
+        -i 1 0 1 0 0 -1x1+1+13.500000 0 0 10000 0 0 'IterationLimit' 'IteretionLimit' Iter
+        -i 1 0 1 0 0 -1x1+1+15.000000 0 0 10 0 0 'Pattern' 'Pickup Pattern' Pattern
+        -f 1 0 1 0 0 -1x1+1+16.500000 0 0 0.000000 0 0 0 'ScoreThreshold' 'Threshold' Thres
+        -f 1 0 1 0 0 -1x1+1+18.000000 0 0 0.800000 0 0 0 'Pickup' 'Pickup Percent' Pick
+        -i 1 0 1 0 0 -1x1+1+19.500000 0 0 0 0 0 'mode' 'Mode' m
     -E
   -E
 -E
index c5d09c7..783a16a 100755 (executable)
@@ -13,16 +13,17 @@ void
 init0(eosPointICPInfo* info)
 {
     info->fptIn = NULL;    info->flagIn = 0;
-    info->InType = 0;    info->flagInType = 0;
+    info->InType = 2;    info->flagInType = 0;
     info->fptRef = NULL;    info->flagRef = 0;
-    info->RefType = 0;    info->flagRefType = 0;
+    info->RefType = 2;    info->flagRefType = 0;
     info->fptOut = NULL;    info->flagOut = 0;
-    info->OutType = 0;    info->flagOutType = 0;
-    info->EAMode = stringGetNthWord("ZONS", 1, "\0");    info->flagEAMode = 0;
-    info->IterationLimit=10000;    info->flagIterationLimit = 0;
-    info->Pattern = 10;    info->flagPattern = 0;
-    info->ScoreThreshold = 0.0;   info->flagScoreThreshold = 0;
+    info->OutType = 2;    info->flagOutType = 0;
     info->fptconfigFile = NULL;    info->flagconfigFile = 0;
+    info->EAMode = stringGetNthWord("ZEYS", 1, "\0");    info->flagEAMode = 0;
+    info->IterationLimit = 10000;    info->flagIterationLimit = 0;
+    info->Pattern = 10;    info->flagPattern = 0;
+    info->ScoreThreshold = 0.0;    info->flagScoreThreshold = 0;
+    info->Pickup = 0.8;    info->flagPickup = 0;
     info->mode = 0;    info->flagmode = 0;
 }
 
@@ -71,18 +72,24 @@ init1(eosPointICPInfo* info)
     }
     if(info->flagOutType) {
     }
+    
+    if(info->flagconfigFile) {
+        info->fptconfigFile = fileOpen(info->configFile, "r");
+    }
+    
     if(info->flagEAMode) {
     }
+    
     if(info->flagIterationLimit) {
     }
-    if(info->flagPattern){
-
+    
+    if(info->flagPattern) {
     }
-    if(info->flagScoreThreshold){
+    
+    if(info->flagScoreThreshold) {
     }
     
-    if(info->flagconfigFile) {
-        info->fptconfigFile = fileOpen(info->configFile, "r");
+    if(info->flagPickup) {
     }
     
     if(info->flagmode) {
diff --git a/src/Tools/eosPoint/eosPointICP/src/test/Makefile b/src/Tools/eosPoint/eosPointICP/src/test/Makefile
new file mode 100755 (executable)
index 0000000..f0f1554
--- /dev/null
@@ -0,0 +1,24 @@
+include ../../Config/Define.inc
+include ../../../Config/Define.inc
+include ../../../../Config/Define.inc
+include ../../../../../Config/Define.inc
+
+all: help exec
+
+help:
+       @echo "----- Help Message Check -----"
+       @../$(OSTYPE)/$(OBJECTNAME)      -h
+
+exec:
+       @echo "----- Execution Check -----"
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/inP0 -it 0 -r data/refP -rt 0 -o data/out0 -ot 0 -Thres 0.01 -Pattern 100
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/inP0 -it 0 -r data/refP -rt 0 -o data/out0-100 -ot 0 -Thres 0.01 -Pattern 100 -Pick 1.0
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/inP0 -it 0 -r data/refP -rt 0 -o data/out0-50 -ot 0 -Thres 0.01 -Pattern 100 -Pick 0.5
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/inP1 -it 0 -r data/refP -rt 0 -o data/out1 -ot 0 -Thres 0.01 -Pattern 100
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/inP2 -it 0 -r data/refP -rt 0 -o data/out2 -ot 0 -Thres 0.01 -Pattern 100
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/inP0 -it 0 -r data/refP1 -rt 0 -o data/out0-1 -ot 0 -Thres 0.01 -Pattern 100
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/inP1 -it 0 -r data/refP1 -rt 0 -o data/out1-1 -ot 0 -Thres 0.01 -Pattern 100
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/inP2 -it 0 -r data/refP1 -rt 0 -o data/out2-1 -ot 0 -Thres 0.01 -Pattern 100
+       @echo "----- Calc check -----"          
+
+clean:
diff --git a/src/Tools/eosPoint/eosPointICP/src/test/data b/src/Tools/eosPoint/eosPointICP/src/test/data
new file mode 120000 (symlink)
index 0000000..bf6dfca
--- /dev/null
@@ -0,0 +1 @@
+../../../../../..//data/eosPointICP
\ No newline at end of file
index fd28fc8..507127e 100755 (executable)
@@ -7,18 +7,19 @@ usage(char* thisProgram)
 {
     fprintf(stderr, "Usage: %s\n", thisProgram);
     fprintf(stderr, "Options:\n");
-    fprintf(stderr, "    [-i[nput]             In                  (NULL      ).as(inFile              ) ] :Essential :Input: eosPoint\n");
-    fprintf(stderr, "    [-i[nput]t[ype]       InType              (2         ).as(Integer             ) ] :Optional  :eosPointType\n");
-    fprintf(stderr, "    [-r[eference]         Ref                 (NULL      ).as(inFile              ) ] :Essential :Input: eosPoint\n");
-    fprintf(stderr, "    [-r[eference]t[ype]   RefType             (2         ).as(Integer             ) ] :Optional  :Input: eosPoint\n");
-    fprintf(stderr, "    [-o[utput]            Out                 (NULL      ).as(outFile             ) ] :Essential :OutputDataFile\n");
-    fprintf(stderr, "    [-o[utput]t[ype]      OutType             (2         ).as(Integer             ) ] :Essential :OutputDataFile\n");
-    fprintf(stderr, "    [-i[teration]l[imit]  IterationLimit      (10000     ).as(Integer             ) ] :Optional  :Iteration Limit\n");
-    fprintf(stderr, "    [-p[erttern]]         Pattern             (10        ).as(Integer             ) ] :Optional  :Pattern\n");
-    fprintf(stderr, "    [-E[uler]A[ngle]      EulerAngle          (ZONS      ).as(String              ) ] :Optional  :EulerAngle\n");
-    fprintf(stderr, "    [-S[core]T[hreshold]] ScoreThreshold      (0         ).as(Real                ) ] :Optional  :ScoreThreshold\n");
-    fprintf(stderr, "    [-c[onfig]            configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile\n");
-    fprintf(stderr, "    [-m[ode]              mode                (0         ).as(Integer             ) ] :Optional  :Mode\n");
+    fprintf(stderr, "    [-i[nput]            In                  (NULL      ).as(inFile              ) ] :Essential :Input: eosPoint\n");
+    fprintf(stderr, "    [-i[nput]t[ype]      InType              (2         ).as(Integer             ) ] :Optional  :eosPointType\n");
+    fprintf(stderr, "    [-r[eference]        Ref                 (NULL      ).as(inFile              ) ] :Essential :Input: esoPoint\n");
+    fprintf(stderr, "    [-r[eference]t[ype]  RefType             (2         ).as(Integer             ) ] :Optional  :Input: esoPoint\n");
+    fprintf(stderr, "    [-o[utput]           Out                 (NULL      ).as(outFile             ) ] :Essential :OutputDataFile\n");
+    fprintf(stderr, "    [-o[utput]t[ype]     OutType             (2         ).as(Integer             ) ] :Essential :OutputDataFile\n");
+    fprintf(stderr, "    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile\n");
+    fprintf(stderr, "    [-EAMode             EAMode              (ZEYS      ).as(String              ) ] :Optional  :Euler Angle\n");
+    fprintf(stderr, "    [-Iter[ationLimit]   IterationLimit      (10000     ).as(Integer             ) ] :Optional  :IteretionLimit\n");
+    fprintf(stderr, "    [-Pattern            Pattern             (10        ).as(Integer             ) ] :Optional  :Pickup Pattern\n");
+    fprintf(stderr, "    [-Thres[hold]        ScoreThreshold      (0.0       ).as(Real                ) ] :Optional  :Threshold\n");
+    fprintf(stderr, "    [-Pick[upPercent]    Pickup              (0.8       ).as(Real                ) ] :Optional  :Pickup Percent\n");
+    fprintf(stderr, "    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode\n");
     additionalUsage();
 }
 
index 6545c9c..67d4574 100644 (file)
@@ -97,6 +97,7 @@ mrcImageDensityChangeEstimation \
 mrcImageDensityInfo \
 mrcImageDensityNormalization \
 mrcImageDensityNormalizationByImage \
+mrcImageDensityWeightedAreaCalc \
 mrcImageDilation \
 mrcImageDisplayDensityAsTempFactor \
 mrcImageDistanceConversion \
index c02c7fe..6545c9c 100644 (file)
@@ -122,6 +122,7 @@ mrcImageFilamentSearchResultShow \
 mrcImageFilterCreate \
 mrcImageFilteringbyFile \
 mrcImageFilteringbyFileForVariance \
+mrcImageFlatFieldCorrection \
 mrcImageFloating \
 mrcImageFourierNeighborCorrelation \
 mrcImageFourierPowerSpectrum \
index 4fe6a95..049372f 100755 (executable)
@@ -140,7 +140,11 @@ lmrcImage3DPadfilament(mrcImage* out ,mrcImage* in , lmrcImage3DPadInfo linfo, i
                                        averager = linfo.rmax;
                                }
                                DEBUGPRINT1("r: %g \n",averager);
-                               av=lmrcImage3DPadfilamentCalcavr(in ,averager);
+        if(linfo.flagr) {
+                                 av=lmrcImage3DPadfilamentCalcavr(in, averager);
+        } else {
+                                 av=lmrcImage3DPadfilamentCalcavr(in, -1);
+        }
                        } else {
                                av=linfo.v;
                        }
@@ -176,7 +180,11 @@ lmrcImage3DPadfilament(mrcImage* out ,mrcImage* in , lmrcImage3DPadInfo linfo, i
                case 1:
                case 2:
                        if (!linfo.flagv){
-                               av = lmrcImage3DPadfilamentCalcavr(in, linfo.rmax+linfo.w);
+        if(linfo.flagr) {
+                                 av = lmrcImage3DPadfilamentCalcavr(in, linfo.rmax+linfo.w);
+        } else {
+                                 av = lmrcImage3DPadfilamentCalcavr(in, -1);
+        }
                                DEBUGPRINT1("r: %g \n",averager);
                                fprintf(stdout,"av: %g \n",av);
                        } else {
@@ -246,7 +254,7 @@ void lmrcImage3DPad(mrcImage* out, mrcImage* in, lmrcImage3DPadInfo linfo, int m
        int x,y,z;
        double data,cx,cy,cz,sx,sy,sz,r2,av,c,dr2;
        double dstx, dsty, dstz;
-       double offset;
+       double offset, v;
 
        out->Header = in->Header;
        out->HeaderN.x = linfo.Nx;
@@ -264,18 +272,43 @@ void lmrcImage3DPad(mrcImage* out, mrcImage* in, lmrcImage3DPadInfo linfo, int m
        sy=(out->HeaderN.y-in->HeaderN.y)*0.5;
        sz=(out->HeaderN.z-in->HeaderN.z)*0.5;
        r2=SQR(linfo.rmax);
+
+  // Floating and padding value
+       if (linfo.flagFloating) { // Boundery
+        if(linfo.flagr) {
+                     av=lmrcImage3DPadCalcavr(in, linfo.rmax);
+        } else {
+                         av=lmrcImage3DPadCalcavr(in, -1);
+        }
+       } else { // NotFloating
+      av = 0;
+  }
+
+       if(linfo.flagFloating) {
+    if(linfo.flagv) {
+      v = linfo.v;
+           offset = av - v;
+    } else {
+      v = 0;
+      offset = av;
+    }
+       } else {
+    v = 0;
+               offset = 0;
+       }
+
+  // Padding value
+       for (z=0;z<out->HeaderN.z;z++){
+       for (y=0;y<out->HeaderN.y;y++){
+       for (x=0;x<out->HeaderN.x;x++){
+    // 
+         mrcPixelDataSet(out, x, y, z, v, mrcPixelRePart);
+       }
+       }
+       }
+
        switch(mode){
                case 0:
-                       if (!linfo.flagv){
-                               av=lmrcImage3DPadCalcavr(in, linfo.rmax);
-                       } else {
-                               av=linfo.v;
-                       }
-                       if(linfo.flagFloating) {
-                               offset = av;
-                       } else {
-                               offset = 0;
-                       }
                        for (z=0;z<out->HeaderN.z;z++){
                        for (y=0;y<out->HeaderN.y;y++){
                        for (x=0;x<out->HeaderN.x;x++){
@@ -301,17 +334,7 @@ void lmrcImage3DPad(mrcImage* out, mrcImage* in, lmrcImage3DPadInfo linfo, int m
                        break;
                case 1:
                case 2:
-                       if (!linfo.flagv) {
-                               av=lmrcImage3DPadCalcavr(in ,linfo.rmax+linfo.w);
-                       } else {
-                               av=linfo.v;
-                       }
-                       if(linfo.flagFloating) {
-                               offset = av;
-                       } else {
-                               offset = 0;
-                       }
-                       fprintf(stdout,"av :%g\n",av); 
+                       //fprintf(stdout,"av :%g\n",av); 
                        for (z=0;z<in->HeaderN.z;z++){
                        for (y=0;y<in->HeaderN.y;y++){
                        for (x=0;x<in->HeaderN.x;x++){
@@ -351,23 +374,41 @@ lmrcImage3DPadCalcavr(mrcImage* in ,double rmax)
        double cx,cy,cz,r2,sum,data,av;
 
        /* begin */
-       n=0;
-       sum=0;
-       cx=(in->HeaderN.x-1)*0.5;
-       cy=(in->HeaderN.y-1)*0.5; 
-       cz=(in->HeaderN.z-1)*0.5; 
-       for (z=0;z<in->HeaderN.z;z++){
-       for (y=0;y<in->HeaderN.y;y++){
-       for (x=0;x<in->HeaderN.x;x++){
-               r2=SQR(x-cx)+SQR(y-cy)+SQR(z-cz);
-               if (SQR(rmax) <= r2 && r2<SQR(rmax+1)) {
-                       mrcPixelDataGet(in ,x ,y ,z ,&data, mrcPixelRePart, mrcPixelHowNearest);
-                       sum+=data;
-                       n++;
+  if(0<=rmax) {
+               n=0;
+               sum=0;
+               cx=(in->HeaderN.x-1)*0.5;
+               cy=(in->HeaderN.y-1)*0.5; 
+               cz=(in->HeaderN.z-1)*0.5; 
+               for (z=0;z<in->HeaderN.z;z++){
+               for (y=0;y<in->HeaderN.y;y++){
+               for (x=0;x<in->HeaderN.x;x++){
+                       r2=SQR(x-cx)+SQR(y-cy)+SQR(z-cz);
+                       if (SQR(rmax) <= r2 && r2<SQR(rmax+1)) {
+                               mrcPixelDataGet(in ,x ,y ,z ,&data, mrcPixelRePart, mrcPixelHowNearest);
+                               sum+=data;
+                               n++;
+                       }
                }
-       }
-       }
-       }
-       av=sum/n;
+               }
+               }
+               av=sum/n;
+  } else {
+               n=0;
+               sum=0;
+               for (z=0;z<in->HeaderN.z;z++){
+               for (y=0;y<in->HeaderN.y;y++){
+               for (x=0;x<in->HeaderN.x;x++){
+      if( z==0||z==in->HeaderN.z-1
+        ||y==0||y==in->HeaderN.y-1
+        ||x==0||x==in->HeaderN.x-1) {
+                               sum+=data;
+                               n++;
+                       }
+               }
+               }
+               }
+    av=sum/n;
+  }
        return(av);
 }
index 177c435..b7fe59a 100755 (executable)
@@ -2,8 +2,13 @@
 # FileFormat
 "-i","-i[nput]","InputDataFile","Essential","1","1","In","inFile","NULL"
 "-o","-o[utput]","OutputDataFile","Essential","1","1","Out","outFile","NULL"
-"-nx","-nx","Number:x-axis","Optional","1","1","nx","Integer","1"
-"-ny","-ny","Number:y-axis","Optional","1","1","ny","Integer","1"
-"-nz","-nz","Number:z-axis","Optional","1","1","nz","Integer","1"
+"-nx","-nx","Number:x-axis(a-axis)","Optional","1","1","nx","Integer","1"
+"-ny","-ny","Number:y-axis(b-axis)","Optional","1","1","ny","Integer","1"
+"-nz","-nz","Number:z-axis(c-axis)","Optional","1","1","nz","Integer","1"
+"-start","-start","start coord(x, y, z)[Ang]","Optional","3","1","StartX","Real","0.0","2","StartY","Real","0.0","3","StartZ","Real","0.0"
+"-A","-A[-axis]","a(x, y, z)[Ang]","Optional","3","1","AX","Real","1.0","2","AY","Real","0.0","3","AZ","Real","0.0"
+"-B","-B[-axis]","b(x, y, z)[Ang]","Optional","3","1","BX","Real","0.0","2","BY","Real","1.0","3","BZ","Real","0.0"
+"-C","-C[-axis]","c(x, y, z)[Ang]","Optional","3","1","CX","Real","0.0","2","CY","Real","0.0","3","CZ","Real","1.0"
+"-M","-M[ode]","Mode: PixelHow","Optional","1","1","Mode","Integer","0"
 "-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
 "-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
index b034608..03b0359 100755 (executable)
@@ -30,6 +30,45 @@ typedef struct mrcImageCrystalCreateInfo {
     long flagnz;
     long nz;
     
+    long flagStartX;
+    float StartX;
+    
+    long flagStartY;
+    float StartY;
+    
+    long flagStartZ;
+    float StartZ;
+    
+    long flagAX;
+    float AX;
+    
+    long flagAY;
+    float AY;
+    
+    long flagAZ;
+    float AZ;
+    
+    long flagBX;
+    float BX;
+    
+    long flagBY;
+    float BY;
+    
+    long flagBZ;
+    float BZ;
+    
+    long flagCX;
+    float CX;
+    
+    long flagCY;
+    float CY;
+    
+    long flagCZ;
+    float CZ;
+    
+    long flagMode;
+    long Mode;
+    
     long flagconfigFile;
     char* configFile;
     FILE* fptconfigFile;
index cd884d1..d33727f 100755 (executable)
@@ -83,6 +83,85 @@ argCheck(mrcImageCrystalCreateInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
+                SCASE("start") {
+                    if(i+3<argc) {
+                        info->StartX = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagStartX++;
+                        info->StartY = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagStartY++;
+                        info->StartZ = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagStartZ++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("A") {
+                    if(i+3<argc) {
+                        info->AX = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagAX++;
+                        info->AY = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagAY++;
+                        info->AZ = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagAZ++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("B") {
+                    if(i+3<argc) {
+                        info->BX = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagBX++;
+                        info->BY = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagBY++;
+                        info->BZ = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagBZ++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("C") {
+                    if(i+3<argc) {
+                        info->CX = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagCX++;
+                        info->CY = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagCY++;
+                        info->CZ = stringGetNthRealData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagCZ++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("M") {
+                    if(i+1<argc) {
+                        info->Mode = stringGetNthIntegerData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagMode++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
                 SCASE("c") {
                     if(i+1<argc) {
                         info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
index 54864e1..b8533b6 100755 (executable)
@@ -17,6 +17,19 @@ init0(mrcImageCrystalCreateInfo* info)
     info->nx = 1;    info->flagnx = 0;
     info->ny = 1;    info->flagny = 0;
     info->nz = 1;    info->flagnz = 0;
+    info->StartX = 0.0;    info->flagStartX = 0;
+    info->StartY = 0.0;    info->flagStartY = 0;
+    info->StartZ = 0.0;    info->flagStartZ = 0;
+    info->AX = 1.0;    info->flagAX = 0;
+    info->AY = 0.0;    info->flagAY = 0;
+    info->AZ = 0.0;    info->flagAZ = 0;
+    info->BX = 0.0;    info->flagBX = 0;
+    info->BY = 1.0;    info->flagBY = 0;
+    info->BZ = 0.0;    info->flagBZ = 0;
+    info->CX = 0.0;    info->flagCX = 0;
+    info->CY = 0.0;    info->flagCY = 0;
+    info->CZ = 1.0;    info->flagCZ = 0;
+    info->Mode = 0;    info->flagMode = 0;
     info->fptconfigFile = NULL;    info->flagconfigFile = 0;
     info->mode = 0;    info->flagmode = 0;
 }
@@ -53,6 +66,45 @@ init1(mrcImageCrystalCreateInfo* info)
     if(info->flagnz) {
     }
     
+    if(info->flagStartX) {
+    }
+    
+    if(info->flagStartY) {
+    }
+    
+    if(info->flagStartZ) {
+    }
+    
+    if(info->flagAX) {
+    }
+    
+    if(info->flagAY) {
+    }
+    
+    if(info->flagAZ) {
+    }
+    
+    if(info->flagBX) {
+    }
+    
+    if(info->flagBY) {
+    }
+    
+    if(info->flagBZ) {
+    }
+    
+    if(info->flagCX) {
+    }
+    
+    if(info->flagCY) {
+    }
+    
+    if(info->flagCZ) {
+    }
+    
+    if(info->flagMode) {
+    }
+    
     if(info->flagconfigFile) {
         info->fptconfigFile = fileOpen(info->configFile, "r");
     }
index 9711933..0c67a6d 100755 (executable)
@@ -16,6 +16,9 @@ static char __sccs_id[] = "%Z%mrcImageCrystalCreate ver%I%; Date:%D% %Z%";
 #include <math.h>                  
 #define GLOBAL_DECLARATION
 #include "../inc/config.h"
+
+#undef DEBUG
+#include "genUtil.h"
 #include "mrcImage.h"
 #include "lmrcImageCrystalCreate.h"
 
@@ -28,14 +31,55 @@ main(int argc, char* argv[])
        mrcImage out;
 
        init0(&info);
-    argCheck(&info, argc, argv);
-    init1(&info);
+  argCheck(&info, argc, argv);
+  init1(&info);
 
        mrcFileRead(&in, info.In, "in main", 0);
 
        linfo.nx = info.nx;
        linfo.ny = info.ny;
        linfo.nz = info.nz;
+  if(info.flagAX) {
+         linfo.ax = info.AX;
+         linfo.ay = info.AY;
+         linfo.az = info.AZ;
+  } else {
+    linfo.ax = in.HeaderN.x*in.HeaderLength.x;
+    linfo.ay = 0;
+    linfo.az = 0;
+  }
+  if(info.flagBX) {
+         linfo.bx = info.BX;
+         linfo.by = info.BY;
+         linfo.bz = info.BZ;
+  } else {
+    linfo.bx = 0;
+    linfo.by = in.HeaderN.y*in.HeaderLength.y;
+    linfo.bz = 0;
+  }
+  if(info.flagCX) {
+         linfo.cx = info.CX;
+         linfo.cy = info.CY;
+         linfo.cz = info.CZ;
+  } else {
+    linfo.cx = 0;
+    linfo.cy = 0;
+    linfo.cz = in.HeaderN.z*in.HeaderLength.z;
+  }
+  if(info.flagStartX) {
+         linfo.sx = info.StartX*in.HeaderLength.x;
+         linfo.sy = info.StartY*in.HeaderLength.y;
+         linfo.sz = info.StartZ*in.HeaderLength.z;
+  } else {
+         linfo.sx = 0;
+         linfo.sy = 0;
+         linfo.sz = 0;
+  }
+  linfo.pixelMode = info.Mode;
+
+  DEBUGPRINT3("A: %f %f %f\n", linfo.ax, linfo.ay, linfo.az);
+  DEBUGPRINT3("B: %f %f %f\n", linfo.bx, linfo.by, linfo.bz);
+  DEBUGPRINT3("C: %f %f %f\n", linfo.cx, linfo.cy, linfo.cz);
        lmrcImageCrystalCreate(&out, &in, &linfo); 
 
        mrcStatDataSet(&out, 0);
index bee2b9b..93e76f3 100755 (executable)
@@ -10,9 +10,22 @@ Usage: mrcImageCrystalCreate
 Options:
     [-i[nput]            In                  (NULL      ).as(inFile              ) ] :Essential :InputDataFile
     [-o[utput]           Out                 (NULL      ).as(outFile             ) ] :Essential :OutputDataFile
-    [-nx                 nx                  (1         ).as(Integer             ) ] :Optional  :Number:x-axis
-    [-ny                 ny                  (1         ).as(Integer             ) ] :Optional  :Number:y-axis
-    [-nz                 nz                  (1         ).as(Integer             ) ] :Optional  :Number:z-axis
+    [-nx                 nx                  (1         ).as(Integer             ) ] :Optional  :Number:x-axis(a-axis)
+    [-ny                 ny                  (1         ).as(Integer             ) ] :Optional  :Number:y-axis(b-axis)
+    [-nz                 nz                  (1         ).as(Integer             ) ] :Optional  :Number:z-axis(c-axis)
+    [-start              StartX              (0.0       ).as(Real                ) 
+                         StartY              (0.0       ).as(Real                ) 
+                         StartZ              (0.0       ).as(Real                ) ] :Optional  :start coord(x, y, z)[Ang]
+    [-A[-axis]           AX                  (1.0       ).as(Real                ) 
+                         AY                  (0.0       ).as(Real                ) 
+                         AZ                  (0.0       ).as(Real                ) ] :Optional  :a(x, y, z)[Ang]
+    [-B[-axis]           BX                  (0.0       ).as(Real                ) 
+                         BY                  (1.0       ).as(Real                ) 
+                         BZ                  (0.0       ).as(Real                ) ] :Optional  :b(x, y, z)[Ang]
+    [-C[-axis]           CX                  (0.0       ).as(Real                ) 
+                         CY                  (0.0       ).as(Real                ) 
+                         CZ                  (1.0       ).as(Real                ) ] :Optional  :c(x, y, z)[Ang]
+    [-M[ode]             Mode                (0         ).as(Integer             ) ] :Optional  :Mode: PixelHow
     [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile
     [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode
 </PRE>
index f5a34d7..cf26240 100755 (executable)
@@ -9,11 +9,16 @@
         -Q 1 0 5.25x1+47+0 'Close'
         -I 1 0 1 1 0 1 -1x1+1+1.500000 ' ' 'In' 'InputDataFile' i
         -O 1 0 1 1 0 1 -1x1+1+3.000000 ' ' 'Out' 'OutputDataFile' o
-        -i 1 0 1 0 0 -1x1+1+4.500000 0 0 1 0 0 'nx' 'Number:x-axis' nx
-        -i 1 0 1 0 0 -1x1+1+6.000000 0 0 1 0 0 'ny' 'Number:y-axis' ny
-        -i 1 0 1 0 0 -1x1+1+7.500000 0 0 1 0 0 'nz' 'Number:z-axis' nz
-        -I 1 0 1 0 0 1 -1x1+1+9.000000 ' ' 'configFile' 'ConfigurationFile' c
-        -i 1 0 1 0 0 -1x1+1+10.500000 0 0 0 0 0 'mode' 'Mode' m
+        -i 1 0 1 0 0 -1x1+1+4.500000 0 0 1 0 0 'nx' 'Number:x-axis(a-axis)' nx
+        -i 1 0 1 0 0 -1x1+1+6.000000 0 0 1 0 0 'ny' 'Number:y-axis(b-axis)' ny
+        -i 1 0 1 0 0 -1x1+1+7.500000 0 0 1 0 0 'nz' 'Number:z-axis(c-axis)' nz
+        -I  1 0 0 1 0 1 -1x1+1+9 ' ' '0.0' 'StartX' start coord(x, y, z)[Ang]
+        -I  1 0 0 1 0 1 -1x1+1+10 ' ' '1.0' 'AX' a(x, y, z)[Ang]
+        -I  1 0 0 1 0 1 -1x1+1+12 ' ' '0.0' 'BX' b(x, y, z)[Ang]
+        -I  1 0 0 1 0 1 -1x1+1+13 ' ' '0.0' 'CX' c(x, y, z)[Ang]
+        -i 1 0 1 0 0 -1x1+1+15.000000 0 0 0 0 0 'Mode' 'Mode: PixelHow' M
+        -I 1 0 1 0 0 1 -1x1+1+16.500000 ' ' 'configFile' 'ConfigurationFile' c
+        -i 1 0 1 0 0 -1x1+1+18.000000 0 0 0 0 0 'mode' 'Mode' m
     -E
   -E
 -E
diff --git a/src/Tools/mrcImage/mrcImageCrystalCreate/src/test/Makefile b/src/Tools/mrcImage/mrcImageCrystalCreate/src/test/Makefile
new file mode 100644 (file)
index 0000000..e7b4f1b
--- /dev/null
@@ -0,0 +1,24 @@
+include ../../Config/Define.inc
+include ../../../Config/Define.inc
+include ../../../../Config/Define.inc
+include ../../../../../Config/Define.inc
+
+all: help exec
+
+help:
+       @echo "----- Help Message Check -----"
+       @../$(OSTYPE)/$(OBJECTNAME)      -h
+
+exec:
+       @echo "----- Execution Check -----"
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test-00.mrc -o data/test-00-2-3.mrc -nx 2 -ny 3 -nz 1 -M 2 
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test-00.mrc -o data/test-00-2-3-50-50.mrc -nx 2 -ny 3 -nz 1 -M 2 -A 50 0 0 -B 0 50 0 -M 2
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test-00.mrc -o data/test-00-2-3-50-5050.mrc -nx 2 -ny 3 -nz 1 -M 2 -A 50 0 0 -B 50 50 0  -M 2
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test-00.mrc -o data/test-00-2-3-100-100.mrc -nx 2 -ny 3 -nz 1 -M 2 -A 100 0 0 -B 0 100 0 -M 2
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test-00.mrc -o data/test-00-2-3-100-100100.mrc -nx 2 -ny 3 -nz 1 -M 2 -A 100 0 0 -B 100 100 0  -M 2
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test-000.mrc -o data/test-000-2-3-4.mrc -nx 2 -ny 3 -nz 4 -M 2 -start -40 -40 -40
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test-000.mrc -o data/test-000-2-3-4-80-80-80.mrc -nx 2 -ny 3 -nz 4 -M 2 -A 80 0 0 -B 0 80 0 -C 0 0 80 -start  -40 -40 -40 -M 2
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/test-000.mrc -o data/test-000-2-3-4-80_0_0-80_80_0-0_80_80.mrc -nx 2 -ny 3 -nz 4 -M 2 -A 80 0 0 -B 80 80 0 -C 0 80 80 -start -40 -40 -40 -M 2
+       @echo "----- Calc check -----"          
+
+clean:
diff --git a/src/Tools/mrcImage/mrcImageCrystalCreate/src/test/data b/src/Tools/mrcImage/mrcImageCrystalCreate/src/test/data
new file mode 120000 (symlink)
index 0000000..dd1874c
--- /dev/null
@@ -0,0 +1 @@
+../../../../../..//data/mrcImageCrystalCreate
\ No newline at end of file
index e00e3ab..c1a610a 100755 (executable)
@@ -9,9 +9,14 @@ usage(char* thisProgram)
     fprintf(stderr, "Options:\n");
     fprintf(stderr, "    [-i[nput]            In                  (NULL      ).as(inFile              ) ] :Essential :InputDataFile\n");
     fprintf(stderr, "    [-o[utput]           Out                 (NULL      ).as(outFile             ) ] :Essential :OutputDataFile\n");
-    fprintf(stderr, "    [-nx                 nx                  (1         ).as(Integer             ) ] :Optional  :Number:x-axis\n");
-    fprintf(stderr, "    [-ny                 ny                  (1         ).as(Integer             ) ] :Optional  :Number:y-axis\n");
-    fprintf(stderr, "    [-nz                 nz                  (1         ).as(Integer             ) ] :Optional  :Number:z-axis\n");
+    fprintf(stderr, "    [-nx                 nx                  (1         ).as(Integer             ) ] :Optional  :Number:x-axis(a-axis)\n");
+    fprintf(stderr, "    [-ny                 ny                  (1         ).as(Integer             ) ] :Optional  :Number:y-axis(b-axis)\n");
+    fprintf(stderr, "    [-nz                 nz                  (1         ).as(Integer             ) ] :Optional  :Number:z-axis(c-axis)\n");
+    fprintf(stderr, "    [-start              StartX              (0.0       ).as(Real                ) \n                         StartY              (0.0       ).as(Real                ) \n                         StartZ              (0.0       ).as(Real                ) ] :Optional  :start coord(x, y, z)[Ang]\n");
+    fprintf(stderr, "    [-A[-axis]           AX                  (1.0       ).as(Real                ) \n                         AY                  (0.0       ).as(Real                ) \n                         AZ                  (0.0       ).as(Real                ) ] :Optional  :a(x, y, z)[Ang]\n");
+    fprintf(stderr, "    [-B[-axis]           BX                  (0.0       ).as(Real                ) \n                         BY                  (1.0       ).as(Real                ) \n                         BZ                  (0.0       ).as(Real                ) ] :Optional  :b(x, y, z)[Ang]\n");
+    fprintf(stderr, "    [-C[-axis]           CX                  (0.0       ).as(Real                ) \n                         CY                  (0.0       ).as(Real                ) \n                         CZ                  (1.0       ).as(Real                ) ] :Optional  :c(x, y, z)[Ang]\n");
+    fprintf(stderr, "    [-M[ode]             Mode                (0         ).as(Integer             ) ] :Optional  :Mode: PixelHow\n");
     fprintf(stderr, "    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile\n");
     fprintf(stderr, "    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode\n");
     additionalUsage();
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/Define.inc b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/Define.inc
new file mode 100755 (executable)
index 0000000..ec581b3
--- /dev/null
@@ -0,0 +1,4 @@
+OBJECTNAME = mrcImageDensityWeightedAreaCalc
+EXTRA_LIB  =
+EXTRA_CCOPTS =
+EXTRA_INC =
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/OptionControlFile b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/OptionControlFile
new file mode 100755 (executable)
index 0000000..86f9e01
--- /dev/null
@@ -0,0 +1,9 @@
+# OptionControlFile
+# FileFormat
+"-i","-i[nput]","Input:binary","Essential","1","1","In","inFile::mrcImage","NULL"
+"-d","-d[ensity]","Input:density","Essential","1","1","InDensity","inFile::mrcImage","NULL"
+"-o","-o[utput]","Output:weightedArea","Essential","1","1","Out","outFile::mrcImage","NULL"
+"-oL","-o[utput]L[abel]","Output:Label","Optional","1","1","OutLabel","outFile::mrcImage","NULL"
+"-n","-n[eighbor]","Neighbor:[6|8]","Optional","1","1","Neighbor","Integer","8"
+"-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
+"-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/Target.inc b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Config/Target.inc
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Makefile b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/Makefile
new file mode 100755 (executable)
index 0000000..3d1cbd9
--- /dev/null
@@ -0,0 +1,115 @@
+include ../../../Config/Define.inc
+include ../../Config/Define.inc
+include ../Config/Define.inc
+include Config/Define.inc
+
+all:
+       cd src; make all; cd ..
+
+install:
+       cd src; make install; cd ..
+
+
+putSF:
+       if [ -f private ] ; \
+       then \
+               echo "$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME) is private"; \
+       else \
+               cvs -z4 -d:ext:$$USER@$$EOS_SOURCEFORGE commit || cvs -z4 -d:ext:$$USER@$$EOS_SOURCEFORGE import src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME); \
+       fi
+
+put:
+       cd src; make put; cd ..
+
+clean:
+       cd src; make clean; cd ..
+
+depend:
+       cd src; make depend; cd ..
+
+check:
+       @if [ ! -d $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) ] ; then \
+               echo making directory; \
+               mkdir -p $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE); \
+       fi
+       ln -sf ../../../../../hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) src/$(OSTYPE); 
+       @$(RM) src/Makefile
+       @echo "New src/Makefile" 
+       @$(CP) ../../../Config/Template/$(WORLDNAME)Template.Dir/src/Makefile src/Makefile
+       @cd src; rm -f $(OSTYPE)/.Depend; touch $(OSTYPE)/.Depend; make depend
+
+update:
+       @if [ ! -d $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) ] ; then \
+               echo making directory; \
+               mkdir -p $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE); \
+       fi
+       ln -sf ../../../../../hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) src/$(OSTYPE); 
+       @$(RM) src/Makefile
+       @echo "New src/Makefile" 
+       @$(CP) ../../../Config/Template/$(WORLDNAME)Template.Dir/src/Makefile src/Makefile
+       @cd src; rm -f $(OSTYPE)/.Depend; touch $(OSTYPE)/.Depend; echo "Y" | make update      
+
+cvsupdate::
+       cvs -d $(EOS_CVSROOT) update -d 
+
+cvscommit::
+       cvs -d $(EOS_CVSROOT) commit
+
+backup:
+       @cd ../../../..;     \
+       echo $(OBJECTNAME) ; \
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config       ; \
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
+       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile
+
+backup-all:
+       @cd ../../../..;     \
+       echo $(OBJECTNAME) ; \
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config       ; \
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
+       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile
+       
+distribute:
+       cd ../../../..;     \
+       echo $(OBJECTNAME) ; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config     ; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile ; \
+       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE)
+       
+distribute-all:
+       @cd ../../../..;     \
+       echo $(OBJECTNAME) ; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config     ; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile ; \
+       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE)
+
+eosintroduce:
+       ${EOS_HOME}/sbin/eosintroduce ${WORLDNAME} ${CLASSNAME} ${OBJECTNAME} ./ 
+
+include Config/Target.inc
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/doc/Makefile b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/doc/Makefile
new file mode 100755 (executable)
index 0000000..8215199
--- /dev/null
@@ -0,0 +1,2 @@
+install:
+       cd ../src; make install-doc; cd ../doc  
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/inc/config.h b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/inc/config.h
new file mode 100755 (executable)
index 0000000..7c883e7
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "../inc/mrcImageDensityWeightedAreaCalc.h"
+
+#endif /* CONFIG_H */
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/inc/mrcImageDensityWeightedAreaCalc.h b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/inc/mrcImageDensityWeightedAreaCalc.h
new file mode 100755 (executable)
index 0000000..2a2083a
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef MRCIMAGEDENSITYWEIGHTEDAREACALC_H
+#define MRCIMAGEDENSITYWEIGHTEDAREACALC_H
+#include <stdio.h>
+#include <stdlib.h>
+
+#define OPTION_FLAG     '-'
+#define OPTION_FLAG_POS (0)
+#define OPTION_POS      (1)
+
+
+
+
+typedef struct mrcImageDensityWeightedAreaCalcInfo {
+    long flagRedirect;
+
+    long flagIn;
+    char* In;
+    FILE* fptIn;
+    
+    long flagInDensity;
+    char* InDensity;
+    FILE* fptInDensity;
+    
+    long flagOut;
+    char* Out;
+    FILE* fptOut;
+    
+    long flagOutLabel;
+    char* OutLabel;
+    FILE* fptOutLabel;
+    
+    long flagNeighbor;
+    long Neighbor;
+    
+    long flagconfigFile;
+    char* configFile;
+    FILE* fptconfigFile;
+    
+    long flagmode;
+    long mode;
+    
+} mrcImageDensityWeightedAreaCalcInfo;
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern void argCheck(mrcImageDensityWeightedAreaCalcInfo* info, int argc, char* avgv[]);
+extern void khorosInit(int argc, char* avgv[]);
+extern void init0(mrcImageDensityWeightedAreaCalcInfo* info);
+extern void init1(mrcImageDensityWeightedAreaCalcInfo* info);
+extern void usage(char* usage);
+extern void additionalUsage(void);
+extern void htmlBeforeUsage(char* usage);
+extern void htmlAfterUsage(char* usage);
+#ifdef __cplusplus
+};
+#endif
+#endif /* MRCIMAGEDENSITYWEIGHTEDAREACALC_H */
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/.Depend b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/.Depend
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/.Source b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/.Source
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/Makefile b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/Makefile
new file mode 100755 (executable)
index 0000000..a360703
--- /dev/null
@@ -0,0 +1,430 @@
+include ../Config/Define.inc
+include ../../Config/Define.inc
+include ../../../Config/Define.inc
+include ../../../../Config/Define.inc
+
+EOSHOME=../../../../../
+DSTDIR=$(EOSHOME)/bin
+DSTDOC=$(EOSHOME)/doc
+DSTTAR=$(EOSHOME)/tar
+
+INCFILES   = 
+
+LIBFILES   = \
+                       $(LIBPREFIX)EosObjects$(LIBSUFFIX) 
+
+LIBFILESDEBUG   = \
+                       $(LIBPREFIX)EosObjects.debug$(LIBSUFFIX) 
+
+SRCC  = \
+                       $(OBJECTNAME).c \
+                       init.c \
+                       argCheck.c \
+                       usage.c  \
+                       util.c \
+
+SRCCXX  = \
+                       $(OBJECTNAME).cc \
+                       init.cc \
+                       argCheck.cc \
+                       usage.cc  \
+                       util.cc \
+
+MODULES    = \
+                       $(OBJECTNAME).o \
+                       init.o \
+                       argCheck.o \
+                       usage.o  \
+                       util.o \
+
+REALMODULES    = \
+                       $(OSTYPE)/$(OBJECTNAME).o \
+                       $(OSTYPE)/init.o \
+                       $(OSTYPE)/argCheck.o \
+                       $(OSTYPE)/usage.o \
+                       $(OSTYPE)/util.o 
+
+MODULESDEBUG    = \
+                       $(OBJECTNAME).debugo \
+                       init.debugo \
+                       argCheck.debugo \
+                       usage.debugo  \
+                       util.debugo \
+
+REALMODULESDEBUG    = \
+                       $(OSTYPE)/$(OBJECTNAME).debugo \
+                       $(OSTYPE)/init.debugo \
+                       $(OSTYPE)/argCheck.debugo \
+                       $(OSTYPE)/usage.debugo \
+                       $(OSTYPE)/util.debugo 
+
+
+all: $(OSTYPE)/$(OBJECTNAME) 
+       if [ ! -L $(OSTYPE) ] ; then \
+               moveHostdependent; \
+       fi
+
+debug: $(OSTYPE)/$(OBJECTNAME).debug
+
+cudagdb: $(OSTYPE)/$(OBJECTNAME).cudagdb
+
+
+$(OSTYPE)/$(OBJECTNAME)::
+       @$(RM) -f $(OSTYPE)/Makefile ; \
+       $(CP) $(EOS_HOME)/src/Config/Template/$(WORLDNAME)Template.Dir/src/ARCH/Makefile $(OSTYPE)/Makefile ; \
+       cd $(OSTYPE); \
+       $(MAKE) $(OBJECTNAME)  WORLDNAME=$(WORLDNAME) CLASSNAME=$(CLASSNAME) OBJECTNAME=$(OBJECTNAME)
+
+$(OSTYPE)/$(OBJECTNAME).debug::
+       @$(RM) -f $(OSTYPE)/Makefile ; \
+       $(CP) $(EOS_HOME)/src/Config/Template/$(WORLDNAME)Template.Dir/src/ARCH/Makefile $(OSTYPE)/Makefile ; \
+       cd $(OSTYPE); \
+       $(MAKE) $(OBJECTNAME).debug  WORLDNAME=$(WORLDNAME) CLASSNAME=$(CLASSNAME) OBJECTNAME=$(OBJECTNAME)
+
+$(OSTYPE)/$(OBJECTNAME).cudagdb::
+       @$(RM) -f $(OSTYPE)/Makefile ; \
+       $(CP) $(EOS_HOME)/src/Config/Template/$(WORLDNAME)Template.Dir/src/ARCH/Makefile $(OSTYPE)/Makefile ; \
+       cd $(OSTYPE); \
+       $(MAKE) $(OBJECTNAME).cudagdb WORLDNAME=$(WORLDNAME) CLASSNAME=$(CLASSNAME) OBJECTNAME=$(OBJECTNAME)
+
+cvsupdate::
+       cvs -d $(EOS_CVSROOT) update -d 
+
+cvscommit::
+       cvs -d $(EOS_CVSROOT) commit 
+
+edit:
+       @if [ -r $(OBJECTNAME).c ]; \
+       then \
+               sccsEdit $(OBJECTNAME).c; \
+       else \
+               echo "Source files are already editable"; \
+       fi
+       @if [ -r wish/$(OBJECTNAME).wish ]; \
+       then \
+               cd wish; sccsEdit $(OBJECTNAME).wish; \
+       else \
+               echo "Source files (wish) are already editable."; \
+       fi
+       @if [ -r ruby/$(OBJECTNAME).rb ]; \
+       then \
+               cd ruby; sccsEdit $(OBJECTNAME).rb; \
+       else \
+               echo "Source files (ruby) are already editable."; \
+       fi
+       @if [ -r perl/$(OBJECTNAME).pl ]; \
+       then \
+               cd perl; sccsEdit $(OBJECTNAME).pl ; \
+       else \
+               echo "Source files (perl) are already editable."; \
+       fi
+       @if [ -r ../Config/OptionControlFile ]; \
+       then \
+               cd ../Config; sccsEdit OptionControlFile; \
+       else \
+               echo "OptionControlFile are already editable."; \
+       fi
+       
+unedit:
+       @if [ -w $(OBJECTNAME).c ]; \
+       then \
+               sccsUnedit $(OBJECTNAME).c; \
+       else \
+               echo "Source files are not editable"; \
+       fi
+       @if [ -w wish/$(OBJECTNAME).wish ]; \
+       then \
+               cd wish; sccsUnedit $(OBJECTNAME).wish; \
+       else \
+               echo "Source files (wish) are not editable."; \
+       fi
+       @if [ -w ruby/$(OBJECTNAME).rb]; \
+       then \
+               cd ruby; sccsUnedit $(OBJECTNAME).rb; \
+       else \
+               echo "Source files (ruby) are not editable."; \
+       fi
+       @if [ -w perl/$(OBJECTNAME).pl ]; \
+       then \
+               cd perl; sccsUnedit $(OBJECTNAME).pl ; \
+       else \
+               echo "Source files (ruby) are not editable."; \
+       fi
+       @if [ -w ../Config/OptionControlFile ]; \
+       then \
+               cd ../Config; sccsUnedit OptionControlFile; \
+       else \
+               echo "OptionControlFile are not editable."; \
+       fi
+       
+report:
+       @if [ -r $(OBJECTNAME).c ]; \
+       then \
+               sccsReport $(OBJECTNAME).c; \
+       else \
+               echo "Source files are already editable"; \
+       fi
+       @if [ -r wish/$(OBJECTNAME).wish ]; \
+       then \
+               cd wish; sccsReport $(OBJECTNAME).wish; \
+       else \
+               echo "Source files (wish) are already editable."; \
+       fi
+       @if [ -r ruby/$(OBJECTNAME).rb ]; \
+       then \
+               cd ruby; sccsReport $(OBJECTNAME).rb; \
+       else \
+               echo "Source files (ruby) are already editable."; \
+       fi
+       @if [ -r perl/$(OBJECTNAME).pl ] ; \
+       then \
+               cd perl; sccsReport $(OBJECTNAME).pl ; \
+       else \
+               echo "Source files (perl) are already editable."; \
+       fi
+       @if [ -r ../Config/OptionControlFile ]; \
+       then \
+               cd ../Config; sccsReport OptionControlFile; \
+       else \
+               echo "OptionControlFile are already editable."; \
+       fi
+
+clean : 
+       rm -f *.debugo $(OSTYPE)/*.debugo *.cudagdbo $(OSTYPE)/*.cudagdbo *.o $(OSTYPE)/*.o *.linkinfo $(OSTYPE)/*.linkinfo \
+               $(OSTYPE)/$(OBJECTNAME) $(OSTYPE)/*.$(OSTYPE) \
+               $(OSTYPE)/$(OBJECTNAME).debug $(OSTYPE)/*.$(OSTYPE).debug \
+               $(OSTYPE)/$(OBJECTNAME).cudagdb $(OSTYPE)/*.$(OSTYPE).cudagdb \
+               $(OSTYPE)/$(OBJECTNAME).linkinfo $(OSTYPE)/*.$(OSTYPE).linkinfo \
+               *.bak *.$(OSTYPE) core
+
+install: install-bin install-doc install-wish install-ruby install-shell install-perl
+       @if [ dummy$(KHOROS_KENGOBJ) != dummy ]  ; \
+       then \
+               if [ -x $(KHOROS_KGENOBJ) ] ;  \
+               then \
+                       make install-khoros ; \
+               fi; \
+       fi 
+
+install-bin:$(DSTDIR)/$(OSTYPE)/$(OBJECTNAME) 
+
+$(DSTDIR)/$(OSTYPE)/$(OBJECTNAME):$(OSTYPE)/$(OBJECTNAME) $(DSTDIR)/$(OBJECTNAME) 
+       @echo ---- Installing to bin
+       @echo $(DSTDIR)/$(OSTYPE)/$(OBJECTNAME)
+       @if [ ! -d $(DSTDIR)/$(OSTYPE) ]; \
+       then \
+               mkdir $(DSTDIR)/$(OSTYPE); \
+       fi
+       @if [ -x $(OSTYPE)/$(OBJECTNAME) ]; \
+       then \
+               echo "Compilation is complete"; \
+               $(RM) -f $(DSTDIR)/$(OSTYPE)/$(OBJECTNAME); \
+               $(CD) $(OSTYPE); $(INSTALL) -m 555 $(OBJECTNAME) ../$(DSTDIR)/$(OSTYPE); \
+               $(CHMOD) 555 ../$(DSTDIR)/$(OSTYPE)/$(OBJECTNAME); \
+       else \
+               echo "Compilation is incomplete. $(OBJECTNAME)"; \
+       fi
+       @echo ---- end of bin
+
+install-wish:
+       @if [ -d wish ]; \
+       then \
+               echo "---- Tcl/Tk file Install"; \
+               if [ ! -d $(DSTDIR)/wish/$(OBJECTNAME) ]; \
+               then \
+                       mkdir $(DSTDIR)/wish/$(OBJECTNAME) ; \
+               fi ; \
+               $(CP) -f wish/* $(DSTDIR)/wish/$(OBJECTNAME); \
+               $(CHMOD) 555 $(DSTDIR)/wish/$(OBJECTNAME)/*  ;\
+               touch $(DSTDIR)/wish/$(OBJECTNAME)/tclIndex;\
+               $(CHMOD) 666 $(DSTDIR)/wish/$(OBJECTNAME)/tclIndex;\
+               echo "---- Tcl/Tk file Installed";\
+       fi
+
+install-ruby:
+       @if [ -d ruby ]; \
+       then \
+               echo "---- Ruby/Tk file Install"; \
+               if [ ! -d $(DSTDIR)/ruby/$(OBJECTNAME) ]; \
+               then \
+                       mkdir $(DSTDIR)/ruby/$(OBJECTNAME) ; \
+               fi ; \
+               $(CP) -f ruby/* $(DSTDIR)/ruby/$(OBJECTNAME); \
+               $(CHMOD) 555 $(DSTDIR)/ruby/$(OBJECTNAME)/* ; \
+               echo "---- Ruby/Tk file Installed"; \
+       fi
+
+install-perl:
+       @if [ -d perl ]; \
+       then \
+               echo "---- Perl/Tk file Install"; \
+               if [ ! -d $(DSTDIR)/perl/$(OBJECTNAME) ]; \
+               then \
+                       mkdir $(DSTDIR)/perl/$(OBJECTNAME) ; \
+               fi; \
+               $(CP) -f perl/* $(DSTDIR)/perl/$(OBJECTNAME); \
+               $(CHMOD) 555 $(DSTDIR)/perl/$(OBJECTNAME)/* ; \
+               echo "---- Perl/Tk file Installed"; \
+       fi
+
+install-shell:
+       @if [ ! -d $(DSTDIR)/shell/$(OBJECTNAME) ]; \
+       then \
+               mkdir $(DSTDIR)/shell/$(OBJECTNAME) ; \
+       fi
+       @if [ -d shell ]; \
+       then \
+               echo "---- Shell file Install"; \
+               if [ ! -d $(DSTDIR)/shell/$(OBJECTNAME) ]; \
+               then \
+                       mkdir $(DSTDIR)/shell/$(OBJECTNAME) ; \
+               fi ; \
+               $(CP) -f shell/* $(DSTDIR)/shell/$(OBJECTNAME); \
+               $(CHMOD) 555 $(DSTDIR)/shell/$(OBJECTNAME)/*; \
+               echo "---- Shell file Installed"; \
+       fi
+
+install-khoros:
+       @echo Installing to khoros
+       @if [ ! -d ../../../../../objects/script/$(OBJECTNAME) -a -f $(KHOROS_KGENOBJ) ]; \
+       then \
+               echo kgenobj;\
+               $(KHOROS_KGENOBJ) -tb Eos -oname $(OBJECTNAME) -type script -pane -cantata true -cat Eos -subcat $(CLASSNAME) -description $(OBJECTNAME) -bname $(OBJECTNAME) -form  -lang ksh ; \
+       fi
+       @if [ ! -d ../../../../../objects/script/$(OBJECTNAME) -a -f $(KHOROS_KSET) ]; \
+       then \
+               $(KHOROS_KSET) -tb Eos -oname $(OBJECTNAME) -icon $(OBJECTNAME) ; \
+       fi
+       @if [ -d ../../../../../objects/script/$(OBJECTNAME) -a -f $(KHOROS_KSET) ]; \
+       then \
+               $(CHMOD) -R 775 ../../../../../objects/script/$(OBJECTNAME) ; \
+               if [ $?  ] ; \
+               then \
+                       echo "-- setting khoros ---" ; \
+                       if [ -d ../../../../../objects/script/$(OBJECTNAME)/uis/ ] ; \
+                       then \
+                               $(CD) ../../../../../objects/script/$(OBJECTNAME)/uis/ ; \
+                               $(RM) -f $(OBJECTNAME).pane ; \
+                               $(LN) -s ../../../../src/Tools/$(CLASSNAME)/$(OBJECTNAME)/src/$(OBJECTNAME).pane $(OBJECTNAME).pane; \
+                               $(CD) ../../ ; \
+                               $(CHMOD) -R 555 $(OBJECTNAME); \
+                       else \
+                               echo "../../../../../objects/script/$(OBJECTNAME)/uis/ does not exist."; \
+                       fi ; \
+               else \
+                       echo "Failed !!: Cannot chage mode in installing  $(OBJECTNAME) to khoros system"; \
+               fi ; \
+               echo "-- end of khoros-installing"; \
+       fi
+
+install-doc: html 
+       @if [ ! -d $(DSTDOC)/SmallTools ]; \
+       then \
+               mkdir $(DSTDOC)/SmallTools ;\
+       fi
+       @if [ -f $(DSTDOC)/SmallTools/$(OBJECTNAME).html ]; \
+       then \
+               $(RM) -f $(DSTDOC)/SmallTools/$(OBJECTNAME).html ;\
+       fi
+       @$(CP) $(OBJECTNAME).html  $(DSTDOC)/SmallTools/$(OBJECTNAME).html
+       @$(CHMOD) 444 $(DSTDOC)/SmallTools/$(OBJECTNAME).html
+       @if [ -f ../doc/*.html ]; \
+       then \
+               $(CP) ../doc/*.html  $(DSTDOC)/SmallTools/ ;\
+       fi
+       @$(CHMOD) 444 $(DSTDOC)/SmallTools/$(OBJECTNAME).html
+       @if [ -f $(DSTDOC)/SmallTools/Makefile ]; \
+       then \
+               cd $(DSTDOC)/SmallTools; $(MAKE); \
+       fi
+
+html: $(OBJECTNAME).html
+
+configFileRead:
+       @ctrl2configFileRead $(CLASSNAME) $(OBJECTNAME) ../Config/OptionControlFile
+
+$(OBJECTNAME).html: $(OSTYPE)/$(OBJECTNAME)
+       @echo creating html
+       @$(OSTYPE)/$(OBJECTNAME) -html 2> $(OBJECTNAME).html.tmp
+       @sed -e s/$(OSTYPE)\\/// $(OBJECTNAME).html.tmp > $(OBJECTNAME).html
+       @$(RM) $(OBJECTNAME).html.tmp
+
+$(DSTDIR)/$(OBJECTNAME): $(OSTYPE)/$(OBJECTNAME)
+       @ln -s -f ../sbin/MachineIndependent $@
+
+depend::
+       @echo dependency checking now
+       @if [ ! -L $(OSTYPE) ] ; then \
+               moveHostdependent; \
+       fi
+       rm -f $(OSTYPE)/.Depend 
+       #echo C
+       @if [ -f $(OBJECTNAME).c ] ; \
+       then \
+               echo "dependency: *.c"; \
+               echo $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) *.c   ; \
+                    $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) *.c                  >> $(OSTYPE)/.Depend ; \
+       fi
+       #echo CC
+       @if [ -f $(OBJECTNAME).cc ] ; \
+       then \
+               echo "dependency: *.cc"; \
+               echo $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.cc ; \
+                    $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.cc >> $(OSTYPE)/.Depend ; \
+       fi
+       @if [ -f $(OBJECTNAME).ccm ] ; \
+       then \
+               echo "dependency: *.ccm"; \
+               echo $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.ccm ; \
+                    $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.ccm >> $(OSTYPE)/.Depend ; \
+       fi
+       @if [ -f $(OBJECTNAME).cu ] ; \
+       then \
+               echo "dependency: *.cu"; \
+               echo $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.cu ; \
+                    $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.cu >> $(OSTYPE)/.Depend ; \
+       fi
+
+update:../Config/OptionControlFile
+       maketool $(CLASSNAME) $(OBJECTNAME) update
+
+updateNoAns:../Config/OptionControlFile
+       maketool $(CLASSNAME) $(OBJECTNAME) update N
+
+changeName::
+
+Test:$(OSTYPE)/$(OBJECTNAME) TestDir
+       @if [ -f test/Makefile ] ; \
+       then \
+               cd test; make ; \
+       else \
+               echo "No test Makefile"; \
+       fi
+
+TestDir::
+       @if [ ! -d test ] ; \
+       then \
+               echo "Creating test dir"; \
+               mkdir  test; \
+       fi
+       @if [ ! -f test/Makefile ] ; \
+       then \
+               echo "Creating Makefile"; \
+               cd test; \
+               protoTestMakefileCreate; \
+       fi
+       @if [ ! -d test/data ]; \
+       then \
+               mkdir $(EOSHOME)/data/$(OBJECTNAME); \
+               cd test; \
+               ln -sf ../$(EOSHOME)/data/$(OBJECTNAME) data; \
+       fi 
+
+tar::
+       cd $(DSTTAR); tar cvf Tools.$(CLASSNAME).$(OBJECTNAME).tar ../bin/$(OBJECTNAME) \
+                                                            ../bin/*/$(OBJECTNAME).* \
+                                                            ../src/Tools/$(CLASSNAME)/$(OBJECTNAME) \
+                               ; gzip Tools.$(CLASSNAME).$(OBJECTNAME).tar
+
+-include $(OSTYPE)/.Depend
+-include ../Config/Target.inc
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/X86MAC64 b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/X86MAC64
new file mode 120000 (symlink)
index 0000000..2d488ec
--- /dev/null
@@ -0,0 +1 @@
+../../../../../hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/X86MAC64
\ No newline at end of file
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/argCheck.c b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/argCheck.c
new file mode 100755 (executable)
index 0000000..9a0c4a8
--- /dev/null
@@ -0,0 +1,129 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "../inc/config.h"
+#include "genUtil.h"
+#include "eosString.h"
+#include "File.h"
+#include "Memory.h"
+
+
+void
+argCheck(mrcImageDensityWeightedAreaCalcInfo* info, int argc, char* argv[])
+{
+    long i;
+    char s[1024];
+    FILE* fpt;
+    
+    if(NULL==(fpt=fopen(".EosLog", "a+"))) { 
+        
+    } else {
+        for(i=0; i<argc; i++) {
+            fprintf(fpt, "%s ", argv[i]);
+        }
+        fprintf(fpt, "\n");
+        fclose(fpt);
+    }
+    for(i=1; i<argc; i++) {
+        if(OPTION_FLAG==argv[i][OPTION_FLAG_POS]) {
+            SSWITCH(argv[i]+OPTION_POS)
+                SCASE("i") {
+                    if(i+1<argc) {
+                        info->In = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagIn++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("d") {
+                    if(i+1<argc) {
+                        info->InDensity = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagInDensity++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("o") {
+                    if(i+1<argc) {
+                        info->Out = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagOut++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("oL") {
+                    if(i+1<argc) {
+                        info->OutLabel = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagOutLabel++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("n") {
+                    if(i+1<argc) {
+                        info->Neighbor = stringGetNthIntegerData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagNeighbor++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("c") {
+                    if(i+1<argc) {
+                        info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagconfigFile++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("m") {
+                    if(i+1<argc) {
+                        info->mode = stringGetNthIntegerData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagmode++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("h") {
+                    usage(argv[0]);
+                    exit(EXIT_SUCCESS);
+                    break;
+                }
+                SCASE("html") {
+                    htmlBeforeUsage(argv[0]);
+                    usage(argv[0]);
+                    htmlAfterUsage(argv[0]);
+                    exit(EXIT_SUCCESS);
+                    break;
+                }
+                SDEFAULT {
+                    fprintf(stderr, "Not Supported Options: :%s\n", argv[i]);
+                    usage(argv[0]);
+                    exit(EXIT_FAILURE);
+                    break;
+                }
+            SSWITCHEND;
+        } 
+    } 
+} 
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/init.c b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/init.c
new file mode 100755 (executable)
index 0000000..41cb124
--- /dev/null
@@ -0,0 +1,110 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "../inc/config.h"
+#include "genUtil.h"
+#include "eosString.h"
+#include "File.h"
+#include "Memory.h"
+
+
+void
+init0(mrcImageDensityWeightedAreaCalcInfo* info)
+{
+    info->fptIn = NULL;    info->flagIn = 0;
+    info->fptInDensity = NULL;    info->flagInDensity = 0;
+    info->fptOut = NULL;    info->flagOut = 0;
+    info->fptOutLabel = NULL;    info->flagOutLabel = 0;
+    info->Neighbor = 8;    info->flagNeighbor = 0;
+    info->fptconfigFile = NULL;    info->flagconfigFile = 0;
+    info->mode = 0;    info->flagmode = 0;
+}
+
+void
+init1(mrcImageDensityWeightedAreaCalcInfo* info)
+{
+    char s[1024];
+    int i;
+    if(!info->flagIn) {
+        stringGetFromFile(s, "In", stdin, stdout, 0);
+        info->In = stringGetNthWord(s, 1, " ,\t");
+        info->flagIn++;
+    }
+    if(info->flagIn) {
+        info->fptIn = fileOpen(info->In, "r");
+    }
+    
+    if(!info->flagInDensity) {
+        stringGetFromFile(s, "InDensity", stdin, stdout, 0);
+        info->InDensity = stringGetNthWord(s, 1, " ,\t");
+        info->flagInDensity++;
+    }
+    if(info->flagInDensity) {
+        info->fptInDensity = fileOpen(info->InDensity, "r");
+    }
+    
+    if(!info->flagOut) {
+        stringGetFromFile(s, "Out", stdin, stdout, 0);
+        info->Out = stringGetNthWord(s, 1, " ,\t");
+        info->flagOut++;
+    }
+    if(info->flagOut) {
+        info->fptOut = fileOpen(info->Out, "w");
+    }
+    
+    if(info->flagOutLabel) {
+        info->fptOutLabel = fileOpen(info->OutLabel, "w");
+    }
+    
+    if(info->flagNeighbor) {
+    }
+    
+    if(info->flagconfigFile) {
+        info->fptconfigFile = fileOpen(info->configFile, "r");
+    }
+    
+    if(info->flagmode) {
+    }
+    
+}
+#ifdef KHOROS
+#include <stdio.h>
+#include "bootstrap.h"
+#include "dataserv.h"
+#include "datamanip.h"
+extern void func_usage_additions(void);
+extern void func_free_args(kexit_status status, kaddr client_data);
+extern void func_get_args(kform* pane);
+
+void
+func_usage_additions(void)
+{
+}
+void
+func_free_args(kexit_status status, kaddr client_data)
+{
+}
+void
+func_get_args(kform* pane)
+{
+}
+void
+khorosInit(int argc, char* argv[])
+{
+    char* eospath;
+    char  panepath[1024];
+    FILE* fpt;
+    
+    eospath = getenv("EOS_HOME");
+    sprintf(panepath, "%s/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.pane", eospath);
+    khoros_initialize(argc, argv, "EOS");
+    fpt = fopen(panepath, "r");    if(NULL!=fpt) {
+        fclose(fpt);
+        kclui_initialize(panepath, KGEN_NONE, "EOS", "mrcImageDensityWeightedAreaCalc",
+                     func_usage_additions,
+                     func_get_args,
+                     func_free_args);
+    }
+}
+#endif /* KHOROS */ 
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.c b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.c
new file mode 100755 (executable)
index 0000000..8e87dad
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+# mrcImageDensityWeightedAreaCalc : $Revision$  
+# $Date$ 
+# Created by $Author$
+# Usage : mrcImageDensityWeightedAreaCalc
+# Attention
+#   $Loccker$
+#      $State$ 
+#
+*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>                  
+#define GLOBAL_DECLARATION
+#include "../inc/config.h"
+
+#define DEBUG
+#include "genUtil.h"
+#include "mrcImage.h"
+#include "lmrcImageCalcArea.h"
+
+/*
+Example:
+typedef struct lmrcImageDensityWeightedAreaCalcInfo {
+       float a;
+       int   b;
+} lmrcImageDensityWeightedAreaCalcInfo;
+
+typedef enum lmrcImageDensityWeightedAreaCalcMode {
+       a=0,
+       b=1
+} lmrcImageDensityWeightedAreaCalcMode;
+*/
+
+int
+main(int argc, char* argv[]) 
+{
+  mrcImage in;
+  mrcImage inDens;
+  mrcImage out;
+  mrcImage label;
+  
+       mrcImageDensityWeightedAreaCalcInfo info;
+
+       init0(&info);
+    argCheck(&info, argc, argv);
+    init1(&info);
+
+       DEBUGPRINT("Program Start\n");
+
+  mrcFileRead(&in, info.In, "in main", 0);
+  mrcFileRead(&inDens, info.InDensity, "in main", 0);
+  
+  lmrcImageCalcDensityWeightedArea(&out, &label, &in, &inDens, info.Neighbor, info.mode);
+
+  if(info.flagOutLabel) {
+    mrcFileWrite(&label, info.OutLabel, "in main", 0);
+  }
+  mrcFileWrite(&out, info.Out, "in main", 0);
+       exit(EXIT_SUCCESS);
+}
+
+void
+additionalUsage()
+{
+       fprintf(stderr, "----- Additional Usage -----\n");
+       fprintf(stderr, "-m \n");
+       fprintf(stderr, "    0: Sum of density\n");
+       fprintf(stderr, "    1: Transform top of 75 pecents of sum of density to 0.75\n");
+}
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.html b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.html
new file mode 100755 (executable)
index 0000000..6322399
--- /dev/null
@@ -0,0 +1,24 @@
+<HTML>
+<HEAD>
+<TITLE>mrcImageDensityWeightedAreaCalc</TITLE>
+</HEAD>
+<BODY>
+<H1>mrcImageDensityWeightedAreaCalc</H1>
+<H2>Usage</H2>
+<PRE>
+Usage: mrcImageDensityWeightedAreaCalc
+Options:
+    [-i[nput]            In                  (NULL      ).as(inFile::mrcImage    ) ] :Essential :Input:binary
+    [-d[ensity]          InDensity           (NULL      ).as(inFile::mrcImage    ) ] :Essential :Input:density
+    [-o[utput]           Out                 (NULL      ).as(outFile::mrcImage   ) ] :Essential :Output:weightedArea
+    [-o[utput]L[abel]    OutLabel            (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:Label
+    [-n[eighbor]         Neighbor            (8         ).as(Integer             ) ] :Optional  :Neighbor:[6|8]
+    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile
+    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode
+----- Additional Usage -----
+-m 
+    0: Sum of density
+    1: Transform top of 75 pecents of sum of density to 0.75
+</PRE>
+</BODY>
+</HTML>
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.pane b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/mrcImageDensityWeightedAreaCalc.pane
new file mode 100755 (executable)
index 0000000..148eaf9
--- /dev/null
@@ -0,0 +1,19 @@
+-F 4.3 1 0 52x1+0+0 +0+0 'Cantata' cantata
+  -M 1 1 52x1+0+0 +1+0 ' ' subform
+    -P 1 0 52x1+0+1 +0+0 ' ' mrcImageDensityWeightedAreaCalc
+      -D 1 0 9x1+0+0 'Options' _gui_options
+        -H 1  6x1+0+0 'License' 'license' $BOOTSTRAP/repos/license/License license
+        -E
+        -R 1 0 1 5x1+35+0 'Run' 'execute operation' $EOS/bin/mrcImageDensityWeightedAreaCalc
+        -H 1  5x1+41+0 'Help' 'help page' $EOS/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/doc/mrcImageDensityWeightedAreaCalc.doc help
+        -Q 1 0 5.25x1+47+0 'Close'
+        -I 1 0 1 1 0 1 -1x1+1+1.500000 ' ' 'In' 'Input:binary' i
+        -I 1 0 1 1 0 1 -1x1+1+3.000000 ' ' 'InDensity' 'Input:density' d
+        -O 1 0 1 1 0 1 -1x1+1+4.500000 ' ' 'Out' 'Output:weightedArea' o
+        -O 1 0 1 0 0 1 -1x1+1+6.000000 ' ' 'OutLabel' 'Output:Label' oL
+        -i 1 0 1 0 0 -1x1+1+7.500000 0 0 8 0 0 'Neighbor' 'Neighbor:[6|8]' n
+        -I 1 0 1 0 0 1 -1x1+1+9.000000 ' ' 'configFile' 'ConfigurationFile' c
+        -i 1 0 1 0 0 -1x1+1+10.500000 0 0 0 0 0 'mode' 'Mode' m
+    -E
+  -E
+-E
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/test/Makefile b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/test/Makefile
new file mode 100755 (executable)
index 0000000..e409156
--- /dev/null
@@ -0,0 +1,26 @@
+include ../../Config/Define.inc
+include ../../../Config/Define.inc
+include ../../../../Config/Define.inc
+include ../../../../../Config/Define.inc
+
+DATA=data/TEM_filter_sample
+
+all: help exec exec1
+
+help:
+       @echo "----- Help Message Check -----"
+       @../$(OSTYPE)/$(OBJECTNAME)      -h
+
+exec:
+       @echo "----- Execution Check -----"
+       ../$(OSTYPE)/$(OBJECTNAME) -i $(DATA).bin3 -d $(DATA).mrc3 -o $(DATA)-8.densWA -oL $(DATA)-8.label -n 8 -m 0
+       ../$(OSTYPE)/$(OBJECTNAME) -i $(DATA).bin3 -d $(DATA).mrc3 -o $(DATA)-4.densWA -oL $(DATA)-4.label -n 4 -m 0
+       @echo "----- Calc check -----"          
+
+exec1:
+       @echo "----- Execution Check -----"
+       ../$(OSTYPE)/$(OBJECTNAME) -i $(DATA).bin3 -d $(DATA).mrc3 -o $(DATA)-8-1.densWA -oL $(DATA)-8-1.label -n 8 -m 1
+       ../$(OSTYPE)/$(OBJECTNAME) -i $(DATA).bin3 -d $(DATA).mrc3 -o $(DATA)-4-1.densWA -oL $(DATA)-4-1.label -n 4 -m 1
+       @echo "----- Calc check -----"          
+
+clean:
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/test/data b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/test/data
new file mode 120000 (symlink)
index 0000000..80a2e27
--- /dev/null
@@ -0,0 +1 @@
+../../../../../..//data/mrcImageDensityWeightedAreaCalc
\ No newline at end of file
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/usage.c b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/usage.c
new file mode 100755 (executable)
index 0000000..85482e6
--- /dev/null
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "../inc/config.h"
+
+void
+usage(char* thisProgram)
+{
+    fprintf(stderr, "Usage: %s\n", thisProgram);
+    fprintf(stderr, "Options:\n");
+    fprintf(stderr, "    [-i[nput]            In                  (NULL      ).as(inFile::mrcImage    ) ] :Essential :Input:binary\n");
+    fprintf(stderr, "    [-d[ensity]          InDensity           (NULL      ).as(inFile::mrcImage    ) ] :Essential :Input:density\n");
+    fprintf(stderr, "    [-o[utput]           Out                 (NULL      ).as(outFile::mrcImage   ) ] :Essential :Output:weightedArea\n");
+    fprintf(stderr, "    [-o[utput]L[abel]    OutLabel            (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:Label\n");
+    fprintf(stderr, "    [-n[eighbor]         Neighbor            (8         ).as(Integer             ) ] :Optional  :Neighbor:[6|8]\n");
+    fprintf(stderr, "    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile\n");
+    fprintf(stderr, "    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode\n");
+    additionalUsage();
+}
+
+void
+htmlBeforeUsage(char* thisProgram)
+{
+    fprintf(stderr, "<HTML>\n");
+    fprintf(stderr, "<HEAD>\n");
+    fprintf(stderr, "<TITLE>%s</TITLE>\n", thisProgram);
+    fprintf(stderr, "</HEAD>\n");
+    fprintf(stderr, "<BODY>\n");
+    fprintf(stderr, "<H1>%s</H1>\n", thisProgram);
+    fprintf(stderr, "<H2>Usage</H2>\n");
+    fprintf(stderr, "<PRE>\n");
+}
+
+void
+htmlAfterUsage(char* thisProgram)
+{
+    fprintf(stderr, "</PRE>\n");
+    fprintf(stderr, "</BODY>\n");
+    fprintf(stderr, "</HTML>\n");
+}
diff --git a/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/util.c b/src/Tools/mrcImage/mrcImageDensityWeightedAreaCalc/src/util.c
new file mode 100755 (executable)
index 0000000..ee5e5f2
--- /dev/null
@@ -0,0 +1,4 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "../inc/config.h"
+
index 52aedb2..f2412fb 100755 (executable)
@@ -5,8 +5,11 @@
 "-o","-o[utput]","Output:","Optional","1","1","Out","outFile::ASCII","stdout"
 "-oGC","-o[utput]GC","Output:gc","Optional","1","1","OutGC","outFile::mrcImage","NULL"
 "-oL","-o[utput]L[abel]","Output:Label","Optional","1","1","OutLabel","outFile::mrcImage","NULL"
-"-oP","-o[utput]P[eprimeter]","Output:Label","Optional","1","1","OutPerimeter","outFile::mrcImage","NULL"
+"-oP","-o[utput]P[eprimeter]","Output:Perimeter","Optional","1","1","OutPerimeter","outFile::mrcImage","NULL"
+"-oC","-o[utput]C[hainID]","Output:ChainID","Optional","1","1","OutChain","outFile::mrcImage","NULL"
 "-oS","-o[utput]S[urfaceArea]","Output:SurfaceArea","Optional","1","1","OutSurfaceArea","outFile::mrcImage","NULL"
+"-oD","-o[utput]D[ensityWeightedArea]","Output:DensityWeightedArea","Optional","1","1","OutDensityWeightedArea","outFile::mrcImage","NULL"
 "-n","-n[eighbor]","Neighbor: [4(0)|8 or 6(0)|18|26]","Optional","1","1","neighbor","Integer","0"
+"-d","-d[ensity]","Input:density","Optional","1","1","InDensity","inFile::mrcImage","NULL"
 "-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
 "-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
index 0c6511f..04e8b0e 100755 (executable)
@@ -37,13 +37,25 @@ typedef struct mrcImageFeatureCalcInfo {
     char* OutPerimeter;
     FILE* fptOutPerimeter;
     
+    long flagOutChain;
+    char* OutChain;
+    FILE* fptOutChain;
+    
     long flagOutSurfaceArea;
     char* OutSurfaceArea;
     FILE* fptOutSurfaceArea;
     
+    long flagOutDensityWeightedArea;
+    char* OutDensityWeightedArea;
+    FILE* fptOutDensityWeightedArea;
+    
     long flagneighbor;
     long neighbor;
     
+    long flagInDensity;
+    char* InDensity;
+    FILE* fptInDensity;
+    
     long flagconfigFile;
     char* configFile;
     FILE* fptconfigFile;
index d3440b4..5c01a6c 100755 (executable)
@@ -94,6 +94,17 @@ argCheck(mrcImageFeatureCalcInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
+                SCASE("oC") {
+                    if(i+1<argc) {
+                        info->OutChain = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagOutChain++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
                 SCASE("oS") {
                     if(i+1<argc) {
                         info->OutSurfaceArea = stringGetNthWord(argv[i+1], 1, " ,");
@@ -105,6 +116,17 @@ argCheck(mrcImageFeatureCalcInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
+                SCASE("oD") {
+                    if(i+1<argc) {
+                        info->OutDensityWeightedArea = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagOutDensityWeightedArea++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
                 SCASE("n") {
                     if(i+1<argc) {
                         info->neighbor = stringGetNthIntegerData(argv[i+1], 1, " ,");
@@ -116,6 +138,17 @@ argCheck(mrcImageFeatureCalcInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
+                SCASE("d") {
+                    if(i+1<argc) {
+                        info->InDensity = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagInDensity++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
                 SCASE("c") {
                     if(i+1<argc) {
                         info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
index ec99867..1c4f7fc 100755 (executable)
@@ -18,8 +18,11 @@ init0(mrcImageFeatureCalcInfo* info)
     info->fptOutGC = NULL;    info->flagOutGC = 0;
     info->fptOutLabel = NULL;    info->flagOutLabel = 0;
     info->fptOutPerimeter = NULL;    info->flagOutPerimeter = 0;
+    info->fptOutChain = NULL;    info->flagOutChain = 0;
     info->fptOutSurfaceArea = NULL;    info->flagOutSurfaceArea = 0;
+    info->fptOutDensityWeightedArea = NULL;    info->flagOutDensityWeightedArea = 0;
     info->neighbor = 0;    info->flagneighbor = 0;
+    info->fptInDensity = NULL;    info->flagInDensity = 0;
     info->fptconfigFile = NULL;    info->flagconfigFile = 0;
     info->mode = 0;    info->flagmode = 0;
 }
@@ -58,13 +61,25 @@ init1(mrcImageFeatureCalcInfo* info)
         info->fptOutPerimeter = fileOpen(info->OutPerimeter, "w");
     }
     
+    if(info->flagOutChain) {
+        info->fptOutChain = fileOpen(info->OutChain, "w");
+    }
+    
     if(info->flagOutSurfaceArea) {
         info->fptOutSurfaceArea = fileOpen(info->OutSurfaceArea, "w");
     }
     
+    if(info->flagOutDensityWeightedArea) {
+        info->fptOutDensityWeightedArea = fileOpen(info->OutDensityWeightedArea, "w");
+    }
+    
     if(info->flagneighbor) {
     }
     
+    if(info->flagInDensity) {
+        info->fptInDensity = fileOpen(info->InDensity, "r");
+    }
+    
     if(info->flagconfigFile) {
         info->fptconfigFile = fileOpen(info->configFile, "r");
     }
index a136c7c..362928a 100755 (executable)
@@ -40,6 +40,8 @@ main(int argc, char* argv[])
        mrcImage in;
        mrcImage out;
        mrcImage label;
+  mrcImage density;
+  mrcImage densityWeightedArea;
        lmrcImagePerimeterCalcInfo lperi;
        mrcImage peri;
        lmrcImageSurfaceAreaCalcInfo lsurface;
@@ -54,6 +56,9 @@ main(int argc, char* argv[])
        DEBUGPRINT("Program Start\n");
 
        mrcFileRead(&in, info.In, "in main", 0);
+  if(info.flagInDensity) {
+         mrcFileRead(&density, info.InDensity, "in main", 0);
+  }
 
        DEBUGPRINT("lmrcImageLabeling\n");
        lmrcImageLabeling(&label, &in, info.neighbor, 1);
@@ -62,7 +67,7 @@ main(int argc, char* argv[])
        linfo.flagNumber = 0;
        lmrcImageBasicFeatureCalc(&out, &linfo, &label, info.mode);
 
-       if(info.flagOutPerimeter) {
+       if(info.flagOutPerimeter || info.flagOutChain) {
                if(in.HeaderN.z<=1) {
                        lperi.flagArea=0;
                        switch(info.neighbor) {
@@ -94,7 +99,12 @@ main(int argc, char* argv[])
                                        mrcPixelHowNearest);
                                linfo.each[i].flagPerimeter = 1;                        
                        }
-                       mrcFileWrite(&peri, info.OutPerimeter, "in main", 0);
+      if(info.flagOutPerimeter) {
+                         mrcFileWrite(&peri, info.OutPerimeter, "in main", 0);
+      }
+      if(info.flagOutChain) {
+                         mrcFileWrite(lperi.ChainCode, info.OutChain, "in main", 0);
+      }
                } else {
                        fprintf(stderr, "Not supported for 3D image\n");
                }
@@ -135,6 +145,9 @@ main(int argc, char* argv[])
        if(info.flagOutLabel) {
                mrcFileWrite(&label, info.OutLabel, "in main", 0);
        }
+  if(info.flagOutDensityWeightedArea) {
+               mrcFileWrite(&densityWeightedArea, info.OutDensityWeightedArea, "in main", 0);
+  }
        exit(EXIT_SUCCESS);
 }
 
index 07298bb..4eb2844 100755 (executable)
@@ -12,7 +12,8 @@ Options:
     [-o[utput]           Out                 (stdout    ).as(outFile::ASCII      ) ] :Optional  :Output:
     [-o[utput]GC         OutGC               (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:gc
     [-o[utput]L[abel]    OutLabel            (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:Label
-    [-o[utput]P[eprimeter]OutPerimeter        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:Label
+    [-o[utput]P[eprimeter]OutPerimeter        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:Perimeter
+    [-o[utput]C[hainID]  OutChain            (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:ChainID
     [-o[utput]S[urfaceArea]OutSurfaceArea      (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:SurfaceArea
     [-n[eighbor]         neighbor            (0         ).as(Integer             ) ] :Optional  :Neighbor: [4(0)|8 or 6(0)|18|26]
     [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile
index c919735..bc46488 100755 (executable)
@@ -7,6 +7,7 @@
         -R 1 0 1 5x1+35+0 'Run' 'execute operation' $EOS/bin/mrcImageFeatureCalc
         -H 1  5x1+41+0 'Help' 'help page' $EOS/src/Tools/mrcImage/mrcImageFeatureCalc/doc/mrcImageFeatureCalc.doc help
         -Q 1 0 5.25x1+47+0 'Close'
+<<<<<<< HEAD
         -I 1 0 1 1 0 1 -1x1+1+1.500000 ' ' 'In' 'Input:binary(BandW)' i
         -I 1 0 1 0 0 1 -1x1+1+3.000000 ' ' 'Ref' 'Input:reference(density)' r
         -O 1 0 1 0 0 1 -1x1+1+4.500000 ' ' 'Out' 'Output:' o
         -i 1 0 1 0 0 -1x1+1+12.000000 0 0 0 0 0 'neighbor' 'Neighbor: [4(0)|8 or 6(0)|18|26]' n
         -I 1 0 1 0 0 1 -1x1+1+13.500000 ' ' 'configFile' 'ConfigurationFile' c
         -i 1 0 1 0 0 -1x1+1+15.000000 0 0 0 0 0 'mode' 'Mode' m
+=======
+        -I 1 0 1 1 0 1 -1x1+1+1.500000 ' ' 'In' 'Input:binary' i
+        -O 1 0 1 0 0 1 -1x1+1+3.000000 ' ' 'Out' 'Output:' o
+        -O 1 0 1 0 0 1 -1x1+1+4.500000 ' ' 'OutGC' 'Output:gc' oGC
+        -O 1 0 1 0 0 1 -1x1+1+6.000000 ' ' 'OutLabel' 'Output:Label' oL
+        -O 1 0 1 0 0 1 -1x1+1+7.500000 ' ' 'OutPerimeter' 'Output:Perimeter' oP
+        -O 1 0 1 0 0 1 -1x1+1+9.000000 ' ' 'OutChain' 'Output:ChainID' oC
+        -O 1 0 1 0 0 1 -1x1+1+10.500000 ' ' 'OutSurfaceArea' 'Output:SurfaceArea' oS
+        -O 1 0 1 0 0 1 -1x1+1+12.000000 ' ' 'OutDensityWeightedArea' 'Output:DensityWeightedArea' oD
+        -i 1 0 1 0 0 -1x1+1+13.500000 0 0 0 0 0 'neighbor' 'Neighbor: [4(0)|8 or 6(0)|18|26]' n
+        -I 1 0 1 0 0 1 -1x1+1+15.000000 ' ' 'InDensity' 'Input:density' d
+        -I 1 0 1 0 0 1 -1x1+1+16.500000 ' ' 'configFile' 'ConfigurationFile' c
+        -i 1 0 1 0 0 -1x1+1+18.000000 0 0 0 0 0 'mode' 'Mode' m
+>>>>>>> 9b5e7fe08ff1571ad6c1b9f06620a39cc0fd91eb
     -E
   -E
 -E
index 6a53138..9e8694b 100755 (executable)
@@ -12,9 +12,12 @@ usage(char* thisProgram)
     fprintf(stderr, "    [-o[utput]           Out                 (stdout    ).as(outFile::ASCII      ) ] :Optional  :Output:\n");
     fprintf(stderr, "    [-o[utput]GC         OutGC               (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:gc\n");
     fprintf(stderr, "    [-o[utput]L[abel]    OutLabel            (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:Label\n");
-    fprintf(stderr, "    [-o[utput]P[eprimeter]OutPerimeter        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:Label\n");
+    fprintf(stderr, "    [-o[utput]P[eprimeter]OutPerimeter        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:Perimeter\n");
+    fprintf(stderr, "    [-o[utput]C[hainID]  OutChain            (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:ChainID\n");
     fprintf(stderr, "    [-o[utput]S[urfaceArea]OutSurfaceArea      (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:SurfaceArea\n");
+    fprintf(stderr, "    [-o[utput]D[ensityWeightedArea]OutDensityWeightedArea(NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output:DensityWeightedArea\n");
     fprintf(stderr, "    [-n[eighbor]         neighbor            (0         ).as(Integer             ) ] :Optional  :Neighbor: [4(0)|8 or 6(0)|18|26]\n");
+    fprintf(stderr, "    [-d[ensity]          InDensity           (NULL      ).as(inFile::mrcImage    ) ] :Optional  :Input:density\n");
     fprintf(stderr, "    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile\n");
     fprintf(stderr, "    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode\n");
     additionalUsage();