-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mods to support spectra file IO out of fortran #34
base: master
Are you sure you want to change the base?
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.
unit_tests/test_spec_file.cpp
Outdated
//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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, thanks! I'll use to_vax_string
to compare.
Before if time rounded to 100 hundreths of a second, that would be printed, instead of incrementing things properly. For example "2014-Sep-19 23:59:59.996" would print "19-Sep-2014 23:59:59.100", when it should print "20-Sep-2014 00:00:00.00" - which it now does.
…ndings will build.
…an' into issue/31-spectra-io-out-of-fortran
This reverts commit 53b5039.
This reverts commit 160b5bd.
This reverts commit 1359228.
add option to turn on swig fortran wrapper generation
get mutable reference ecal and dev pairs
No description provided.