Mods to support spectra file IO out of fortran#34
Conversation
|
This looks like a nice addition - thanks! |
* added separate swig interface file * build tweaks for successful linking to shared libraries
* Then you can run ctest in the same dir you build in * Also update version in unit_tests
The beauty of doctest is you just have to include one header file.
| //auto timesEqual = expectedM.start_time() == actualM.start_time(); | ||
| auto timeStr1 = SpecUtils::to_iso_string(expectedM.start_time() ); | ||
| auto timeStr2 = SpecUtils::to_iso_string(actualM.start_time() ); | ||
| CHECK( timeStr1 == timeStr2); |
There was a problem hiding this comment.
@wcjohns I think we lose some time precision when we write and read pcf files. My test is failing when comparing measurement start times.
1: /mnt/c/Projects/code/SpecUtils/unit_tests/test_spec_file.cpp:81: ERROR: CHECK( timeStr1 == timeStr2 ) is NOT correct!
1: values: CHECK( 20240812T164010.285502 == 20240812T164010.29 )
There was a problem hiding this comment.
That's correct - PCF files store time in VAX format (a 23 character string formatted like "19-Sep-2014 14:12:01.62"), so only to the 100th of a second.
SpecUtils normally tracks down to the microsecond (via using time_point_t = std::chrono::time_point<std::chrono::system_clock,std::chrono::microseconds>).
It looks like SpecUtils::to_vax_string(..) rounds to the nearest 0.01 seconds, so you could test:
auto timeStr1 = SpecUtils::to_vax_string( expectedM.start_time() );
auto timeStr2 = SpecUtils::to_vax_string( actualM.start_time() );
CHECK( timeStr1 == timeStr2);
Or something like:
CHECK( std::round(0.0001*expectedM.start_time().count()) == std::round(0.0001*actualM.start_time().count()) );
There was a problem hiding this comment.
Ok, thanks! I'll use to_vax_string to compare.
This is in respect to trying to fix macOS CI build: #34 (comment)
|
It looks like its libSpecUtils.a that is causing the issue; I'm not sure why delocate is trying to do its thing on a static library, I thought it essentially fixed up shared libraries. I just pushed 4e70828 and 4f0f402, which changes the main CMakeLists.txt file so none of the install stuff is called, if the build is not a top-level project. E.g., if a python build. |
Yeah I don't think we need to install stuff on a python build. |
|
@wcjohns How do I set or get the energy cal low energy field? |
|
Its the 5th entry in the energy calibration coefficient parameters. |
Thanks! |

No description provided.