Skip to content

Libs/Analyze/Analyze.h

Namespaces

Name
shapeworks
User usage reporting (telemetry)

Classes

Name
class shapeworks::Analyze
High level analyze API.

Source code

#pragma once

#include <ParticleShapeStatistics.h>
#include <Project/Project.h>

#include "Shape.h"

namespace shapeworks {


class Analyze {
 public:

  enum AlignmentType {
    Global = -2,
    Local = -1,
  };


  Analyze(ProjectHandle project);

  void run_offline_analysis(std::string outfile, float range, float steps);

  ShapeList get_shapes();

  int get_num_subjects();

  int get_num_modes();

  int get_num_particles();

  Particles get_mean_shape_points();

  ShapeHandle get_mean_shape();

  Particles get_group_shape_particles(double ratio);
  ShapeHandle get_group_shape(double ratio);

  Particles get_shape_points(int mode, double value);
  ShapeHandle get_mode_shape(int mode, double value);

  bool groups_active() { return false; }

  ShapeHandle create_shape_from_points(Particles points);

  Eigen::VectorXd get_subject_features(int subject, std::string feature_name);

  void set_group_selection(std::string group_name, std::string group1, std::string group2);

  ParticleSystemEvaluation get_local_particle_system(int domain);

 private:
  bool update_shapes();
  bool compute_stats();

  void initialize_mesh_warper();

  Particles convert_from_combined(const Eigen::VectorXd& points);

  ProjectHandle project_;

  // collection of shapes
  ShapeList shapes_;

  ShapeList group1_list_;
  ShapeList group2_list_;

  std::shared_ptr<MeshManager> mesh_manager_;

  ParticleShapeStatistics stats_;
  bool stats_ready_ = false;

  std::string selected_group_;
  std::string group1_;
  std::string group2_;
};
}  // namespace shapeworks

Updated on 2024-03-17 at 12:58:44 -0600