Select Git revision
-
Carl Philipp Klemm authoredCarl Philipp Klemm authored
main.cpp 2.20 KiB
#include "eisnoise/eisnoise.h"
#include "eistype.h"
#include "log.h"
#include <eisgenerator/model.h>
#include <iostream>
#include <valarray>
#include <vector>
#include <sciplot/sciplot.hpp>
#include <random>
#include <eisgenerator/basicmath.h>
int main(int argc, char** argv)
{
if(argc < 2)
{
if(argc)
std::cerr<<"Usage: "<<argv[0]<<" [MODEL_STR]\n";
return 1;
}
eis::Model model(argv[1], 100, true);
eis::Range omega(1, 1e6, 50, true);
eis::Log::level = eis::Log::DEBUG;
std::vector<size_t> recommendedIndecies = model.getRecommendedParamIndices(omega, 0.01, true);
EisNoise noise(0.2);
std::random_device rd;
std::mt19937_64 gen(rd());
std::uniform_int_distribution<size_t> distrib(0, recommendedIndecies.size()-1);
/*std::vector<std::string> names = noise.getAvailable();
for(const std::string& name : names)
std::cout<<name<<'\n';*/
sciplot::Plot2D plot;
plot.xlabel("Re");
plot.ylabel("Im");
double xmin = std::numeric_limits<double>::max();
double xmax = std::numeric_limits<double>::min();
double ymin = std::numeric_limits<double>::max();
double ymax = std::numeric_limits<double>::min();
for(size_t i = 0; i < 100; ++i)
{
size_t index = distrib(gen);
std::vector<eis::DataPoint> data = model.executeSweep(omega, recommendedIndecies[index]);
noise.add(data);
std::pair<std::valarray<fvalue>, std::valarray<fvalue>> arrays = eis::eisToValarrays(data);
double cxmin = arrays.first.min();
cxmin = cxmin - std::abs(cxmin*0.05);
double cymin = arrays.second.min();
cymin = cymin - std::abs(cymin*0.05);
double cxmax = arrays.first.max();
cxmax = cxmax - std::abs(cxmax*0.05);
double cymax = arrays.second.max();
cymax = cymax - std::abs(cymax*0.05);
if(xmax < cxmax)
xmax = cxmax;
if(ymax < cymax)
ymax = cymax;
if(xmin > cxmin)
xmin = cxmin;
if(ymin > cymin)
ymin = cymin;
plot.xrange(xmin, xmax);
plot.yrange(ymin, ymax);
plot.drawCurve(arrays.first, arrays.second);
eis::EisSpectra(data, model.getModelStrWithParam(index), "").saveToStream(std::cout);
std::cout<<eis::nonConstantScore(data)<<'\n';
}
plot.legend().hide();
sciplot::Figure fig({{plot}});
sciplot::Canvas canvas({{fig}});
canvas.size(1280, 720);
canvas.show();
return 0;
}