llData(API)
提供: Eospedia
DataManip/llDataはLLデータのためのAPIです。
目次
定数
#define llDataStatusOK ((llDataStatusType)0x00000000)
ReferFile
#define llDataCanNotReadFile ((llDataStatusType)0x00010000); #define llDataCanNotWriteFile ((llDataStatusType)0x00010001);
char* llDataReferenceData[] = { "Amos,L.A. & Klug,A. J.Mol.Biol(1975),99,51-73", " Three-dimensional Image Reconstructions of the Contractile Tail of T4 Bacteriophage", " Appendix: Combination of Data from Helical Particles : Correlation and Selection", " Amos,L.A", " delta(theta)= -n*delta(phi) + 2*PI*Z*delta(z)", " Klug,A. Crick,A., F.H.C. & Wyckoff,H.W. Acta Crystallogr.sect.(1958),11,199-213", NULL };
- else
extern char* llDataErrorMsgReferFile[]; extern char* llDataReferenceData[];
- endif
#define DefaultStringLength (256) #define NearSide (0) #define FarSide (1) #define AverageSide (2) #define SidePosition (14) #define CommentLength (80) #define WeightPosition (SidePosition+4+CommentLength) #define NNPosition (WeightPosition+12) #define NLPosition (NNPosition+5) #define LLDataFormat "%12.5e%12.5e%12.5e\n" #define LLDataFormat0 "%12.5e%12.5e%12.5e" #define LLDataFormat1 "%12.5e %12.5e %12.5e" #define RRPosition (0) #define FPosition (RRPosition+12) #define PHIPosition (FPosition +12)
#define PVALUE_MODE (0x01) #define QVALUE_MODE (0x02) #define RVALUE_MODE (0x04) #define Q2VALUE_MODE (0x08)
typedef enum llDataPole { llDataPoleNormal = 0, llDataPoleAnti = 1 } llDataPole;
typedef enum llDataMode { llDataModeMemoryNotAllocate = 0, llDataModeMemoryAllocate = 1 } llDataMode;
構造体
typedef unsigned int llDataStatusType; typedef int llDataParaTypeInteger; typedef float llDataParaTypeReal;
typedef struct llComplex { llDataParaTypeReal R; /* Spherical R */ llDataParaTypeReal RR; /* Radial R */ llDataParaTypeReal F; /* F*exp(PHI) */ llDataParaTypeReal PHI; llDataParaTypeReal Re; /* Re + i * Im */ llDataParaTypeReal Im; } llComplex;
typedef struct oneLLData { char Head[DefaultStringLength]; /* Comment */ llDataParaTypeReal Weight; /* Weight of This Layer Line */ llDataParaTypeInteger nn; /* The [n] dim. Bessel function */ llDataParaTypeInteger nl; /* The [l]th layer line */ llDataParaTypeInteger nm; /* [l] = t*[n]+s*[m] */ llComplex* data; /* Layer line data */ llDataParaTypeInteger Side; /* Near/Far Side/Average */ llDataParaTypeInteger nR; /* Number of layer line data */
llDataParaTypeReal Z; llDataParaTypeInteger iZ; llDataParaTypeReal RMin; /* Radial R Info */ llDataParaTypeInteger iRMin; llDataParaTypeReal RMax; llDataParaTypeInteger iRMax; llDataParaTypeReal delBR; llDataParaTypeReal Fmax; /* Fmax */ long dummy; } oneLLData;
typedef struct llData { llDataMode mode; llDataParaTypeInteger llMax; llDataParaTypeInteger nRMax; llDataParaTypeReal truePitch; llDataParaTypeReal Weight; llDataParaTypeReal rScale; llDataPole Pole; llDataParaTypeReal Side; llDataParaTypeInteger RRInfoSet; llDataParaTypeInteger FmaxSet; llDataParaTypeInteger RValueSet; llDataParaTypeInteger ZValueSet; oneLLData* LL; } llData;
typedef struct llDataBoth { llData Nea; llData Far; } llDataBoth;
typedef struct llDataAttributes { llDataMode mode; llDataParaTypeInteger llMax; llDataParaTypeInteger nRMax; llDataParaTypeReal truePitch; llDataParaTypeReal Weight; llDataParaTypeReal rScale; llDataPole Pole; llDataParaTypeReal Side; oneLLData* LL; } llDataAttributes;
/* in llDataIntensityInformationGet.c */ typedef struct onelllDataIntensityInformation { int LL; int n; int l; int flagI; double I; int flagPeak; double Peak; } onelllDataIntensityInformation;
typedef struct lllDataIntensityInformation { onelllDataIntensityInformation* onedata; llDataParaTypeInteger llMax; } lllDataIntensityInformation;
API
llDataRead
extern void llDataFileRead(FILE* fpt, llData* ll, llDataParaTypeInteger* status); extern void llDataFileReadFollowingllData(FILE* fpt, llData* ll, llData* Ref, llDataParaTypeInteger* status); extern void llDataFileReadFollowingAttributes(FILE* fpt, llData* ll, llDataAttributes* attr, llDataParaTypeInteger* status);
llDataWrite
extern void llDataFileWrite(FILE* fpt, llData* ll, llDataParaTypeInteger* status);
llDataInit
extern void llDataInit(llData* ll); extern void llDataInitWithReference(llData* ll, llData* ref); extern void llDataInitWithReference2(llData* ll, llData* ref, int side); extern void llDataHeaderInit(llData* ll); extern void llDataDataInit(llData* ll); extern void llDataFree(llData* ll); extern void llDataHeaderFree(llData* ll); extern void llDataDataFree(llData* ll);
llDataInfo
extern void llDataInfoPrint(FILE* fpt, llData* ll, long WhichLayer, long WhatInfo); extern void llDataInfoPrintUsage(FILE* fpt);
llDataUtil
extern void llDataRValueSet(llData* dst, int mode); extern void llDataFmaxSet(llData* dst, int mode); extern void llDataZValueSet(llData* dst, int mode);
extern llDataParaTypeInteger* llDataTableBetweenTwollDataCreate(llData* ll1, llData* ll2, int mode);
extern inline llDataParaTypeReal nearSidePhaseGet(llDataParaTypeReal phase, llDataParaTypeInteger nn, llDataParaTypeInteger side, llDataParaTypeInteger pole); extern inline llDataParaTypeReal farSidePhaseGet(llDataParaTypeReal phase, llDataParaTypeInteger nn, llDataParaTypeInteger side, llDataParaTypeInteger pole); extern void lllDataAttributeCopy(llData* ll1, llData* ll2); extern void lllDataHeaderCopy(llData* ll1, llData* ll2); extern void lllDataCopy(llData* ll1, llData* ll2); extern void lllDataClear(llData* ll1); extern void lllDataMul(llData* ll1, llData* ll2); extern void lllDataPoleSet(llData* ll1, llDataPole pole); extern void lllDataSideSet(llData* ll1, llDataParaTypeInteger Side); extern void lllDataMultiplyReal(llData* ll1, llDataParaTypeReal f); extern void lllDataDevidedByReal(llData* ll1, llDataParaTypeReal f);
lllDataAdd
extern void lllDataAdd(llData* ll1, llData* ll2); extern void lllDataAdd2(llData* ll, llData* ll1, llData* ll2);
lllDataAvgTo
extern void lllDataAvgTo(llData* dst, llData* src, llDataParaTypeInteger Side); extern void lllDataAvgToNea(llData* nea, llData* avg); extern void lllDataAvgToFar(llData* far, llData* avg);
lllDataWeightSet
extern void lllDataWeightSet(FILE* fpt, llData* ll, llDataParaTypeReal w, long mode); /* FILE FORMAT nn nl weight ............ Mode 0: llData.LL[].Weight = 0 without Definition */
llDataGet
extern inline long llDataValueGet(llData* ll, long l, double R, double* re, double *im); extern inline long llDataValueGet2(llData* ll, long nn, long nl, double R, double* re, double *im); extern long llDataLayerNumberGet(llData* ll, long n, long l); extern long llDataNLNumberGet(llData* ll);
llDataSet
extern void llDataFandPHISet(llData* ll); extern void llDataReAndImSet(llData* ll); extern void llDataRRSet(llData* ll); extern void llDataRRInfoSet(llData* ll); extern void llDataAttributesSet2(llData* dst, llData* src);
llDataCheck
extern long llDataSizeCheck(llData* ll1, llData* ll2, char* message);
llDataIntensityInformationGet
extern void lllDataIntensityInformationGet(llData* in, lllDataIntensityInformation* data, int mode);
llDataError
extern void llDataError(char* s); extern void llDataErrorMessage(void);