321 void read(
const FileName &fn,
bool disable_if_not_K =
true);
332 void readFromMetadataRow(
const MetaData &MD,
size_t id,
bool disable_if_not_K=
true);
335 void readFromMdRow(
const MDRow &row,
bool disable_if_not_K=
true);
338 void setRow(
MDRow &row)
const;
373 void produceSideInfo();
379 precomputed.
u2 = X * X;
380 precomputed.
u =
sqrt(precomputed.
u2);
381 precomputed.
u3 = precomputed.
u2 * precomputed.
u;
382 precomputed.
u4 = precomputed.
u2 * precomputed.
u2;
398 precomputed.
deltaf= Defocus;
409 precomputed=precomputedImage[i+precomputedImageXdim];
410 if (precomputed.
deltaf==-1)
412 precomputed.
deltaf= Defocus;
419 double pure_CTF = enable_CTF ? getValuePureAt(show) : 0;
420 return enable_CTFnoise ?
sqrt(pure_CTF*pure_CTF + getValueNoiseAt(show)) : pure_CTF;
426 double Eespr = exp(-K3 * precomputed.
u4);
427 double EdeltaF =
bessj0(K5 * precomputed.
u2);
428 double EdeltaR =
SINC(precomputed.
u * DeltaR);
429 double aux=K7 * precomputed.
u2 * precomputed.
u + precomputed.
deltaf * precomputed.
u;
430 double Ealpha = exp(-K6 * aux * aux);
431 double E = Eespr * EdeltaF * EdeltaR * Ealpha+envR0+envR1*precomputed.
u+envR2*precomputed.
u2;
436 std::cout <<
" Deltaf=" << precomputed.
deltaf << std::endl;
437 std::cout <<
" u,u2,u4=" << precomputed.
u <<
" " << precomputed.
u2 438 <<
" " << precomputed.
u4 << std::endl;
439 std::cout <<
" K3,Eespr=" << K3 <<
" " << Eespr << std::endl;
440 std::cout <<
" K4,Eispr=" << K4 <<
" " << std::endl;
441 std::cout <<
" K5,EdeltaF=" << K5 <<
" " << EdeltaF << std::endl;
442 std::cout <<
" EdeltaR=" << EdeltaR << std::endl;
443 std::cout <<
" K6,K7,Ealpha=" << K6 <<
" " << K7 <<
" " << Ealpha
445 std::cout <<
" Total atenuation(E)= " << E << std::endl;
446 std::cout <<
" CTFdamp=" << E << std::endl;
455 double check_VPP =
round(VPP_radius*1000);
457 VPP = -phase_shift*(1-exp(-precomputed.
u2/(2*pow(VPP_radius,2.0))));
460 double argument = VPP + K1 * precomputed.
deltaf * precomputed.
u2 + K2 *precomputed.
u4;
464 sine_part = sin(argument);
465 cosine_part = cos(argument);
466 double Eespr = exp(-K3 * precomputed.
u4);
468 double EdeltaF =
bessj0(K5 * precomputed.
u2);
469 double EdeltaR =
SINC(precomputed.
u * DeltaR);
470 double aux=(K7 * precomputed.
u2 * precomputed.
u + precomputed.
deltaf * precomputed.
u);
471 double Ealpha = exp(-K6 * aux * aux);
473 double E = Eespr * EdeltaF * EdeltaR * Ealpha + envR0+envR1*precomputed.
u+envR2*precomputed.
u2;
479 std::cout <<
" Deltaf=" << precomputed.
deltaf << std::endl;
480 std::cout <<
" u,u2,u4=" << precomputed.
u <<
" " << precomputed.
u2 481 <<
" " << precomputed.
u4 << std::endl;
482 std::cout <<
" K1,K2,argument=" << K1 <<
" " << K2 <<
" " << argument << std::endl;
483 std::cout <<
" K3,Eespr=" << K3 <<
" " << Eespr << std::endl;
485 std::cout <<
" K5,EdeltaF=" << K5 <<
" " << EdeltaF << std::endl;
486 std::cout <<
" EdeltaR=" << EdeltaR << std::endl;
487 std::cout <<
" K6,K7,Ealpha=" << K6 <<
" " << K7 <<
" " << Ealpha
489 std::cout <<
" Total atenuation(E)= " << E << std::endl;
490 std::cout <<
" K,Q0,base_line=" << K <<
"," << Q0 <<
"," << base_line << std::endl;
491 std::cout <<
" VPP=" << VPP <<
" VPPRadius=" << VPP_radius <<
" phase shift=" << phase_shift << std::endl;
493 << -K*(Ksin*sine_part - Kcos*cosine_part)*E << std::endl;
495 return -K*(Ksin*sine_part - Kcos*cosine_part)*E;
501 return K*getValuePureAt();
509 double sigmaG1 = sigma1;
512 double sigmaG2 = sigma2;
517 <<
" sq=" << sq <<
"\n" 518 <<
" c=" << c <<
"\n" 519 <<
" sigma=" << sigmaG1 <<
"\n" 520 <<
" c2=" << c2 <<
"\n" 521 <<
" sigma2=" << sigmaG2 <<
"\n" 522 <<
" gaussian_K=" << gaussian_K <<
"\n" 523 <<
" sqrt_K=" << sqrt_K <<
"\n" 524 <<
" base_line=" << base_line <<
"\n";
525 std::cout <<
" u=" << precomputed.
u <<
"u_sqrt=" << precomputed.
u_sqrt <<
") CTFnoise=" 527 gaussian_K*exp(-sigmaG1*(precomputed.
u - c)*(precomputed.
u - c)) +
528 sqrt_K*exp(-sq*
sqrt(precomputed.
u)) -
529 gaussian_K2*exp(-sigmaG2*(precomputed.
u - c2)*(precomputed.
u - c2)) << std::endl;
532 double aux=precomputed.
u -
c;
533 double aux2=precomputed.
u - c2;
535 gaussian_K*exp(-sigmaG1*aux*aux) +
536 sqrt_K*exp(-sq*precomputed.
u_sqrt) -
537 gaussian_K2*exp(-sigmaG2*aux2*aux2)+
538 bgR1*precomputed.
u+bgR2*precomputed.
u2+bgR3*precomputed.
u3;
545 double check_VPP =
round(VPP_radius*1000);
547 VPP = -phase_shift*(1-exp(-precomputed.
u2/(2*pow(VPP_radius,2.0))));
550 double argument = VPP + K1 * precomputed.
deltaf * precomputed.
u2 + K2 * precomputed.
u4;
554 sine_part = sin(argument);
555 cosine_part = cos(argument);
559 std::cout <<
" Deltaf=" << precomputed.
deltaf << std::endl;
560 std::cout <<
" u,u2,u4=" << precomputed.
u <<
" " << precomputed.
u2 561 <<
" " << precomputed.
u4 << std::endl;
562 std::cout <<
" K1,K2,sin=" << K1 <<
" " << K2 <<
" " 564 std::cout <<
" Q0=" << Q0 << std::endl;
565 std::cout <<
" VPP=" << VPP << std::endl;
566 std::cout <<
" CTF without damping=" 567 << -(Ksin*sine_part - Kcos*cosine_part) << std::endl;
569 return -(Ksin*sine_part - Kcos*cosine_part);
577 double check_VPP =
round(VPP_radius*1000);
579 VPP = -phase_shift*(1-exp(-u2/(2*pow(VPP_radius,2.0))));
582 double argument = VPP + K1 * deltaf * u2 + K2 *
u4;
584 sine_part = sin(argument);
585 cosine_part = cos(argument);
586 double Eespr = exp(-K3 * u4);
588 double EdeltaF =
bessj0(K5 * u2);
589 double EdeltaR =
sinc(u * DeltaR);
590 double Ealpha = exp(-K6 * (K7 * u2 * u + deltaf * u) * (K7 * u2 * u + deltaf * u));
592 E = Eespr * EdeltaF * EdeltaR * Ealpha+envR0+envR1*precomputed.
u+envR2*precomputed.
u2;
597 std::cout <<
" Deltaf=" << deltaf << std::endl;
598 std::cout <<
" u,u2,u4=" << u <<
" " << u2 <<
" " << u4 << std::endl;
599 std::cout <<
" K1,K2,sin=" << K1 <<
" " << K2 <<
" " 600 << sine_part << std::endl;
601 std::cout <<
" K3,Eespr=" << K3 <<
" " << Eespr << std::endl;
603 std::cout <<
" K5,EdeltaF=" << K5 <<
" " << EdeltaF << std::endl;
604 std::cout <<
" EdeltaR=" << EdeltaR << std::endl;
605 std::cout <<
" K6,K7,Ealpha=" << K6 <<
" " << K7 <<
" " << Ealpha
607 std::cout <<
" Total atenuation(E)= " << E << std::endl;
608 std::cout <<
" K,Q0,base_line=" << K <<
"," << Q0 <<
"," << base_line << std::endl;
617 double sine_part = 0;
618 double cosine_part = 0;
620 getSineAndCosineParts(sine_part, cosine_part, E, u2, deltaf, show);
623 std::cout <<
" (X)=(" << X <<
") CTF=" 624 << -K*(Ksin*sine_part - Kcos*cosine_part)*E + base_line << std::endl;
626 return -K*(Ksin*sine_part - Kcos*cosine_part)*E;
649 template <
class T1,
class T2>
652 if (
ZSIZE(sample_image) > 1 )
654 generateCTF(
YSIZE(sample_image),
XSIZE(sample_image), CTF, Ts);
682 std::cout <<
"CTF:\n" << *
this << std::endl;
692 double iTs = initCTF(Ydim, Xdim, CTF, Ts);
693 for (
int i=0;
i<Ydim; ++
i)
698 for (
int j=0;
j<Xdim; ++
j)
703 precomputeValues(fx);
707 std::cout <<
i <<
" " <<
j <<
" " <<
YY(freq) <<
" " <<
XX(freq)
708 <<
" " <<
CTF(
i,
j) << std::endl;
718 double iTs = initCTF(Ydim, Xdim, CTF, Ts=-1);
719 for (
int i=0;
i<Ydim; ++
i)
724 for (
int j=0;
j<Xdim; ++
j)
729 precomputeValues(fx);
730 A2D_ELEM(CTF,
i,
j) = (T) getValuePureWithoutDampingAt();
733 std::cout <<
i <<
" " <<
j <<
" " <<
YY(freq) <<
" " <<
XX(freq)
734 <<
" " <<
CTF(
i,
j) << std::endl;
744 bool hasPhysicalMeaning();
747 void forcePhysicalMeaning();
760 double maxFreq=0.25);
906 DeltafU = DeltafV = copy.
Defocus;
913 cU2 = cV2 = copy.
Gc2;
917 sigmaU = sigmaV = copy.
sigma1;
918 sigmaU2 = sigmaV2 = copy.
sigma2;
949 void read(
const FileName &fn,
bool disable_if_not_K =
true);
959 void readFromMetadataRow(
const MetaData &MD,
size_t id,
bool disable_if_not_K=
true);
962 void readFromMdRow(
const MDRow &row,
bool disable_if_not_K=
true);
965 void setRow(
MDRow &row)
const;
999 void produceSideInfo();
1004 precomputed.ang=atan2(Y, X);
1005 precomputed.u2 = X * X + Y * Y;
1006 precomputed.u =
sqrt(precomputed.u2);
1007 precomputed.u3 = precomputed.u2 * precomputed.u;
1008 precomputed.u4 = precomputed.u2 * precomputed.u2;
1009 precomputed.u_sqrt =
sqrt(precomputed.u);
1013 precomputed.deltaf=0;
1016 double ellipsoid_ang = precomputed.ang - rad_azimuth;
1025 double cos_ellipsoid_ang_2 = cos(2*ellipsoid_ang);
1026 precomputed.deltaf= (defocus_average + defocus_deviation*cos_ellipsoid_ang_2);
1038 precomputed=precomputedImage[i*precomputedImageXdim+
j];
1040 if (precomputed.deltaf==-1)
1042 double ellipsoid_ang = precomputed.ang - rad_azimuth;
1043 double cos_ellipsoid_ang_2 = cos(2*ellipsoid_ang);
1044 precomputed.deltaf= (defocus_average + defocus_deviation*cos_ellipsoid_ang_2);
1052 double pure_CTF = enable_CTF ? getValuePureAt(show) : 0;
1053 return enable_CTFnoise ?
sqrt(pure_CTF*pure_CTF + getValueNoiseAt(show)) : pure_CTF;
1059 return K1 * precomputed.deltaf * precomputed.u2 + K2 * precomputed.u4;
1065 return K1 * precomputed.deltaf * precomputed.u2 + K2 *precomputed.u4;
1071 double u2 = X * X + Y * Y;
1073 double deltaf = getDeltafNoPrecomputed(X, Y);
1074 double sine_part = 0;
1075 double cosine_part = 0;
1077 getSineAndCosineParts(sine_part, cosine_part, E, u2, deltaf, show);
1080 std::cout <<
" (X,Y)=(" << X <<
"," << Y <<
") CTF=" 1081 << -
K*(Ksin*sine_part - Kcos*cosine_part)*E + base_line << std::endl;
1083 return -
K*(Ksin*sine_part - Kcos*cosine_part)*E;
1089 double u2 = X * X + Y * Y;
1091 double u4 = u2 *
u2;
1092 double deltaf = getDeltafNoPrecomputed(X, Y);
1094 double check_VPP =
round(VPP_radius*1000);
1096 VPP = -phase_shift*(1-exp(-u2/(2*pow(VPP_radius,2.0))));
1099 double argument = VPP + K1 * deltaf * u2 + K2 *
u4;
1103 sine_part = sin(argument);
1104 cosine_part = cos(argument);
1105 return -(Ksin*sine_part - Kcos*cosine_part);
1114 double ellipsoid_ang = atan2(Y, X) - rad_azimuth;
1115 double cos_ellipsoid_ang_2 = cos(2*ellipsoid_ang);
1116 return(defocus_average + defocus_deviation*cos_ellipsoid_ang_2);
1123 double ellipsoid_ang = precomputed.ang - rad_gaussian;
1124 double ellipsoid_ang2 = precomputed.ang - rad_gaussian2;
1125 double ellipsoid_sqrt_ang = precomputed.ang - rad_sqrt;
1126 double cos_sqrt_ang = cos(ellipsoid_sqrt_ang);
1127 double cos_sqrt_ang_2 = cos_sqrt_ang*cos_sqrt_ang;
1128 double sin_sqrt_ang_2 = 1.0-cos_sqrt_ang_2;
1129 double sq =
sqrt(sqU * sqU * cos_sqrt_ang_2 + sqV * sqV * sin_sqrt_ang_2);
1131 double cos_ang = cos(ellipsoid_ang);
1132 double cos_ang_2 = cos_ang*cos_ang;
1133 double sin_ang_2 = 1.0-cos_ang_2;
1134 double c =
sqrt(cU * cU * cos_ang_2 + cV * cV * sin_ang_2);
1135 double sigma =
sqrt(sigmaU * sigmaU * cos_ang_2 + sigmaV * sigmaV * sin_ang_2);
1137 double cos_ang2 = cos(ellipsoid_ang2);
1138 double cos_ang2_2 = cos_ang2*cos_ang2;
1139 double sin_ang2_2 = 1.0-cos_ang2_2;
1140 double c2 =
sqrt(cU2 * cU2 * cos_ang2_2 + cV2 * cV2 * sin_ang2_2);
1141 double sigma2 =
sqrt(sigmaU2 * sigmaU2 * cos_ang2_2 + sigmaV2 * sigmaV2 * sin_ang2_2);
1145 std::cout <<
" ellipsoid_ang=" <<
RAD2DEG(ellipsoid_ang) << std::endl
1146 <<
" ellipsoid_sqrt_ang=" <<
RAD2DEG(ellipsoid_sqrt_ang) << std::endl
1147 <<
" sq=" << sq <<
"\n" 1148 <<
" c=" << c <<
"\n" 1149 <<
" sigma=" << sigma <<
"\n" 1150 <<
" ellipsoid_ang2=" <<
RAD2DEG(ellipsoid_ang2) << std::endl
1151 <<
" cU2=" << cU2 <<
" cV2=" << cV2 <<
"\n" 1152 <<
" cos_ang2=" << cos_ang2 <<
" sin_ang2_2=" << sin_ang2_2 <<
"\n" 1153 <<
" c2=" << c2 <<
"\n" 1154 <<
" sigmaU2=" << sigma2 <<
"\n" 1155 <<
" gaussian_K=" << gaussian_K <<
"\n" 1156 <<
" sqrt_K=" << sqrt_K <<
"\n" 1157 <<
" base_line=" << base_line <<
"\n";
1158 std::cout <<
" u=" << precomputed.u <<
"u_sqrt=" << precomputed.u_sqrt <<
") CTFnoise=" 1160 gaussian_K*exp(-sigma*(precomputed.u - c)*(precomputed.u - c)) +
1161 sqrt_K*exp(-sq*
sqrt(precomputed.u)) -
1162 gaussian_K2*exp(-sigma2*(precomputed.u - c2)*(precomputed.u - c2)) << std::endl;
1165 double aux=precomputed.u -
c;
1166 double aux2=precomputed.u - c2;
1168 gaussian_K*exp(-sigma*aux*aux) +
1169 sqrt_K*exp(-sq*precomputed.u_sqrt) -
1170 gaussian_K2*exp(-sigma2*aux2*aux2)+
1171 bgR1*precomputed.u+bgR2*precomputed.u2+bgR3*precomputed.u3;
1193 template <
class T1,
class T2>
1196 if (
ZSIZE(sample_image) > 1 )
1198 generateCTF(
YSIZE(sample_image),
XSIZE(sample_image), CTF, Ts);
1221 double iTs = initCTF(Ydim, Xdim, CTF, Ts);
1222 for (
int i=0;
i<Ydim; ++
i)
1227 for (
int j=0;
j<Xdim; ++
j)
1232 precomputeValues(fx, fy);
1236 std::cout <<
i <<
" " <<
j <<
" " << fy <<
" " << fx
1237 <<
" " <<
CTF(
i,
j) << std::endl;
1247 double iTs = initCTF(Ydim, Xdim, CTF, Ts);
1248 for (
int i=0;
i<Ydim; ++
i)
1253 for (
int j=0;
j<Xdim; ++
j)
1258 precomputeValues(fx, fy);
1259 A2D_ELEM(CTF,
i,
j) = (T) getValuePureWithoutDampingAt();
1262 std::cout <<
i <<
" " <<
j <<
" " <<
YY(freq) <<
" " <<
XX(freq)
1263 <<
" " <<
CTF(
i,
j) << std::endl;
1273 double iTs = initCTF(Ydim, Xdim, CTF, Ts);
1274 for (
int i=0;
i<Ydim; ++
i)
1279 for (
int j=0;
j<Xdim; ++
j)
1284 precomputeValues(fx, fy);
1285 A2D_ELEM(CTF,
i,
j) = (T) -getValueDampingAt();
1288 std::cout <<
i <<
" " <<
j <<
" " <<
YY(freq) <<
" " <<
XX(freq)
1289 <<
" " <<
CTF(
i,
j) << std::endl;
1298 bool hasPhysicalMeaning();
1301 void forcePhysicalMeaning();
double sigmaU
Spherical aberration (in milimeters). Typical value 5.6.
bool containsCTFBasicLabels(const MetaData &md)
void groupCTFMetaData(const MetaDataDb &imgMd, MetaDataDb &ctfMd, std::vector< MDLabel > &groupbyLabels)
#define A2D_ELEM(v, i, j)
const MDLabel CTF_ALL_LABELS[]
void generateEnvelope(int Ydim, int Xdim, MultidimArray< T > &CTF, double Ts=-1)
double getDeltafNoPrecomputed(double X, double Y) const
Deltaf at a given direction.
void write(std::ostream &os, const datablock &db)
double gaussian_angle2
Second Gaussian angle.
#define REPORT_ERROR(nerr, ErrormMsg)
double getValueAt(bool show=false) const
Compute CTF at (U,V). Continuous frequencies.
void resizeNoCopy(const MultidimArray< T1 > &v)
void precomputeValues(double X)
Precompute values for a given frequency.
void precomputeValues(int i)
Precompute values for a given frequency.
void sqrt(Image< double > &op)
void generatePSDCTFImage(MultidimArray< double > &img, const MetaData &MD)
CTFDescription(CTFDescription1D copy)
double DeltafV
Defocus in V (in Angstroms). Negative values are underfocused.
void generateCTFWithoutDamping(int Ydim, int Xdim, MultidimArray< T > &CTF, double Ts=-1)
double cU2
Second Gaussian center for U.
double cU
Gaussian center for U.
void changeSamplingRate(double newTm)
double getValueNoiseAt(bool show=false) const
Compute noise at (X,Y). Continuous frequencies, notice it is squared.
double gaussian_K
Gain for the gaussian term.
double errorMaxFreqCTFs2D(MetaData &MD1, MetaData &MD2, size_t xDim=256, double phaseRad=HALFPI)
std::ostream & operator<<(std::ostream &os, const Message &sb)
const MDLabel CTF_BASIC_LABELS[]
double DeltaF
Longitudinal mechanical displacement (ansgtrom). Typical value 100.
double sqrt_angle
Sqrt angle.
double getValuePureNoDampingNoPrecomputedAt(double X, double Y) const
Compute CTF pure at (U,V). Continuous frequencies.
double DeltafU
Global gain. By default, 1.
bool enable_CTF
Enable CTF part.
double azimuthal_angle
Azimuthal angle (between X and U) in degrees.
double Gc2
Second Gaussian center.
double sigma2
Second Gaussian width.
const int CTF_BASIC_LABELS_SIZE
double getValueArgument(bool show=false) const
Compute pure CTF without damping at (U,V). Continuous frequencies.
double base_line
Global base_line.
double sqU
Gain for the square root term.
double Gc1
Gaussian center.
void generateCTFImageWith2CTFs(const MetaData &MD1, const MetaData &MD2, int Xdim, MultidimArray< double > &imgOut)
double getValueAt(bool show=false) const
Compute CTF at (U,V). Continuous frequencies.
void generateCTF(const MultidimArray< T1 > &sample_image, MultidimArray< T2 > &CTF, double Ts=-1)
double gaussian_K2
Gain for the second Gaussian term.
double getValueNoiseAt(bool show=false) const
Compute noise at (X,Y). Continuous frequencies, notice it is squared.
double getValuePureNoPrecomputedAt(double X, bool show=false) const
Compute CTF pure at (U,V). Continuous frequencies.
#define XMIPP_EQUAL_ACCURACY
double errorBetween2CTFs(MetaData &MD1, MetaData &MD2, size_t dim, double minFreq=0.05, double maxFreq=0.25)
const int CTF_ALL_LABELS_SIZE
double ispr
Objective lens stability (deltaI/I) (ppm). Typical value 1.
double Tm
Sampling rate (A/pixel)
double getValuePureNoPrecomputedAtxy(double X, double Y, bool show=false) const
Compute CTF pure at (U,V). Continuous frequencies.
void precomputeValues(double X, double Y)
Precompute values for a given frequency.
double getValueDampingAt(bool show=false) const
Compute CTF damping at (U,V). Continuous frequencies.
double Cs
Spherical aberration (in milimeters). Typical value 5.6.
double DeltaR
Transversal mechanical displacement (ansgtrom). Typical value 3.
double sigmaV
Gaussian width V.
double getValuePureWithoutDampingAt(bool show=false) const
Compute pure CTF without damping at (U,V). Continuous frequencies.
__device__ float FFT_IDX2DIGFREQ(int idx, int size)
double errorMaxFreqCTFs(MetaData &MD1, double phaseRad=HALFPI)
double getValuePureNoKAt() const
Compute CTF pure at (U,V). Continuous frequencies.
double Defocus
Defocus (in Angstroms). Negative values are underfocused.
void changeSamplingRate(double newTm)
void generateCTF(const MultidimArray< T1 > &sample_image, MultidimArray< T2 > &CTF, double Ts=-1)
double K
Global gain. By default, 1.
double gaussian_angle
Gaussian angle.
double initCTF(int Ydim, int Xdim, MultidimArray< T > &CTF, double Ts=-1) const
Function to initialize CTF to avoid duplicated code.
void generateCTF(int Ydim, int Xdim, MultidimArray< T > &CTF, double Ts=-1)
Generate CTF image.
void generateCTF(int Ydim, int Xdim, MultidimArray< T > &CTF, double Ts=-1)
Generate CTF image.
bool isLocalCTF
Local CTF determination.
std::vector< PrecomputedForCTF > precomputedImage
double Ca
Chromatic aberration (in milimeters). Typical value 2.
double alpha
Convergence cone semiangle (in mrad). Typical value 0.5.
void getSineAndCosineParts(double &sine_part, double &cosine_part, double E, double u2, double deltaf, bool show) const
double y0
In the case of local CTF determination x0,xF,y0,yF determines the region where the CTF is determined...
double Q0
Factor for the importance of the Amplitude contrast.
double x0
In the case of local CTF determination x0,xF,y0,yF determines the region where the CTF is determined...
Incorrect MultidimArray dimensions.
double kV
Accelerating Voltage (in KiloVolts)
double cV2
Second Gaussian center for V.
bool enable_CTFnoise
Enable CTFnoise part.
double xF
In the case of local CTF determination x0,xF,y0,yF determines the region where the CTF is determined...
file read(std::istream &is)
double getValuePureAt(bool show=false) const
Compute CTF pure at (U,V). Continuous frequencies.
double sigma1
Gaussian width.
double sqrt_K
Gain for the square root term.
PrecomputedForCTF precomputed
double yF
In the case of local CTF determination x0,xF,y0,yF determines the region where the CTF is determined...
double getPhaseAt() const
Get Phase of the CTF.
double sigmaU2
Second Gaussian width U.
void precomputeValues(int i, int j)
Precompute values for a given frequency.
double sigmaV2
Second Gaussian width V.
double cV
Gaussian center for V.
void generateCTFWithoutDamping(int Ydim, int Xdim, MultidimArray< T > &CTF, double Ts=-1)