Add relaxis file support
This commit is contained in:
82
src/relaxis.cpp
Normal file
82
src/relaxis.cpp
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#include <eisgenerator/translators.h>
|
||||||
|
#include <eisgenerator/eistype.h>
|
||||||
|
#include <relaxisloaderpp/relaxisloaderpp.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
if(argc < 2)
|
||||||
|
{
|
||||||
|
std::cerr<<"Usage: "<<(argc > 0 ? argv[0] : "NULL")<<" -o [OUTDIR] [FILE(s)]\n";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::filesystem::path outDir("./out");
|
||||||
|
|
||||||
|
std::set<int> ignoreArgs;
|
||||||
|
for(int arg = 1; arg < argc; ++arg)
|
||||||
|
{
|
||||||
|
if(std::string(argv[arg]) == "-o")
|
||||||
|
{
|
||||||
|
ignoreArgs.insert(arg);
|
||||||
|
if(arg+1 < argc)
|
||||||
|
{
|
||||||
|
outDir = argv[arg+1];
|
||||||
|
ignoreArgs.insert(arg+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!checkDir(outDir))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
int arg = 1;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for(; arg < argc; ++arg)
|
||||||
|
{
|
||||||
|
if(ignoreArgs.find(arg) != ignoreArgs.end())
|
||||||
|
continue;
|
||||||
|
rlx::File file(argv[arg]);
|
||||||
|
|
||||||
|
std::cout<<"Loaded "<<argv[arg]<<" file has "<<file.getProjectCount()<<" project(s)\n";
|
||||||
|
|
||||||
|
for(size_t i = 0; i < file.getProjectCount(); ++i)
|
||||||
|
{
|
||||||
|
rlx::Project project = file.getProject(i);
|
||||||
|
std::cout<<"Project "<<i<<" has "<<project.getSpectraCount()<<" spectra\n";
|
||||||
|
for(size_t j = 0; j < project.getSpectraCount(); ++j)
|
||||||
|
{
|
||||||
|
rlx::Spectra spectra = project.getSpectra(j);
|
||||||
|
if(!spectra.fitted)
|
||||||
|
{
|
||||||
|
std::cout<<"skipping spectra "<<spectra.id<<" as this spectra is not fitted\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(spectra.model.empty())
|
||||||
|
{
|
||||||
|
std::cout<<"skipping spectra "<<spectra.id<<" as this spectra has no model\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ModelData data;
|
||||||
|
data.data = spectra.data;
|
||||||
|
data.modelStr = spectra.model;
|
||||||
|
data.id = std::to_string(spectra.id);
|
||||||
|
saveData("relaxis", data, outDir, argv[arg]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(const eis::file_error& err)
|
||||||
|
{
|
||||||
|
std::cerr<<"error reading file "<<argv[arg]<<" librelaxisloaderpp: "<<err.what()<<std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user