switch(linfo->Mode) {
case lmrcImageNormalizingModeDoubleExponential: {
+ fprintf(linfo->paramOut, "NormalizingMode: DoubleExp\n");
lhist = 100;
nexp = 2;
lmrcImageHistgram(&hist, lhist, in);
}
}
}
+ fprintf(linfo->paramOut, "(min,max): %f %f\n", a[5], a[2]);
break;
}
case lmrcImageNormalizingModeMinMax: {
+ fprintf(linfo->paramOut, "NormalizingMode: MinMax\n");
for(x=0; x<in->HeaderN.x; x++) {
for(y=0; y<in->HeaderN.y; y++) {
for(z=0; z<in->HeaderN.z; z++) {
}
}
}
+ fprintf(linfo->paramOut, "(min,max): %f %f\n", in->HeaderAMin, in->HeaderAMax);
break;
}
case lmrcImageNormalizingModeMin75percent: {
+ fprintf(linfo->paramOut, "NormalizingMode: MinMax-A*0.75+B\n");
for(x=0; x<in->HeaderN.x; x++) {
for(y=0; y<in->HeaderN.y; y++) {
for(z=0; z<in->HeaderN.z; z++) {
}
}
}
+ fprintf(linfo->paramOut, "(min,max): %f %f\n", in->HeaderAMin, in->HeaderAMax);
break;
}
case lmrcImageNormalizingModeUsingContour: {
+ fprintf(linfo->paramOut, "NormalizingMode: ContourMinMax\n");
for(x=0; x<in->HeaderN.x; x++) {
for(y=0; y<in->HeaderN.y; y++) {
for(z=0; z<in->HeaderN.z; z++) {
}
}
}
+ fprintf(linfo->paramOut, "(min,max): %f %f\n", linfo->ContourMin, linfo->ContourMax);
break;
}
case lmrcImageNormalizingModeUsingContourWithSolventFlattening: {
+ fprintf(linfo->paramOut, "NormalizingMode: ContourMinMaxWithSoventFlattenng\n");
for(x=0; x<in->HeaderN.x; x++) {
for(y=0; y<in->HeaderN.y; y++) {
for(z=0; z<in->HeaderN.z; z++) {
}
}
}
+ fprintf(linfo->paramOut, "(min,max): %f %f\n", linfo->ContourMin, linfo->ContourMax);
+ fprintf(linfo->paramOut, "Solavent: %f\n", linfo->ContourSolvent);
break;
}
case lmrcImageNormalizingModeNoEstimation: {
+ fprintf(linfo->paramOut, "NormalizingMode: A*data+B\n");
for(x=0; x<in->HeaderN.x; x++) {
for(y=0; y<in->HeaderN.y; y++) {
for(z=0; z<in->HeaderN.z; z++) {
break;
}
case lmrcImageNormalizingModeAssumeGaussian: {
+ fprintf(linfo->paramOut, "NormalizingMode: AssumeGaussian\n");
mrcImageInformation imageInfo;
imageInfo.mode = meanOfAll;
lmrcImageInformation(&imageInfo, in);
}
}
}
+ fprintf(linfo->paramOut, "(mean,sd): %f %f\n", imageInfo.mean, imageInfo.sd);
break;
}
case lmrcImageNormalizingModeUsingLowValueAreaToHighValueArea: {
+ fprintf(linfo->paramOut, "NormalizingMode: LowValueAreaToHighValueArea\n");
mrcImageInformation imageInfo;
imageInfo.mode = meanOfLowValueAreaAndHighValueArea;
imageInfo.thresHigh = linfo->thresOfHighValueArea;
}
}
}
+ fprintf(linfo->paramOut, "thresRate(min,max): %f %f\n", imageInfo.thresLow, imageInfo.thresHigh);
+ fprintf(linfo->paramOut, "thresValue(min,max): %f %f\n", imageInfo.thresOfLowValueArea, imageInfo.thresOfHighValueArea);
+ fprintf(linfo->paramOut, "value(min,max): %f %f\n", imageInfo.meanOfLowValueArea, imageInfo.meanOfHighValueArea);
break;
}
default: {
break;
}
}
+ fprintf(linfo->paramOut, "(A,B): %f %f\n", linfo->A, linfo->B);
}
#define GLOBAL_DECLARATION
#include "../inc/config.h"
-#undef DEBUG
+#define DEBUG
#include "genUtil.h"
#include "Random.h"
#include "mrcImage.h"
float UnsignedHalf;
double Threshold;
mrcImageInformation ImageInfo;
+ FILE* paramOut;
} lmrcImageAbnormalValueRemoveInfo;
typedef enum lmrcImageAbnormalValueRemoveMode {
linfo.UnsignedMax = info.UnsignedMax;
linfo.UnsignedHalf= info.UnsignedHalf;
linfo.Threshold = info.Threshold;
+
+ linfo.paramOut = info.fptOutParams;
+
DEBUGPRINT("Program Start\n");
mrcFileRead(&in, info.In, "in main", 0);
{
mrcImage tmp;
mrcImageParaTypeReal x, y, z;
- double data;
+ double data, dst, tmpD;
if(linfo->flagUnsigned){
tmp.Header = in->Header;
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
if(linfo->UnsignedHalf <= data) {
- data -= linfo->UnsignedMax;
+ data -= linfo->UnsignedMax;
}
}
}
case lmrcImageAbnormalValueModeAllArea: {
linfo->ImageInfo.mode = meanOfAll;
lmrcImageInformation(&(linfo->ImageInfo), in);
+ fprintf(linfo->paramOut, "AbnormalMode: AllArea\n");
+ fprintf(linfo->paramOut, "ImageInformation(mean,sd): %g %g\n", linfo->ImageInfo.mean, linfo->ImageInfo.sd);
+ fprintf(linfo->paramOut, "CutValue: %g\n", linfo->cutValueOverSigma);
+ fprintf(linfo->paramOut, "NormalArea(mean-sd,mean+sd): %g %g\n", linfo->ImageInfo.mean-linfo->ImageInfo.sd, linfo->ImageInfo.mean+ linfo->ImageInfo.sd);
lmrcImageAbnormalValueRemoveAllArea(out, in, linfo, mode);
break;
}
linfo->ImageInfo.mode = meanOfHighValueArea;
linfo->ImageInfo.thresHigh = linfo->Threshold;
lmrcImageInformation(&(linfo->ImageInfo), in);
+ fprintf(linfo->paramOut, "AbnormalMode: HighValueArea\n");
+ fprintf(linfo->paramOut, "ImageInformation(mean,sd): %g %g\n", linfo->ImageInfo.meanOfHighValueArea, linfo->ImageInfo.sdOfHighValueArea);
+ fprintf(linfo->paramOut, "CutValue: %g\n", linfo->cutValueOverSigma);
+ fprintf(linfo->paramOut, "NormalArea(thres,mean+sd): %g %g\n", linfo->ImageInfo.thresOfHighValueArea,
+ linfo->ImageInfo.meanOfHighValueArea+linfo->cutValueOverSigma*linfo->ImageInfo.sdOfHighValueArea);
lmrcImageAbnormalValueRemoveHighValueArea(out, in, linfo, mode);
break;
}
linfo->ImageInfo.mode = meanOfLowValueArea;
linfo->ImageInfo.thresLow = linfo->Threshold;
lmrcImageInformation(&(linfo->ImageInfo), in);
+ fprintf(linfo->paramOut, "AbnormalMode: LowValueArea\n");
+ fprintf(linfo->paramOut, "ImageInformation(mean,sd): %g %g\n", linfo->ImageInfo.mean, linfo->ImageInfo.sd);
+ fprintf(linfo->paramOut, "CutValue: %g\n", linfo->cutValueOverSigma);
+ fprintf(linfo->paramOut, "NormalArea(mean-cutValue*sd,thres): %g %g\n", linfo->ImageInfo.meanOfLowValueArea-linfo->cutValueOverSigma*linfo->ImageInfo.sdOfLowValueArea,
+ linfo->ImageInfo.thresOfLowValueArea);
lmrcImageAbnormalValueRemoveLowValueArea(out, in, linfo, mode);
break;
}
mrcImageInformation inInfo;
mrcImage tmp;
mrcImageParaTypeReal x, y, z;
- double data;
+ double data, dst, tmpD;
inInfo = linfo->ImageInfo;
switch(mode) {
for(y=0; y<in->HeaderN.y; y++) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
- if(data<0) {
- fprintf(stderr, "data is negative: %lf\n", data);
- }
if(data < inInfo.mean - linfo->cutValueOverSigma*inInfo.sd
|| inInfo.mean + linfo->cutValueOverSigma*inInfo.sd < data) {
- data = inInfo.mean + inInfo.sd*randomNormalGet(2);
+ dst = inInfo.mean + inInfo.sd*randomNormalGet(2);
switch(out->HeaderMode) {
case mrcCharImage:
case mrcShortImage:
case mrcLongImage: {
- if(data<0) {
- data = 0;
+ if(dst<0) {
+ DEBUGPRINT1("data is negative: %lf\n", data);
+ dst = 0;
}
break;
}
}
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
for(y=0; y<in->HeaderN.y; y++) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
- if(data<0) {
- fprintf(stderr, "data is negative: %lf\n", data);
- }
if(data < mean - linfo->cutValueOverSigma*inInfo.sd
|| mean + linfo->cutValueOverSigma*inInfo.sd < data) {
- data = mean + SD*randomNormalGet(2);
+ dst = mean + SD*randomNormalGet(2);
switch(out->HeaderMode) {
case mrcCharImage:
case mrcShortImage:
case mrcLongImage: {
- if(data<0) {
- data = 0;
+ if(dst<0) {
+ DEBUGPRINT1("data is negative: %lf\n", data);
+ dst = 0;
}
break;
}
}
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
for(y=0; y<in->HeaderN.y; y++) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
- if(data<0) {
- fprintf(stderr, "data is negative: %lf\n", data);
- }
if(data < mean - linfo->cutValueOverSigma*inInfo.sd
|| mean + linfo->cutValueOverSigma*inInfo.sd < data) {
- data = mean;
+ dst = mean;
switch(out->HeaderMode) {
case mrcCharImage:
case mrcShortImage:
case mrcLongImage: {
if(data<0) {
- data = 0;
+ DEBUGPRINT1("data is negative: %lf\n", data);
+ dst = 0;
}
break;
}
}
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
for(oy=y-dy; oy<=y+dy; oy++) {
for(ox=x-dx; ox<=x+dx; ox++) {
if(SQR((ox-x)/dx)+SQR((oy-y)/dy)+SQR((oz-z)/dz)<=1) {
- mrcPixelDataGet(in, ox, oy, oz, &data, mrcPixelRePart, mrcPixelHowNearest);
- if( min < data && data < max) {
- sum += data;
+ mrcPixelDataGet(in, ox, oy, oz, &tmpD, mrcPixelRePart, mrcPixelHowNearest);
+ if( min < tmpD && tmpD < max) {
+ sum += tmpD;
count++;
}
}
}
if(4<=count) {
flag ++;
- data = sum/count;
- DEBUGPRINT5("data %f count %d at (%f, %f, %f) \n", data, count, x, y, z);
- if(data<minHalf || maxHalf < data ) {
+ dst = sum/count;
+ DEBUGPRINT5("data %f count %d at (%f, %f, %f) \n", dst, count, x, y, z);
+ if(dst < minHalf || maxHalf < dst ) {
DEBUGPRINT("wider range +1 because of wide abnormal value\n");
dx++;
dy++;
} else {
flag = 4;
}
-
} else {
DEBUGPRINT("wider range +1\n");
flag=0;
dz++;
}
}
-
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
mrcImageInformation inInfo;
mrcImage tmp;
mrcImageParaTypeReal x, y, z;
- double data;
+ double data, dst, tmpD;
inInfo = linfo->ImageInfo;
switch(mode) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
if(inInfo.meanOfHighValueArea + linfo->cutValueOverSigma*inInfo.sdOfHighValueArea < data) {
- data = inInfo.meanOfHighValueArea + inInfo.sdOfHighValueArea*randomNormalGet(2);
+ dst = inInfo.meanOfHighValueArea + inInfo.sdOfHighValueArea*randomNormalGet(2);
switch(out->HeaderMode) {
case mrcCharImage:
case mrcShortImage:
case mrcLongImage: {
- if(data<0) {
- data = 0;
+ if(dst<0) {
+ dst= 0;
}
break;
}
}
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
for(y=0; y<in->HeaderN.y; y++) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
- if(inInfo.meanOfHighValueArea + linfo->cutValueOverSigma*inInfo.sdOfHighValueArea < data) {
+ if( inInfo.thresOfHighValueArea < data &&
+ data < inInfo.meanOfHighValueArea + linfo->cutValueOverSigma*inInfo.sdOfHighValueArea ) {
sum += data;
}
}
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
if(inInfo.meanOfHighValueArea + linfo->cutValueOverSigma*inInfo.sdOfHighValueArea < data) {
- data = mean;
+ dst = mean;
switch(out->HeaderMode) {
case mrcCharImage:
case mrcShortImage:
case mrcLongImage: {
- if(data<0) {
- data = 0;
+ if(dst <0) {
+ dst = 0;
}
break;
}
}
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
for(y=0; y<in->HeaderN.y; y++) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
-
- if(data < min || max < data) {
+ if(max < data) {
DEBUGPRINT6("data %f out of range %f <-> %f at (%f, %f, %f) \n", data, min, max, x, y, z);
flag = 0;
dx = dy = dz = 1;
for(oy=y-dy; oy<=y+dy; oy++) {
for(ox=x-dx; ox<=x+dx; ox++) {
if(SQR((ox-x)/dx)+SQR((oy-y)/dy)+SQR((oz-z)/dz)<=1) {
- mrcPixelDataGet(in, ox, oy, oz, &data, mrcPixelRePart, mrcPixelHowNearest);
- if( min < data && data < max) {
- sum += data;
+ mrcPixelDataGet(in, ox, oy, oz, &tmpD, mrcPixelRePart, mrcPixelHowNearest);
+ if(tmpD < max) {
+ sum += tmpD;
count++;
}
}
}
if(4<=count) {
flag ++;
- data = sum/count;
+ dst = sum/count;
DEBUGPRINT5("data %f count %d at (%f, %f, %f) \n", data, count, x, y, z);
- if(data<minHalf || maxHalf < data ) {
+ if( maxHalf < data ) {
DEBUGPRINT("wider range +1 because of wide abnormal value\n");
dx++;
dy++;
} else {
flag = 4;
}
-
} else {
DEBUGPRINT("wider range +1\n");
flag=0;
dz++;
}
}
-
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
break;
}
case lmrcImageAbnormalValueModeRandom: {
- double sum, mean, sd;
+ double sum, mean, SD;
int n;
n=0;
sum = 0;
if(inInfo.thresOfHighValueArea < data
&&data < inInfo.meanOfHighValueArea + linfo->cutValueOverSigma*inInfo.sdOfHighValueArea) {
sum += data;
+ n++;
}
}
}
}
}
}
- sd = sqrt(sum/n);
+ SD = sqrt(sum/n);
-
- break;
- }
+ for(z=0; z<in->HeaderN.z; z++) {
+ for(y=0; y<in->HeaderN.y; y++) {
+ for(x=0; x<in->HeaderN.x; x++) {
+ mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+ if(mean + linfo->cutValueOverSigma*SD < data) {
+ dst = mean + SD*randomNormalGet(2);
+ switch(out->HeaderMode) {
+ case mrcCharImage:
+ case mrcShortImage:
+ case mrcLongImage: {
+ if(dst<0) {
+ DEBUGPRINT1("data is negative: %lf\n", data);
+ dst = 0;
+ }
+ break;
+ }
+ }
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
+ }
+ }
+ }
+ }
+ break;
+ }
default: {
fprintf(stderr, "Not supported mode: %d\n", mode);
exit(EXIT_FAILURE);
mrcImageInformation inInfo;
mrcImage tmp;
mrcImageParaTypeReal x, y, z;
- double data;
+ double data, dst, tmpD;
inInfo = linfo->ImageInfo;
switch(mode) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
if(data < inInfo.meanOfLowValueArea - linfo->cutValueOverSigma*inInfo.sdOfLowValueArea) {
- data = inInfo.meanOfLowValueArea + inInfo.sdOfLowValueArea*randomNormalGet(2);
+ dst = inInfo.meanOfLowValueArea + inInfo.sdOfLowValueArea*randomNormalGet(2);
switch(out->HeaderMode) {
case mrcCharImage:
case mrcShortImage:
case mrcLongImage: {
- if(data<0) {
- data = 0;
+ if(dst<0) {
+ dst = 0;
}
break;
}
}
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
for(y=0; y<in->HeaderN.y; y++) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
- if(data < inInfo.meanOfLowValueArea - linfo->cutValueOverSigma*inInfo.sdOfLowValueArea) {
+ if(inInfo.meanOfLowValueArea - linfo->cutValueOverSigma*inInfo.sdOfLowValueArea < data
+ && data < inInfo.thresOfLowValueArea ) {
sum += data;
+ n++;
}
}
}
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
if(data < inInfo.meanOfLowValueArea - linfo->cutValueOverSigma*inInfo.sdOfLowValueArea) {
- data = mean;
+ dst = mean;
switch(out->HeaderMode) {
case mrcCharImage:
case mrcShortImage:
case mrcLongImage: {
- if(data<0) {
- data = 0;
+ if(dst<0) {
+ dst = 0;
}
break;
}
}
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
for(y=0; y<in->HeaderN.y; y++) {
for(x=0; x<in->HeaderN.x; x++) {
mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
-
- if(data < min || max < data) {
+ if(data < min) {
DEBUGPRINT6("data %f out of range %f <-> %f at (%f, %f, %f) \n", data, min, max, x, y, z);
flag = 0;
dx = dy = dz = 1;
flag ++;
data = sum/count;
DEBUGPRINT5("data %f count %d at (%f, %f, %f) \n", data, count, x, y, z);
- if(data<minHalf || maxHalf < data ) {
+ if(data<minHalf) {
DEBUGPRINT("wider range +1 because of wide abnormal value\n");
dx++;
dy++;
dz++;
}
}
-
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
+ }
+ }
+ }
+ }
+ break;
+ }
+ case lmrcImageAbnormalValueModeRandom: {
+ double sum, mean, SD;
+ int n;
+ 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++) {
+ mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+ if(data < inInfo.thresOfLowValueArea
+ &&inInfo.meanOfLowValueArea - linfo->cutValueOverSigma*inInfo.sdOfLowValueArea < data) {
+ sum += data;
+ n++;
+ }
+ }
+ }
+ }
+ mean = sum/n;
+ 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++) {
+ mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+ if(data < inInfo.thresOfLowValueArea
+ &&inInfo.meanOfLowValueArea - linfo->cutValueOverSigma*inInfo.sdOfLowValueArea <data) {
+ sum += SQR(data-mean);
+ }
+ }
+ }
+ }
+ SD = sqrt(sum/n);
+
+ for(z=0; z<in->HeaderN.z; z++) {
+ for(y=0; y<in->HeaderN.y; y++) {
+ for(x=0; x<in->HeaderN.x; x++) {
+ mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
+ if(data < mean - linfo->cutValueOverSigma*SD) {
+ dst = mean + SD*randomNormalGet(2);
+ switch(out->HeaderMode) {
+ case mrcCharImage:
+ case mrcShortImage:
+ case mrcLongImage: {
+ if(dst<0) {
+ DEBUGPRINT1("data is negative: %lf\n", data);
+ dst = 0;
+ }
+ break;
+ }
+ }
+ fprintf(linfo->paramOut,"AbnormalValue: %f -> %f at %f %f %f\n", data, dst, x, y, z);
}
}
}
}
break;
}
- case lmrcImageAbnormalValueModeRandom:
default: {
fprintf(stderr, "Not supported mode: %d\n", mode);
exit(EXIT_FAILURE);