Skip to content

Libs/Optimize/Function/EarlyStop/MorphologicalDeviationScore.h

Namespaces

Name
shapeworks
User usage reporting (telemetry)

Classes

Name
class shapeworks::MorphologicalDeviationScore

Source code

```cpp

pragma once

include

include

namespace shapeworks { class MorphologicalDeviationScore { public: MorphologicalDeviationScore(); // Fit PPCA model on control shapes bool SetControlShapes(const Eigen::MatrixXd& X); // (n_samples x n_features) Eigen::VectorXd GetMorphoDevScore(const Eigen::MatrixXd& X); // (n,) Eigen::MatrixXd GetPCACoefficients(const Eigen::MatrixXd& X); // (n, rank) void SetRetainedVarianceRatio(double ratio) { if (ratio <= 0.0 || ratio > 1.0) { throw std::invalid_argument("retained_variance_ratio must be in the interval (0, 1]."); } retained_variance_ratio_ = ratio; } double GetRetainedVarianceRatio() const { return retained_variance_ratio_; }

private: bool is_fitted_ = false;

// Fitted model parameters Eigen::RowVectorXd mean_; // (1 x d) double noise_variance_ = 0.0; double retained_variance_ratio_ = 0.95;

// Full-rank basis and per-dimension precision weights for scoring Eigen::MatrixXd all_components_; // (d x rank) — all non-zero eigenvectors Eigen::VectorXd precision_weights_; // (rank,) — 1/lambda_i or 1/noise_variance

bool FitPPCA(const Eigen::MatrixXd& X); }; } // namespace shapeworks ```


Updated on 2026-03-31 at 16:02:11 +0000