「llData(API)」の版間の差分

提供: Eospedia
移動: 案内検索
(ページの作成:「DataManip/'''llData'''はAPI です。 == 定数 == #define LTLG_TITLE_LENGTH (80) #define LTLG_SIDE_LENGTH ( 4) #define LTLG_FTN_RECORD (64*4) == 構造体 == t...」)
 
 
行1: 行1:
DataManip/'''llData'''はAPI です。
+
DataManip/'''llData'''は[[LL]]データのための[[API]]です。
  
 
== 定数 ==
 
== 定数 ==
  #define LTLG_TITLE_LENGTH (80)
+
  #define llDataStatusOK          ((llDataStatusType)0x00000000)
  #define LTLG_SIDE_LENGTH  ( 4)
+
 
  #define LTLG_FTN_RECORD   (64*4)
+
=== 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 short ltlgDataParaTypeInteger;  
+
  typedef unsigned int llDataStatusType;
  typedef float ltlgDataParaTypeReal;  
+
typedef int  llDataParaTypeInteger;
 +
  typedef float llDataParaTypeReal;
  
  typedef enum ltlgDataHow {
+
  typedef struct llComplex {
  ltlgDataHowNearest,
+
  llDataParaTypeReal      R;  /* Spherical R */
  ltlgDataHowLinear
+
llDataParaTypeReal      RR; /* Radial R    */
  } ltlgDataHow;
+
llDataParaTypeReal      F;  /* F*exp(PHI)  */
 +
llDataParaTypeReal      PHI;
 +
llDataParaTypeReal      Re; /* Re + i * Im */
 +
  llDataParaTypeReal      Im;
 +
  } llComplex;
  
  typedef enum ltlgDataType {
+
  typedef struct oneLLData {
  ltlgDataTypeRePart,
+
  char Head[DefaultStringLength]; /* Comment */
  ltlgDataTypeImPart,
+
  llDataParaTypeReal      Weight;  /* Weight of This Layer Line */
  ltlgDataTypeMag,
+
  llDataParaTypeInteger  nn;      /* The [n] dim. Bessel function */
  ltlgDataTypePhase
+
  llDataParaTypeInteger  nl;      /* The [l]th layer line */
  } ltlgDataType;
+
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 */
  
typedef struct ltlgDataLLDataInfo {
+
llDataParaTypeReal    Z; 
    ltlgDataParaTypeInteger  NN;
+
llDataParaTypeInteger iZ;
    ltlgDataParaTypeInteger  NL;
+
llDataParaTypeReal    RMin; /* Radial R Info */
    ltlgDataParaTypeReal     WT;
+
llDataParaTypeInteger iRMin;
  } ltlgDataLLDataInfo;
+
llDataParaTypeReal     RMax;
 +
llDataParaTypeInteger iRMax;
 +
llDataParaTypeReal    delBR;
 +
llDataParaTypeReal    Fmax;  /* Fmax */
 +
long dummy;
 +
  } oneLLData;
  
  typedef struct ltlgDataLLData {
+
  typedef struct llData {
  ltlgDataParaTypeReal r;
+
  llDataMode            mode;
    ltlgDataParaTypeReal Re;
+
llDataParaTypeInteger llMax;
    ltlgDataParaTypeReal Im;
+
llDataParaTypeInteger nRMax;
  }ltlgDataLLData;
+
llDataParaTypeReal    truePitch;
 +
llDataParaTypeReal    Weight;
 +
llDataParaTypeReal    rScale;
 +
llDataPole            Pole;
 +
llDataParaTypeReal    Side;
 +
llDataParaTypeInteger RRInfoSet;
 +
llDataParaTypeInteger FmaxSet;
 +
llDataParaTypeInteger RValueSet;
 +
llDataParaTypeInteger ZValueSet;
 +
oneLLData* LL;
 +
  } llData;
  
  typedef struct ltlgDataParaInfo {
+
  typedef struct llDataBoth {
    ltlgDataParaTypeReal    d;
+
llData Nea;
    ltlgDataParaTypeReal    Min;
+
llData Far;
    ltlgDataParaTypeReal    Max;
+
  } llDataBoth;
    ltlgDataParaTypeInteger n;
+
    ltlgDataParaTypeInteger dummy;
+
  } ltlgDataParaInfo;
+
  
  typedef struct ltlgData {
+
  typedef struct llDataAttributes {
    char title1[LTLG_TITLE_LENGTH+1];
+
llDataMode            mode;
    char title2[LTLG_TITLE_LENGTH+1];
+
llDataParaTypeInteger llMax;
    char side[LTLG_SIDE_LENGTH+1];
+
llDataParaTypeInteger nRMax;
    ltlgDataParaInfo R;
+
llDataParaTypeReal    truePitch;
    ltlgDataParaInfo ll;
+
llDataParaTypeReal    Weight;
    ltlgDataParaInfo r;
+
llDataParaTypeReal    rScale;
    ltlgDataLLDataInfo* llInfo;
+
llDataPole            Pole;
    ltlgDataLLData** ltlg;
+
llDataParaTypeReal    Side;
  } ltlgData;
+
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 ==
 
== API ==
  #define ltlgDataFileRead ltlgDataReadFile
+
==== llDataRead ====
  #define ltlgDataFileWrite ltlgDataWriteFile
+
  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);
  
  extern void ltlgDataReadFile(FILE* fpt, ltlgData* ltlg, ltlgDataParaTypeInteger mode, ltlgDataParaTypeInteger* status);
+
==== lllDataAvgTo ====
  extern void ltlgDataWriteFile(FILE* fpt, ltlgData* ltlg, ltlgDataParaTypeInteger mode, ltlgDataParaTypeInteger* status);
+
  extern void lllDataAvgTo(llData* dst, llData* src, llDataParaTypeInteger Side);
 +
  extern void lllDataAvgToNea(llData* nea, llData* avg);
 +
extern void lllDataAvgToFar(llData* far, llData* avg);
  
  extern void ltlgDataPrint(FILE* fpt, ltlgData ltlg, ltlgDataParaTypeInteger mode);
+
==== lllDataWeightSet ====
extern void ltlgDataPrintInfo(FILE* fpt, ltlgData ltlg);
+
  extern void lllDataWeightSet(FILE* fpt, llData* ll, llDataParaTypeReal w, long mode);  
extern void ltlgDataPrintllInfo(FILE* fpt, ltlgData ltlg);
+
/* FILE FORMAT
extern void ltlgDataPrintllData(FILE* fpt, ltlgData ltlg);
+
  nn nl weight
 +
  ............
 +
  Mode 0: llData.LL[].Weight = 0 without Definition
 +
*/
  
  extern void ltlgDataAllocate(ltlgData* ltlg, ltlgDataParaTypeInteger* status);
+
==== llDataGet ====
  extern void ltlgDataFree(ltlgData* ltlg);
+
  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);
  
  extern void ltlgDataWeightModifyFromFile(ltlgData* ltlg, FILE* fpt, long mode);
