From 04c5aab3e0554f4528a0637ea8da6fe5b5b7c5cb Mon Sep 17 00:00:00 2001 From: uvos Date: Fri, 25 Oct 2024 10:03:26 +0200 Subject: [PATCH] add matlab to eis converter --- src/matlabarraytoeis.cpp | 94 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/matlabarraytoeis.cpp diff --git a/src/matlabarraytoeis.cpp b/src/matlabarraytoeis.cpp new file mode 100644 index 0000000..916ffdc --- /dev/null +++ b/src/matlabarraytoeis.cpp @@ -0,0 +1,94 @@ +#include +#include +#include +#include + +#include "tokenize.h" + +bool saveData(const std::string& exportName, const eis::Spectra& spectra, const std::filesystem::path& outDir, const std::filesystem::path& originFile) +{ + std::filesystem::path filename; + size_t index = 0; + do + { + filename.assign(exportName); + filename.concat("_"); + filename.concat(std::to_string(index)); + filename.concat(".csv"); + ++index; + } while(std::filesystem::exists(outDir/filename)); + + try + { + eis::Spectra(data.data, data.modelStr, data.id + ", \"" + originFile.filename().string() + "\"").saveToDisk(outDir/filename); + return true; + } + catch(...) + { + return false; + } +} + +std::vector parseLine(const std::string& line) +{ + std::vector data; + std::vector tokens = tokenize(line, '\t'); + if(tokens.size() % 2 != 0) + throw std::invalid_argument("Line must have an even number of tokens"); + + for(size_t i = 0; i < tokens.size()/2; ++i) + data.push_back({std::stof(tokens[i]), std::stof(tokens[i+tokens.size()/2])}); + + return data; +} + +int main(int argc, char** argv) +{ + if(argc != 5) + { + std::cout<<"Usage: "< data = parseLine(eisLine); + eis::Spectra spectra (data, "Unkown", argv[2]); + spectra.addLabel(argv[1], std::stod(rul)); + + + } + catch(const std::invalid_argument& ex) + { + std::cout<