Studio/Job/ShapeScalarJob.h
Namespaces
| Name | 
|---|
| shapeworks  User usage reporting (telemetry)  | 
Classes
| Name | |
|---|---|
| class | shapeworks::ShapeScalarJob | 
Source code
#pragma once
#include <Data/Session.h>
#include <Job/Job.h>
#include <ParticleShapeStatistics.h>
#include <QPixmap>
namespace shapeworks {
class Project;
class ShapeScalarJob : public Job {
  Q_OBJECT
 public:
  enum class JobType { Find_Components, MSE_Plot, Predict };
  enum class Direction { To_Shape, To_Scalar };
  ShapeScalarJob(QSharedPointer<Session> session, QString target_feature, Eigen::MatrixXd target_particles,
                 JobType job_type);
  void run() override;
  QString name() override;
  QPixmap get_plot();
  void set_number_of_components(int num_components) { num_components_ = num_components; }
  void set_number_of_folds(int num_folds) { num_folds_ = num_folds; }
  void set_max_number_of_components(int num) { max_components_ = num; }
  Eigen::VectorXd get_prediction() { return prediction_; };
  static Eigen::VectorXd predict_scalars(QSharedPointer<Session> session, QString target_feature,
                                         Eigen::MatrixXd target_particles);
  static Eigen::VectorXd predict_shape(QSharedPointer<Session> session, QString target_feature,
                                       Eigen::MatrixXd target_particles);
  static void clear_model() { needs_clear_ = true; };
  void set_direction(Direction direction) { direction_ = direction; }
 private:
  void prep_data();
  void run_fit();
  void run_prediction();
  static Eigen::VectorXd predict(QSharedPointer<Session> session, QString target_feature,
                                 Eigen::MatrixXd target_particles, Direction direction);
  QSharedPointer<Session> session_;
  ParticleShapeStatistics stats_;
  QString target_feature_;
  QPixmap plot_;
  Eigen::MatrixXd all_particles_;
  Eigen::MatrixXd all_scalars_;
  Eigen::MatrixXd target_values_;
  Eigen::VectorXd prediction_;
  bool num_components_ = 3;
  int num_folds_ = 5;
  int max_components_ = 20;
  Direction direction_{Direction::To_Scalar};
  JobType job_type_;
  static std::atomic<bool> needs_clear_;
};
}  // namespace shapeworks
Updated on 2024-03-17 at 12:58:44 -0600