Program Listing for File run.h

Return to documentation for file (include/cpphots/run.h)

#ifndef CPPHOTS_RUN_H
#define CPPHOTS_RUN_H

#include <vector>
#include <string>
#include <utility>

#include "layer.h"
#include "network.h"
#include "classification.h"


namespace cpphots {

template<typename P>
Events process(P& processor, const Events& events, bool reset = true, bool skip_check = false) {

    if (reset) {
        processor.reset();
    }

    Events ret;
    for (const auto& ev : events) {
        auto rev = processor.process(ev, skip_check);
        if (rev != invalid_event)
            ret.push_back(rev);
    }

    return ret;

}

template<typename P>
std::vector<Events> process(P& processor, const std::vector<Events>& events, bool reset = true, bool skip_check = false) {

    std::vector<Events> ret;

    for (const auto& evts : events) {
        ret.push_back(process(processor, evts, reset, skip_check));
    }

    return ret;

}


template <typename TSC>
std::vector<TimeSurfaceType> generateTS(TSC& calculator, const Events& events, bool reset = true, bool skip_check = false) {

    if (reset) {
        calculator.reset();
    }

    std::vector<TimeSurfaceType> ret;

    for (const auto& ev : events) {
        auto [ts, good] = calculator.updateAndCompute(ev);
        if (good || skip_check) {
            ret.push_back(ts);
        }
    }

    return ret;

}

template <typename TSC>
std::vector<std::vector<TimeSurfaceType>> generateTS(TSC& calculator, const std::vector<Events>& events, bool reset = true, bool skip_check = false) {

    std::vector<std::vector<TimeSurfaceType>> ret;

    for (const auto& evts : events) {
        ret.push_back(generateTS(calculator, evts, reset, skip_check));
    }

    return ret;

}


Events train(Network& network, Events training_events, const ClustererSeedingType& seeding, bool skip_check = false);

std::vector<Events> train(Network& network, std::vector<Events> training_events, const ClustererSeedingType& seeding, bool use_all = true, bool skip_check = false);

}

#endif