「ctfInfo(API)」の版間の差分
提供: Eospedia
行1: | 行1: | ||
− | DataManip/'''ctfInfo'''は[[CTF補正]]のためのAPI です。 | + | DataManip/'''ctfInfo'''は[[CTF]]の推定及び[[CTF補正]]のためのAPI です。 |
== 定数 == | == 定数 == | ||
− | === | + | === モード選択 === |
− | ==== | + | ==== マスク用 ==== |
− | + | ||
#define ctfInfoModeWithAmplitudeContrast 0x0f | #define ctfInfoModeWithAmplitudeContrast 0x0f | ||
− | |||
#define ctfInfoModeWithMTF 0x10 | #define ctfInfoModeWithMTF 0x10 | ||
− | |||
#define ctfInfoModeWithIlluminationAngle 0x20 | #define ctfInfoModeWithIlluminationAngle 0x20 | ||
− | |||
#define ctfInfoModeWithEnergySpread 0x40 | #define ctfInfoModeWithEnergySpread 0x40 | ||
− | |||
#define ctfInfoModeAbsoluteValue 0x100 | #define ctfInfoModeAbsoluteValue 0x100 | ||
+ | <table border="1"> | ||
+ | <div align="left"> | ||
+ | <tr> | ||
+ | <th>モード</th> | ||
+ | <th>マスク部分</th> | ||
+ | <th>説明</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithAmplitudeContrast</td> | ||
+ | <td>0x0f</td> | ||
+ | <td>コントラスト補正のモード</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithMTF</td> | ||
+ | <td>0x10</td> | ||
+ | <td>[[MTF]]積算のフラグ</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithIlluminationAngle</td> | ||
+ | <td>0x20</td> | ||
+ | <td>照射角度の考慮のフラグ</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithEnergySpread</td> | ||
+ | <td>0x40</td> | ||
+ | <td>エネルギー拡散の考慮のフラグ</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeAbsoluteValue</td> | ||
+ | <td>0x100</td> | ||
+ | <td>絶対値のフラグ</td> | ||
+ | </tr> | ||
+ | </div> | ||
+ | </table> | ||
+ | <br> | ||
==== モード値の定義 ==== | ==== モード値の定義 ==== | ||
− | コントラスト補正のモード | + | ===== コントラスト補正のモード ===== |
+ | ctfInfoModeWithAmplitudeContrastでマスクした値に対応 | ||
typedef enum ctfInfoMode { | typedef enum ctfInfoMode { | ||
ctfInfoModePhaseCTFOnly = 0, | ctfInfoModePhaseCTFOnly = 0, | ||
行42: | 行73: | ||
<br> | <br> | ||
− | envelope関数のモード | + | ===== envelope関数のモード ===== |
typedef enum ctfInfoMTFMode { | typedef enum ctfInfoMTFMode { | ||
ctfInfoMTFModeSingleExp = 0, | ctfInfoMTFModeSingleExp = 0, | ||
行51: | 行82: | ||
ctfInfoMTFModePolynomial = 5 | ctfInfoMTFModePolynomial = 5 | ||
} ctfInfoMTFMode; | } ctfInfoMTFMode; | ||
+ | <table border="1"> | ||
+ | <div align="left"> | ||
+ | <tr> | ||
+ | <th>モード</th> | ||
+ | <th>値</th> | ||
+ | <th>説明</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoMTFModeSingleExp</td> | ||
+ | <td>0</td> | ||
+ | <td></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoMTFModeSingleLorentzian</td> | ||
+ | <td>1</td> | ||
+ | <td></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoMTFModeBoth</td> | ||
+ | <td>2</td> | ||
+ | <td></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoMTFModeLinear</td> | ||
+ | <td>3</td> | ||
+ | <td></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoMTFModeBothSum</td> | ||
+ | <td>4</td> | ||
+ | <td></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoMTFModePolynomial</td> | ||
+ | <td>5</td> | ||
+ | <td></td> | ||
+ | </tr> | ||
+ | </div> | ||
+ | </table> | ||
<br> | <br> | ||
行166: | 行236: | ||
extern float ctfVibrationFunction(ctfInfo* info, float R, long mode); | extern float ctfVibrationFunction(ctfInfo* info, float R, long mode); | ||
− | [[CTF]] | + | ==== [[CTF]]の算出 ==== |
extern float ctfFunction(ctfInfo* info, float R, long mode); | extern float ctfFunction(ctfInfo* info, float R, long mode); | ||
− | + | <table border="1"> | |
+ | <div align="left"> | ||
+ | <tr> | ||
+ | <th>info->mode</th> | ||
+ | <th>マスク部分</th> | ||
+ | <th>説明</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithAmplitudeContrast</td> | ||
+ | <td>0x0f</td> | ||
+ | <td>コントラスト補正のモード</td> | ||
+ | </tr> | ||
+ | </div> | ||
+ | </table> | ||
<br> | <br> | ||
行175: | 行258: | ||
extern float ctfFunctionPVMEnd(ctfInfo* info, float R, int tid, long mode); | extern float ctfFunctionPVMEnd(ctfInfo* info, float R, int tid, long mode); | ||
extern void ctfFunctionPVMServer(); | extern void ctfFunctionPVMServer(); | ||
+ | |||
+ | ==== Envelope関数の算出 ==== | ||
extern float ctfEnvelopFunction(ctfInfo* info, float R, long mode); | extern float ctfEnvelopFunction(ctfInfo* info, float R, long mode); | ||
+ | <table border="1"> | ||
+ | <div align="left"> | ||
+ | <tr> | ||
+ | <th>info->mode</th> | ||
+ | <th>マスク部分</th> | ||
+ | <th>説明</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithMTF</td> | ||
+ | <td>0x10</td> | ||
+ | <td>[[MTF]]を積算(ctfMTFFunctionを呼び出す)</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithIlluminationAngle</td> | ||
+ | <td>0x20</td> | ||
+ | <td>照射角度(info->Ain)を考慮した値を積算</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithEnergySpread</td> | ||
+ | <td>0x40</td> | ||
+ | <td>エネルギー拡散を考慮した値を積算</td> | ||
+ | </tr> | ||
+ | </div> | ||
+ | </table> | ||
+ | <br> | ||
+ | |||
+ | ==== [[MTF]]の算出 ==== | ||
extern float ctfMTFFunction(ctfInfo* info, float R, long mode); | extern float ctfMTFFunction(ctfInfo* info, float R, long mode); | ||
+ | |||
extern float ctfFunction2D(ctfInfo* info, float X, float Y, long mode); | extern float ctfFunction2D(ctfInfo* info, float X, float Y, long mode); | ||
extern float wavelengthOfElectron(float E); | extern float wavelengthOfElectron(float E); | ||
− | トーンリングからデフォーカスを推定 | + | ==== トーンリングからデフォーカスを推定 ==== |
extern float defocusDeterminationFromThonRing(ctfInfo* info, float R, long n, long mode); | extern float defocusDeterminationFromThonRing(ctfInfo* info, float R, long n, long mode); | ||
− | + | <table border="1"> | |
+ | <div align="left"> | ||
+ | <tr> | ||
+ | <th>info->mode</th> | ||
+ | <th>マスク部分</th> | ||
+ | <th>説明</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>ctfInfoModeWithAmplitudeContrast</td> | ||
+ | <td>0x0f</td> | ||
+ | <td>コントラスト補正のモード</td> | ||
+ | </tr> | ||
+ | </div> | ||
+ | </table> | ||
<br> | <br> | ||
2014年9月25日 (木) 01:58時点における版
DataManip/ctfInfoはCTFの推定及びCTF補正のためのAPI です。
目次
定数
モード選択
マスク用
#define ctfInfoModeWithAmplitudeContrast 0x0f #define ctfInfoModeWithMTF 0x10 #define ctfInfoModeWithIlluminationAngle 0x20 #define ctfInfoModeWithEnergySpread 0x40 #define ctfInfoModeAbsoluteValue 0x100
モード | マスク部分 | 説明 |
---|---|---|
ctfInfoModeWithAmplitudeContrast | 0x0f | コントラスト補正のモード |
ctfInfoModeWithMTF | 0x10 | MTF積算のフラグ |
ctfInfoModeWithIlluminationAngle | 0x20 | 照射角度の考慮のフラグ |
ctfInfoModeWithEnergySpread | 0x40 | エネルギー拡散の考慮のフラグ |
ctfInfoModeAbsoluteValue | 0x100 | 絶対値のフラグ |
モード値の定義
コントラスト補正のモード
ctfInfoModeWithAmplitudeContrastでマスクした値に対応
typedef enum ctfInfoMode { ctfInfoModePhaseCTFOnly = 0, ctfInfoModePhaseAndAmpCTF = 1 } ctfInfoMode;
モード | 値 | 説明 |
---|---|---|
ctfInfoModePhaseCTFOnly | 0 | 位相コントラストだけ |
ctfInfoModePhaseAndAmpCTF | 1 | 強度コントラストを加える |
envelope関数のモード
typedef enum ctfInfoMTFMode { ctfInfoMTFModeSingleExp = 0, ctfInfoMTFModeSingleLorentzian = 1, ctfInfoMTFModeBoth = 2, ctfInfoMTFModeLinear = 3, ctfInfoMTFModeBothSum = 4, ctfInfoMTFModePolynomial = 5 } ctfInfoMTFMode;
モード | 値 | 説明 |
---|---|---|
ctfInfoMTFModeSingleExp | 0 | |
ctfInfoMTFModeSingleLorentzian | 1 | |
ctfInfoMTFModeBoth | 2 | |
ctfInfoMTFModeLinear | 3 | |
ctfInfoMTFModeBothSum | 4 | |
ctfInfoMTFModePolynomial | 5 |
構造体
typedef struct moleculrEnvelope { char* filename; int nR; float* R; float* Envelope; int mode; } molecularEnvelope;
typedef struct ctfInfo { float kV; /* kV */ float defocus; /* A : Underfocus is plus, while overfocus is minus*/ float Cc; /* mm */ float dE; float Cs; /* mm */ float Ain; /* mrad : Illumination Angle */ long flagWin; /* Windowing */ float CutLow; /* Windowing: CutLow A-1 */ float CutHigh; /* Windowing: CutHigh A-1 */ float I0; /* Intensity */ float Isignal; /* Intensity of signal */ float ratioOfAmpToPhase; /* The ratio of amp to phase */ float Inoise; /* Intensity of noise : Isignal*/ long flagWhiteNoise; float WhiteNoise; /* Affected by MTF(R) */ long flagWhiteNoiseRaising; float WhiteNoiseRaising; /* WhiteNoise Raising depending upon R */ float Inoise2; /* Intensity of noise */ long flagWhiteNoise2; float WhiteNoise2; /* Not Affected by MTF(R)*/ int flagAstigmatism; float defocus2D[2]; /* A : Normally [0]: Max [1]: Min */ float defocus0axis; /* radian : angle of the defocus2D[0]-axis */ long mode; long flagMagnification; float Magnification; /* MTF(R): Modulation Transfer Function */ ctfInfoMTFMode MTFMode; float BofMTF; /* Exponential: exp(-B R) */ float BofMTF2; /* Lorentzian : 1/(B*B+R*R) */ float WeightOfSecondTermForMTF; /* 0 <-> 1 */ /*for PolynomialExpNoise*//*d = degree*/ float BofMTFd2; float BofMTFd3; float BofMTFd4; float BofMTFd5; float BofMTFd6; /* Molecular Envelope: Scattering Factor */ /* For Gaussian */ float MolecEnv; /* A : */ /* For Table */ long flagMolecEnvTable; molecularEnvelope MolecEnvTable; /* For Lorentzian */ float flagElastic; float Elastic; float ElasticShift; float ElasticWidth; float ElasticRing; float ElasticRingPosition; float ElasticRingWidth; /* Stage Vibration */ long flagVibration; long VibrationMode; float BofVibration; /* Aliasing and Sampling */ long flagAliasing; float NyquistFrequency; long flagSampling; /* Inelastic Signal */ /* For Gaussian */ long flagWithInElastic; float InElasticGaussian; /* For Table */ long flagWithInElasticTable; molecularEnvelope InElasticEnvTable; /* Lorentzian */ long flagInElastic; float InElastic; float InElasticShift; float InElasticWidth; float InElasticRing; float InElasticRingPosition; float InElasticRingWidth; } ctfInfo;
API
extern void ctfInfoSendByPVM(ctfInfo* info, int tid, long mode); extern void ctfInfoRecieveByPVM(ctfInfo* info, int tid, long mode); extern float ctfSignalFunction(ctfInfo* info, float R, long mode); extern float ctfNoiseFunction(ctfInfo* info, float R, long mode); extern float ctfNoise2Function(ctfInfo* info, float R, long mode); extern float ctfSignalPowerFunction(ctfInfo* info, float R, long mode); extern float ctfNoisePowerFunction(ctfInfo* info, float R, long mode); extern float ctfNoise2PowerFunction(ctfInfo* info, float R, long mode); extern float ctfScatteringFunction(ctfInfo* info, float R, long mode); extern float ctfMolecularEnvelopeFunction(ctfInfo* info, float R, long mode); extern float ctfMolecularEnvelopeInElasticFunction(ctfInfo* info, float R, long mode); extern float ctfVibrationFunction(ctfInfo* info, float R, long mode);
CTFの算出
extern float ctfFunction(ctfInfo* info, float R, long mode);
info->mode | マスク部分 | 説明 |
---|---|---|
ctfInfoModeWithAmplitudeContrast | 0x0f | コントラスト補正のモード |
extern float ctfFunctionSampling(float R, float Nyquist, long mode); extern void ctfFunctionPVMStart(ctfInfo* info, float R, int tid, long mode); extern float ctfFunctionPVMEnd(ctfInfo* info, float R, int tid, long mode); extern void ctfFunctionPVMServer();
Envelope関数の算出
extern float ctfEnvelopFunction(ctfInfo* info, float R, long mode);
info->mode | マスク部分 | 説明 |
---|---|---|
ctfInfoModeWithMTF | 0x10 | MTFを積算(ctfMTFFunctionを呼び出す) |
ctfInfoModeWithIlluminationAngle | 0x20 | 照射角度(info->Ain)を考慮した値を積算 |
ctfInfoModeWithEnergySpread | 0x40 | エネルギー拡散を考慮した値を積算 |
MTFの算出
extern float ctfMTFFunction(ctfInfo* info, float R, long mode);
extern float ctfFunction2D(ctfInfo* info, float X, float Y, long mode); extern float wavelengthOfElectron(float E);
トーンリングからデフォーカスを推定
extern float defocusDeterminationFromThonRing(ctfInfo* info, float R, long n, long mode);
info->mode | マスク部分 | 説明 |
---|---|---|
ctfInfoModeWithAmplitudeContrast | 0x0f | コントラスト補正のモード |
extern void ctfWeightForCorrectionUsage(FILE* fpt); extern float ctfWeightForCorrection2D(ctfInfo* info, float X, float Y, long mode); extern float ctfWeightForCorrection(ctfInfo* info, float R, long mode); extern void lmolecularEnvelopeFileRead(FILE* fpt, molecularEnvelope* mol, int mode); extern void lmolecularEnvelopeFileWrite(FILE* fpt, molecularEnvelope* mol, int mode); extern void lmolecularEnvelopeResampling(molecularEnvelope* dst, molecularEnvelope* src, float dR, float RMax, int mode); extern float lmolecularEnvelopeDataGet(molecularEnvelope* src, float R, int mode); extern void ctfInfoRead(FILE* fpt, ctfInfo* ctf, char* pre, int mode); extern void ctfInfoWrite(FILE* fpt, ctfInfo ctf, char* pre, int mode);