• R/O
  • HTTP
  • SSH
  • HTTPS

base: コミット

This repository is a base of Eos.


コミットメタ情報

リビジョン8bfe92901b5284d94760603d9736da69c929525c (tree)
日時2015-03-23 19:09:23
作者Takuo Yasunaga <yasunaga@bio....>
コミッターTakuo Yasunaga

ログメッセージ

new:
mrcImageAutoTriming
modified:
mrcImage.h

変更サマリ

差分

--- /dev/null
+++ b/bin/mrcImageAutoTriming
@@ -0,0 +1 @@
1+../sbin/MachineIndependent
\ No newline at end of file
--- a/include/mrcImage.h
+++ b/include/mrcImage.h
@@ -412,6 +412,8 @@ typedef struct mrcImageInformation {
412412 long flagrmax;
413413 double RMS; /* Root mean square */
414414 int mode;
415+ mrcImageParaTypeRealCoord sdOfAllAxis;
416+ mrcImageParaTypeRealCoord aveOfAllAxis;
415417
416418 /* For Search Area */
417419 int flagXrange;
@@ -441,7 +443,8 @@ typedef enum mrcImageInformationMode {
441443 meanOfCentre = 4,
442444 meanOfSparse = 5,
443445 meanOf2DEdgeY = 6,
444- RMSofAllPixels = 7
446+ RMSofAllPixels = 7,
447+ sdOfAllAxis = 8
445448 } mrcImageInformationMode;
446449
447450 /*
--- a/src/Objects/DataManip/mrcImage/doc/mrcImage.html
+++ b/src/Objects/DataManip/mrcImage/doc/mrcImage.html
@@ -103,343 +103,6 @@
103103 <H2>Information from source codes</H2>
104104 </A>
105105 <PRE>
106-../src/fftn.c:
107-
108-../src/lmrcFETnormalizeBySD.c:
109-
110-../src/lmrcFFTExpression.c:
111-
112-../src/lmrcFFTFGconj.c:
113-
114-../src/lmrcFFTFxG.c:
115-
116-../src/lmrcFFTInfo.c:
117-
118-../src/lmrcImage3DPad.c:
119-
120-../src/lmrcImage3DWindowing.c:
121-
122-../src/lmrcImageAddValue.c:
123-
124-../src/lmrcImageAsProbability.c:
125-
126-../src/lmrcImageAverage.c:
127-
128-../src/lmrcImageBandPassFilter.c:
129-
130-../src/lmrcImageBilateralFilter.c:
131-
132-../src/lmrcImageBinarization.c:
133-
134-../src/lmrcImageBottomHatTransform.c:
135-
136-../src/lmrcImageBoundaryInfo.c:
137-
138-../src/lmrcImageCTFCompensation.c:
139-
140-../src/lmrcImageCTFDetermination.c:
141-
142-../src/lmrcImageCTFObservation.c:
143-
144-../src/lmrcImageCTFSN.c:
145-
146-../src/lmrcImageCVE.c:
147-
148-../src/lmrcImageCalcArea.c:
149-
150-../src/lmrcImageCenterGet.c:
151-
152-../src/lmrcImageCentre.c:
153-
154-../src/lmrcImageClosing.c:
155-
156-../src/lmrcImageClusterAnalysis.c:
157-
158-../src/lmrcImageCommonLine.c:
159-
160-../src/lmrcImageConnection.c:
161-
162-../src/lmrcImageConnectivityNumberCalc.c:
163-
164-../src/lmrcImageContourSurface.c:
165-
166-../src/lmrcImageContraction.c:
167-
168-../src/lmrcImageCorrelation.c:
169- $lmrcImageEuclidDistanceCalc: Calculate Euclid distance between two images $
170- $arg: in1: input mrcImage1 $
171- $arg: in2: input mrcImage2 $
172- $arg: mode: input int $
173- $mode: 0 Sum of SQR $
174- $mode: 1 Distance $
175- $return: EuclidDistance $
176-
177-../src/lmrcImageCorrelationPVM.c:
178-
179-../src/lmrcImageCorrelationWithCTFCompensation.c:
180-
181-../src/lmrcImageCorrelationinSpace.c:
182-
183-../src/lmrcImageCrystalCreate.c:
184-
185-../src/lmrcImageDataMaxAndMinGetByImage.c:
186-
187-../src/lmrcImageDataStraightCopy.c:
188-
189-../src/lmrcImageDeconvolution.c:
190-
191-../src/lmrcImageDensity.c:
192-
193-../src/lmrcImageDensityInverse.c:
194-
195-../src/lmrcImageDensityNormalizationByImage.c:
196-
197-../src/lmrcImageDifferential.c:
198-
199-../src/lmrcImageDilation.c:
200-
201-../src/lmrcImageDistanceConversion.c:
202-
203-../src/lmrcImageEdge.c:
204-
205-../src/lmrcImageEdgeAverage.c:
206-
207-../src/lmrcImageEdgeEnhancement.c:
208-
209-../src/lmrcImageErosion.c:
210-
211-../src/lmrcImageFFT.c:
212-
213-../src/lmrcImageFOMCalc.c:
214-
215-../src/lmrcImageFeatureExtraction.c:
216-
217-../src/lmrcImageFeatureExtractionCoOccurrence.c:
218-
219-../src/lmrcImageFeatureExtractionRunLength.c:
220-
221-../src/lmrcImageFilterCreate.c:
222-
223-../src/lmrcImageFirstNoiseReductionByRelaxation.c:
224-
225-../src/lmrcImageFloating.c:
226-
227-../src/lmrcImageFourierNeighborCorrelation.c:
228-
229-../src/lmrcImageFourierPowerSpectrum.c:
230-
231-../src/lmrcImageFourierShellCorrelation.c:
232-
233-../src/lmrcImageHighPassFilter.c:
234-
235-../src/lmrcImageHighlighting.c:
236-
237-../src/lmrcImageHoughTransform.c:
238-
239-../src/lmrcImageLabeling.c:
240-
241-../src/lmrcImageLogicalOperation.c:
242-
243-../src/lmrcImageLowPassFilter.c:
244-
245-../src/lmrcImageMasking.c:
246-
247-../src/lmrcImageMaxDataGet.c:
248-
249-../src/lmrcImageMirroring.c:
250- $lmrcImageMirroring: (mrcImage* out, mrcImage* in, lmrcImageMirroring mode) $
251-
252-../src/lmrcImageModeChange.c:
253-
254-../src/lmrcImageModelCreate.c:
255-
256-../src/lmrcImageMontageCreate.c:
257-
258-../src/lmrcImageMorphology.c:
259-
260-../src/lmrcImageMove.c:
261-
262-../src/lmrcImageMultiCTFCompensation.c:
263-
264-../src/lmrcImageMultiplying.c:
265-
266-../src/lmrcImageNegativeLaplacian.c:
267-
268-../src/lmrcImageNoiseCreate.c:
269-
270-../src/lmrcImageNormalizing.c:
271-
272-../src/lmrcImageOneLineSimilarityCalc.c:
273-
274-../src/lmrcImageOpening.c:
275-
276-../src/lmrcImagePad.c:
277-
278-../src/lmrcImagePartImageSegmentation.c:
279-
280-../src/lmrcImagePixelSummationOfProbabilityGetByImage.c:
281-
282-../src/lmrcImagePosterization.c:
283-
284-../src/lmrcImagePrewitt.c:
285-
286-../src/lmrcImageProjection.c:
287-
288-../src/lmrcImageProportionalDensityLevelSetByImage.c:
289-
290-../src/lmrcImageROI2D.c:
291-
292-../src/lmrcImageROI3D.c:
293-
294-../src/lmrcImageROInotChangeHeaderLength.c:
295-
296-../src/lmrcImageRadialDistribution.c:
297-
298-../src/lmrcImageRhoFiltering.c:
299-
300-../src/lmrcImageRoberts.c:
301-
302-../src/lmrcImageRotation.c:
303-
304-../src/lmrcImageSSDA.c:
305-
306-../src/lmrcImageSamplingUnitChange.c:
307-
308-../src/lmrcImageSecondNoiseReductionByRelaxation.c:
309-
310-../src/lmrcImageSecondNoiseReductionByRelaxationDijDimensionSet.c:
311-
312-../src/lmrcImageSecondNoiseReductionByRelaxationDijValueCalculate.c:
313-
314-../src/lmrcImageSecondNoiseReductionByRelaxationDijValueSet.c:
315-
316-../src/lmrcImageSecondNoiseReductionByRelaxationQValueSet.c:
317-
318-../src/lmrcImageSecondNoiseReductionByRelaxationRValueSet.c:
319-
320-../src/lmrcImageShapePCA.c:
321-
322-../src/lmrcImageShift.c:
323-
324-../src/lmrcImageShrink.c:
325-
326-../src/lmrcImageSigmaCalculate.c:
327-
328-../src/lmrcImageSinogram.c:
329-
330-../src/lmrcImageSinogramCorrelation.c:
331-
332-../src/lmrcImageSinogramFFT.c:
333-
334-../src/lmrcImageSmoothing.c:
335-
336-../src/lmrcImageSobel.c:
337-
338-../src/lmrcImageSolventFlattening.c:
339-
340-../src/lmrcImageSpatialFrequencyFilter.c:
341-
342-../src/lmrcImageSphere.c:
343-
344-../src/lmrcImageSplit.c:
345-
346-../src/lmrcImageStack.c:
347-
348-../src/lmrcImageStudentCalculate.c:
349-
350-../src/lmrcImageSubtractionCalc.c:
351-
352-../src/lmrcImageSummationCalculate.c:
353-
354-../src/lmrcImageSymmetryFind.c:
355-
356-../src/lmrcImageTfunction.c:
357-
358-../src/lmrcImageToneReversal.c:
359-
360-../src/lmrcImageTopHatTransform.c:
361-
362-../src/lmrcImageTrans.c:
363-
364-../src/lmrcImageTransformDescartesIntoPolar.c:
365-
366-../src/lmrcImageTriming.c:
367-
368-../src/lmrcImageVolumeCalc.c:
369-
370-../src/lmrcImageWindowing.c:
371-
372-../src/lmrcImagesFTest.c:
373-
374-../src/lmrcImagesStatDataGet.c:
375-
376-../src/lmrcImagesTTest.c:
377-
378-../src/lmrcImagesVarianceAnalysis.c:
379-
380-../src/lmrcImagesVarianceMap.c:
381-
382-../src/lmrcSinogramFET.c:
383-
384-../src/lmrcSinogramFETPCA.c:
385-
386-../src/lmrcSinogramFETcalcWeight.c:
387-
388-../src/lmrcSinogramFETcorrelationMap.c:
389-
390-../src/lmrcSinogramFETnormalizedMap.c:
391-
392-../src/lmrcSinogramFETreferredCorrelation.c:
393-
394-../src/lmrcSinogramFETsmoothParameterMatching.c:
395-
396-../src/mrcImageCheckFFT.c:
397-
398-../src/mrcImageCheckSameSize.c:
399-
400-../src/mrcImageCopy.c:
401-
402-../src/mrcImageDataSet.c:
403-
404-../src/mrcImageError.c:
405-
406-../src/mrcImageGet.c:
407-
408-../src/mrcImageGetPixels.c:
409-
410-../src/mrcImageInfo.c:
411-
412-../src/mrcImageInit.c:
413-
414-../src/mrcImageOperation.c:
415-
416-../src/mrcImagePVM.c:
417-
418-../src/mrcImagePrint.c:
419-
420-../src/mrcImageRead.c:
421-
422-../src/mrcImageSectionGet.c:
423-
424-../src/mrcImageSectionSet.c:
425-
426-../src/mrcImageSet.c:
427-
428-../src/mrcImageTailer.c:
429-
430-../src/mrcImageToIntImage.c:
431-
432-../src/mrcImageUtil.c:
433-
434-../src/mrcImageUtilityforVariance.c:
435-
436-../src/mrcImageWrite.c:
437-
438-../src/mrcImageWrite2.c:
439-
440-../src/mrcImagefuncmin.c:
441-
442-../src/mrcRefUtil.c:
443106 </PRE>
444107 <HR>
445108 <A NAME="include">
@@ -860,6 +523,8 @@ typedef struct mrcImageInformation {
860523 long flagrmax;
861524 double RMS; /* Root mean square */
862525 int mode;
526+ mrcImageParaTypeRealCoord sdOfAllAxis;
527+ mrcImageParaTypeRealCoord aveOfAllAxis;
863528
864529 /* For Search Area */
865530 int flagXrange;
@@ -889,7 +554,8 @@ typedef enum mrcImageInformationMode {
889554 meanOfCentre = 4,
890555 meanOfSparse = 5,
891556 meanOf2DEdgeY = 6,
892- RMSofAllPixels = 7
557+ RMSofAllPixels = 7,
558+ sdOfAllAxis = 8
893559 } mrcImageInformationMode;
894560
895561 /*
--- a/src/Objects/DataManip/mrcImage/inc/mrcImage.h
+++ b/src/Objects/DataManip/mrcImage/inc/mrcImage.h
@@ -412,6 +412,8 @@ typedef struct mrcImageInformation {
412412 long flagrmax;
413413 double RMS; /* Root mean square */
414414 int mode;
415+ mrcImageParaTypeRealCoord sdOfAllAxis;
416+ mrcImageParaTypeRealCoord aveOfAllAxis;
415417
416418 /* For Search Area */
417419 int flagXrange;
@@ -441,7 +443,8 @@ typedef enum mrcImageInformationMode {
441443 meanOfCentre = 4,
442444 meanOfSparse = 5,
443445 meanOf2DEdgeY = 6,
444- RMSofAllPixels = 7
446+ RMSofAllPixels = 7,
447+ sdOfAllAxis = 8
445448 } mrcImageInformationMode;
446449
447450 /*
--- a/src/Objects/DataManip/mrcImage/src/mrcImageCopy.c
+++ b/src/Objects/DataManip/mrcImage/src/mrcImageCopy.c
@@ -17,14 +17,19 @@ static char __sccs_id[] = "@(#)mrcImageCopy ver1.1; Date:96/05/08 @(#)";
1717 void
1818 lmrcImageCopy(mrcImage* dst, mrcImage* src, mrcImageParaTypeRealCoord to)
1919 {
20- mrcImageParaTypeReal ix, iy, iz;
20+ mrcImageParaTypeInteger ix, iy, iz;
2121 double data;
22+ mrcImageParaTypeInteger x, y, z;
23+ int k;
2224
23- for(iz=0; iz<src->HeaderN.z; iz++) {
24- for(iy=0; iy<src->HeaderN.y; iy++) {
25- for(ix=0; ix<src->HeaderN.x; ix++) {
26- mrcPixelDataGet(src, (mrcImageParaTypeReal)ix, (mrcImageParaTypeReal)iy, (mrcImageParaTypeReal)iz, &data, mrcPixelRePart, mrcPixelHowNearest);
27- mrcPixelDataSet(dst, (mrcImageParaTypeReal)to.x + ix, (mrcImageParaTypeReal)to.y + iy, (mrcImageParaTypeReal)to.z + iz, data, mrcPixelRePart);
25+ for(iz=0; iz<dst->HeaderN.z; iz++) {
26+ for(iy=0; iy<dst->HeaderN.y; iy++) {
27+ for(ix=0; ix<dst->HeaderN.x; ix++) {
28+ x = (int)(ix - to.x + 0.5);
29+ y = (int)(iy - to.y + 0.5);
30+ z = (int)(iz - to.z + 0.5);
31+ mrcPixelDataGet(src, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
32+ mrcPixelDataSet(dst, ix, iy, iz, data, mrcPixelRePart);
2833 }
2934 }
3035 }
--- a/src/Objects/DataManip/mrcImage/src/mrcImageInfo.c
+++ b/src/Objects/DataManip/mrcImage/src/mrcImageInfo.c
@@ -938,6 +938,65 @@ lmrcImageInformation(mrcImageInformation* info, mrcImage* img)
938938
939939 break;
940940 }
941+ case sdOfAllAxis: {
942+ DEBUGPRINT("SDofAllAxis\n");
943+ double weight, weight2;
944+ double sumx, sumy, sumz;
945+ double avex, avey, avez;
946+ double dat2;
947+
948+ sumx = 0;
949+ sumy = 0;
950+ sumz = 0;
951+ weight = 0;
952+ count = img->HeaderN.x*img->HeaderN.y*img->HeaderN.z;
953+ for(iz=0; iz<img->HeaderN.z; iz++) {
954+ for(iy=0; iy<img->HeaderN.y; iy++) {
955+ for(ix=0; ix<img->HeaderN.x; ix++) {
956+ mrcPixelDataGet(img,
957+ (mrcImageParaTypeReal)ix,
958+ (mrcImageParaTypeReal)iy,
959+ (mrcImageParaTypeReal)iz,
960+ &data, mrcPixelRePart, mrcPixelHowNearest);
961+ sumx += ix*data;
962+ sumy += iy*data;
963+ sumz += iz*data;
964+ weight += data;
965+ }
966+ }
967+ }
968+
969+ avex = sumx/weight;
970+ avey = sumy/weight;
971+ avez = sumz/weight;
972+
973+ sumx = 0;
974+ sumy = 0;
975+ sumz = 0;
976+ weight2 = 0;
977+ for(iz=0; iz<img->HeaderN.z; iz++) {
978+ for(iy=0; iy<img->HeaderN.y; iy++) {
979+ for(ix=0; ix<img->HeaderN.x; ix++) {
980+ mrcPixelDataGet(img,
981+ (mrcImageParaTypeReal)ix,
982+ (mrcImageParaTypeReal)iy,
983+ (mrcImageParaTypeReal)iz,
984+ &data, mrcPixelRePart, mrcPixelHowNearest);
985+ sumx += SQR((ix - avex)*data);
986+ sumy += SQR((iy - avey)*data);
987+ sumz += SQR((iz - avez)*data);
988+ }
989+ }
990+ }
991+
992+ info->sdOfAllAxis.x = sqrt(sumx/weight);
993+ info->sdOfAllAxis.y = sqrt(sumy/weight);
994+ info->sdOfAllAxis.z = sqrt(sumz/weight);
995+ info->aveOfAllAxis.x = avex;
996+ info->aveOfAllAxis.y = avey;
997+ info->aveOfAllAxis.z = avez;
998+ break;
999+ }
9411000 default:{
9421001 fprintf(stderr, "Not supported mode :%d", info->mode);
9431002 exit(EXIT_FAILURE);
--- a/src/Tools/Config/Define.inc
+++ b/src/Tools/Config/Define.inc
@@ -568,3 +568,11 @@ WORLDNAME=Tools
568568 WORLDNAME=Tools
569569 WORLDNAME=Tools
570570 WORLDNAME=Tools
571+WORLDNAME=Tools
572+WORLDNAME=Tools
573+WORLDNAME=Tools
574+WORLDNAME=Tools
575+WORLDNAME=Tools
576+WORLDNAME=Tools
577+WORLDNAME=Tools
578+WORLDNAME=Tools
--- a/src/Tools/mrcImage/.Source
+++ b/src/Tools/mrcImage/.Source
@@ -51,6 +51,7 @@ mrcImageAutoRotationAverage \
5151 mrcImageAutoRotationCorrelation \
5252 mrcImageAutoRotationCorrelation3D \
5353 mrcImageAutoRotationCorrelationResultPrint \
54+mrcImageAutoTriming \
5455 mrcImageAverage \
5556 mrcImageBandPassFilter \
5657 mrcImageBilateralFilter \
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAreaCalc/src/test/Makefile
@@ -0,0 +1,34 @@
1+include ../../Config/Define.inc
2+include ../../../Config/Define.inc
3+include ../../../../Config/Define.inc
4+include ../../../../../Config/Define.inc
5+
6+all: help exec exec2 exec3
7+
8+help:
9+ @echo "----- Help Message Check -----"
10+ @../$(OSTYPE)/$(OBJECTNAME) -h
11+
12+exec:
13+ @echo "----- Execution Check -----"
14+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.bin -o data/test.area -l data/test.label
15+ @echo "----- Calc check -----"
16+
17+exec2:
18+ @echo "----- Execution Check -----"
19+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test2.bin -o data/test2.area -l data/test2.label
20+ @echo "----- Calc check -----"
21+
22+exec3:
23+ @echo "----- Execution Check -----"
24+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test3.bin -o data/test3.area -l data/test3.label
25+ @echo "----- Calc check -----"
26+
27+clean:
28+
29+init:
30+ pdb2mrc -i data/121p.pdb2 -o data/test.mrc -nx 32 -ny 32 -nz 32 -dx 2 -dy 2 -dz 2 -Sx -32 -Sy -32 -Sz -32 -sig 1.6 -w 1.0
31+ mrcImageBinalization -i data/test.mrc -o data/test.bin -m 32
32+ mrcImageBinalization -i data/test2.mrc -o data/test2.bin -m 33
33+ mrcImageErosion -i data/test2.bin -o data/test3.bin
34+
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAreaCalc/src/test/data
@@ -0,0 +1 @@
1+../../../../../..//data/mrcImageAreaCalc
\ No newline at end of file
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/Config/Define.inc
@@ -0,0 +1,4 @@
1+OBJECTNAME = mrcImageAutoTriming
2+EXTRA_LIB =
3+EXTRA_CCOPTS =
4+EXTRA_INC =
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/Config/OptionControlFile
@@ -0,0 +1,12 @@
1+# OptionControlFile
2+# FileFormat
3+"-i","-i[nput]","Input:mrcImage","Essential","1","1","In","inFile::mrcImage","NULL"
4+"-o","-o[utput]","Output:mrcImage","Essential","1","1","Out","outFile::mrcImage","NULL"
5+"-O","-O[utput]","OutputParams:YAML","Optional","1","1","OutParam","outFile::YAML","stdout"
6+"-EAMode","-E[uler]A[ngle]Mode","EulerAngle","Optional","1","1","EAMode","String","ZONS"
7+"-Rot1","-Rot[ation]1","Rot1","Optional","3","1","Rot1Min","Real","-5","1","Rot1Max","Real","5","3","Rot1Delta","Real","1"
8+"-Rot2","-Rot[ation]2","Rot2","Optional","3","1","Rot2Min","Real","-5","1","Rot2Max","Real","5","3","Rot2Delta","Real","1"
9+"-Rot3","-Rot[ation]3","Rot3","Optional","3","1","Rot3Min","Real","-5","1","Rot3Max","Real","5","3","Rot3Delta","Real","1"
10+"-M","-M[ode]","Iterpolation Mode","Optional","1","1","InterpolationMode","Integer","0"
11+"-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
12+"-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/Makefile
@@ -0,0 +1,115 @@
1+include ../../../Config/Define.inc
2+include ../../Config/Define.inc
3+include ../Config/Define.inc
4+include Config/Define.inc
5+
6+all:
7+ cd src; make all; cd ..
8+
9+install:
10+ cd src; make install; cd ..
11+
12+
13+putSF:
14+ if [ -f private ] ; \
15+ then \
16+ echo "$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME) is private"; \
17+ else \
18+ cvs -z4 -d:ext:$$USER@$$EOS_SOURCEFORGE commit || cvs -z4 -d:ext:$$USER@$$EOS_SOURCEFORGE import src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME); \
19+ fi
20+
21+put:
22+ cd src; make put; cd ..
23+
24+clean:
25+ cd src; make clean; cd ..
26+
27+depend:
28+ cd src; make depend; cd ..
29+
30+check:
31+ @if [ ! -d $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) ] ; then \
32+ echo making directory; \
33+ mkdir -p $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE); \
34+ fi
35+ ln -sf ../../../../../hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) src/$(OSTYPE);
36+ @$(RM) src/Makefile
37+ @echo "New src/Makefile"
38+ @$(CP) ../../../Config/Template/$(WORLDNAME)Template.Dir/src/Makefile src/Makefile
39+ @cd src; touch $(OSTYPE)/.Depend; make depend
40+
41+update:
42+ @if [ ! -d $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) ] ; then \
43+ echo making directory; \
44+ mkdir -p $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE); \
45+ fi
46+ ln -sf ../../../../../hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) src/$(OSTYPE);
47+ @$(RM) src/Makefile
48+ @echo "New src/Makefile"
49+ @$(CP) ../../../Config/Template/$(WORLDNAME)Template.Dir/src/Makefile src/Makefile
50+ @cd src; touch $(OSTYPE)/.Depend; echo "Y" | make update
51+
52+cvsupdate::
53+ cvs -d $(EOS_CVSROOT) update -d
54+
55+cvscommit::
56+ cvs -d $(EOS_CVSROOT) commit
57+
58+backup:
59+ @cd ../../../..; \
60+ echo $(OBJECTNAME) ; \
61+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config ; \
62+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
63+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
64+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
65+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
66+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
67+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
68+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
69+ tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile
70+
71+backup-all:
72+ @cd ../../../..; \
73+ echo $(OBJECTNAME) ; \
74+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config ; \
75+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
76+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
77+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
78+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
79+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
80+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
81+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
82+ tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile
83+
84+distribute:
85+ cd ../../../..; \
86+ echo $(OBJECTNAME) ; \
87+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config ; \
88+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
89+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
90+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
91+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
92+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
93+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
94+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
95+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile ; \
96+ tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE)
97+
98+distribute-all:
99+ @cd ../../../..; \
100+ echo $(OBJECTNAME) ; \
101+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config ; \
102+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
103+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
104+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
105+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
106+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
107+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
108+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
109+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile ; \
110+ tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE)
111+
112+eosintroduce:
113+ ${EOS_HOME}/sbin/eosintroduce ${WORLDNAME} ${CLASSNAME} ${OBJECTNAME} ./
114+
115+include Config/Target.inc
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/doc/Makefile
@@ -0,0 +1,2 @@
1+install:
2+ cd ../src; make install-doc; cd ../doc
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/inc/config.h
@@ -0,0 +1,6 @@
1+#ifndef CONFIG_H
2+#define CONFIG_H
3+
4+#include "../inc/mrcImageAutoTriming.h"
5+
6+#endif /* CONFIG_H */
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/inc/mrcImageAutoTriming.h
@@ -0,0 +1,83 @@
1+#ifndef MRCIMAGEAUTOTRIMING_H
2+#define MRCIMAGEAUTOTRIMING_H
3+#include <stdio.h>
4+#include <stdlib.h>
5+
6+#define OPTION_FLAG '-'
7+#define OPTION_FLAG_POS (0)
8+#define OPTION_POS (1)
9+
10+
11+
12+
13+typedef struct mrcImageAutoTrimingInfo {
14+ long flagRedirect;
15+
16+ long flagIn;
17+ char* In;
18+ FILE* fptIn;
19+
20+ long flagOut;
21+ char* Out;
22+ FILE* fptOut;
23+
24+ long flagOutParam;
25+ char* OutParam;
26+ FILE* fptOutParam;
27+
28+ long flagEAMode;
29+ char* EAMode;
30+
31+ long flagRot1Min;
32+ float Rot1Min;
33+
34+ long flagRot1Max;
35+ float Rot1Max;
36+
37+ long flagRot1Delta;
38+ float Rot1Delta;
39+
40+ long flagRot2Min;
41+ float Rot2Min;
42+
43+ long flagRot2Max;
44+ float Rot2Max;
45+
46+ long flagRot2Delta;
47+ float Rot2Delta;
48+
49+ long flagRot3Min;
50+ float Rot3Min;
51+
52+ long flagRot3Max;
53+ float Rot3Max;
54+
55+ long flagRot3Delta;
56+ float Rot3Delta;
57+
58+ long flagInterpolationMode;
59+ long InterpolationMode;
60+
61+ long flagconfigFile;
62+ char* configFile;
63+ FILE* fptconfigFile;
64+
65+ long flagmode;
66+ long mode;
67+
68+} mrcImageAutoTrimingInfo;
69+#ifdef __cplusplus
70+extern "C" {
71+#endif
72+extern void argCheck(mrcImageAutoTrimingInfo* info, int argc, char* avgv[]);
73+extern void khorosInit(int argc, char* avgv[]);
74+extern void init0(mrcImageAutoTrimingInfo* info);
75+extern void init1(mrcImageAutoTrimingInfo* info);
76+extern void usage(char* usage);
77+extern void additionalUsage(void);
78+extern void htmlBeforeUsage(char* usage);
79+extern void htmlAfterUsage(char* usage);
80+#ifdef __cplusplus
81+};
82+#endif
83+#endif /* MRCIMAGEAUTOTRIMING_H */
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/Makefile
@@ -0,0 +1,427 @@
1+include ../Config/Define.inc
2+include ../../Config/Define.inc
3+include ../../../Config/Define.inc
4+include ../../../../Config/Define.inc
5+
6+EOSHOME=../../../../../
7+DSTDIR=$(EOSHOME)/bin
8+DSTDOC=$(EOSHOME)/doc
9+DSTTAR=$(EOSHOME)/tar
10+
11+INCFILES =
12+
13+LIBFILES = \
14+ $(LIBPREFIX)EosObjects$(LIBSUFFIX)
15+
16+LIBFILESDEBUG = \
17+ $(LIBPREFIX)EosObjects.debug$(LIBSUFFIX)
18+
19+SRCC = \
20+ $(OBJECTNAME).c \
21+ init.c \
22+ argCheck.c \
23+ usage.c \
24+ util.c \
25+
26+SRCCXX = \
27+ $(OBJECTNAME).cc \
28+ init.cc \
29+ argCheck.cc \
30+ usage.cc \
31+ util.cc \
32+
33+MODULES = \
34+ $(OBJECTNAME).o \
35+ init.o \
36+ argCheck.o \
37+ usage.o \
38+ util.o \
39+
40+REALMODULES = \
41+ $(OSTYPE)/$(OBJECTNAME).o \
42+ $(OSTYPE)/init.o \
43+ $(OSTYPE)/argCheck.o \
44+ $(OSTYPE)/usage.o \
45+ $(OSTYPE)/util.o
46+
47+MODULESDEBUG = \
48+ $(OBJECTNAME).debugo \
49+ init.debugo \
50+ argCheck.debugo \
51+ usage.debugo \
52+ util.debugo \
53+
54+REALMODULESDEBUG = \
55+ $(OSTYPE)/$(OBJECTNAME).debugo \
56+ $(OSTYPE)/init.debugo \
57+ $(OSTYPE)/argCheck.debugo \
58+ $(OSTYPE)/usage.debugo \
59+ $(OSTYPE)/util.debugo
60+
61+
62+all: $(OSTYPE)/$(OBJECTNAME)
63+ if [ ! -L $(OSTYPE) ] ; then \
64+ moveHostdependent; \
65+ fi
66+
67+debug: $(OSTYPE)/$(OBJECTNAME).debug
68+
69+cudagdb: $(OSTYPE)/$(OBJECTNAME).cudagdb
70+
71+
72+$(OSTYPE)/$(OBJECTNAME)::
73+ @$(RM) -f $(OSTYPE)/Makefile ; \
74+ $(CP) $(EOS_HOME)/src/Config/Template/$(WORLDNAME)Template.Dir/src/ARCH/Makefile $(OSTYPE)/Makefile ; \
75+ cd $(OSTYPE); \
76+ $(MAKE) $(OBJECTNAME) WORLDNAME=$(WORLDNAME) CLASSNAME=$(CLASSNAME) OBJECTNAME=$(OBJECTNAME)
77+
78+$(OSTYPE)/$(OBJECTNAME).debug::
79+ @$(RM) -f $(OSTYPE)/Makefile ; \
80+ $(CP) $(EOS_HOME)/src/Config/Template/$(WORLDNAME)Template.Dir/src/ARCH/Makefile $(OSTYPE)/Makefile ; \
81+ cd $(OSTYPE); \
82+ $(MAKE) $(OBJECTNAME).debug WORLDNAME=$(WORLDNAME) CLASSNAME=$(CLASSNAME) OBJECTNAME=$(OBJECTNAME)
83+
84+$(OSTYPE)/$(OBJECTNAME).cudagdb::
85+ @$(RM) -f $(OSTYPE)/Makefile ; \
86+ $(CP) $(EOS_HOME)/src/Config/Template/$(WORLDNAME)Template.Dir/src/ARCH/Makefile $(OSTYPE)/Makefile ; \
87+ cd $(OSTYPE); \
88+ $(MAKE) $(OBJECTNAME).cudagdb WORLDNAME=$(WORLDNAME) CLASSNAME=$(CLASSNAME) OBJECTNAME=$(OBJECTNAME)
89+
90+cvsupdate::
91+ cvs -d $(EOS_CVSROOT) update -d
92+
93+cvscommit::
94+ cvs -d $(EOS_CVSROOT) commit
95+
96+edit:
97+ @if [ -r $(OBJECTNAME).c ]; \
98+ then \
99+ sccsEdit $(OBJECTNAME).c; \
100+ else \
101+ echo "Source files are already editable"; \
102+ fi
103+ @if [ -r wish/$(OBJECTNAME).wish ]; \
104+ then \
105+ cd wish; sccsEdit $(OBJECTNAME).wish; \
106+ else \
107+ echo "Source files (wish) are already editable."; \
108+ fi
109+ @if [ -r ruby/$(OBJECTNAME).rb ]; \
110+ then \
111+ cd ruby; sccsEdit $(OBJECTNAME).rb; \
112+ else \
113+ echo "Source files (ruby) are already editable."; \
114+ fi
115+ @if [ -r perl/$(OBJECTNAME).pl ]; \
116+ then \
117+ cd perl; sccsEdit $(OBJECTNAME).pl ; \
118+ else \
119+ echo "Source files (perl) are already editable."; \
120+ fi
121+ @if [ -r ../Config/OptionControlFile ]; \
122+ then \
123+ cd ../Config; sccsEdit OptionControlFile; \
124+ else \
125+ echo "OptionControlFile are already editable."; \
126+ fi
127+
128+unedit:
129+ @if [ -w $(OBJECTNAME).c ]; \
130+ then \
131+ sccsUnedit $(OBJECTNAME).c; \
132+ else \
133+ echo "Source files are not editable"; \
134+ fi
135+ @if [ -w wish/$(OBJECTNAME).wish ]; \
136+ then \
137+ cd wish; sccsUnedit $(OBJECTNAME).wish; \
138+ else \
139+ echo "Source files (wish) are not editable."; \
140+ fi
141+ @if [ -w ruby/$(OBJECTNAME).rb]; \
142+ then \
143+ cd ruby; sccsUnedit $(OBJECTNAME).rb; \
144+ else \
145+ echo "Source files (ruby) are not editable."; \
146+ fi
147+ @if [ -w perl/$(OBJECTNAME).pl ]; \
148+ then \
149+ cd perl; sccsUnedit $(OBJECTNAME).pl ; \
150+ else \
151+ echo "Source files (ruby) are not editable."; \
152+ fi
153+ @if [ -w ../Config/OptionControlFile ]; \
154+ then \
155+ cd ../Config; sccsUnedit OptionControlFile; \
156+ else \
157+ echo "OptionControlFile are not editable."; \
158+ fi
159+
160+report:
161+ @if [ -r $(OBJECTNAME).c ]; \
162+ then \
163+ sccsReport $(OBJECTNAME).c; \
164+ else \
165+ echo "Source files are already editable"; \
166+ fi
167+ @if [ -r wish/$(OBJECTNAME).wish ]; \
168+ then \
169+ cd wish; sccsReport $(OBJECTNAME).wish; \
170+ else \
171+ echo "Source files (wish) are already editable."; \
172+ fi
173+ @if [ -r ruby/$(OBJECTNAME).rb ]; \
174+ then \
175+ cd ruby; sccsReport $(OBJECTNAME).rb; \
176+ else \
177+ echo "Source files (ruby) are already editable."; \
178+ fi
179+ @if [ -r perl/$(OBJECTNAME).pl ] ; \
180+ then \
181+ cd perl; sccsReport $(OBJECTNAME).pl ; \
182+ else \
183+ echo "Source files (perl) are already editable."; \
184+ fi
185+ @if [ -r ../Config/OptionControlFile ]; \
186+ then \
187+ cd ../Config; sccsReport OptionControlFile; \
188+ else \
189+ echo "OptionControlFile are already editable."; \
190+ fi
191+
192+clean :
193+ rm -f *.debugo $(OSTYPE)/*.debugo *.cudagdbo $(OSTYPE)/*.cudagdbo *.o $(OSTYPE)/*.o *.linkinfo $(OSTYPE)/*.linkinfo \
194+ $(OSTYPE)/$(OBJECTNAME) $(OSTYPE)/*.$(OSTYPE) \
195+ $(OSTYPE)/$(OBJECTNAME).debug $(OSTYPE)/*.$(OSTYPE).debug \
196+ $(OSTYPE)/$(OBJECTNAME).cudagdb $(OSTYPE)/*.$(OSTYPE).cudagdb \
197+ $(OSTYPE)/$(OBJECTNAME).linkinfo $(OSTYPE)/*.$(OSTYPE).linkinfo \
198+ *.bak *.$(OSTYPE) core
199+
200+install: install-bin install-doc install-wish install-ruby install-shell install-perl
201+ @if [ dummy$(KHOROS_KENGOBJ) != dummy ] ; \
202+ then \
203+ if [ -x $(KHOROS_KGENOBJ) ] ; \
204+ then \
205+ make install-khoros ; \
206+ fi; \
207+ fi
208+
209+install-bin:$(DSTDIR)/$(OSTYPE)/$(OBJECTNAME)
210+
211+$(DSTDIR)/$(OSTYPE)/$(OBJECTNAME):$(OSTYPE)/$(OBJECTNAME) $(DSTDIR)/$(OBJECTNAME)
212+ @echo ---- Installing to bin
213+ @echo $(DSTDIR)/$(OSTYPE)/$(OBJECTNAME)
214+ @if [ ! -d $(DSTDIR)/$(OSTYPE) ]; \
215+ then \
216+ mkdir $(DSTDIR)/$(OSTYPE); \
217+ fi
218+ @if [ -x $(OSTYPE)/$(OBJECTNAME) ]; \
219+ then \
220+ echo "Compilation is complete"; \
221+ $(RM) -f $(DSTDIR)/$(OSTYPE)/$(OBJECTNAME); \
222+ $(CD) $(OSTYPE); $(INSTALL) -m 555 $(OBJECTNAME) ../$(DSTDIR)/$(OSTYPE); \
223+ $(CHMOD) 555 ../$(DSTDIR)/$(OSTYPE)/$(OBJECTNAME); \
224+ else \
225+ echo "Compilation is incomplete. $(OBJECTNAME)"; \
226+ fi
227+ @echo ---- end of bin
228+
229+install-wish:
230+ @if [ -d wish ]; \
231+ then \
232+ echo "---- Tcl/Tk file Install"; \
233+ if [ ! -d $(DSTDIR)/wish/$(OBJECTNAME) ]; \
234+ then \
235+ mkdir $(DSTDIR)/wish/$(OBJECTNAME) ; \
236+ fi ; \
237+ $(CP) -f wish/* $(DSTDIR)/wish/$(OBJECTNAME); \
238+ $(CHMOD) 555 $(DSTDIR)/wish/$(OBJECTNAME)/* ;\
239+ touch $(DSTDIR)/wish/$(OBJECTNAME)/tclIndex;\
240+ $(CHMOD) 666 $(DSTDIR)/wish/$(OBJECTNAME)/tclIndex;\
241+ echo "---- Tcl/Tk file Installed";\
242+ fi
243+
244+install-ruby:
245+ @if [ -d ruby ]; \
246+ then \
247+ echo "---- Ruby/Tk file Install"; \
248+ if [ ! -d $(DSTDIR)/ruby/$(OBJECTNAME) ]; \
249+ then \
250+ mkdir $(DSTDIR)/ruby/$(OBJECTNAME) ; \
251+ fi ; \
252+ $(CP) -f ruby/* $(DSTDIR)/ruby/$(OBJECTNAME); \
253+ $(CHMOD) 555 $(DSTDIR)/ruby/$(OBJECTNAME)/* ; \
254+ echo "---- Ruby/Tk file Installed"; \
255+ fi
256+
257+install-perl:
258+ @if [ -d perl ]; \
259+ then \
260+ echo "---- Perl/Tk file Install"; \
261+ if [ ! -d $(DSTDIR)/perl/$(OBJECTNAME) ]; \
262+ then \
263+ mkdir $(DSTDIR)/perl/$(OBJECTNAME) ; \
264+ fi; \
265+ $(CP) -f perl/* $(DSTDIR)/perl/$(OBJECTNAME); \
266+ $(CHMOD) 555 $(DSTDIR)/perl/$(OBJECTNAME)/* ; \
267+ echo "---- Perl/Tk file Installed"; \
268+ fi
269+
270+install-shell:
271+ @if [ ! -d $(DSTDIR)/shell/$(OBJECTNAME) ]; \
272+ then \
273+ mkdir $(DSTDIR)/shell/$(OBJECTNAME) ; \
274+ fi
275+ @if [ -d shell ]; \
276+ then \
277+ echo "---- Shell file Install"; \
278+ if [ ! -d $(DSTDIR)/shell/$(OBJECTNAME) ]; \
279+ then \
280+ mkdir $(DSTDIR)/shell/$(OBJECTNAME) ; \
281+ fi ; \
282+ $(CP) -f shell/* $(DSTDIR)/shell/$(OBJECTNAME); \
283+ $(CHMOD) 555 $(DSTDIR)/shell/$(OBJECTNAME)/*; \
284+ echo "---- Shell file Installed"; \
285+ fi
286+
287+install-khoros:
288+ @echo Installing to khoros
289+ @if [ ! -d ../../../../../objects/script/$(OBJECTNAME) -a -f $(KHOROS_KGENOBJ) ]; \
290+ then \
291+ echo kgenobj;\
292+ $(KHOROS_KGENOBJ) -tb Eos -oname $(OBJECTNAME) -type script -pane -cantata true -cat Eos -subcat $(CLASSNAME) -description $(OBJECTNAME) -bname $(OBJECTNAME) -form -lang ksh ; \
293+ fi
294+ @if [ ! -d ../../../../../objects/script/$(OBJECTNAME) -a -f $(KHOROS_KSET) ]; \
295+ then \
296+ $(KHOROS_KSET) -tb Eos -oname $(OBJECTNAME) -icon $(OBJECTNAME) ; \
297+ fi
298+ @if [ -d ../../../../../objects/script/$(OBJECTNAME) -a -f $(KHOROS_KSET) ]; \
299+ then \
300+ $(CHMOD) -R 775 ../../../../../objects/script/$(OBJECTNAME) ; \
301+ if [ $? ] ; \
302+ then \
303+ echo "-- setting khoros ---" ; \
304+ if [ -d ../../../../../objects/script/$(OBJECTNAME)/uis/ ] ; \
305+ then \
306+ $(CD) ../../../../../objects/script/$(OBJECTNAME)/uis/ ; \
307+ $(RM) -f $(OBJECTNAME).pane ; \
308+ $(LN) -s ../../../../src/Tools/$(CLASSNAME)/$(OBJECTNAME)/src/$(OBJECTNAME).pane $(OBJECTNAME).pane; \
309+ $(CD) ../../ ; \
310+ $(CHMOD) -R 555 $(OBJECTNAME); \
311+ else \
312+ echo "../../../../../objects/script/$(OBJECTNAME)/uis/ does not exist."; \
313+ fi ; \
314+ else \
315+ echo "Failed !!: Cannot chage mode in installing $(OBJECTNAME) to khoros system"; \
316+ fi ; \
317+ echo "-- end of khoros-installing"; \
318+ fi
319+
320+install-doc: html
321+ @if [ ! -d $(DSTDOC)/SmallTools ]; \
322+ then \
323+ mkdir $(DSTDOC)/SmallTools ;\
324+ fi
325+ @if [ -f $(DSTDOC)/SmallTools/$(OBJECTNAME).html ]; \
326+ then \
327+ $(RM) -f $(DSTDOC)/SmallTools/$(OBJECTNAME).html ;\
328+ fi
329+ @$(CP) $(OBJECTNAME).html $(DSTDOC)/SmallTools/$(OBJECTNAME).html
330+ @$(CHMOD) 444 $(DSTDOC)/SmallTools/$(OBJECTNAME).html
331+ @if [ -f ../doc/*.html ]; \
332+ then \
333+ $(CP) ../doc/*.html $(DSTDOC)/SmallTools/ ;\
334+ fi
335+ @$(CHMOD) 444 $(DSTDOC)/SmallTools/$(OBJECTNAME).html
336+ @if [ -f $(DSTDOC)/SmallTools/Makefile ]; \
337+ then \
338+ cd $(DSTDOC)/SmallTools; $(MAKE); \
339+ fi
340+
341+html: $(OBJECTNAME).html
342+
343+configFileRead:
344+ @ctrl2configFileRead $(CLASSNAME) $(OBJECTNAME) ../Config/OptionControlFile
345+
346+$(OBJECTNAME).html: $(OSTYPE)/$(OBJECTNAME)
347+ @echo creating html
348+ @$(OSTYPE)/$(OBJECTNAME) -html 2> $(OBJECTNAME).html.tmp
349+ @sed -e s/$(OSTYPE)\\/// $(OBJECTNAME).html.tmp > $(OBJECTNAME).html
350+ @$(RM) $(OBJECTNAME).html.tmp
351+
352+$(DSTDIR)/$(OBJECTNAME): $(OSTYPE)/$(OBJECTNAME)
353+ @ln -s -f ../sbin/MachineIndependent $@
354+
355+depend::
356+ @echo dependency checking now
357+ @if [ ! -L $(OSTYPE) ] ; then \
358+ moveHostdependent; \
359+ fi
360+ rm -f $(OSTYPE)/.Depend
361+ #echo C
362+ @if [ -f $(OBJECTNAME).c ] ; \
363+ then \
364+ echo "dependency: *.c"; \
365+ echo $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) *.c ; \
366+ $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) *.c >> $(OSTYPE)/.Depend ; \
367+ fi
368+ #echo CC
369+ @if [ -f $(OBJECTNAME).cc ] ; \
370+ then \
371+ echo "dependency: *.cc"; \
372+ echo $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.cc ; \
373+ $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.cc >> $(OSTYPE)/.Depend ; \
374+ fi
375+ @if [ -f $(OBJECTNAME).ccm ] ; \
376+ then \
377+ echo "dependency: *.ccm"; \
378+ echo $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.ccm ; \
379+ $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.ccm >> $(OSTYPE)/.Depend ; \
380+ fi
381+ @if [ -f $(OBJECTNAME).cu ] ; \
382+ then \
383+ echo "dependency: *.cu"; \
384+ echo $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.cu ; \
385+ $(DEPENDCOMMAND) $(INCLUDEDIR) $(EXTRA_INC) $(EXTRA_DEFINE) $(EXTRA_CCOPTS) *.cu >> $(OSTYPE)/.Depend ; \
386+ fi
387+
388+update:../Config/OptionControlFile
389+ maketool $(CLASSNAME) $(OBJECTNAME) update
390+
391+changeName::
392+
393+Test:$(OSTYPE)/$(OBJECTNAME) TestDir
394+ @if [ -f test/Makefile ] ; \
395+ then \
396+ cd test; make ; \
397+ else \
398+ echo "No test Makefile"; \
399+ fi
400+
401+TestDir::
402+ @if [ ! -d test ] ; \
403+ then \
404+ echo "Creating test dir"; \
405+ mkdir test; \
406+ fi
407+ @if [ ! -f test/Makefile ] ; \
408+ then \
409+ echo "Creating Makefile"; \
410+ cd test; \
411+ protoTestMakefileCreate; \
412+ fi
413+ @if [ ! -d test/data ]; \
414+ then \
415+ mkdir $(EOSHOME)/data/$(OBJECTNAME); \
416+ cd test; \
417+ ln -sf ../$(EOSHOME)/data/$(OBJECTNAME) data; \
418+ fi
419+
420+tar::
421+ cd $(DSTTAR); tar cvf Tools.$(CLASSNAME).$(OBJECTNAME).tar ../bin/$(OBJECTNAME) \
422+ ../bin/*/$(OBJECTNAME).* \
423+ ../src/Tools/$(CLASSNAME)/$(OBJECTNAME) \
424+ ; gzip Tools.$(CLASSNAME).$(OBJECTNAME).tar
425+
426+-include $(OSTYPE)/.Depend
427+-include ../Config/Target.inc
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/X86MAC64
@@ -0,0 +1 @@
1+../../../../../hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageAutoTriming/src/X86MAC64
\ No newline at end of file
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/argCheck.c
@@ -0,0 +1,180 @@
1+#include <stdio.h>
2+#include <stdlib.h>
3+#include <string.h>
4+#include <math.h>
5+#include "../inc/config.h"
6+#include "genUtil.h"
7+#include "String.h"
8+#include "File.h"
9+#include "Memory.h"
10+
11+
12+void
13+argCheck(mrcImageAutoTrimingInfo* info, int argc, char* argv[])
14+{
15+ long i;
16+ char s[1024];
17+ FILE* fpt;
18+
19+ if(NULL==(fpt=fopen(".EosLog", "a+"))) {
20+
21+ } else {
22+ for(i=0; i<argc; i++) {
23+ fprintf(fpt, "%s ", argv[i]);
24+ }
25+ fprintf(fpt, "\n");
26+ fclose(fpt);
27+ }
28+ for(i=1; i<argc; i++) {
29+ if(OPTION_FLAG==argv[i][OPTION_FLAG_POS]) {
30+ SSWITCH(argv[i]+OPTION_POS)
31+ SCASE("i") {
32+ if(i+1<argc) {
33+ info->In = stringGetNthWord(argv[i+1], 1, " ,");
34+ i++;
35+ info->flagIn++;
36+ } else {
37+ usage(argv[0]);
38+ exit(EXIT_FAILURE);
39+ }
40+ SBREAK;
41+ }
42+ SCASE("o") {
43+ if(i+1<argc) {
44+ info->Out = stringGetNthWord(argv[i+1], 1, " ,");
45+ i++;
46+ info->flagOut++;
47+ } else {
48+ usage(argv[0]);
49+ exit(EXIT_FAILURE);
50+ }
51+ SBREAK;
52+ }
53+ SCASE("O") {
54+ if(i+1<argc) {
55+ info->OutParam = stringGetNthWord(argv[i+1], 1, " ,");
56+ i++;
57+ info->flagOutParam++;
58+ } else {
59+ usage(argv[0]);
60+ exit(EXIT_FAILURE);
61+ }
62+ SBREAK;
63+ }
64+ SCASE("EAMode") {
65+ if(i+1<argc) {
66+ info->EAMode = stringGetNthWord(argv[i+1], 1, " ,");
67+ i++;
68+ info->flagEAMode++;
69+ } else {
70+ usage(argv[0]);
71+ exit(EXIT_FAILURE);
72+ }
73+ SBREAK;
74+ }
75+ SCASE("Rot1") {
76+ if(i+3<argc) {
77+ info->Rot1Min = stringGetNthRealData(argv[i+1], 1, " ,");
78+ i++;
79+ info->flagRot1Min++;
80+ info->Rot1Max = stringGetNthRealData(argv[i+1], 1, " ,");
81+ i++;
82+ info->flagRot1Max++;
83+ info->Rot1Delta = stringGetNthRealData(argv[i+1], 1, " ,");
84+ i++;
85+ info->flagRot1Delta++;
86+ } else {
87+ usage(argv[0]);
88+ exit(EXIT_FAILURE);
89+ }
90+ SBREAK;
91+ }
92+ SCASE("Rot2") {
93+ if(i+3<argc) {
94+ info->Rot2Min = stringGetNthRealData(argv[i+1], 1, " ,");
95+ i++;
96+ info->flagRot2Min++;
97+ info->Rot2Max = stringGetNthRealData(argv[i+1], 1, " ,");
98+ i++;
99+ info->flagRot2Max++;
100+ info->Rot2Delta = stringGetNthRealData(argv[i+1], 1, " ,");
101+ i++;
102+ info->flagRot2Delta++;
103+ } else {
104+ usage(argv[0]);
105+ exit(EXIT_FAILURE);
106+ }
107+ SBREAK;
108+ }
109+ SCASE("Rot3") {
110+ if(i+3<argc) {
111+ info->Rot3Min = stringGetNthRealData(argv[i+1], 1, " ,");
112+ i++;
113+ info->flagRot3Min++;
114+ info->Rot3Max = stringGetNthRealData(argv[i+1], 1, " ,");
115+ i++;
116+ info->flagRot3Max++;
117+ info->Rot3Delta = stringGetNthRealData(argv[i+1], 1, " ,");
118+ i++;
119+ info->flagRot3Delta++;
120+ } else {
121+ usage(argv[0]);
122+ exit(EXIT_FAILURE);
123+ }
124+ SBREAK;
125+ }
126+ SCASE("M") {
127+ if(i+1<argc) {
128+ info->InterpolationMode = stringGetNthIntegerData(argv[i+1], 1, " ,");
129+ i++;
130+ info->flagInterpolationMode++;
131+ } else {
132+ usage(argv[0]);
133+ exit(EXIT_FAILURE);
134+ }
135+ SBREAK;
136+ }
137+ SCASE("c") {
138+ if(i+1<argc) {
139+ info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
140+ i++;
141+ info->flagconfigFile++;
142+ } else {
143+ usage(argv[0]);
144+ exit(EXIT_FAILURE);
145+ }
146+ SBREAK;
147+ }
148+ SCASE("m") {
149+ if(i+1<argc) {
150+ info->mode = stringGetNthIntegerData(argv[i+1], 1, " ,");
151+ i++;
152+ info->flagmode++;
153+ } else {
154+ usage(argv[0]);
155+ exit(EXIT_FAILURE);
156+ }
157+ SBREAK;
158+ }
159+ SCASE("h") {
160+ usage(argv[0]);
161+ exit(EXIT_SUCCESS);
162+ break;
163+ }
164+ SCASE("html") {
165+ htmlBeforeUsage(argv[0]);
166+ usage(argv[0]);
167+ htmlAfterUsage(argv[0]);
168+ exit(EXIT_SUCCESS);
169+ break;
170+ }
171+ SDEFAULT {
172+ fprintf(stderr, "Not Supported Options: :%s\n", argv[i]);
173+ usage(argv[0]);
174+ exit(EXIT_FAILURE);
175+ break;
176+ }
177+ SSWITCHEND;
178+ }
179+ }
180+}
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/init.c
@@ -0,0 +1,140 @@
1+#include <stdio.h>
2+#include <stdlib.h>
3+#include <string.h>
4+#include <math.h>
5+#include "../inc/config.h"
6+#include "genUtil.h"
7+#include "String.h"
8+#include "File.h"
9+#include "Memory.h"
10+
11+
12+void
13+init0(mrcImageAutoTrimingInfo* info)
14+{
15+ info->fptIn = NULL; info->flagIn = 0;
16+ info->fptOut = NULL; info->flagOut = 0;
17+ info->fptOutParam = stdout; info->flagOutParam = 0;
18+ info->EAMode = stringGetNthWord("ZONS", 1, "\0"); info->flagEAMode = 0;
19+ info->Rot1Min = -5; info->flagRot1Min = 0;
20+ info->Rot1Max = 5; info->flagRot1Max = 0;
21+ info->Rot1Delta = 1; info->flagRot1Delta = 0;
22+ info->Rot2Min = -5; info->flagRot2Min = 0;
23+ info->Rot2Max = 5; info->flagRot2Max = 0;
24+ info->Rot2Delta = 1; info->flagRot2Delta = 0;
25+ info->Rot3Min = -5; info->flagRot3Min = 0;
26+ info->Rot3Max = 5; info->flagRot3Max = 0;
27+ info->Rot3Delta = 1; info->flagRot3Delta = 0;
28+ info->InterpolationMode = 0; info->flagInterpolationMode = 0;
29+ info->fptconfigFile = NULL; info->flagconfigFile = 0;
30+ info->mode = 0; info->flagmode = 0;
31+}
32+
33+void
34+init1(mrcImageAutoTrimingInfo* info)
35+{
36+ char s[1024];
37+ int i;
38+ if(!info->flagIn) {
39+ stringGetFromFile(s, "In", stdin, stdout, 0);
40+ info->In = stringGetNthWord(s, 1, " ,\t");
41+ info->flagIn++;
42+ }
43+ if(info->flagIn) {
44+ info->fptIn = fileOpen(info->In, "r");
45+ }
46+
47+ if(!info->flagOut) {
48+ stringGetFromFile(s, "Out", stdin, stdout, 0);
49+ info->Out = stringGetNthWord(s, 1, " ,\t");
50+ info->flagOut++;
51+ }
52+ if(info->flagOut) {
53+ info->fptOut = fileOpen(info->Out, "w");
54+ }
55+
56+ if(info->flagOutParam) {
57+ info->fptOutParam = fileOpen(info->OutParam, "w");
58+ }
59+
60+ if(info->flagEAMode) {
61+ }
62+
63+ if(info->flagRot1Min) {
64+ }
65+
66+ if(info->flagRot1Max) {
67+ }
68+
69+ if(info->flagRot1Delta) {
70+ }
71+
72+ if(info->flagRot2Min) {
73+ }
74+
75+ if(info->flagRot2Max) {
76+ }
77+
78+ if(info->flagRot2Delta) {
79+ }
80+
81+ if(info->flagRot3Min) {
82+ }
83+
84+ if(info->flagRot3Max) {
85+ }
86+
87+ if(info->flagRot3Delta) {
88+ }
89+
90+ if(info->flagInterpolationMode) {
91+ }
92+
93+ if(info->flagconfigFile) {
94+ info->fptconfigFile = fileOpen(info->configFile, "r");
95+ }
96+
97+ if(info->flagmode) {
98+ }
99+
100+}
101+#ifdef KHOROS
102+#include <stdio.h>
103+#include "bootstrap.h"
104+#include "dataserv.h"
105+#include "datamanip.h"
106+extern void func_usage_additions(void);
107+extern void func_free_args(kexit_status status, kaddr client_data);
108+extern void func_get_args(kform* pane);
109+
110+void
111+func_usage_additions(void)
112+{
113+}
114+void
115+func_free_args(kexit_status status, kaddr client_data)
116+{
117+}
118+void
119+func_get_args(kform* pane)
120+{
121+}
122+void
123+khorosInit(int argc, char* argv[])
124+{
125+ char* eospath;
126+ char panepath[1024];
127+ FILE* fpt;
128+
129+ eospath = getenv("EOS_HOME");
130+ sprintf(panepath, "%s/src/Tools/mrcImage/mrcImageAutoTriming/src/mrcImageAutoTriming.pane", eospath);
131+ khoros_initialize(argc, argv, "EOS");
132+ fpt = fopen(panepath, "r"); if(NULL!=fpt) {
133+ fclose(fpt);
134+ kclui_initialize(panepath, KGEN_NONE, "EOS", "mrcImageAutoTriming",
135+ func_usage_additions,
136+ func_get_args,
137+ func_free_args);
138+ }
139+}
140+#endif /* KHOROS */
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/mrcImageAutoTriming.c
@@ -0,0 +1,219 @@
1+/*
2+# mrcImageAutoTriming : $Revision$
3+# $Date$
4+# Created by $Author$
5+# Usage : mrcImageAutoTriming
6+# Attention
7+# $Loccker$
8+# $State$
9+#
10+*/
11+#include <stdio.h>
12+#include <stdlib.h>
13+#include <string.h>
14+#include <math.h>
15+#define GLOBAL_DECLARATION
16+#include "../inc/config.h"
17+
18+#define DEBUG
19+#include "genUtil.h"
20+#include "Matrix3D.h"
21+#include "mrcImage.h"
22+
23+typedef struct lmrcImageAutoTrimingInfo {
24+ // Control
25+ EulerAngleInfo min;
26+ EulerAngleInfo max;
27+ EulerAngleInfo delta;
28+ int InterpolationMode;
29+
30+ // Temp
31+ EulerAngleInfo cur;
32+
33+ // Final
34+ EulerAngleInfo best;
35+ mrcImageParaTypeReal bestThickness;
36+ mrcImageParaTypeReal bestThicknessBottom;
37+ mrcImageParaTypeReal bestThicknessTop;
38+
39+} lmrcImageAutoTrimingInfo;
40+
41+typedef enum lmrcImageAutoTrimingMode {
42+ lmrcImageAutoTrimingModeZLayerMinCut=0,
43+ lmrcImageAutoTrimingModeZLayerSDCut=1
44+} lmrcImageAutoTrimingMode;
45+
46+extern char* stpncpy(char *restrict dst, const char *restrict src, size_t n);
47+extern void lmrcImageAutoTriming(mrcImage* out, mrcImage* in, lmrcImageAutoTrimingInfo* linfo, int mode);
48+extern void lmrcImageAutoTrimingOutput(FILE* fpt, lmrcImageAutoTrimingInfo* linfo, int mode);
49+extern void lmrcImageAutoTrimingUsage(FILE* fpt);
50+
51+int
52+main(int argc, char* argv[])
53+{
54+ mrcImageAutoTrimingInfo info;
55+ lmrcImageAutoTrimingInfo linfo;
56+ mrcImage in;
57+ mrcImage out;
58+
59+ init0(&info);
60+ argCheck(&info, argc, argv);
61+ init1(&info);
62+
63+ DEBUGPRINT("Program Start\n");
64+ strncpy(linfo.cur.EAMode, info.EAMode, 4);
65+ strncpy(linfo.min.EAMode, info.EAMode, 4);
66+ strncpy(linfo.max.EAMode, info.EAMode, 4);
67+ strncpy(linfo.delta.EAMode, info.EAMode, 4);
68+ linfo.min.Rot1 = info.Rot1Min*RADIAN;
69+ linfo.min.Rot2 = info.Rot2Min*RADIAN;
70+ linfo.min.Rot3 = info.Rot3Min*RADIAN;
71+ linfo.max.Rot1 = info.Rot1Max*RADIAN;
72+ linfo.max.Rot2 = info.Rot2Max*RADIAN;
73+ linfo.max.Rot3 = info.Rot3Max*RADIAN;
74+ linfo.delta.Rot1 = info.Rot1Delta*RADIAN;
75+ linfo.delta.Rot2 = info.Rot2Delta*RADIAN;
76+ linfo.delta.Rot3 = info.Rot3Delta*RADIAN;
77+ linfo.InterpolationMode = info.InterpolationMode;
78+
79+ mrcFileRead(&in, info.In, "in main", 0);
80+
81+ lmrcImageAutoTriming(&out, &in, &linfo, info.mode);
82+
83+ lmrcImageAutoTrimingOutput(info.fptOutParam, &linfo, info.mode);
84+
85+ mrcFileWrite(&out, info.Out, "in main", 0);
86+
87+ exit(EXIT_SUCCESS);
88+}
89+
90+void
91+additionalUsage()
92+{
93+ fprintf(stderr, "----- Additional Usage -----\n");
94+ lmrcImageAutoTrimingUsage(stderr);
95+}
96+
97+void
98+lmrcImageAutoTriming(mrcImage* out, mrcImage* in, lmrcImageAutoTrimingInfo* linfo, int mode)
99+{
100+ Matrix3D mat;
101+ mrcImage tmp;
102+ mrcImageParaTypeInteger ix, iy, iz, k, kz, ky, kx0;
103+ double data;
104+
105+ int flagBottom, izBottom;
106+ int flagTop, izTop;
107+ int thickness;
108+ double minSD;
109+ mrcImageParaTypeRealCoord to;
110+
111+ linfo->bestThickness = in->HeaderN.z;
112+ for(linfo->cur.Rot1=linfo->min.Rot1; linfo->cur.Rot1<=linfo->max.Rot1; linfo->cur.Rot1+=linfo->delta.Rot1) {
113+ for(linfo->cur.Rot2=linfo->min.Rot2; linfo->cur.Rot2<=linfo->max.Rot2; linfo->cur.Rot2+=linfo->delta.Rot2) {
114+ for(linfo->cur.Rot3=linfo->min.Rot3; linfo->cur.Rot3<=linfo->max.Rot3; linfo->cur.Rot3+=linfo->delta.Rot3) {
115+ lmrcImageRotation3DFollowingEulerAngle(&tmp, in, linfo->cur.EAMode, linfo->cur.Rot1, linfo->cur.Rot2, linfo->cur.Rot3, linfo->InterpolationMode, 0);
116+
117+ switch(mode) {
118+ case lmrcImageAutoTrimingModeZLayerMinCut: {
119+ flagBottom = 0;
120+ flagTop = 0;
121+ izBottom = 0;
122+ izTop = in->HeaderN.z - 1;
123+ for(iz=0; iz<in->HeaderN.z; iz++) {
124+ kz = iz*in->HeaderN.x*in->HeaderN.y;
125+ for(iy=0; iy<in->HeaderN.y; iy++) {
126+ ky = iy*in->HeaderN.x;
127+ kx0 = ky + kz;
128+ for(ix=0; ix<in->HeaderN.x; ix++) {
129+ k = ix + kx0;
130+
131+ data = tmp.ImageFloatImage[k];
132+ if(0<data) {
133+ flagBottom = 1;
134+ izBottom = iz;
135+ }
136+ if(flagBottom) break;
137+ }
138+ if(flagBottom) break;
139+ }
140+ if(flagBottom) break;
141+ }
142+
143+ for(iz=in->HeaderN.z-1; 0<=iz; iz--) {
144+ kz = iz*in->HeaderN.x*in->HeaderN.y;
145+ for(iy=0; iy<in->HeaderN.y; iy++) {
146+ ky = iy*in->HeaderN.x;
147+ kx0 = ky + kz;
148+ for(ix=0; ix<in->HeaderN.x; ix++) {
149+ k = ix + kx0;
150+
151+ data = tmp.ImageFloatImage[k];
152+ if(0<data) {
153+ flagTop = 1;
154+ izTop = iz;
155+ }
156+ if(flagTop) break;
157+ }
158+ if(flagTop) break;
159+ }
160+ if(flagTop) break;
161+ }
162+ thickness = izTop - izBottom + 1;
163+ if(thickness < linfo->bestThickness) {
164+ linfo->bestThickness = thickness;
165+ linfo->bestThicknessTop = izTop;
166+ linfo->bestThicknessBottom = izBottom;
167+ strncpy(linfo->best.EAMode, linfo->cur.EAMode, 4);
168+ linfo->best.Rot1 = linfo->cur.Rot1;
169+ linfo->best.Rot2 = linfo->cur.Rot2;
170+ linfo->best.Rot3 = linfo->cur.Rot3;
171+ }
172+ break;
173+ }
174+ case lmrcImageAutoTrimingModeZLayerSDCut: {
175+ minSD = in->HeaderN.z;
176+
177+ break;
178+ }
179+ default: {
180+ fprintf(stderr, "Not supported mode: %d\n", mode);
181+ break;
182+ }
183+ }
184+ mrcImageFree(&tmp, 0);
185+ }
186+ }
187+ }
188+ lmrcImageRotation3DFollowingEulerAngle(&tmp, in, linfo->best.EAMode, linfo->best.Rot1, linfo->best.Rot2, linfo->best.Rot3, linfo->InterpolationMode, 0);
189+ out->Header = tmp.Header;
190+ out->HeaderN.z = linfo->bestThickness;
191+ out->HeaderStartN.z = -out->HeaderN.z/2;
192+ mrcInit(out, NULL);
193+ to.x = to.y = 0;
194+ to.z = -linfo->bestThicknessBottom;
195+ DEBUGPRINT1("to.z: %f\n", to.z);
196+ lmrcImageCopy(out, &tmp, to);
197+}
198+
199+void
200+lmrcImageAutoTrimingOutput(FILE* fpt, lmrcImageAutoTrimingInfo* linfo, int mode)
201+{
202+ switch(mode) {
203+ case lmrcImageAutoTrimingModeZLayerMinCut:
204+ case lmrcImageAutoTrimingModeZLayerSDCut: {
205+ fprintf(fpt, "BestRotation: %4s %15.6g %15.6g %15.6g\n", linfo->best.EAMode, linfo->best.Rot1*DEGREE, linfo->best.Rot2*DEGREE, linfo->best.Rot3*DEGREE);
206+ fprintf(fpt, "Z-Thickness: %15.6g %15.6g %15.6g\n", linfo->bestThickness, linfo->bestThicknessBottom, linfo->bestThicknessTop);
207+ break;
208+ }
209+ }
210+}
211+
212+void
213+lmrcImageAutoTrimingUsage(FILE* fpt)
214+{
215+ fprintf(fpt, ">>> mode\n");
216+ fprintf(fpt, "%d: z-layer(minimum of z-axis by min)\n", lmrcImageAutoTrimingModeZLayerMinCut);
217+ fprintf(fpt, "%d: z-layer(minimum of z-axis by SD)\n", lmrcImageAutoTrimingModeZLayerSDCut);
218+}
219+
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/mrcImageAutoTriming.html
@@ -0,0 +1,33 @@
1+<HTML>
2+<HEAD>
3+<TITLE>mrcImageAutoTriming</TITLE>
4+</HEAD>
5+<BODY>
6+<H1>mrcImageAutoTriming</H1>
7+<H2>Usage</H2>
8+<PRE>
9+Usage: mrcImageAutoTriming
10+Options:
11+ [-i[nput] In (NULL ).as(inFile::mrcImage ) ] :Essential :Input:mrcImage
12+ [-o[utput] Out (NULL ).as(outFile::mrcImage ) ] :Essential :Output:mrcImage
13+ [-O[utput] OutParam (stdout ).as(outFile::YAML ) ] :Optional :OutputParams:YAML
14+ [-E[uler]A[ngle]Mode EAMode (ZONS ).as(String ) ] :Optional :EulerAngle
15+ [-Rot[ation]1 Rot1Min (-5 ).as(Real )
16+ Rot1Max (5 ).as(Real )
17+ Rot1Delta (1 ).as(Real ) ] :Optional :Rot1
18+ [-Rot[ation]2 Rot2Min (-5 ).as(Real )
19+ Rot2Max (5 ).as(Real )
20+ Rot2Delta (1 ).as(Real ) ] :Optional :Rot2
21+ [-Rot[ation]3 Rot3Min (-5 ).as(Real )
22+ Rot3Max (5 ).as(Real )
23+ Rot3Delta (1 ).as(Real ) ] :Optional :Rot3
24+ [-M[ode] InterpolationMode (0 ).as(Integer ) ] :Optional :Iterpolation Mode
25+ [-c[onfig] configFile (NULL ).as(inFile ) ] :Optional :ConfigurationFile
26+ [-m[ode] mode (0 ).as(Integer ) ] :Optional :Mode
27+----- Additional Usage -----
28+>>> mode
29+0: z-layer(minimum of z-axis by min)
30+1: z-layer(minimum of z-axis by SD)
31+</PRE>
32+</BODY>
33+</HTML>
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/mrcImageAutoTriming.pane
@@ -0,0 +1,22 @@
1+-F 4.3 1 0 52x1+0+0 +0+0 'Cantata' cantata
2+ -M 1 1 52x1+0+0 +1+0 ' ' subform
3+ -P 1 0 52x1+0+1 +0+0 ' ' mrcImageAutoTriming
4+ -D 1 0 9x1+0+0 'Options' _gui_options
5+ -H 1 6x1+0+0 'License' 'license' $BOOTSTRAP/repos/license/License license
6+ -E
7+ -R 1 0 1 5x1+35+0 'Run' 'execute operation' $EOS/bin/mrcImageAutoTriming
8+ -H 1 5x1+41+0 'Help' 'help page' $EOS/src/Tools/mrcImage/mrcImageAutoTriming/doc/mrcImageAutoTriming.doc help
9+ -Q 1 0 5.25x1+47+0 'Close'
10+ -I 1 0 1 1 0 1 -1x1+1+1.500000 ' ' 'In' 'Input:mrcImage' i
11+ -O 1 0 1 1 0 1 -1x1+1+3.000000 ' ' 'Out' 'Output:mrcImage' o
12+ -O 1 0 1 0 0 1 -1x1+1+4.500000 ' ' 'OutParam' 'OutputParams:YAML' O
13+ -s 1 0 1 0 0 -1x1+1+6.000000 0 0 0 0 0 'EAMode' 'EulerAngle' EAMode
14+ -I 1 0 0 1 0 1 -1x1+1+7 ' ' '-5' 'Rot1Min' Rot1
15+ -I 1 0 0 1 0 1 -1x1+1+9 ' ' '-5' 'Rot2Min' Rot2
16+ -I 1 0 0 1 0 1 -1x1+1+10 ' ' '-5' 'Rot3Min' Rot3
17+ -i 1 0 1 0 0 -1x1+1+12.000000 0 0 0 0 0 'InterpolationMode' 'Iterpolation Mode' M
18+ -I 1 0 1 0 0 1 -1x1+1+13.500000 ' ' 'configFile' 'ConfigurationFile' c
19+ -i 1 0 1 0 0 -1x1+1+15.000000 0 0 0 0 0 'mode' 'Mode' m
20+ -E
21+ -E
22+-E
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/test/Makefile
@@ -0,0 +1,20 @@
1+include ../../Config/Define.inc
2+include ../../../Config/Define.inc
3+include ../../../../Config/Define.inc
4+include ../../../../../Config/Define.inc
5+
6+all: help exec
7+
8+help:
9+ @echo "----- Help Message Check -----"
10+ @../$(OSTYPE)/$(OBJECTNAME) -h
11+
12+exec:
13+ @echo "----- Execution Check -----"
14+ ../$(OSTYPE)/$(OBJECTNAME) -i data/121p.bin -o data/121p.roi -O data/121p.param -m 0 -EAMode ZONS -Rot1 -10 10 1 -Rot2 0 0 1 -Rot3 0 0 1
15+ @echo "----- Calc check -----"
16+
17+init:
18+ mrcImageBinalization -i data/121p.in -o data/121p.bin -m 32
19+
20+clean:
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/test/data
@@ -0,0 +1 @@
1+../../../../../..//data/mrcImageAutoTriming
\ No newline at end of file
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/usage.c
@@ -0,0 +1,42 @@
1+#include <stdio.h>
2+#include <stdlib.h>
3+#include "../inc/config.h"
4+
5+void
6+usage(char* thisProgram)
7+{
8+ fprintf(stderr, "Usage: %s\n", thisProgram);
9+ fprintf(stderr, "Options:\n");
10+ fprintf(stderr, " [-i[nput] In (NULL ).as(inFile::mrcImage ) ] :Essential :Input:mrcImage\n");
11+ fprintf(stderr, " [-o[utput] Out (NULL ).as(outFile::mrcImage ) ] :Essential :Output:mrcImage\n");
12+ fprintf(stderr, " [-O[utput] OutParam (stdout ).as(outFile::YAML ) ] :Optional :OutputParams:YAML\n");
13+ fprintf(stderr, " [-E[uler]A[ngle]Mode EAMode (ZONS ).as(String ) ] :Optional :EulerAngle\n");
14+ fprintf(stderr, " [-Rot[ation]1 Rot1Min (-5 ).as(Real ) \n Rot1Max (5 ).as(Real ) \n Rot1Delta (1 ).as(Real ) ] :Optional :Rot1\n");
15+ fprintf(stderr, " [-Rot[ation]2 Rot2Min (-5 ).as(Real ) \n Rot2Max (5 ).as(Real ) \n Rot2Delta (1 ).as(Real ) ] :Optional :Rot2\n");
16+ fprintf(stderr, " [-Rot[ation]3 Rot3Min (-5 ).as(Real ) \n Rot3Max (5 ).as(Real ) \n Rot3Delta (1 ).as(Real ) ] :Optional :Rot3\n");
17+ fprintf(stderr, " [-M[ode] InterpolationMode (0 ).as(Integer ) ] :Optional :Iterpolation Mode\n");
18+ fprintf(stderr, " [-c[onfig] configFile (NULL ).as(inFile ) ] :Optional :ConfigurationFile\n");
19+ fprintf(stderr, " [-m[ode] mode (0 ).as(Integer ) ] :Optional :Mode\n");
20+ additionalUsage();
21+}
22+
23+void
24+htmlBeforeUsage(char* thisProgram)
25+{
26+ fprintf(stderr, "<HTML>\n");
27+ fprintf(stderr, "<HEAD>\n");
28+ fprintf(stderr, "<TITLE>%s</TITLE>\n", thisProgram);
29+ fprintf(stderr, "</HEAD>\n");
30+ fprintf(stderr, "<BODY>\n");
31+ fprintf(stderr, "<H1>%s</H1>\n", thisProgram);
32+ fprintf(stderr, "<H2>Usage</H2>\n");
33+ fprintf(stderr, "<PRE>\n");
34+}
35+
36+void
37+htmlAfterUsage(char* thisProgram)
38+{
39+ fprintf(stderr, "</PRE>\n");
40+ fprintf(stderr, "</BODY>\n");
41+ fprintf(stderr, "</HTML>\n");
42+}
--- /dev/null
+++ b/src/Tools/mrcImage/mrcImageAutoTriming/src/util.c
@@ -0,0 +1,4 @@
1+#include <stdio.h>
2+#include <stdlib.h>
3+#include "../inc/config.h"
4+
--- a/src/Tools/mrcImage/mrcImageInfo/src/mrcImageInfo.c
+++ b/src/Tools/mrcImage/mrcImageInfo/src/mrcImageInfo.c
@@ -54,6 +54,7 @@ additionalUsage()
5454 fprintf(stderr, " 5: mean of Sparse \n");
5555 fprintf(stderr, " 6: mean of 2DEdge\n");
5656 fprintf(stderr, " 7: RMS of all pixels \n");
57+ fprintf(stderr, " 8: sd of all axes\n");
5758 }
5859
5960 void
@@ -265,6 +266,11 @@ outputMrcImageInfo(FILE* fpt, infoDataList* dat, mrcImage* img, mrcImageInfoInfo
265266 fprintf(fpt, "RMS: %15.6g\n", dat->info.RMS);
266267 break;
267268 }
269+ case sdOfAllAxis:{
270+ fprintf(fpt, "aveOfAllAxis: %15.6g %15.6g %15.6g\n", dat->info.aveOfAllAxis.x , dat->info.aveOfAllAxis.y, dat->info.aveOfAllAxis.z);
271+ fprintf(fpt, "sdOfAllAxis: %15.6g %15.6g %15.6g\n", dat->info.sdOfAllAxis.x , dat->info.sdOfAllAxis.y, dat->info.sdOfAllAxis.z);
272+ break;
273+ }
268274 default:{
269275 fprintf(stderr, "Not supported mode :%ld", info->mode);
270276 exit(EXIT_FAILURE);
--- a/src/Tools/mrcImage/mrcImageInfo/src/mrcImageInfo.html
+++ b/src/Tools/mrcImage/mrcImageInfo/src/mrcImageInfo.html
@@ -36,6 +36,7 @@ The -I option uses -rmax or -m options
3636 5: mean of Sparse
3737 6: mean of 2DEdge
3838 7: RMS of all pixels
39+ 8: sd of all axes
3940 </PRE>
4041 </BODY>
4142 </HTML>
--- a/src/Tools/mrcImage/mrcImageInfo/src/test/Makefile
+++ b/src/Tools/mrcImage/mrcImageInfo/src/test/Makefile
@@ -12,6 +12,18 @@ help:
1212 exec:
1313 @echo "----- Execution Check -----"
1414 ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -rmax 100 -m 2
15+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -m 0
16+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -m 1
17+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -m 2
18+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -m 3
19+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -m 4
20+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -m 5
21+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -m 6
22+ ../$(OSTYPE)/$(OBJECTNAME) -i data/test.roi -I -m 7
23+ @echo "----- Calc check -----"
24+
25+exec2:
26+ ../$(OSTYPE)/$(OBJECTNAME) -i data/121p.in -I -m 8
1527 @echo "----- Calc check -----"
1628
1729 clean:
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/Config/OptionControlFile
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/Config/OptionControlFile
@@ -7,5 +7,7 @@
77 "-Owe","-O[utput]w[hite]e[dge]","Output: whiteEdge","Optional","1","1","OutWhiteEdge","outFile::mrcImage","NULL"
88 "-Obe","-O[utput]b[lack]e[dge]","Output: blackEdge","Optional","1","1","OutBlackEdge","outFile::mrcImage","NULL"
99 "-lt","-l[ine]t[hickness]","[pixel]","Optional","2","1","LineThicknessX","Real","1","2","LineThicknessY","Real","1"
10+"-lm","-l[ine]m[ode]","LineMode","Optional","1","1","LineMode","Integer","0"
11+"-ls","-l[ine]s[hape]","LineShape","Optional","1","1","LineShape","Integer","0"
1012 "-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
1113 "-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/inc/mrcImageMeanFreePathCalc.h
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/inc/mrcImageMeanFreePathCalc.h
@@ -43,6 +43,12 @@ typedef struct mrcImageMeanFreePathCalcInfo {
4343 long flagLineThicknessY;
4444 float LineThicknessY;
4545
46+ long flagLineMode;
47+ long LineMode;
48+
49+ long flagLineShape;
50+ long LineShape;
51+
4652 long flagconfigFile;
4753 char* configFile;
4854 FILE* fptconfigFile;
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/argCheck.c
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/argCheck.c
@@ -108,6 +108,28 @@ argCheck(mrcImageMeanFreePathCalcInfo* info, int argc, char* argv[])
108108 }
109109 SBREAK;
110110 }
111+ SCASE("lm") {
112+ if(i+1<argc) {
113+ info->LineMode = stringGetNthIntegerData(argv[i+1], 1, " ,");
114+ i++;
115+ info->flagLineMode++;
116+ } else {
117+ usage(argv[0]);
118+ exit(EXIT_FAILURE);
119+ }
120+ SBREAK;
121+ }
122+ SCASE("ls") {
123+ if(i+1<argc) {
124+ info->LineShape = stringGetNthIntegerData(argv[i+1], 1, " ,");
125+ i++;
126+ info->flagLineShape++;
127+ } else {
128+ usage(argv[0]);
129+ exit(EXIT_FAILURE);
130+ }
131+ SBREAK;
132+ }
111133 SCASE("c") {
112134 if(i+1<argc) {
113135 info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/init.c
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/init.c
@@ -20,6 +20,8 @@ init0(mrcImageMeanFreePathCalcInfo* info)
2020 info->fptOutBlackEdge = NULL; info->flagOutBlackEdge = 0;
2121 info->LineThicknessX = 1; info->flagLineThicknessX = 0;
2222 info->LineThicknessY = 1; info->flagLineThicknessY = 0;
23+ info->LineMode = 0; info->flagLineMode = 0;
24+ info->LineShape = 0; info->flagLineShape = 0;
2325 info->fptconfigFile = NULL; info->flagconfigFile = 0;
2426 info->mode = 0; info->flagmode = 0;
2527 }
@@ -64,6 +66,12 @@ init1(mrcImageMeanFreePathCalcInfo* info)
6466 if(info->flagLineThicknessY) {
6567 }
6668
69+ if(info->flagLineMode) {
70+ }
71+
72+ if(info->flagLineShape) {
73+ }
74+
6775 if(info->flagconfigFile) {
6876 info->fptconfigFile = fileOpen(info->configFile, "r");
6977 }
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.c
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.c
@@ -21,6 +21,17 @@
2121 #include "mrcImage.h"
2222 #include "lmrcImageMultiplying.h"
2323
24+typedef enum lmrcImageMeanFreePathCalcLineMode {
25+ lmrcImageMeanFreePathCalcLineModeAnd = 0,
26+ lmrcImageMeanFreePathCalcLineModeOr = 1,
27+ lmrcImageMeanFreePathCalcLineModeGE = 2
28+} lmrcImageMeanFreePathCalcLineMode;
29+
30+typedef enum lmrcImageMeanFreePathCalcLineShape {
31+ lmrcImageMeanFreePathCalcLineShapeRectangle=0,
32+ lmrcImageMeanFreePathCalcLineShapeDisk=1
33+} lmrcImageMeanFreePathCalcLineShape;
34+
2435 typedef struct lmrcImageMeanFreePathCalcInfo {
2536 int N;
2637 int* countWhite;
@@ -45,7 +56,13 @@ typedef struct lmrcImageMeanFreePathCalcInfo {
4556 // Control: Input
4657 mrcImageParaTypeRealCoord Length;
4758 mrcImageParaTypeRealCoord LineThickness;
59+ lmrcImageMeanFreePathCalcLineMode LineMode;
60+ lmrcImageMeanFreePathCalcLineShape LineShape;
4861
62+ // TemporalVariables
63+ mrcImageParaTypeRealCoord min;
64+ mrcImageParaTypeRealCoord max;
65+ mrcImageParaTypeRealCoord cur;
4966 } lmrcImageMeanFreePathCalcInfo;
5067
5168 typedef enum lmrcImageMeanFreePathCalcMode {
@@ -57,6 +74,7 @@ typedef enum lmrcImageMeanFreePathCalcMode {
5774 extern void lmrcImageMeanFreePathCalcPrint(FILE* fpt, lmrcImageMeanFreePathCalcInfo* linfo, lmrcImageMeanFreePathCalcMode mode);
5875 extern void lmrcImageMeanFreePathCalc(mrcImage* in, lmrcImageMeanFreePathCalcInfo* linfo, lmrcImageMeanFreePathCalcMode mode);
5976 extern void lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo* linfo, lmrcImageMeanFreePathCalcMode mode);
77+extern double lmrcImageMeanFreePathCalcBWEvaluation(mrcImage* in, lmrcImageMeanFreePathCalcInfo* linfo, lmrcImageMeanFreePathCalcMode mode);
6078
6179 extern void lmrcImageMeanFreePathCalcModePrint(FILE* fpt);
6280
@@ -80,6 +98,9 @@ main(int argc, char* argv[])
8098 linfo.LineThickness.y = info.LineThicknessY;
8199 linfo.LineThickness.z = 1;
82100
101+ linfo.LineMode = info.LineMode;
102+ linfo.LineShape = info.LineShape;
103+
83104 lmrcImageMeanFreePathCalc(&in, &linfo, info.mode);
84105
85106 lmrcImageMeanFreePathCalcPrint(info.fptOut, &linfo, info.mode);
@@ -179,8 +200,8 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
179200 int* countWhiteEdge;
180201 int x, y, z;
181202 int srcx, srcy;
182- int minx, miny;
183- int maxx, maxy;
203+ //int minx, miny;
204+ //int maxx, maxy;
184205 int flagEdge;
185206 double data;
186207 double data0;
@@ -211,25 +232,22 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
211232 linfo->N = in->HeaderN.z;
212233
213234 for(y=0; y<in->HeaderN.y; y++) {
214- miny = floor(y - linfo->LineThickness.y/2.0 + 0.5);
215- maxy = floor(y + linfo->LineThickness.y/2.0 + 0.5);
235+ linfo->min.y = floor(y - linfo->LineThickness.y/2.0 + 0.5);
236+ linfo->max.y = floor(y + linfo->LineThickness.y/2.0 + 0.5);
237+ linfo->cur.y = y;
216238 for(x=0; x<in->HeaderN.x; x++) {
217- minx = floor(x - linfo->LineThickness.x/2.0 + 0.5);
218- maxx = floor(x + linfo->LineThickness.x/2.0 + 0.5);
239+ linfo->min.x = floor(x - linfo->LineThickness.x/2.0 + 0.5);
240+ linfo->max.x = floor(x + linfo->LineThickness.x/2.0 + 0.5);
241+ linfo->cur.x = x;
219242
220243 flagEdge = 1;
221244 lengthWhite = 0;
222245 lengthBlack = 0;
223246
224247 // Start
225- data = 1;
226- for(srcy=miny; srcy<maxy; srcy++) {
227- for(srcx=minx; srcx<maxx; srcx++) {
228- mrcPixelDataGet(in, srcx, srcy, 0, &data0, mrcPixelRePart, mrcPixelHowNearest);
229- data *= data0;
230- }
231- }
232- //mrcPixelDataGet(in, x, y, 0, &data, mrcPixelRePart, mrcPixelHowNearest);
248+ linfo->cur.z = 0;
249+ data = lmrcImageMeanFreePathCalcBWEvaluation(in, linfo, mode);
250+
233251 if(0<data) {
234252 countWhiteEdge[0]++;
235253 lengthWhite++;
@@ -239,16 +257,10 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
239257 }
240258 prevData = data;
241259
242- // Interval
260+ // Intermediate
243261 for(z=1; z<in->HeaderN.z-1; z++) {
244- data = 1;
245- for(srcy=miny; srcy<maxy; srcy++) {
246- for(srcx=minx; srcx<maxx; srcx++) {
247- mrcPixelDataGet(in, srcx, srcy, z, &data0, mrcPixelRePart, mrcPixelHowNearest);
248- data *= data0;
249- }
250- }
251- //mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
262+ linfo->cur.z = z;
263+ data = lmrcImageMeanFreePathCalcBWEvaluation(in, linfo, mode);
252264
253265 if(0<prevData) {
254266 if(0<data) { // White continue
@@ -306,14 +318,8 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
306318
307319 // End
308320 z = in->HeaderN.z-1;
309- data = 1;
310- for(srcy=miny; srcy<maxy; srcy++) {
311- for(srcx=minx; srcx<maxx; srcx++) {
312- mrcPixelDataGet(in, srcx, srcy, z, &data0, mrcPixelRePart, mrcPixelHowNearest);
313- data *= data0;
314- }
315- }
316- //mrcPixelDataGet(in, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest);
321+ linfo->cur.z = z;
322+ data = lmrcImageMeanFreePathCalcBWEvaluation(in, linfo, mode);
317323
318324 if(0<prevData) {
319325 if(0<data) { // White continue
@@ -412,3 +418,41 @@ lmrcImageMeanFreePathCalcAlongZaxis(mrcImage* in, lmrcImageMeanFreePathCalcInfo*
412418 DEBUGPRINT1("mode: %d in Calc: RealLength End\n", mode);
413419 }
414420 }
421+
422+
423+double
424+lmrcImageMeanFreePathCalcBWEvaluation(mrcImage* in, lmrcImageMeanFreePathCalcInfo* linfo, lmrcImageMeanFreePathCalcMode mode)
425+{
426+ double data, data0;
427+ mrcImageParaTypeReal srcx, srcy;
428+
429+ switch(linfo->LineShape) {
430+ case lmrcImageMeanFreePathCalcLineShapeRectangle: {
431+ switch(linfo->LineMode) {
432+ case lmrcImageMeanFreePathCalcLineModeAnd: {
433+ data = 1;
434+ for(srcy=linfo->min.y; srcy<linfo->max.y; srcy++) {
435+ for(srcx=linfo->min.x; srcx<linfo->max.x; srcx++) {
436+ mrcPixelDataGet(in, srcx, srcy, linfo->cur.z, &data0, mrcPixelRePart, mrcPixelHowNearest);
437+ data *= data0;
438+ }
439+ }
440+ break;
441+ }
442+ default: {
443+ fprintf(stderr, "Not supported Line Mode: %d\n", linfo->LineMode);
444+ exit(EXIT_FAILURE);
445+ break;
446+ }
447+ }
448+ break;
449+ }
450+ default: {
451+ fprintf(stderr, "Not supported Line Shape: %d\n", linfo->LineShape);
452+ exit(EXIT_FAILURE);
453+ break;
454+ }
455+ }
456+ return data;
457+}
458+
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.html
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.html
@@ -16,6 +16,8 @@ Options:
1616 [-O[utput]b[lack]e[dge]OutBlackEdge (NULL ).as(outFile::mrcImage ) ] :Optional :Output: blackEdge
1717 [-l[ine]t[hickness] LineThicknessX (1 ).as(Real )
1818 LineThicknessY (1 ).as(Real ) ] :Optional :[pixel]
19+ [-l[ine]m[ode] LineMode (0 ).as(Integer ) ] :Optional :LineMode
20+ [-l[ine]s[hape] LineShape (0 ).as(Integer ) ] :Optional :LineShape
1921 [-c[onfig] configFile (NULL ).as(inFile ) ] :Optional :ConfigurationFile
2022 [-m[ode] mode (0 ).as(Integer ) ] :Optional :Mode
2123 ----- Additional Usage -----
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.pane
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/mrcImageMeanFreePathCalc.pane
@@ -14,8 +14,10 @@
1414 -O 1 0 1 0 0 1 -1x1+1+7.500000 ' ' 'OutWhiteEdge' 'Output: whiteEdge' Owe
1515 -O 1 0 1 0 0 1 -1x1+1+9.000000 ' ' 'OutBlackEdge' 'Output: blackEdge' Obe
1616 -I 1 0 0 1 0 1 -1x1+1+10 ' ' '1' 'LineThicknessX' [pixel]
17- -I 1 0 1 0 0 1 -1x1+1+12.000000 ' ' 'configFile' 'ConfigurationFile' c
18- -i 1 0 1 0 0 -1x1+1+13.500000 0 0 0 0 0 'mode' 'Mode' m
17+ -i 1 0 1 0 0 -1x1+1+12.000000 0 0 0 0 0 'LineMode' 'LineMode' lm
18+ -i 1 0 1 0 0 -1x1+1+13.500000 0 0 0 0 0 'LineShape' 'LineShape' ls
19+ -I 1 0 1 0 0 1 -1x1+1+15.000000 ' ' 'configFile' 'ConfigurationFile' c
20+ -i 1 0 1 0 0 -1x1+1+16.500000 0 0 0 0 0 'mode' 'Mode' m
1921 -E
2022 -E
2123 -E
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/test/Makefile
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/test/Makefile
@@ -3,7 +3,7 @@ include ../../../Config/Define.inc
33 include ../../../../Config/Define.inc
44 include ../../../../../Config/Define.inc
55
6-all: help exec
6+all: help exec exec2
77
88 help:
99 @echo "----- Help Message Check -----"
--- a/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/usage.c
+++ b/src/Tools/mrcImage/mrcImageMeanFreePathCalc/src/usage.c
@@ -14,6 +14,8 @@ usage(char* thisProgram)
1414 fprintf(stderr, " [-O[utput]w[hite]e[dge]OutWhiteEdge (NULL ).as(outFile::mrcImage ) ] :Optional :Output: whiteEdge\n");
1515 fprintf(stderr, " [-O[utput]b[lack]e[dge]OutBlackEdge (NULL ).as(outFile::mrcImage ) ] :Optional :Output: blackEdge\n");
1616 fprintf(stderr, " [-l[ine]t[hickness] LineThicknessX (1 ).as(Real ) \n LineThicknessY (1 ).as(Real ) ] :Optional :[pixel]\n");
17+ fprintf(stderr, " [-l[ine]m[ode] LineMode (0 ).as(Integer ) ] :Optional :LineMode\n");
18+ fprintf(stderr, " [-l[ine]s[hape] LineShape (0 ).as(Integer ) ] :Optional :LineShape\n");
1719 fprintf(stderr, " [-c[onfig] configFile (NULL ).as(inFile ) ] :Optional :ConfigurationFile\n");
1820 fprintf(stderr, " [-m[ode] mode (0 ).as(Integer ) ] :Optional :Mode\n");
1921 additionalUsage();
旧リポジトリブラウザで表示