Libs/Optimize/Optimize.h
Namespaces
| Name |
|---|
| shapeworks User usage reporting (telemetry) |
Classes
| Name | |
|---|---|
| class | shapeworks::MatrixContainer |
| class | shapeworks::Optimize |
Source code
```cpp
pragma once
ifdef _WIN32
pragma warning(disable : 4996)
endif
// std
include
include
include
// itk
include
include
include
// shapeworks
include
include "Libs/Optimize/Domain/DomainType.h"
include "Libs/Optimize/Function/VectorFunction.h"
include "Libs/Optimize/Utils/OptimizationVisualizer.h"
include "ProcrustesRegistration.h"
include "Sampler.h"
include "EarlyStoppingConfig.h"
namespace shapeworks {
class Project; class ParticleGoodBadAssessment;
class MatrixContainer { public: Eigen::MatrixXd matrix_; };
class Optimize {
public:
using ImageType = itk::Image
Optimize();
virtual ~Optimize();
bool Run();
bool LoadParameterFile(std::string filename);
bool SetUpOptimize(ProjectHandle project);
void SetProject(std::shared_ptr
void SetIterationCallbackFunction(const std::function
void AbortOptimization();
bool GetAborted();
virtual std::vector
virtual std::vector
void SetCutPlanes(std::vector
void SetVerbosity(int verbosity_level);
void SetDomainsPerShape(int domains_per_shape); int GetDomainsPerShape();
void SetDomainType(shapeworks::DomainType type); shapeworks::DomainType GetDomainType();
void SetNumberOfParticles(std::vector
void SetTransformFile(std::string filename); std::string GetTransformFile();
void SetPrefixTransformFile(std::string prefix_transform_file); std::string GetPrefixTransformFile();
void SetOutputDir(std::string output_dir);
void SetOutputTransformFile(std::string output_transform_file);
void SetOutputIndividualTransformFiles(bool value);
void SetUseMeshBasedAttributes(bool use_mesh_based_attributes);
bool GetUseMeshBasedAttributes();
void SetUseXYZ(std::vector
void SetUseNormals(std::vector
void SetAttributesPerDomain(std::vector
void SetDistributionDomainID(int distribution_domain_id); int GetDistributionDomainID();
void SetOutputCuttingPlaneFile(std::string output_cutting_plane_file);
void SetUseCuttingPlanes(bool use_cutting_planes);
void SetCuttingPlane(unsigned int i, const vnl_vector_fixed
void SetMeshFFCMode(int mesh_ffc_mode) { m_mesh_ffc_mode = mesh_ffc_mode; m_sampler->SetMeshFFCMode(mesh_ffc_mode); } void SetTimePtsPerSubject(int time_pts_per_subject); int GetTimePtsPerSubject(); void SetOptimizationIterations(int optimization_iterations); void SetOptimizationIterationsCompleted(int optimization_iterations_completed); void SetIterationsPerSplit(int iterations_per_split); void SetUseShapeStatisticsInInit(bool use_shape_statistics_in_init); void SetProcrustesInterval(int procrustes_interval); void SetProcrustesScaling(bool procrustes_scaling); void SetProcrustesRotationTranslation(bool procrustes_rotation_translation); void SetRelativeWeighting(double relative_weighting); void SetInitialRelativeWeighting(double initial_relative_weighting); void SetStartingRegularization(double starting_regularization); void SetEndingRegularization(double ending_regularization); void SetRecomputeRegularizationInterval(int recompute_regularization_interval); void SetSaveInitSplits(bool save_init_splits); void SetCheckpointingInterval(int checkpointing_interval); void SetKeepCheckpoints(int keep_checkpoints);
void SetUseRegression(bool use_regression); void SetUseMixedEffects(bool use_mixed_effects);
void SetUseDisentangledSpatiotemporalSSM(bool use_disentangled_ssm_4d); bool GetUseDisentangledSpatiotemporalSSM();
void SetNormalAngle(double normal_angle); void SetPerformGoodBad(bool perform_good_bad); void SetLogEnergy(bool log_energy);
void AddImage(ImageType::Pointer image, std::string name = "");
void AddMesh(vtkSmartPointer
void SetFilenames(const std::vector
void SetInitialPoints(std::vector
int GetNumShapes();
void SetAttributeScales(const std::vector
void SetFieldAttributes(const std::vector
void SetParticleFlags(std::vector
void SetProcustesTransforms(std::map
void SetSharedBoundaryEnabled(bool enabled); void SetSharedBoundaryWeight(double weight);
void SetSamplingScale(bool enabled); bool GetSamplingScale(); void SetSamplingAutoScale(bool auto_scale); bool GetSamplingAutoScale(); void SetSamplingScaleValue(double scale_value); double GetSamplingScaleValue();
void SetEarlyStoppingConfig(EarlyStoppingConfig config);
const std::vector
void SetFileOutputEnabled(bool enabled);
std::vector
std::vector
void SetNarrowBand(double v);
double GetNarrowBand();
void SetUseShapeStatisticsAfter(int num_particles);
int GetUseShapeStatisticsAfter();
void PrintParamInfo();
std::shared_ptr
MatrixContainer GetParticleSystem();
void SetPythonFile(std::string filename);
void SetGeodesicsEnabled(bool is_enabled); bool GetGeodesicsEnabled() const { return m_geodesics_enabled; }
void SetGeodesicsCacheSizeMultiplier(size_t n);
void SetGeodesicsRemeshPercent(double percent);
OptimizationVisualizer& GetVisualizer(); void SetShowVisualizer(bool show); bool GetShowVisualizer();
bool GetMeshFFCMode() { return m_mesh_ffc_mode; }
vnl_vector_fixed
void UpdateProgress();
void set_particle_format(std::string format) { particle_format_ = format; }
protected: virtual void SetIterationCallback();
void ComputeTotalIterations();
void OptimizerStop();
void ReadTransformFile(); void ReadPrefixTransformFile(const std::string& s);
void InitializeSampler(); double GetMinNeighborhoodRadius(); void AddSinglePoint(); void Initialize(); void RunOptimize();
void ComputeEnergyAfterIteration();
void SetCotanSigma();
void WriteTransformFile(int iter = -1) const; void WriteTransformFile(std::string iter_prefix) const; void WriteTransformFiles(int iter = -1) const; void WriteTransformFiles(std::string iter_prefix) const; void WritePointFiles(int iter = -1); void WritePointFiles(std::string iter_prefix); void WritePointFilesWithFeatures(int iter = -1); void WritePointFilesWithFeatures(std::string iter_prefix); void WriteEnergyFiles(); void WriteSplitFiles(std::string name); void WriteCuttingPlanePoints(int iter = -1); void WriteParameters(std::string output_dir = ""); void ReportBadParticles();
int SetParameters(); void WriteModes();
void PrintStartMessage(std::string str, unsigned int vlevel = 0) const;
void PrintDoneMessage(unsigned int vlevel = 0) const;
virtual void UpdateExportablePoints();
virtual std::vector
void UpdateProject();
// return a checkpoint dir for the current iteration std::string GetCheckpointDir();
std::shared_ptr
unsigned int m_verbosity_level = 0;
std::vector
int m_checkpoint_counter = 0; int m_procrustes_counter = 0; bool m_use_cutting_planes = false; bool m_optimizing = false; bool m_use_regression = false; bool m_use_mixed_effects = false; bool m_use_disentangled_ssm = false;
// IO Parameters
unsigned int m_domains_per_shape = 1;
shapeworks::DomainType m_domain_type = shapeworks::DomainType::Image;
std::vector
// Optimization Parameters bool m_mesh_ffc_mode = 0;
unsigned int m_timepts_per_subject = 1;
int m_optimization_iterations = 2000;
int m_optimization_iterations_completed = 0;
int m_iterations_per_split = 1000;
bool m_use_shape_statistics_in_init = false;
unsigned int m_procrustes_interval = 3;
bool m_procrustes_scaling = true;
bool m_procrustes_rotation_translation = true;
double m_relative_weighting = 1.0;
double m_initial_relative_weighting = 0.05;
double m_starting_regularization = 1000;
double m_ending_regularization = 1.0;
int m_recompute_regularization_interval = 1;
bool m_save_init_splits = false;
unsigned int m_checkpointing_interval = 50;
int m_keep_checkpoints = 0;
double m_cotan_sigma_factor = 5.0;
std::vector
// Sampling scale parameters bool m_sampling_scale = true; // enabled by default bool m_sampling_auto_scale = true; // auto scale enabled by default double m_sampling_scale_value = 1.0; // default scale value
// m_spacing is used to scale the random update vector for particle splitting. double m_spacing = 0;
std::vector
std::vector
// GoodBadAssessment
std::vector
std::vector
bool m_file_output_enabled = true;
bool m_aborted = false;
std::vector
int m_total_iterations = 0; int m_iteration_count = 0; int m_split_number = 0;
int current_particle_iterations_ = 0; int total_particle_iterations_ = 0;
std::function
std::string particle_format_ = "particles";
std::shared_ptr
std::chrono::system_clock::time_point m_start_time; std::chrono::system_clock::time_point m_last_update_time; std::chrono::system_clock::time_point m_last_remaining_update_time; std::string m_remaining_time_message; };
} // namespace shapeworks ```
Updated on 2026-03-31 at 16:02:11 +0000