+
==== llDataSet ====
  extern void ltlgDataWeightModify(ltlgData* ltlg, ltlgDataLLDataInfo Weight, long mode);
+
  extern void llDataFandPHISet(llData* ll);
  extern void ltlgDataWeightOfNEqualLOnly(ltlgData* ltlg);
+
extern void llDataReAndImSet(llData* ll);
 +
  extern void llDataRRSet(llData* ll);
 +
  extern void llDataRRInfoSet(llData* ll);
 +
extern void llDataAttributesSet2(llData* dst, llData* src);
  
  extern long
+
==== llDataCheck ====
ltlgDataLNumberGet(ltlgData* ltlg,
+
  extern long llDataSizeCheck(llData* ll1, llData* ll2, char* message);
ltlgDataParaTypeInteger n,
+
ltlgDataParaTypeInteger l);
+
  
  extern ltlgDataParaTypeReal
+
==== llDataIntensityInformationGet ====
ltlgDataGet(ltlgData* ltlg,
+
  extern void lllDataIntensityInformationGet(llData* in, lllDataIntensityInformation* data, int mode);
ltlgDataParaTypeInteger n,
+
ltlgDataParaTypeInteger l,
+
ltlgDataParaTypeReal r,
+
ltlgDataParaTypeReal* data,
+
    ltlgDataType type, ltlgDataHow how);
+
  
  extern ltlgDataParaTypeReal
+
==== llDataError ====
  ltlgDataGet2(ltlgData* ltlg,
+
  extern void llDataError(char* s);
long ll,                      /* layer */
+
  extern void llDataErrorMessage(void);
ltlgDataParaTypeReal r,
+
ltlgDataParaTypeReal* data,
+
    ltlgDataType type, ltlgDataHow how);
+

2015年3月18日 (水) 06:02時点における最新版

DataManip/llDataLLデータのための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
}; 
  1. else

extern char* llDataErrorMsgReferFile[]; extern char* llDataReferenceData[];

  1. 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);