Docs
Loading...
Searching...
No Matches
categorical_covariate_module.hpp
Go to the documentation of this file.
1#pragma once
2
7
10#include <numeric>
11
21
23protected:
28
29 const std::vector<double> prior_alpha;
30
32 const Data &data;
33
34 const Eigen::VectorXi categorical_covariate_data;
35
37
42
43 const double alpha_0 = std::accumulate(prior_alpha.begin(), prior_alpha.end(), 0.0);
44 const double lgamma_alpha_0 = std::lgamma(alpha_0);
45
46 double prod_lgamma_prior = 0;
47
49
50public:
60 const Data &data_, const Eigen::VectorXi categorical_covariate, std::vector<double> prior_alpha_,
61 const Eigen::VectorXi *old_alloc_provider = nullptr,
62 const std::unordered_map<int, std::vector<int>> *old_cluster_members_provider_ = nullptr)
63 : prior_alpha(prior_alpha_), data(data_), categorical_covariate_data(categorical_covariate),
64 Module(old_alloc_provider, old_cluster_members_provider_) {
65
66 for (const double &alpha : prior_alpha)
67 prod_lgamma_prior += std::lgamma(alpha);
68 }
69
73
84 double compute_similarity_cls(int cls_idx, bool old_allo = false) const override __attribute__((hot));
85
99 double compute_similarity_obs(int obs_idx, int cls_idx) const override __attribute__((hot));
100
110 Eigen::VectorXd compute_similarity_obs(int obs_idx) const override __attribute__((hot));
111
113};
Data structure for managing point distances and cluster allocations.
Base class for modules used in processes.
const std::vector< double > prior_alpha
Definition categorical_covariate_module.hpp:29
double prod_lgamma_prior
Definition categorical_covariate_module.hpp:46
const Data & data
Reference to data object with cluster assignments.
Definition categorical_covariate_module.hpp:32
const double alpha_0
Definition categorical_covariate_module.hpp:43
const double lgamma_alpha_0
Definition categorical_covariate_module.hpp:44
CategoricalCovariatesModule(const Data &data_, const Eigen::VectorXi categorical_covariate, std::vector< double > prior_alpha_, const Eigen::VectorXi *old_alloc_provider=nullptr, const std::unordered_map< int, std::vector< int > > *old_cluster_members_provider_=nullptr)
Constructor for CategoricalCovariatesModule.
Definition categorical_covariate_module.hpp:59
double compute_similarity_obs(int obs_idx, int cls_idx) const override __attribute__((hot))
Compute covariate similarity for a single observation in a cluster.
Definition categorical_covariate_module.cpp:46
const Eigen::VectorXi categorical_covariate_data
Definition categorical_covariate_module.hpp:34
double compute_similarity_cls(int cls_idx, bool old_allo=false) const override __attribute__((hot))
Compute covariate similarity contribution for a cluster.
Definition categorical_covariate_module.cpp:8
Manages distance matrices and cluster allocations for points.
Definition Data.hpp:26
Module(const Eigen::VectorXi *old_allocations_provider_=nullptr, const std::unordered_map< int, std::vector< int > > *old_cluster_members_provider_=nullptr)
Definition Module.hpp:33