mrcImage(API)
DataManip/mrcImageは、mrcImage型's imageを取り扱うための低水準APIです。
Contents
- 1 constant
- 2 struct
- 2.1 Masking
- 2.2 Coordinate
- 2.3 mrcImage's structure
- 2.4 Statistics data of Image
- 2.5 Setting file each API
- 2.5.1 lmrcImageSmoothingInfo
- 2.5.2 lmrcImageCVEInfo
- 2.5.3 lmrcImageTfunctionInfo
- 2.5.4 lmrcImageHighlightInfo
- 2.5.5 lmrcImageLowPassFilterInfo
- 2.5.6 lmrcImageHighPassFilterInfo
- 2.5.7 lmrcImageBandPassFilterInfo
- 2.5.8 mrcImageDataSet
- 2.5.9 lmrcImageMultiCTFCompensationInfo
- 2.5.10 lmrcImageCTFSNInfo
- 2.5.11 lmrcImageFourierPowerSpectrumInfo
- 3 API
- 3.1 Initialize
- 3.2 Release Image data
- 3.3 Read from file
- 3.4 Write to file
- 3.5 Copy data
- 3.6 Check Image mode
- 3.7 Getting Pixel data
- 3.8 Setting Pixel data
- 3.9 Statistics processing of Pixel data
- 3.10 Library of General image processing
- 3.11 Error Process
- 3.12 Process each command
- 3.12.1 lmrcFFTInfo
- 3.12.2 mrcImageCheckSameSize
- 3.12.3 mrcImageCheckFFT
- 3.12.4 lmrcImageSmoothing
- 3.12.5 lmrcImageCVE
- 3.12.6 lmrcImageTfunction
- 3.12.7 lmrcImageHighlighting
- 3.12.8 lmrcImageLowPassFilter
- 3.12.9 lmrcImageHighPassFilter
- 3.12.10 lmrcImageBandPassFilter
- 3.12.11 lmrcImageShrink
- 3.12.12 lmrcImageShift
- 3.12.13 mrcImagePrint
- 3.12.14 lmrcImageMultiCTFCompensation
- 3.12.15 lmrcImageCTFObservation
- 3.12.16 lmrcImageCTFCompensation
- 3.12.17 lmrcImageCTFSN
- 3.12.18 lmrcImageFourierPowerSpectrum
- 3.12.19 mrcImageSectionGet
- 3.12.20 mrcImageSectionSet
constant
Masking
typedef unsigned int mrcStatusMask; typedef unsigned int mrcStatusType;
#define mrcStatusMask_ExitFailure ((mrcStatusMask)0x80000000L) #define mrcStatusMask_Warning ((mrcStatusMask)0x40000000L) #define mrcStatusMask_Information ((mrcStatusMask)0x20000000L) #define mrcStatusMask_Message ((mrcStatusMask)0x10000000L) #define mrcStatusMask_1B ((mrcStatusMask)0x08000000L) #define mrcStatusMask_1A ((mrcStatusMask)0x04000000L) #define mrcStatusMask_19 ((mrcStatusMask)0x02000000L) #define mrcStatusMask_18 ((mrcStatusMask)0x01000000L) #define mrcStatusMask_17 ((mrcStatusMask)0x00800000L) #define mrcStatusMask_16 ((mrcStatusMask)0x00400000L) #define mrcStatusMask_15 ((mrcStatusMask)0x00200000L) #define mrcStatusMask_14 ((mrcStatusMask)0x00100000L) #define mrcStatusMask_ReferMRCInfo ((mrcStatusMask)0x00080000L) #define mrcStatusMask_Mode ((mrcStatusMask)0x00040000L) #define mrcStatusMask_ReferMemory ((mrcStatusMask)0x00020000L) #define mrcStatusMask_ReferFile ((mrcStatusMask)0x00010000L)
mrc File Status
#define MRC_Status_OK ((mrcStatusType)0x00000000L) #define MRC_FileCanNotOpened ((mrcStatusType)0x00000000L|mrcStatusMask_ReferFile) #define MRC_ImageHeaderCanNotRead ((mrcStatusType)0x00000001L|mrcStatusMask_ReferFile) #define MRC_ImageDataCanNotRead ((mrcStatusType)0x00000002L|mrcStatusMask_ReferFile) #define MRC_ImageHeaderCanNotWrite ((mrcStatusType)0x00000003L|mrcStatusMask_ReferFile) #define MRC_ImageDataCanNotWrite ((mrcStatusType)0x00000004L|mrcStatusMask_ReferFile) #define MRC_FileCanNotClosed ((mrcStatusType)0x00000005L|mrcStatusMask_ReferFile) #define MRC_MemoryNotAllocate ((mrcStatusType)0x00000000L|mrcStatusMask_ReferMemory) #define MRC_ModeNotSupported ((mrcStatusType)0x00000000L|mrcStatusMask_Mode) #define MRC_ModeZNot1FFTMode ((mrcStatusType)0x00000001L|mrcStatusMask_Mode) #define MRC_SizeOfZero ((mrcStatusType)0x00000000L|mrcStatusMask_ReferMRCInfo)
extern char* mrcImageGeneralTypeList[];
Size
HeaderSize
#define MRC_HEADER (1024)
TailerSize
#define MRC_TAILER (1024)
Image Mode
Define for compatible between mrc files
typedef mrcImageParaTypeInteger mrcImageMode; #define MRC_char_image ((mrcImageMode)0) #define MRC_short_image ((mrcImageMode)1) #define MRC_float_image ((mrcImageMode)2) #define MRC_complex_short_ft ((mrcImageMode)3) #define MRC_complex_float_ft ((mrcImageMode)4) #define MRC_long_image ((mrcImageMode)101) #define MRC_double_image ((mrcImageMode)102) #define MRC_complex_long_ft ((mrcImageMode)103) #define MRC_complex_double_ft ((mrcImageMode)104) #define MRC_complex_short_fft ((mrcImageMode)1003) #define MRC_complex_float_fft ((mrcImageMode)1004) #define MRC_complex_long_fft ((mrcImageMode)1103) #define MRC_complex_double_fft ((mrcImageMode)1104) #define MRC_NotSuppotedMode ((mrcImageMode)0xffffffffL)
#define mrcCharImage ((mrcImageMode)0) #define mrcShortImage ((mrcImageMode)1) #define mrcFloatImage ((mrcImageMode)2) #define mrcComplexShortFT ((mrcImageMode)3) #define mrcComplexFloatFT ((mrcImageMode)4) #define mrcComplexFloatOneDimFT ((mrcImageMode)5)
IMOD
#define mrcUShortImage ((mrcImageMode)6) #define mrcCharImageRGB ((mrcImageMode)16)
IMOD: (6,7) -> (26,27)
#define mrcFloatRadonImage ((mrcImageMode)26) #define mrcFloatRadonFT ((mrcImageMode)27) #define mrcLongImage ((mrcImageMode)101) #define mrcDoubleImage ((mrcImageMode)102) #define mrcComplexLongFT ((mrcImageMode)103) #define mrcComplexDoubleFT ((mrcImageMode)104) #define mrcComplexShortFFT ((mrcImageMode)1003) #define mrcComplexFloatFFT ((mrcImageMode)1004) #define mrcComplexLongFFT ((mrcImageMode)1103) #define mrcComplexDoubleFFT ((mrcImageMode)1104) #define mrcNotSuppotedMode ((mrcImageMode)0xffffffffL)
#define MRC_MAX_LABEL_N (10) #define MRC_MAX_LABEL_LEN (80) #define MRC_MAX_EXTRA (29) #define MRC_MAX_EXTRA_CCP4 (15)
2D Projection Mode
#define mrcImageTailerMode2DProjection 0
Image Imformation
Statistics data Mode
typedef enum mrcImageInformationMode { meanOfAll = 0, meanOfSphereSurface = 1, meanOfCylinderSurface = 2, meanOfEdge = 3, meanOfCentre = 4, meanOfSparse = 5, meanOf2DEdgeY = 6, RMSofAllPixels = 7 } mrcImageInformationMode;
For example, Set as Mode of (lmrcImageInformation、lmrcImageSolventFlattening(API), ...)
It is used as value of mrcImageInformation.mode.
Pixel data
Data Type
typedef enum mrcPixelDataType { mrcPixelRePart = 0, mrcPixelImPart, mrcPixelMag, mrcPixelPow, mrcPixelLogMag, mrcPixelLogPow, mrcPixelPhase } mrcPixelDataType;
It is Pixel data Type set and gotten, it is used as Argument (mode) of mrcPixselDataSet or mrcPixselDataGet.
Mode | Real Image | FT Image |
---|---|---|
mrcPixelRePart | data | real part |
mrcPixelImPart | - | imaginary part |
mrcPixelMag | data | Amplitude: (Re^2 + Im^2)^(1/2) |
mrcPixelPow | data^2 | Intensity: Re^2 + Im^2 |
mrcPixelLogMag | - | Log Amplitude: (log10(Re^2 + Im^2)) / 2 |
mrcPixelLogPow | - | Log Intensity: log10(Re^2 + Im^2) |
mrcPixelPhase | - | Phase |
Interpolation method
typedef enum mrcPixelDataHowToGet { mrcPixelHowNearest = 0, mrcPixelHowLinear, mrcPixelHowCubicConv, mrcPixelHowPolySig } mrcPixelDataHowToGet;
It is Interpolation method of Pixel data, and it is used as Argument (how) of mrcPixselDataGet.
Mode | Value | Interpolation Method |
---|---|---|
mrcPixelHowNearest | 0 | Nearest neighbor method |
mrcPixelHowLinear | 1 | Bi-linear interpolation method |
mrcPixelHowCubicConv | 2 | Cubic convolution method |
mrcPixelHowPolySig | 3 | Polynomial interpolation method |
struct
Masking
typedef union MRC_Status_t { mrcStatusType all; struct Content { #ifdef M68 unsigned char level; unsigned char category; short detail; #else short detail; unsigned char category; unsigned char level; #endif } status; } MRC_Status_t;
#ifdef M68 typedef int mrcImageParaTypeInteger; #else typedef int mrcImageParaTypeInteger; #endif
typedef float mrcImageParaTypeReal; typedef unsigned char mrcImageParaTypeCharacter;
Coordinate
Integer: used for Pixel data, ...
typedef struct mrcImageParaTypeIntegerCoord { mrcImageParaTypeInteger x; mrcImageParaTypeInteger y; mrcImageParaTypeInteger z; } mrcImageParaTypeIntegerCoord;
Real: used for real data, pdb data, ...
typedef struct mrcImageParaTypeRealCoord { mrcImageParaTypeReal x; mrcImageParaTypeReal y; mrcImageParaTypeReal z; } mrcImageParaTypeRealCoord;
mrcImage's structure
typedef struct mrcImage { mrcImageHeader Header; size_t BytePerImage; mrcImageParaTypeInteger BytePerBand; mrcImageParaTypeInteger BandPerPixel; size_t PixelPerImage; mrcStatusType status; char* Image; unsigned char* ImageCharImage; unsigned short* ImageShortImage; unsigned long* ImageLongImage; float* ImageFloatImage; double* ImageDoubleImage; /* Tailer */ mrcImageTailer* Tailer; mrcImageParaTypeInteger numTailer; /* FEIextendedHeader */ FEIextendedHeader* FEIHeader; mrcImageParaTypeInteger numFEIHeader; /* Dummy */ char* dummyHeader; mrcImageParaTypeInteger dummyHeaderByte; /* Swap Bytes */ mrcImageParaTypeInteger flagByteSwap; /* flag CCP4-2000 */ mrcImageParaTypeInteger flagCCP4; mrcImageParaTypeInteger ImageOffset; mrcImageSymmetryOperator* SymmetryOperator; } mrcImage;
Component | Member | Details |
---|---|---|
Header Information | Header | Image Mode, Size, ... |
Hidden data | BytePerImage, BytePerBand, BandPerPixel, PixelPerImage | Angstroms per pixel, ... |
Status | status | File Status |
Image data | Image, ImageCharImage, ... , ImageDoubleImage | Image data's body(The Substance data is managed at "Image", other members are managed by pointer.) |
Tailer Information | Tailer, numTailer | Angle Information, ... |
FEIHeader | FEIHeader, numFEIHeader | Extension Header for FEI |
Dummy | dummyHeaderByte | Dummy data |
Byte Swap | flagByteSwap | Flag for Endian depending to Processing system |
CCP4-2000 | flagCCP4, ImageOffset, SymmetryOperator | For CCP4-2000 |
Header Information
Default
typedef struct _mrcImageHeader { mrcImageParaTypeIntegerCoord N; /* Data Numbers */ mrcImageMode Mode; /* Data Type */ mrcImageParaTypeIntegerCoord StartN; /* First in map */ mrcImageParaTypeIntegerCoord M; /* Number of Intervals */ mrcImageParaTypeRealCoord Length; /* Cell Dimensions : Angstrom */ mrcImageParaTypeReal Alpha; /* Cell Angle : Degree */ mrcImageParaTypeReal Beta; mrcImageParaTypeReal Gamma; mrcImageParaTypeInteger MAPC; /* Which Axis Corresponds to Columns */ mrcImageParaTypeInteger MAPR; /* Which Axis Corresponds to Rows */ mrcImageParaTypeInteger MAPS; /* Which Axis Corresponds to Sections */ mrcImageParaTypeReal AMin; /* Minimum Density Value */ mrcImageParaTypeReal AMax; /* Maximum Density Value */ mrcImageParaTypeReal AMean; /* Mean Density Value */ mrcImageParaTypeInteger ISPG; /* Space Group */ mrcImageParaTypeInteger NSYMBT; /* Number of bytes */ mrcImageParaTypeReal EXTRA[MRC_MAX_EXTRA]; /* Extra, user defined storage space */ mrcImageParaTypeReal OriginX; mrcImageParaTypeReal OriginY; mrcImageParaTypeInteger LabelN; char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN]; } _mrcImageHeader;
CCP4 2000
typedef struct _mrcImageHeaderCCP4 { mrcImageParaTypeIntegerCoord N; /* Data Numbers */ mrcImageMode Mode; /* Data Type */ mrcImageParaTypeIntegerCoord StartN; /* First in map */ mrcImageParaTypeIntegerCoord NI; /* Number of Intervals */ mrcImageParaTypeRealCoord Length; /* Cell Dimensions : Angstrom */ mrcImageParaTypeReal Alpha; /* Cell Angle : Degree */ mrcImageParaTypeReal Beta; mrcImageParaTypeReal Gamma; mrcImageParaTypeInteger MAPC; /* Which Axis Corresponds to Columns */ mrcImageParaTypeInteger MAPR; /* Which Axis Corresponds to Rows */ mrcImageParaTypeInteger MAPS; /* Which Axis Corresponds to Sections */ mrcImageParaTypeReal AMin; /* Minimum Density Value */ mrcImageParaTypeReal AMax; /* Maximum Density Value */ mrcImageParaTypeReal AMean; /* Mean Density Value */ mrcImageParaTypeInteger ISPG; /* Space Group */ mrcImageParaTypeInteger NSYMBT; /* Number of bytes used for storing symmetry operators */ mrcImageParaTypeInteger LSKFLG; /* Flag for Skew transformation */ mrcImageParaTypeReal SKWMAT[9]; /* Skew matrix S */ mrcImageParaTypeReal SKWTRN[3]; /* Skew translation */ mrcImageParaTypeReal EXTRA[MRC_MAX_EXTRA_CCP4]; /* Extra, user defined storage space */ mrcImageParaTypeCharacter MAP[4]; mrcImageParaTypeInteger MARCHST; mrcImageParaTypeReal ARMS; mrcImageParaTypeInteger LabelN; char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN]; } _mrcImageHeaderCCP4;
IMOD
typedef struct _mrcImageHeaderIMOD { mrcImageParaTypeIntegerCoord N; /* Data Numbers */ mrcImageMode Mode; /* Data Type */ mrcImageParaTypeIntegerCoord StartN; /* First in map */ mrcImageParaTypeIntegerCoord M; /* Number of Intervals */ mrcImageParaTypeRealCoord Length; /* PixelSize=Len/M: Angstrom */ mrcImageParaTypeReal Alpha; /* Cell Angle : Degree */ mrcImageParaTypeReal Beta; mrcImageParaTypeReal Gamma; mrcImageParaTypeInteger MAPC; /* Which Axis Corresponds to Columns */ mrcImageParaTypeInteger MAPR; /* Which Axis Corresponds to Rows */ mrcImageParaTypeInteger MAPS; /* Which Axis Corresponds to Sections */ mrcImageParaTypeReal AMin; /* Minimum Density Value */ mrcImageParaTypeReal AMax; /* Maximum Density Value */ mrcImageParaTypeReal AMean; /* Mean Density Value */ mrcImageParaTypeInteger ISPG; /* Space Group */ mrcImageParaTypeInteger NSYMBT; /* Number of bytes used for extended header */ short creatid; /* Flag for Skew transformation */ short extra1[15]; /* Flag for Skew transformation */ short nint; short nreal; /*l Skew matrix S */ mrcImageParaTypeReal extra2[5]; /* Extra, user defined storage space */ mrcImageParaTypeInteger imodStamp; mrcImageParaTypeInteger imodFlags; short idtype; short lnes; short nd1; short nd2; short vd1; short vd2; mrcImageParaTypeReal tiltangles[6]; /* Extra, user defined storage space */ mrcImageParaTypeReal xorg; /* Extra, user defined storage space */ mrcImageParaTypeReal yorg; /* Extra, user defined storage space */ mrcImageParaTypeReal zorg; /* Extra, user defined storage space */ mrcImageParaTypeCharacter MAP[4]; mrcImageParaTypeInteger MARCHST; mrcImageParaTypeReal ARMS; mrcImageParaTypeInteger LabelN; char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN]; } _mrcImageHeaderIMOD;
Header's Union
Union about defined Header at above.
typedef union mrcImageHeader { unsigned char All[MRC_HEADER]; mrcImageParaTypeInteger Int[MRC_HEADER/4]; mrcImageParaTypeReal Real[MRC_HEADER/4]; _mrcImageHeader Cont; _mrcImageHeaderCCP4 ContCCP4; _mrcImageHeaderIMOD ContIMOD; } mrcImageHeader;
Define of Abbreviation of calling member
#define HeaderN Header.Cont.N #define HeaderMode Header.Cont.Mode #define HeaderStartN Header.Cont.StartN #define HeaderM Header.Cont.M #define HeaderLength Header.Cont.Length #define HeaderAlpha Header.Cont.Alpha #define HeaderBeta Header.Cont.Beta #define HeaderGamma Header.Cont.Gamma #define HeaderMAPC Header.Cont.MAPC #define HeaderMAPR Header.Cont.MAPR #define HeaderMAPS Header.Cont.MAPS #define HeaderAMin Header.Cont.AMin #define HeaderAMax Header.Cont.AMax #define HeaderAMean Header.Cont.AMean #define HeaderISPG Header.Cont.ISPG #define HeaderNSYMBT Header.Cont.NSYMBT #define HeaderLSKFLG Header.ContCCP4.LSKFLG #define HeaderEXTRA Header.Cont.EXTRA #define HeaderOriginX Header.Cont.OriginX #define HeaderOriginY Header.Cont.OriginY #define HeaderLabelN Header.Cont.LabelN #define HeaderLabel Header.Cont.Label
FEI
#define FEI_EXTENDED_HEADER_EACH (128)
typedef struct _FEIextendedHeader { mrcImageParaTypeReal aTilt; // Alpha tilt, in degrees mrcImageParaTypeReal bTilt; // Beta tilt, in degrees mrcImageParaTypeReal xStage; // Stage x position. // Normally in SI units (meters), // but some older files may be in micrometers. // Check by looking at values for x,y,z. // If one of these exceeds 1, it will be micrometers. mrcImageParaTypeReal yStage; // Stage y position. For testing of units see x_stage. mrcImageParaTypeReal zStage; // Stage z position. For testing of units see x_stage. mrcImageParaTypeReal xShift; // Image shift x. For testing of units see x_stage. mrcImageParaTypeReal yShift; // Image shift y. For testing of units see x_stage. mrcImageParaTypeReal defocus; mrcImageParaTypeReal expTime; mrcImageParaTypeReal mean; mrcImageParaTypeReal tiltAxis; mrcImageParaTypeReal pixelSize; mrcImageParaTypeReal magnification; mrcImageParaTypeReal ht; mrcImageParaTypeReal binning; mrcImageParaTypeReal appliedDefocus; mrcImageParaTypeReal reminder[FEI_EXTENDED_HEADER_EACH/4-16]; } _FEIextendedHeader;
typedef union FEIextendedHeader { mrcImageParaTypeReal Real[FEI_EXTENDED_HEADER_EACH/4]; _FEIextendedHeader Cont; } FEIextendedHeader;
Tailer Information
typedef struct _mrcImageTailer { char Code[4]; mrcImageParaTypeInteger Mode; char EulerAngleMode[4]; mrcImageParaTypeReal Rot1; mrcImageParaTypeReal Rot2; mrcImageParaTypeReal Rot3; mrcImageParaTypeInteger Mirror; } _mrcImageTailer;
typedef union mrcImageTailer { unsigned char All[MRC_TAILER]; mrcImageParaTypeInteger Int[MRC_TAILER/4]; mrcImageParaTypeReal Real[MRC_TAILER/4]; _mrcImageTailer Cont; } mrcImageTailer;
typedef char mrcImageSymmetryOperator;
Statistics data of Image
Struct for storing Statistics data of mrcImage
Get data from mrcImageInformation(API), and use as Input Information data mainly.
typedef struct mrcImageInformation { double mean; double rootMeanSquare; double meanOfSphereSurface; double sdOfSphereSurface; double seOfSphereSurface; double meanOfCylinderSurface; double sdOfCylinderSurface; double seOfCylinderSurface; double meanOfEdge; double sdOfEdge; double seOfEdge; double max; mrcImageParaTypeRealCoord maxCoord; double min; mrcImageParaTypeRealCoord minCoord; double sd; double se; double rmax; long flagrmax; double RMS; /* Root mean square */ int mode; /* For Search Area */ int flagXrange; int flagYrange; int flagZrange; double XrangeMin; double XrangeMax; double YrangeMin; double YrangeMax; double ZrangeMin; double ZrangeMax; int flagCentre; double CentreX; double CentreY; double CentreZ; } mrcImageInformation;
Setting file each API
lmrcImageSmoothingInfo
It is used for lmrcImageSmoothing's setting data.
typedef struct lmrcImageSmoothingInfo { long mode; mrcImageParaTypeReal sx; /* Filter kernel size */ mrcImageParaTypeReal sy; mrcImageParaTypeReal sz; double sigma; /* for Lee-Sigma filter */ } lmrcImageSmoothingInfo;
lmrcImageCVEInfo
It is used for lmrcImageCVE's setting data.
typedef struct lmrcImageCVEInfo { long sx; /* CVE domain size. */ long sy; /* Apr.30,1996 */ long sz; } lmrcImageCVEInfo;
lmrcImageTfunctionInfo
It is used for lmrcImageTfunction's setting data.
typedef struct lmrcImageTfunctionInfo { long sx; /* Tfunction domain size. */ long sy; /* June 11,1996 */ long sz; } lmrcImageTfunctionInfo;
lmrcImageHighlightInfo
It is used for lmrcImageHighlighting's setting data.
typedef struct lmrcImageHighlightInfo { long mode; float Bias; /* May 1,1996 */ float Grad; } lmrcImageHighlightInfo;
lmrcImageLowPassFilterInfo
It is used for lmrcImageLowPassFilter's setting data.
typedef struct lmrcImageLowPassFilterInfo { long mode; /* June 4,1996 */ float hvp, width; } lmrcImageLowPassFilterInfo;
lmrcImageHighPassFilterInfo
It is used for lmrcImageHighPassFilter's setting data.
typedef struct lmrcImageHighPassFilterInfo { long mode; /* June 5,1996 */ float hvp, width; float pathWindowLow; float pathWindowHigh; } lmrcImageHighPassFilterInfo;
lmrcImageBandPassFilterInfo
It is used for lmrcImageBandPassFilter's setting data.
typedef struct lmrcImageBandPassFilterInfo { long mode; /* June 5,1996 */ float hvl, hvh, wl, wh; int flagLowWeight; double lowWeight; } lmrcImageBandPassFilterInfo;
mrcImageDataSet
typedef enum mrcImageDataSetMode { mrcImageDataSetModeCentre = 0, mrcImageDataSetModeOrigin = 1 } mrcImageDataSetMode;
lmrcImageMultiCTFCompensationInfo
It is used for lmrcImageMultiCTFCompensation's setting data.
typedef enum lmrcImageMultiCTFCompensationSolventFlatteningMode { lmrcImageMultiCTFCompensationSolventFlatteningModeDensityPeakIsSolvent=0, lmrcImageMultiCTFCompensationSolventFlatteningModeDefinedSTDIsSolvent=1 } lmrcImageMultiCTFCompensationSolventFlatteningMode; typedef struct lmrcImageMultiCTFCompensationInfo { long maxiteration; double okrms; long diversefactor; double z; long nhist; FILE* logfile; lmrcImageMultiCTFCompensationSolventFlatteningMode solventMode; float definedSTD; } lmrcImageMultiCTFCompensationInfo;
lmrcImageCTFSNInfo
It is used for lmrcImageCTFSN's setting data.
typedef struct lmrcImageCTFSNInfo { long mode, deg1, deg2; ctfInfo ctf; } lmrcImageCTFSNInfo;
lmrcImageFourierPowerSpectrumInfo
It is used for lmrcImageFourierPowerSpectrum's setting data.
typedef struct mrcImageFourierPowerSpectrum { long n; double d, *h; } mrcImageFourierPowerSpectrum; typedef struct lmrcImageFourierPowerSpectrumInfo { double dX, dY, dZ; } lmrcImageFourierPowerSpectrumInfo;
API
Initialize
Initialize Image data
extern mrcStatusType mrcInit(mrcImage* mrc, char* filaname);
If you want to read Header Information (Image Mode and Size) from other mrc file, Specify the file name at "filename". Otherwise, set NULL(Default Setting). It new creates Image data at "Image" of "mrc"' member, and stores the pointer at "ImageXXXXImage"(XXXX: Char, Short, ...)
Initialize Header information
extern mrcStatusType mrcDefaultHeaderValueSet(mrcImage* mrc); extern mrcStatusType mrcDefaultHeaderValueSetOnlyFixedValue(mrcImage* mrc);
Setting Hidden data
extern mrcStatusType mrcHiddenDataSet(mrcImage* mrc, long mode);
Initialize Tailer information
extern void mrcTailerInit(mrcImage* mrc, long mode);
Release Image data
extern void mrcImageFree(mrcImage* mrc, char* message);
Release the Image data's substance(Image), and Change Pointers of Image, ImageXXXXImage(XXXX: Char, Short, ...) to NULL Pointer.
Read from file
Read filename, and store to mrc.
extern mrcStatusType mrcFileRead (mrcImage* mrc, char* filename, char* message, long mode);
extern mrcStatusType mrcImageRead (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcHeaderRead(mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcTailerRead(mrcImage* mrc, char* filename, char* message, long mode);
extern mrcStatusType mrcFileReadGeneral (mrcImage* mrc, char* filename, char* type, char* message, long mode); extern mrcStatusType mrcImageReadGeneral (mrcImage* mrc, char* filename, char* type, char* message, long mode); extern mrcStatusType mrcHeaderReadGeneral(mrcImage* mrc, char* filename, char* type, char* message, long mode); extern mrcStatusType mrcTailerReadGeneral(mrcImage* mrc, char* filename, char* type, char* message, long mode); extern mrcStatusType mrcFileGeneralListPrint(FILE* fpt);
extern mrcStatusType mrcFileReadFEIextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcImageReadFEIextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcHeaderReadFEIextendedMRC(mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcTailerReadFEIextendedMRC(mrcImage* mrc, char* filename, char* message, long mode);
extern mrcStatusType mrcFileReadIMODextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcImageReadIMODextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcHeaderReadIMODextendedMRC(mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcTailerReadIMODextendedMRC(mrcImage* mrc, char* filename, char* message, long mode);
message: for error message
mode: Read data 0: Not display, 1: Display
Write to file
extern mrcStatusType mrcFileWrite (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcImageWrite (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcHeaderWrite(mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcTailerWrite(mrcImage* mrc, char* filename, char* message, long mode);
#define mrcFileWriteModeGet(x) BYTE4GETBYTE(x,0) #define mrcImageWriteModeGet(x) BYTE4GETBYTE(x,1) #define mrcHeaderWriteModeGet(x) BYTE4GETBYTE(x,2) #define mrcTailerWriteModeGet(x) BYTE4GETBYTE(x,3) #define mrcFileWriteMode_InfoPrint 1 #define mrcFileWriteMode_NoCallForStatData 2
message: for error message
mode: +1: Display written data, +2: Not Calculate Statistics data
Writing by Lower Resolution
It is used by ip2mrc, ...
extern mrcStatusType mrcFileWriteLowerResolution(mrcImage* mrc, char* filename, char* message, long sample , long mode);
Copy data
Copy as: src -> dst
Copy Image data
extern void lmrcImageCopy(mrcImage* dst, mrcImage* src, mrcImageParaTypeRealCoord to);
to: Offset(Coordinate)
Copy Tailer information
extern void mrcTailerCopy(mrcImage* dst, mrcImage* src, long mode);
mode: +1: New create and Copy, Otherwise: Copy directly
Check Image mode
extern int IsFloatImage(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); extern int IsFloatFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); extern int IsImage(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); extern int IsFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); extern int IsFFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode);
Return value: 0: False, 1: True
Getting Pixel data
Getting Pixel data by Pixel
extern double mrcPixelDataGet(mrcImage* mrc, mrcImageParaTypeReal x /* Pixel Unit */, mrcImageParaTypeReal y /* Pixel Unit */, mrcImageParaTypeReal z /* Pixel Unit */, double* data, mrcPixelDataType mode, mrcPixelDataHowToGet how);
Get the data of Coordinate(x, y, z), and store to "data".
Gotten data is depending to mode and how.
Getting Pixel data by Angstrom
extern double mrcImageDataGetbyAU(mrcImage* mrc, mrcImageParaTypeReal x /* Angstrom */, mrcImageParaTypeReal y /* Angstrom */, mrcImageParaTypeReal z /* Angstrom */, double* data, mrcPixelDataType mode, mrcPixelDataHowToGet how);
Inline function Gets Pixel data
extern inline double mrcPixelDataGetFloatImage(mrcImage* img, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
extern inline double mrcPixelDataGetFloatFTRe(mrcImage* fft, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
extern inline double mrcPixelDataGetFloatFTIm(mrcImage* fft, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
Setting Pixel data
Setting Image Information
extern void mrcInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, mrcImageParaTypeInteger mode);
Setting Pixel Information
extern void mrcImageInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, long mode);
Setting Pixel data
extern void mrcImageDataSet(mrcImage* out, mrcImage* in, mrcImageParaTypeReal x, mrcImageParaTypeReal y, mrcImageParaTypeReal z, float phi, mrcImageDataSetMode mode);
Setting Pixel data by Pixel
extern double mrcPixelDataSet(mrcImage* mrc, mrcImageParaTypeReal x /* Pixel Unit */, mrcImageParaTypeReal y /* Pixel Unit */, mrcImageParaTypeReal z /* Pixel Unit */, double data, mrcPixelDataType mode);
Setting Pixel data by Angstrom
extern double mrcImageDataSetbyAU(mrcImage* mrc, mrcImageParaTypeReal x /* Angstrom */, mrcImageParaTypeReal y /* Angstrom */, mrcImageParaTypeReal z /* Angstrom */, double data, mrcPixelDataType mode);
Inline function Sets Pixel data
static inline void mrcPixelDataSetFloatImage(mrcImage* img, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data)
static inline void mrcPixelDataSetFloatFTRe(mrcImage* fft, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data)
static inline void mrcPixelDataSetFloatFTIm(mrcImage* fft, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data)
Statistics processing of Pixel data
Calculate Max, Min, Mean(Store mrc's Header Information)
extern void mrcStatDataSet(mrcImage* mrc, mrcImageParaTypeInteger mode);
Library of General image processing
Operation image(mrcImageOperation)
Unary operation
Add
void lmrcImageAddedByReal(mrcImage* img, double d); img := img+d
Subtraction
void lmrcImageMeanSubtraction(mrcImage* out, mrcImage* in) out := in - mean void lmrcImageMeanSubtraction(mrcImage* out, mrcImage* in) out := in - mean void lmrcImageSubtraction(mrcImage* out, mrcImage* in, double value) out := in - value
Devide
void lmrcImageDevidedByReal(mrcImage* img, double d); img := img/d void lmrcImageDevidedByRealForOnlyPositive(mrcImage* img, double d); img := img/d, if img>=0, else img:=img; void lmrcImageDevidedByImage(mrcImage* img, mrcImage* i1, mrcImage* i2); img := i1/i2, 0 := 0/0, 0 := x/0
Absolute value
void ImageAbs(mrcImage* out ,mrcImage* in); out := fabs(in);
Square, Root
void lmrcImageSquare(mrcImage* in); in := in*in void lmrcImageRoot(mrcImage* in ,double eps); in := sqrt(in), if in>eps else in:=0
Dyadic operation
Addition
void lmrcImageAdd(mrcImage* img2, mrcImage* img1, long* number); img2 := img2 + img1, number++
Square Add
void lmrcSQRImageAdd(mrcImage* img2, mrcImage* img1, long* number); img2 := img2 + img1*img1, number++
Subtraction
void lmrcImageSubtractionCalc(mrcImage* out, mrcImage* in1, mrcImage* in2) out := in1 - in2 void llmrcImageSub(mrcImage*out ,mrcImage* in1 ,mrcImage* in2) out : = in1 - in2(上記と同じ機能)
Convolution
extern void lmrcImageConvolution(mrcImage* out, mrcImage* in, mrcImage* kernel, int mode);
Statistics
void lmrcImagetMapForZero(mrcImage* t, mrcImage* avg, mrcImage* se); t := avg/se, at present, avg, se must be given. void lmrcImageSN(mrcImage* sn, mrcImage* avg, mrcImage* sig); sn := avg/sig, at present, avg, sig must be given. void mrcImageStdDev(mrcImage* sig, mrcImage* avg, mrcImage* avg2, long number); sig:= sqrt(avg2 - avg*avg), at present, avg, avg2 must be given. void mrcImageStdErr(mrcImage* se, mrcImage* avg, mrcImage* avg2, long number); se := sqrt(avg2 - avg*avg)/number, at present, avg, avg2 must be given.
Relation to Endian
extern int mrcImageByteSwap(mrcImage* mrc, long mode);
Projection
extern void lmrcImageXSection(mrcImage* proj, mrcImage* img, double Y); extern void lmrcImageYSection(mrcImage* proj, mrcImage* img, double X); extern void lmrcImageXProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageYProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageZProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageXYProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageYZProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageZXProjection(mrcImage* proj, mrcImage* img);
Histogram
extern void lmrcImageHistgram(double** hist, unsigned long nlevel, mrcImage* img); extern void lmrcImageHistgram2(double** hist, double delta, mrcImage* img); extern void lmrcImageHistgram5(double** hist, unsigned long nlevel, double Low, double High, mrcImage* img); extern void lmrcImageHistgram3(double** hist, unsigned long nlevel, mrcImage* img); extern void lmrcImageHistgram4(double** hist, double delta, mrcImage* img); extern void lmrcImageHistgram6(double** hist, unsigned long nlevel, double Low, double High, mrcImage* img);
Get Statistics data
Getting from mrcImage to Statistics data of image.
extern void lmrcImageInformation(mrcImageInformation* info, mrcImage* img);
Convert pixel data
Converting from pixel data to int type.
extern void lmrcImageToIntImage(mrcImage* dst, mrcImage* src, mrcImageParaTypeInteger mode);
Relation to FFT
extern void lfft2d(mrcImage* fft, mrcImage* img); extern void lmrcImageFFT(mrcImage* fft, mrcImage* img, long mode); extern void lmrcImageFFTFirstDimensionOnly(mrcImage* fft, mrcImage* img, long mode); #ifdef FFTW extern void lmrcImageFFTWFlagSet(unsigned int flag); #endif extern void lmrcFFTFGconj(mrcImage* out, mrcImage* in1, mrcImage* in2); extern void lmrcFFTFxG(mrcImage* out, mrcImage* in1, mrcImage* in2);
Correlation of image data
extern void lmrcImageCorrelation(mrcImage* out, mrcImage* in, mrcImage* ref, long mode); extern void lmrcImageCorrelationModePrint(FILE* fpt); extern void lmrcImageCorrelationWithCTFCompensation(mrcImage* out, mrcImage* in, ctfInfo* inctf, mrcImage* ref, ctfInfo* refctf, long mode);
Error Process
extern mrcStatusType mrcError(char* message, char* inRtnName, char* callRtnName, mrcStatusType status); extern mrcStatusType mrcErrorMsg(FILE* fpt, char* message, char* inRtnName, char* callRtnName, mrcStatusType status);
Process each command
lmrcFFTInfo
extern floatVector* lmrcFSInfoXAxisMag(mrcImage* fft); extern floatVector* lmrcFSInfoXAxisPhase(mrcImage* fft); extern floatVector* lmrcFSInfoYAxisMag(mrcImage* fft); extern floatVector* lmrcFSInfoYAxisPhase(mrcImage* fft);
extern floatVector* lmrcFSInfoScatteringAngularDistribution(mrcImage* fft); extern floatVector* lmrcFSInfoScatteringAngularDistributionAverage(mrcImage* fft); extern floatVector* lmrcFSInfoScatteringAngularDistributionSD(mrcImage* fft); extern floatVector* lmrcFSInfoSpacing(mrcImage* fft);
mrcImageCheckSameSize
extern void lmrcImageCheckSameSize(mrcImage* in, mrcImage* ref);
mrcImageCheckFFT
extern void lmrcImageCheckFFT(mrcImage* in, mrcImage* ref);
lmrcImageSmoothing
Use setting data as lmrcImageSmoothingInfo.
extern void lmrcImageSmoothingModeInfo(FILE* fpt); extern void lmrcImageSmoothing(mrcImage* dst, mrcImage* src, lmrcImageSmoothingInfo* info, long mode);
lmrcImageCVE
Use setting data as lmrcImageCVEInfo.
extern void lmrcImageCVE(mrcImage* dst, mrcImage* src, lmrcImageCVEInfo* info);
lmrcImageTfunction
Use setting data as lmrcImageTfunctionInfo.
extern void lmrcImageTfunction(mrcImage* dst, mrcImage* src, lmrcImageTfunctionInfo* info, long mode);
lmrcImageHighlighting
Use setting data as lmrcImageHighlightInfo.
extern void lmrcImageHighlightingInfoPrint(FILE* fpt); extern void lmrcImageHighlighting(mrcImage* dst, mrcImage* src, lmrcImageHighlightInfo* info);
lmrcImageLowPassFilter
Use setting data as lmrcImageLowPassFilterInfo.
extern void lmrcImageLowPassFilter(mrcImage* dst, mrcImage* src, lmrcImageLowPassFilterInfo* info, long mode);
lmrcImageHighPassFilter
Use setting data as lmrcImageHighPassFilterInfo.
extern void lmrcImageHighPassFilter(mrcImage* dst, mrcImage* src, lmrcImageHighPassFilterInfo* info, long mode);
lmrcImageBandPassFilter
Use setting data as lmrcImageBandPassFilterInfo.
extern void lmrcImageBandPassFilter(mrcImage* dst, mrcImage* src, lmrcImageBandPassFilterInfo* info, long mode);
lmrcImageShrink
extern void lmrcImageShrink(mrcImage* dst, mrcImage* src, mrcImageParaTypeIntegerCoord S, long mode);
lmrcImageShift
extern void lmrcImageShift(mrcImage* out, mrcImage* in, mrcImageParaTypeRealCoord shift, mrcPixelDataHowToGet mode); extern void lmrcImageShiftFollowingGC(mrcImage* out, mrcImage* in, int mode);
mrcImagePrint
extern void mrcInfoPrint(FILE* fpt, mrcImage* mrc, mrcImageParaTypeInteger mode);
lmrcImageMultiCTFCompensation
Use setting data as lmrcImageMultiCTFCompensationInfo.
extern void lmrcImageMultiCTFCompensationInfoInit(lmrcImageMultiCTFCompensationInfo* info); extern void lmrcImageMultiCTFCompensationInfoSet(lmrcImageMultiCTFCompensationInfo* info); extern void lmrcImageMultiCTFCompensation(mrcImage* dst, mrcImage* src, ctfInfo* ctf, long nfile, lmrcImageMultiCTFCompensationInfo info, long mode);
lmrcImageCTFObservation
extern void lmrcImageCTFObservation(mrcImage* dst, mrcImage* src, ctfInfo* ctf, long mode); extern void lmrcImagesCTFObservation(mrcImage* dst, mrcImage* src, ctfInfo* ctf, long mode);
lmrcImageCTFCompensation
extern void lmrcImageCTFCompensation(mrcImage* src, ctfInfo* ctf, long mode);
lmrcImageCTFSN
Use setting data as lmrcImageCTFSNInfo.
extern void lmrcImageCTFSN(mrcImage *outMrc, const mrcImage *inMrc, lmrcImageCTFSNInfo *info, long mode);
lmrcImageFourierPowerSpectrum
Use setting data as lmrcImageFourierPowerSpectrumInfo.
extern mrcImageFourierPowerSpectrum lmrcImageFourierPowerSpectrumMakeSpectrum(const mrcImage *inFFT, lmrcImageFourierPowerSpectrumInfo *info); extern void lmrcImageFourierPowerSpectrumDeleteSpectrum(mrcImageFourierPowerSpectrum theSpectrum); extern mrcImageFourierPowerSpectrum lmrcImageFourierPowerSpectrum(const mrcImage *inMrc, lmrcImageFourierPowerSpectrumInfo *info, long mode); extern void lmrcImageRotation3DModePrint(FILE* fpt); extern void lmrcImageRotation3DFollowingEulerAngle(mrcImage* dst, mrcImage* src, const char* m, mrcImageParaTypeReal rot1, mrcImageParaTypeReal rot2, mrcImageParaTypeReal rot3, mrcPixelDataHowToGet mode, int mode2); extern void lmrcImageRotation3DFollowingMatrix3D(mrcImage* dst, mrcImage* src, Matrix3D mat, mrcPixelDataHowToGet mode, int mode2); extern void lmrcImageRotation3DZXY(mrcImage* dst, mrcImage* src, mrcImageParaTypeReal rotx, mrcImageParaTypeReal roty, mrcImageParaTypeReal rotz, mrcPixelDataHowToGet mode, int mode2); extern void lmrcImageRotation2D(mrcImage* dst, mrcImage* src, double angle, mrcPixelDataHowToGet mode); extern void lmrcImageRotation2DPeriodicBoundary(mrcImage* dst, mrcImage* src, double angle, mrcPixelDataHowToGet mode);
mrcImageSectionGet
extern char* mrcImageSectionGetModeDescription(long mode); extern void mrcImageSectionGet(mrcImage* dst, mrcImage* src, mrcImageParaTypeReal z, long mode);
mrcImageSectionSet
extern void mrcImageSectionSet(mrcImage* dst, mrcImage* src, mrcImageParaTypeReal z, long mode); extern double lmrcImageMaxDataGet(mrcImage* src, long mode);