/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: CorrelationProcess.cc * Author: hacene * * Created on September 27, 2021, 10:02 AM */ #include #include #include #include "DicError.hh" #include "AMDA_exception.hh" #include "Operation.hh" #include "ParameterManager.hh" #include "ParamMgr.hh" #include "ParameterCreatorFromExpression.hh" #include "CorrelationProcess.hh" #include "StatisticCorrelationCreator.hh" #include "CorrelationFunctions.hh" #include using namespace std; using namespace boost; using namespace log4cxx; namespace AMDA { namespace Parameters { CorrelationProcess::CorrelationProcess(Parameter ¶meter) : MultiParamProcess_CRTP(parameter) { _type = ""; } CorrelationProcess::CorrelationProcess(const CorrelationProcess& pProcess, Parameter ¶meter) : MultiParamProcess_CRTP(pProcess, parameter), _firstParamName(pProcess._firstParamName), _secondParamName(pProcess._secondParamName) { _type = ""; } CorrelationProcess::~CorrelationProcess() { } void CorrelationProcess::parse() { ParameterCreatorFromExpression creator(_parameter.getParameterManager()); ParameterSPtr lParameter = creator.getOneParameterFromExpression(_parameter,_expression, isUserProcess()); _paramNameList[lParameter->getId()].first = lParameter; _firstParamName = lParameter->getId(); lParameter = creator.getOneParameterFromExpression(_parameter,_attributList[0], isUserProcess()); _paramNameList[lParameter->getId()].first = lParameter; _secondParamName = lParameter->getId(); } void CorrelationProcess::establishConnection() { parse(); MultiParamProcess::establishConnection(); } TimeStamp CorrelationProcess::init() { _windowtime = atof(_attributList[1].c_str()); if(_type.empty() && _attributList.size() >=3) _type = _attributList[2]; TimeStamp timeStamp = MultiParamProcess::init(); ParamData* lfirstParamInput = _paramNameList[_firstParamName].first->getParamData(this).get(); ParamData* lSecondParamInput = _paramNameList[_secondParamName].first->getParamData(this).get(); StatisticCorrelationCreator lCreator(*this, _timeIntervalList, *lfirstParamInput, *lSecondParamInput, _windowtime, _type); _operation = lCreator.getOperation(); _paramData = ParamDataSPtr(_operation->getParamOutput()); _paramData->setMinSampling(lfirstParamInput->getMinSampling()); return timeStamp; } // Covariance CovarianceProcess::CovarianceProcess(Parameter& parameter):CorrelationProcess(parameter){ CorrelationProcess::_type = "covariance"; } CovarianceProcess::CovarianceProcess(const CorrelationProcess& pProcess, Parameter& parameter):CorrelationProcess(pProcess, parameter){ CorrelationProcess::_type = "covariance"; } CovarianceProcess::~CovarianceProcess(){ } // Pearson PearsonProcess::PearsonProcess(Parameter& parameter):CorrelationProcess(parameter){ CorrelationProcess::_type = "pearson"; } PearsonProcess::PearsonProcess(const CorrelationProcess& pProcess, Parameter& parameter):CorrelationProcess(pProcess, parameter){ CorrelationProcess::_type = "pearson"; } PearsonProcess::~PearsonProcess(){ } // Kendall KendallProcess::KendallProcess(Parameter& parameter):CorrelationProcess(parameter){ CorrelationProcess::_type = "kendall"; } KendallProcess::KendallProcess(const CorrelationProcess& pProcess, Parameter& parameter):CorrelationProcess(pProcess, parameter){ CorrelationProcess::_type = "kendall"; } KendallProcess::~KendallProcess(){ } // Spearman SpearmanProcess::SpearmanProcess(Parameter& parameter):CorrelationProcess(parameter){ CorrelationProcess::_type = "spearman"; } SpearmanProcess::SpearmanProcess(const CorrelationProcess& pProcess, Parameter& parameter):CorrelationProcess(pProcess, parameter){ CorrelationProcess::_type = "spearman"; } SpearmanProcess::~SpearmanProcess(){ } } }