Blame view

src/ExternLib/StatisticFunctions/CorrelationProcess.cc 5.12 KB
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
 * 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 <stdlib.h>
#include <string>

#include <boost/lexical_cast.hpp>

#include "DicError.hh"
#include "AMDA_exception.hh"

#include "Operation.hh"
#include "ParameterManager.hh"
#include "ParamMgr.hh"
#include "ParameterCreatorFromExpression.hh"
#include "CorrelationProcess.hh"
e6a241e7   Hacene SI HADJ MOHAND   structure ok
26
#include "StatisticCorrelationCreator.hh"
f5c74402   Hacene SI HADJ MOHAND   compilation ok
27
#include "CorrelationFunctions.hh"
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
28
29
#include <typeinfo>

8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
30
31
32
33
34
35
36
using namespace std;
using namespace boost;
using namespace log4cxx;

namespace AMDA {
    namespace Parameters {

403992c8   Hacene SI HADJ MOHAND   scalr ok tested
37
38
        CorrelationProcess::CorrelationProcess(Parameter &parameter) : SingleParamProcess_CRTP(parameter) {
            _type = "";
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
39
40
41
        }

        CorrelationProcess::CorrelationProcess(const CorrelationProcess& pProcess, Parameter &parameter) : SingleParamProcess_CRTP(pProcess, parameter) {
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
42
            _type = "";
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
43
44
45
46
47
48
49
50
51
52
        }

        CorrelationProcess::~CorrelationProcess() {
            if (_secondInputParam != nullptr)
                _secondInputParam->closeConnection(this);
        }

        void CorrelationProcess::establishConnection() {


403992c8   Hacene SI HADJ MOHAND   scalr ok tested
53
            if (_attributList.size() < 2) {
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
54
55
56
57
                BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_PROCESS_ERR) << AMDA::ex_msg(std::string("CorrelationProcess::parse require 3 attributes'")));
            }

            //Imf parameter
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
58
59
60
61
62
63
64
65
            ParameterCreatorFromExpression creator(_parameter.getParameterManager());
            std::string secondParamExpression;
            
            if(_attributList[0][0] == '$'  || _attributList[0][0] == '#')
                 secondParamExpression=_attributList[0];
            else
                secondParamExpression = "$" + _attributList[0];
            _secondInputParam = creator.getOneParameterFromExpression(_parameter,secondParamExpression ,true);
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
66
67
68
69
70
71
72
73
74
75
            if (_secondInputParam == nullptr) {
                BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_PROCESS_ERR) << AMDA::ex_msg(std::string("CorrelationProcess::parse cannot retrieve imf param")));
            }
            _secondInputParam->openConnection(this);

            SingleParamProcess::establishConnection();
        }

        TimeStamp CorrelationProcess::init() {
            _windowtime = atof(_attributList[1].c_str());
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
76
77
78
            
            if(_type.empty() && _attributList.size() >=3)
                _type =  _attributList[2];
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
79
80
81
82
83
84

            TimeStamp time = _parameterInput->init(this, _timeIntervalList);
            _paramInput = _parameterInput->getParamData(this).get();

            _secondInputParam->init(this, _timeIntervalList);
            ParamData* lSecondParamInput = _secondInputParam->getParamData(this).get();
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
85
86
87
88
89

            StatisticCorrelationCreator lCreator(*this, _timeIntervalList, *_paramInput, *lSecondParamInput, _secondInputParam, _windowtime, _type);
            _operation = lCreator.getOperation();
            _paramData = ParamDataSPtr(_operation->getParamOutput());
            _paramData->setMinSampling(_paramInput->getMinSampling());
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
90
91
            return time;
        }
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
        
// 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";
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
113
        }
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
114
115
116
117
118
        
        PearsonProcess::~PearsonProcess(){        
        }
        
    
f5c74402   Hacene SI HADJ MOHAND   compilation ok
119

403992c8   Hacene SI HADJ MOHAND   scalr ok tested
120
121
122
123
124
125
126
127
128
129
// 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(){        
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
130
        }
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
131
132
133
        
        // Spearman  
        SpearmanProcess::SpearmanProcess(Parameter& parameter):CorrelationProcess(parameter){
bf7793bf   Hacene SI HADJ MOHAND   correcting kendall
134
            CorrelationProcess::_type = "spearman";
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
135
136
137
        }
        
        SpearmanProcess::SpearmanProcess(const CorrelationProcess& pProcess, Parameter& parameter):CorrelationProcess(pProcess, parameter){
bf7793bf   Hacene SI HADJ MOHAND   correcting kendall
138
            CorrelationProcess::_type = "spearman";
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
139
140
141
142
143
        }
        
        SpearmanProcess::~SpearmanProcess(){        
        }
        
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
144
    }
403992c8   Hacene SI HADJ MOHAND   scalr ok tested
145
146
    
    
8dd4b7f3   Hacene SI HADJ MOHAND   setting up processé
147
}
403992c8   Hacene SI HADJ MOHAND   scalr ok tested