Libs/Particles/ParticleShapeStatistics.h
Namespaces
| Name |
|---|
| shapeworks User usage reporting (telemetry) |
Classes
| Name | |
|---|---|
| class | shapeworks::ParticleShapeStatistics |
Source code
```cpp
pragma once
include
include
include
include "ParticleSystemEvaluation.h"
include "Shapeworks.h"
namespace shapeworks {
class Project;
class ParticleShapeStatistics {
public:
ParticleShapeStatistics(){};
explicit ParticleShapeStatistics(std::shared_ptr
int do_pca(std::vector
int do_pca(ParticleSystemEvaluation particleSystem, int domainsPerShape = 1);
int do_pca(std::shared_ptr
int import_points(std::vector
void compute_multi_level_analysis_statistics(std::vector
int compute_shape_dev_modes_for_mca();
int compute_relative_pose_modes_for_mca();
void set_num_particles_per_domain(const std::vector
int read_point_files(const std::string& s);
int write_csv_file(const std::string& s);
int compute_modes();
int get_num_modes() const;
int principal_component_projections();
Eigen::VectorXd project_new_sample(const Eigen::VectorXd& new_sample);
int get_num_samples() const { return num_samples_; } int get_group1_num_samples() const { return num_samples_group1_; } int get_group2_num_samples() const { return num_samples_group2_; }
int get_num_dimensions() const { return num_dimensions_; }
int get_domains_per_shape() { return domains_per_shape_; }
std::vector
int GroupID(unsigned int i) const { return group_ids_[i]; }
const std::vector
const Eigen::MatrixXd& get_eigen_vectors() const { return eigenvectors_; }
const std::vector
const Eigen::MatrixXd& get_eigenvectors_rel_pos() { return eigenvectors_rel_pose_; }
const std::vector
const Eigen::VectorXd& get_mean() const { return mean_; } const Eigen::VectorXd& get_group1_mean() const { return mean1_; } const Eigen::VectorXd& get_group2_mean() const { return mean2_; }
const Eigen::VectorXd& get_group_difference() const { return groupdiff_; }
int compute_median_shape(const int ID);
double l1_norm(unsigned int a, unsigned int b);
Eigen::MatrixXd& get_pca_loadings() { return principals_; }
const std::vector
static int simple_linear_regression(const std::vector
Eigen::VectorXd get_compactness(const std::function
Eigen::MatrixXd get_group1_matrix() const; Eigen::MatrixXd get_group2_matrix() const;
Eigen::MatrixXd& matrix() { return matrix_; };
void set_num_values_per_particle(int value_per_particle) { values_per_particle_ = value_per_particle; }
void set_particle_to_surface_mode(bool value) { particle_to_surface_mode_ = value; }
bool get_particle_to_surface_mode() const { return particle_to_surface_mode_; }
void set_meshes(const std::vector
void load_from_project(std::shared_ptr
private:
unsigned int num_samples_group1_;
unsigned int num_samples_group2_;
unsigned int num_samples_;
unsigned int domains_per_shape_ = 0;
unsigned int num_dimensions_;
std::vector
Eigen::MatrixXd eigenvectors_;
std::vector
std::vector
Eigen::VectorXd groupdiff_;
// Variables for MLCA
std::vector
Eigen::MatrixXd matrix_;
Eigen::MatrixXd group1_matrix_; Eigen::MatrixXd group2_matrix_;
std::vector
int values_per_particle_ = 3; // e.g. 3 for x/y/z, 4 for x/y/z/scalar
bool particle_to_surface_mode_ = false;
std::vector
} // namespace shapeworks ```
Updated on 2026-03-31 at 16:02:11 +0000