add relaxis file to pass fail dataset converter
This commit is contained in:
parent
eb39967226
commit
a84154d92f
9 changed files with 169 additions and 14 deletions
86
src/rlxpassfail.cpp
Normal file
86
src/rlxpassfail.cpp
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
#include <iostream>
|
||||
#include <kisstype/spectra.h>
|
||||
#include <relaxisloader/relaxisloader.h>
|
||||
#include <eisgenerator/basicmath.h>
|
||||
#include <kisstype/type.h>
|
||||
#include <filesystem>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if(argc < 2)
|
||||
{
|
||||
std::cout<<"Usage: "<<argv[0]<<" RELAXIS_FILES...\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::filesystem::path outdir("./out");
|
||||
std::filesystem::create_directory(outdir);
|
||||
|
||||
for(int i = 1; i < argc; ++i)
|
||||
{
|
||||
const char* err;
|
||||
struct rlxfile* file = rlx_open_file(argv[i], &err);
|
||||
if(!file)
|
||||
{
|
||||
std::cerr<<"Could not load "<<argv[i]<<'\n';
|
||||
return 2;
|
||||
}
|
||||
|
||||
struct rlx_project **projects = rlx_get_projects(file, NULL);
|
||||
if(!projects)
|
||||
{
|
||||
std::cerr<<"Could not load projects\n";
|
||||
return 2;
|
||||
}
|
||||
|
||||
for(struct rlx_project **piter = projects; *piter; ++piter)
|
||||
{
|
||||
struct rlx_project *project = *piter;
|
||||
struct rlx_spectra **spectras = rlx_get_all_spectra(file, project);
|
||||
if(!spectras)
|
||||
{
|
||||
std::cerr<<"Could not load spectras in "<<argv[i]<<'\n';
|
||||
continue;
|
||||
}
|
||||
|
||||
for(struct rlx_spectra **siter = spectras; *siter; ++siter)
|
||||
{
|
||||
struct rlx_spectra *spectra = *siter;
|
||||
struct rlx_metadata *meta = rlx_metadata_get(spectra, rlx_metadata_get_key(RLX_FIELD_FREE_VARIABLE_ONE));
|
||||
|
||||
float* real;
|
||||
float* imag;
|
||||
float* omega;
|
||||
rlx_get_float_arrays(spectra, &real, &imag, &omega);
|
||||
std::vector<eis::DataPoint> data(spectra->length);
|
||||
for(size_t i = 0; i < spectra->length; ++i)
|
||||
{
|
||||
data[i].im = {real[i], imag[i]};
|
||||
data[i].omega = omega[i];
|
||||
}
|
||||
|
||||
data = eis::rescale(data, 50);
|
||||
|
||||
eis::Spectra eisSpectra(data, !meta || meta->value == 0 ? "Pass" : "Fail", argv[i]);
|
||||
size_t index = 0;
|
||||
std::filesystem::path filename;
|
||||
do
|
||||
{
|
||||
filename.assign("relaxisPassFail_");
|
||||
filename.concat(!meta || meta->value == 0 ? "Pass" : "Fail");
|
||||
filename.concat("_");
|
||||
filename.concat(std::to_string(index));
|
||||
filename.concat(".csv");
|
||||
++index;
|
||||
} while(std::filesystem::exists(outdir/filename));
|
||||
eisSpectra.saveToDisk(outdir/filename);
|
||||
++spectra;
|
||||
}
|
||||
rlx_spectra_free_array(spectras);
|
||||
}
|
||||
rlx_project_free_array(projects);
|
||||
rlx_close_file(file);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue