improve error handling and filtering
This commit is contained in:
@ -22,7 +22,7 @@ bool saveData(const std::string& exportName, const ModelData& data, const std::f
|
|||||||
++classIndex;
|
++classIndex;
|
||||||
} while(std::filesystem::exists(outDir/filename));
|
} while(std::filesystem::exists(outDir/filename));
|
||||||
|
|
||||||
if(!saveToDisk(data.data, outDir/filename, data.modelStr + ", " + data.id + ", \"" + std::string(originFile.filename()) + "\""))
|
if(!saveToDisk(eis::EisSpectra(data.data, data.modelStr, data.id + ", \"" + std::string(originFile.filename()) + "\""), outDir/filename))
|
||||||
{
|
{
|
||||||
std::cerr<<"Unable to save to "<<outDir/filename;
|
std::cerr<<"Unable to save to "<<outDir/filename;
|
||||||
return false;
|
return false;
|
||||||
|
116
src/relaxis.cpp
116
src/relaxis.cpp
@ -1,5 +1,7 @@
|
|||||||
|
#include <cmath>
|
||||||
#include <eisgenerator/translators.h>
|
#include <eisgenerator/translators.h>
|
||||||
#include <eisgenerator/eistype.h>
|
#include <eisgenerator/eistype.h>
|
||||||
|
#include <eisgenerator/model.h>
|
||||||
#include <relaxisloaderpp/relaxisloaderpp.h>
|
#include <relaxisloaderpp/relaxisloaderpp.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -40,50 +42,90 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
if(ignoreArgs.find(arg) != ignoreArgs.end())
|
if(ignoreArgs.find(arg) != ignoreArgs.end())
|
||||||
continue;
|
continue;
|
||||||
rlx::File file(argv[arg]);
|
|
||||||
|
|
||||||
std::cout<<"Loaded "<<argv[arg]<<" file has "<<file.getProjectCount()<<" project(s)\n";
|
try
|
||||||
|
|
||||||
for(size_t i = 0; i < file.getProjectCount(); ++i)
|
|
||||||
{
|
{
|
||||||
try
|
rlx::File file(argv[arg]);
|
||||||
{
|
std::cout<<"Loaded "<<argv[arg]<<" file has "<<file.getProjectCount()<<" project(s)\n";
|
||||||
rlx::Project project = file.getProject(i);
|
|
||||||
std::cout<<"Project "<<i<<" has "<<project.getSpectraCount()<<" spectra\n";
|
|
||||||
for(size_t j = 0; j < project.getSpectraCount(); ++j)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
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;
|
for(size_t i = 0; i < file.getProjectCount(); ++i)
|
||||||
data.data = spectra.data;
|
{
|
||||||
data.modelStr = spectra.model;
|
try
|
||||||
data.id = std::to_string(spectra.id);
|
{
|
||||||
saveData("relaxis", data, outDir, argv[arg]);
|
rlx::Project project = file.getProject(i);
|
||||||
}
|
std::cout<<"Project "<<i<<" has "<<project.getSpectraCount()<<" spectra\n";
|
||||||
catch(const eis::file_error& err)
|
for(size_t j = 0; j < project.getSpectraCount(); ++j)
|
||||||
{
|
{
|
||||||
std::cerr<<"error spectra " <<i<<" from file "<<argv[arg]<<" librelaxisloaderpp: "<<err.what()<<std::endl;
|
try
|
||||||
continue;
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout<<spectra.model<<'\n';
|
||||||
|
|
||||||
|
std::vector<fvalue> omega(spectra.data.size());
|
||||||
|
for(size_t i = 0; i < spectra.data.size(); ++i)
|
||||||
|
omega[i] = spectra.data[i].omega;
|
||||||
|
|
||||||
|
eis::Model model(spectra.model);
|
||||||
|
|
||||||
|
std::vector<eis::DataPoint> genData = model.executeSweep(omega);
|
||||||
|
|
||||||
|
fvalue dist = eisNyquistDistance(spectra.data, genData);
|
||||||
|
|
||||||
|
if(std::isnan(dist))
|
||||||
|
{
|
||||||
|
std::cout<<"skipping spectra "<<spectra.id<<" as this spectra dosent appear to be fitted correctly dist is NAN!\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if(std::isinf(dist) || dist > 2.0)
|
||||||
|
{
|
||||||
|
std::cout<<"skipping spectra "<<spectra.id<<" as this spectra dosent appear to be fitted correctly dist is too large\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout<<"spectra "<<dist<<" away from theoretical values\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
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 spectra " <<j<<" from file "<<argv[arg]<<" librelaxisloaderpp: "<<err.what()<<std::endl;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
catch(const eis::parse_errror& err)
|
||||||
|
{
|
||||||
|
std::cerr<<"error spectra " <<j<<" from file "<<argv[arg]<<' '<<err.what()<<std::endl;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch(const eis::file_error& err)
|
||||||
|
{
|
||||||
|
std::cerr<<"error reading file "<<argv[arg]<<" librelaxisloaderpp: "<<err.what()<<std::endl;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch(const eis::file_error& err)
|
}
|
||||||
{
|
catch(const eis::file_error& err)
|
||||||
std::cerr<<"error reading file "<<argv[arg]<<" librelaxisloaderpp: "<<err.what()<<std::endl;
|
{
|
||||||
continue;
|
std::cout<<"Cant load "<<argv[arg]<<' '<<err.what()<<std::endl;
|
||||||
}
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user