improve error handling and filtering
This commit is contained in:
		
							parent
							
								
									01b44309b7
								
							
						
					
					
						commit
						2d3fdc3cc1
					
				
					 2 changed files with 80 additions and 38 deletions
				
			
		| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue