Open bHimes opened 1 year ago
I think I have a lead. The problem is that CTF::Evaluate sometimes goes along the else path, indicating that low_resolution_contrast is not 0:
Indeed in the cases where console_test fails with gcc, low_resolution_contrast is: 9508134425120630156296192.000000
A naive inspection makes one think low_resolution_contrast should always be 0:
But the CTF constructor is heavily overloaded, and in many cases low_resolution_contrast
is never assigned a value. This is undefined behavior. ICPC and Clang seem to be good about setting it to 0.0 by defualt, but gcc apparently does not. Maybe the easiest fix is to assign low_resolution_contrast a value in the header? Apparently it is used in Refine2D, where low_resolution_contrast is set to 0.5, for reasons that I don't understand at the moment.
I think ensuring the default is set to zero is a good fix for now.
Looking over your clues, I think you are right. I very vaguely remember @timothygrant80 working on this to improve 2D classification prior to the intial cisTEM release.
It has voodoo hack written all over it.
If the tests are running okay, I would just add a note in the source, probably at the definition of low_resolution_contrast to the effect of
// ctf.h
.
.
.
float cubed_wavelength;
// Ensure default value is initialized. Only used in Refine2d a.t.m. See github issue #450 for discussion
// https://github.com/timothygrant80/cisTEM/issues/450
float low_resolution_contrast{0.f};
float squared_illumination_aperture;
float squared_energy_half_width;
public:
The console test for ctf nodes fails unpredictably. As discussed with @jojoelfe the final objective should be to fix the test rather than just loosening the test requirements.
An interim solution would be okay. I would suggest an option to add to any given console test that prints "SKIPPED" on a "FAIL" if it is a buggy test that requires further development. This is to be preferred to commenting out the test because it indicates the tested feature may be unreliable.
Further, suggest it be colored blue on the terminal.