Skip to content

shapeworks::Optimize

More...

#include <Optimize.h>

Inherited by shapeworks::QOptimize

Public Types

Name
using itk::Image< float, 3 > ImageType
using VectorFunction::VectorType VectorType
using Eigen::MatrixXd MatrixType

Public Functions

Name
Optimize()
Constructor.
virtual ~Optimize()
Destructor.
bool Run()
Run the optimization.
bool LoadParameterFile(std::string filename)
Load a parameter file.
bool SetUpOptimize(ProjectHandle project)
Set up this Optimize object using a ShapeWorks project.
void SetProject(std::shared_ptr< Project > project)
Set the Project object.
void SetIterationCallbackFunction(const std::function< void(void)> & f)
Set an iteration callback function to be called after each iteration.
void AbortOptimization()
Abort optimization.
bool GetAborted()
Return if the optimization was aborted.
virtual std::vector< std::vector< itk::Point< double > > > GetLocalPoints()
Return the local points.
virtual std::vector< std::vector< itk::Point< double > > > GetGlobalPoints()
Return the global points.
void SetCutPlanes(std::vector< std::array< itk::Point< double >, 3 > > cut_planes)
Set cutting planes.
void SetVerbosity(int verbosity_level)
Set the verbosity level (0-5)
void SetDomainsPerShape(int domains_per_shape)
Set the number of domains per shape.
int GetDomainsPerShape()
Return the number of domains per shape.
void SetDomainType(shapeworks::DomainType type)
shapeworks::DomainType GetDomainType()
void SetNumberOfParticles(std::vector< int > number_of_particles)
Set the numbers of particles (vector of numbers, one for each domain)
std::vector< int > GetNumberOfParticles()
Return the numbers of particles per domain.
void SetTransformFile(std::string filename)
Set the transform file.
std::string GetTransformFile()
Get the transform file.
void SetPrefixTransformFile(std::string prefix_transform_file)
Set the prefix transform file (TODO: details)
std::string GetPrefixTransformFile()
Get the prefix transform file.
void SetOutputDir(std::string output_dir)
Set the output directory.
void SetOutputTransformFile(std::string output_transform_file)
Set the output transform file.
void SetOutputIndividualTransformFiles(bool value)
Set whether individual transforms should be written.
void SetUseMeshBasedAttributes(bool use_mesh_based_attributes)
Set if mesh based attributes should be used.
bool GetUseMeshBasedAttributes()
Get if mesh based attributes are being used.
void SetUseXYZ(std::vector< bool > use_xyz)
Set if XYZ is used, one value per domain.
void SetUseNormals(std::vector< bool > use_normals)
Set if Normals are being used, one value per domain.
void SetAttributesPerDomain(std::vector< int > attributes_per_domain)
Set the attributes per domain.
std::vector< int > GetAttributesPerDomain()
Get attributes per domain.
void SetDistributionDomainID(int distribution_domain_id)
Set the distribution domain ID (TODO: details)
int GetDistributionDomainID()
Get the distribution domain ID.
void SetOutputCuttingPlaneFile(std::string output_cutting_plane_file)
Set the output cutting plane file.
void SetUseCuttingPlanes(bool use_cutting_planes)
Set if using cutting planes.
void SetCuttingPlane(unsigned int i, const vnl_vector_fixed< double, 3 > & va, const vnl_vector_fixed< double, 3 > & vb, const vnl_vector_fixed< double, 3 > & vc)
Set a given cutting plane for a shape.
void SetProcessingMode(int mode)
Set processing mode (TODO: details)
void SetAdaptivityMode(int adaptivity_mode)
Set adaptivity mode (TODO: details)
void SetMeshFFCMode(int mesh_ffc_mode)
Set Mesh FFC Mode false/0 = mesh clipping mode, true/1 = mesh augmented lagrangian mode.
void SetAdaptivityStrength(double adaptivity_strength)
Set adaptivity strength (TODO: details)
void SetTimePtsPerSubject(int time_pts_per_subject)
Set the number of time points per subject (TODO: details)
int GetTimePtsPerSubject()
Get the number of time points per subject (TODO: details)
void SetOptimizationIterations(int optimization_iterations)
Set the number of optimization iterations.
void SetOptimizationIterationsCompleted(int optimization_iterations_completed)
Set the number of optimization iterations already completed (TODO: details)
void SetIterationsPerSplit(int iterations_per_split)
Set the number of iterations per split.
void SetUseShapeStatisticsInInit(bool use_shape_statistics_in_init)
Set if shape statistics should be used in initialization.
void SetProcrustesInterval(int procrustes_interval)
Set the interval for running procrustes (0 to disable)
void SetProcrustesScaling(bool procrustes_scaling)
Set if procrustes scaling should be used.
void SetProcrustesRotationTranslation(bool procrustes_rotation_translation)
Set if procrustes rotation/translation should be used.
void SetRelativeWeighting(double relative_weighting)
Set the relative weighting (TODO: details)
void SetInitialRelativeWeighting(double initial_relative_weighting)
Set the initial relative weigting (TODO: details)
void SetStartingRegularization(double starting_regularization)
Set the starting regularization (TODO: details)
void SetEndingRegularization(double ending_regularization)
Set the ending regularization (TODO: details)
void SetRecomputeRegularizationInterval(int recompute_regularization_interval)
Set the interval for recomputing regularization (TODO: details)
void SetSaveInitSplits(bool save_init_splits)
Set if initialization splits should be saved or not.
void SetCheckpointingInterval(int checkpointing_interval)
Set the checkpointing interval.
void SetKeepCheckpoints(int keep_checkpoints)
Set if checkpoints should be kept (0=disable, 1=enable)
void SetUseRegression(bool use_regression)
Set if regression should be used (TODO: details)
void SetUseMixedEffects(bool use_mixed_effects)
Set if mixed effects should be used (TODO: details)
void SetUseDisentangledSpatiotemporalSSM(bool use_disentangled_ssm_4d)
Set if optimization should be done using disentangled spatiotemporal SSM method.
bool GetUseDisentangledSpatiotemporalSSM()
Returns true if optimization is to be done using disentangled spatiotemporal SSM method.
void SetNormalAngle(double normal_angle)
For good/bad analysis, set the normal angle to use (TODO: details)
void SetPerformGoodBad(bool perform_good_bad)
Set if good/bad analysis should be done (TODO: details)
void SetLogEnergy(bool log_energy)
Set the log energy (TODO: details)
void AddImage(ImageType::Pointer image, std::string name ="")
Set the shape input images.
void AddMesh(vtkSmartPointer< vtkPolyData > poly_data)
void AddContour(vtkSmartPointer< vtkPolyData > poly_data)
void SetFilenames(const std::vector< std::string > & filenames)
Set the shape filenames (TODO: details)
void SetPointFiles(const std::vector< std::string > & point_files)
Set starting point files (TODO: details)
void SetInitialPoints(std::vector< std::vector< itk::Point< double > > > initial_points)
Set initial particle positions (e.g. for fixed subjects)
int GetNumShapes()
Get number of shapes.
void SetAttributeScales(const std::vector< double > & scales)
Set attribute scales (TODO: details)
void SetFieldAttributes(const std::vector< std::string > & field_attributes)
Set the field attributes.
void SetParticleFlags(std::vector< int > flags)
Set Particle Flags (TODO: details)
void SetFixedDomains(std::vector< int > flags)
Set Domain Flags (TODO: details)
void SetSharedBoundaryEnabled(bool enabled)
Shared boundary settings.
void SetSharedBoundaryWeight(double weight)
const std::vector< int > & GetDomainFlags()
void SetFileOutputEnabled(bool enabled)
Set if file output is enabled.
std::vector< bool > GetUseXYZ()
Return if XYZ is used, per shape.
std::vector< bool > GetUseNormals()
Return if Normals are used, per shape.
void SetNarrowBand(double v)
Set the narrow band used to be +/- the given value as a multiple of the spacing.
double GetNarrowBand()
Return the narrow band to be used.
void SetUseShapeStatisticsAfter(int num_particles)
Set the number of particles when correspondence based multiscale takes over.
int GetUseShapeStatisticsAfter()
Return the number of particles when correspondence based multiscale takes over.
void PrintParamInfo()
Print parameter info to stdout.
std::shared_ptr< Sampler > GetSampler()
Return the Sampler.
MatrixContainer GetParticleSystem()
Return the particle system as a matrix.
void SetPythonFile(std::string filename)
Set the python file to run at startup.
void SetGeodesicsEnabled(bool is_enabled)
Set whether or not geodesics are enabled.
void SetGeodesicsCacheSizeMultiplier(size_t n)
void SetGeodesicsRemeshPercent(double percent)
Set the remeshing percent for the mesh used for computing geodesics (0-100)
OptimizationVisualizer & GetVisualizer()
void SetShowVisualizer(bool show)
bool GetShowVisualizer()
bool GetMeshFFCMode()
vnl_vector_fixed< double, 3 > TransformPoint(int domain, vnl_vector_fixed< double, 3 > input)
transform a point if necessary
void UpdateProgress()
void set_particle_format(std::string format)

Protected Functions

Name
virtual void SetIterationCallback()
Set the iteration callback. Derived classes should override to set their own callback.
void ComputeTotalIterations()
void OptimizerStop()
void ReadTransformFile()
void ReadPrefixTransformFile(const std::string & s)
void InitializeSampler()
double GetMinNeighborhoodRadius()
void AddSinglePoint()
void Initialize()
void AddAdaptivity()
void RunOptimize()
virtual void IterateCallback(itk::Object * , const itk::EventObject & )
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< std::vector< std::vector< double > > > GetProcrustesTransforms()
void UpdateProject()
std::string GetCheckpointDir()

Protected Attributes

Name
std::shared_ptr< Sampler > m_sampler
ProcrustesRegistration::Pointer m_procrustes
std::shared_ptr< ParticleGoodBadAssessment > m_good_bad
unsigned int m_verbosity_level
std::vector< std::vector< itk::Point< double > > > m_local_points
std::vector< std::vector< itk::Point< double > > > m_global_points
int m_checkpoint_counter
int m_procrustes_counter
bool m_use_cutting_planes
bool m_optimizing
bool m_use_regression
bool m_use_mixed_effects
bool m_use_disentangled_ssm
unsigned int m_domains_per_shape
shapeworks::DomainType m_domain_type
std::vector< int > m_number_of_particles
std::string m_transform_file
std::string m_prefix_transform_file
std::string m_output_dir
std::string m_output_transform_file
bool m_output_transform_files
bool m_mesh_based_attributes
std::vector< bool > m_use_xyz
std::vector< bool > m_use_normals
std::vector< int > m_attributes_per_domain
int m_distribution_domain_id
std::string m_output_cutting_plane_file
int m_processing_mode
int m_adaptivity_mode
double m_adaptivity_strength
bool m_mesh_ffc_mode
unsigned int m_timepts_per_subject
int m_optimization_iterations
int m_optimization_iterations_completed
int m_iterations_per_split
bool m_use_shape_statistics_in_init
unsigned int m_procrustes_interval
bool m_procrustes_scaling
bool m_procrustes_rotation_translation
double m_relative_weighting
double m_initial_relative_weighting
double m_starting_regularization
double m_ending_regularization
int m_recompute_regularization_interval
bool m_save_init_splits
unsigned int m_checkpointing_interval
int m_keep_checkpoints
double m_cotan_sigma_factor
std::vector< int > m_particle_flags
std::vector< int > m_domain_flags
double m_narrow_band
bool m_narrow_band_set
bool m_fixed_domains_present
int m_use_shape_statistics_after
std::string m_python_filename
bool m_geodesics_enabled
size_t m_geodesic_cache_size_multiplier
double m_geodesic_remesh_percent
double m_spacing
std::vector< std::string > m_filenames
int m_num_shapes
std::vector< double > m_energy_a
std::vector< double > m_energy_b
std::vector< double > m_total_energy
bool m_log_energy
std::string m_str_energy
std::vector< std::vector< int > > m_bad_ids
double m_normal_angle
bool m_perform_good_bad
std::vector< int > m_cutting_planes_per_input
std::vector< int > m_spheres_per_input
bool m_file_output_enabled
bool m_aborted
std::vector< std::array< itk::Point< double >, 3 > > m_cut_planes
int m_total_iterations
int m_iteration_count
int m_split_number
int current_particle_iterations_
int total_particle_iterations_
std::function< void(void)> iteration_callback_
bool show_visualizer_
shapeworks::OptimizationVisualizer visualizer_
std::string particle_format_
std::shared_ptr< Project > project_
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

Detailed Description

class shapeworks::Optimize;

Par: Overview of Optimize

This class is the top-level API for the optimization library

The Optimize class controls all aspect of the particle system library provides a top-level public API for running optimization

Public Types Documentation

using ImageType

using shapeworks::Optimize::ImageType =  itk::Image<float, 3>;

using VectorType

using shapeworks::Optimize::VectorType =  VectorFunction::VectorType;

using MatrixType

using shapeworks::Optimize::MatrixType =  Eigen::MatrixXd;

Public Functions Documentation

function Optimize

Optimize()

Constructor.

function ~Optimize

virtual ~Optimize()

Destructor.

function Run

bool Run()

Run the optimization.

function LoadParameterFile

bool LoadParameterFile(
    std::string filename
)

Load a parameter file.

function SetUpOptimize

bool SetUpOptimize(
    ProjectHandle project
)

Set up this Optimize object using a ShapeWorks project.

function SetProject

void SetProject(
    std::shared_ptr< Project > project
)

Set the Project object.

function SetIterationCallbackFunction

inline void SetIterationCallbackFunction(
    const std::function< void(void)> & f
)

Set an iteration callback function to be called after each iteration.

function AbortOptimization

void AbortOptimization()

Abort optimization.

function GetAborted

bool GetAborted()

Return if the optimization was aborted.

function GetLocalPoints

virtual std::vector< std::vector< itk::Point< double > > > GetLocalPoints()

Return the local points.

Reimplemented by: shapeworks::QOptimize::GetLocalPoints

function GetGlobalPoints

virtual std::vector< std::vector< itk::Point< double > > > GetGlobalPoints()

Return the global points.

Reimplemented by: shapeworks::QOptimize::GetGlobalPoints

function SetCutPlanes

void SetCutPlanes(
    std::vector< std::array< itk::Point< double >, 3 > > cut_planes
)

Set cutting planes.

function SetVerbosity

void SetVerbosity(
    int verbosity_level
)

Set the verbosity level (0-5)

function SetDomainsPerShape

void SetDomainsPerShape(
    int domains_per_shape
)

Set the number of domains per shape.

function GetDomainsPerShape

int GetDomainsPerShape()

Return the number of domains per shape.

function SetDomainType

void SetDomainType(
    shapeworks::DomainType type
)

function GetDomainType

shapeworks::DomainType GetDomainType()

function SetNumberOfParticles

void SetNumberOfParticles(
    std::vector< int > number_of_particles
)

Set the numbers of particles (vector of numbers, one for each domain)

function GetNumberOfParticles

std::vector< int > GetNumberOfParticles()

Return the numbers of particles per domain.

function SetTransformFile

void SetTransformFile(
    std::string filename
)

Set the transform file.

function GetTransformFile

std::string GetTransformFile()

Get the transform file.

function SetPrefixTransformFile

void SetPrefixTransformFile(
    std::string prefix_transform_file
)

Set the prefix transform file (TODO: details)

function GetPrefixTransformFile

std::string GetPrefixTransformFile()

Get the prefix transform file.

function SetOutputDir

void SetOutputDir(
    std::string output_dir
)

Set the output directory.

function SetOutputTransformFile

void SetOutputTransformFile(
    std::string output_transform_file
)

Set the output transform file.

function SetOutputIndividualTransformFiles

void SetOutputIndividualTransformFiles(
    bool value
)

Set whether individual transforms should be written.

function SetUseMeshBasedAttributes

void SetUseMeshBasedAttributes(
    bool use_mesh_based_attributes
)

Set if mesh based attributes should be used.

function GetUseMeshBasedAttributes

bool GetUseMeshBasedAttributes()

Get if mesh based attributes are being used.

function SetUseXYZ

void SetUseXYZ(
    std::vector< bool > use_xyz
)

Set if XYZ is used, one value per domain.

function SetUseNormals

void SetUseNormals(
    std::vector< bool > use_normals
)

Set if Normals are being used, one value per domain.

function SetAttributesPerDomain

void SetAttributesPerDomain(
    std::vector< int > attributes_per_domain
)

Set the attributes per domain.

function GetAttributesPerDomain

std::vector< int > GetAttributesPerDomain()

Get attributes per domain.

function SetDistributionDomainID

void SetDistributionDomainID(
    int distribution_domain_id
)

Set the distribution domain ID (TODO: details)

function GetDistributionDomainID

int GetDistributionDomainID()

Get the distribution domain ID.

function SetOutputCuttingPlaneFile

void SetOutputCuttingPlaneFile(
    std::string output_cutting_plane_file
)

Set the output cutting plane file.

function SetUseCuttingPlanes

void SetUseCuttingPlanes(
    bool use_cutting_planes
)

Set if using cutting planes.

function SetCuttingPlane

void SetCuttingPlane(
    unsigned int i,
    const vnl_vector_fixed< double, 3 > & va,
    const vnl_vector_fixed< double, 3 > & vb,
    const vnl_vector_fixed< double, 3 > & vc
)

Set a given cutting plane for a shape.

function SetProcessingMode

void SetProcessingMode(
    int mode
)

Set processing mode (TODO: details)

function SetAdaptivityMode

void SetAdaptivityMode(
    int adaptivity_mode
)

Set adaptivity mode (TODO: details)

function SetMeshFFCMode

inline void SetMeshFFCMode(
    int mesh_ffc_mode
)

Set Mesh FFC Mode false/0 = mesh clipping mode, true/1 = mesh augmented lagrangian mode.

function SetAdaptivityStrength

void SetAdaptivityStrength(
    double adaptivity_strength
)

Set adaptivity strength (TODO: details)

function SetTimePtsPerSubject

void SetTimePtsPerSubject(
    int time_pts_per_subject
)

Set the number of time points per subject (TODO: details)

function GetTimePtsPerSubject

int GetTimePtsPerSubject()

Get the number of time points per subject (TODO: details)

function SetOptimizationIterations

void SetOptimizationIterations(
    int optimization_iterations
)

Set the number of optimization iterations.

function SetOptimizationIterationsCompleted

void SetOptimizationIterationsCompleted(
    int optimization_iterations_completed
)

Set the number of optimization iterations already completed (TODO: details)

function SetIterationsPerSplit

void SetIterationsPerSplit(
    int iterations_per_split
)

Set the number of iterations per split.

function SetUseShapeStatisticsInInit

void SetUseShapeStatisticsInInit(
    bool use_shape_statistics_in_init
)

Set if shape statistics should be used in initialization.

function SetProcrustesInterval

void SetProcrustesInterval(
    int procrustes_interval
)

Set the interval for running procrustes (0 to disable)

function SetProcrustesScaling

void SetProcrustesScaling(
    bool procrustes_scaling
)

Set if procrustes scaling should be used.

function SetProcrustesRotationTranslation

void SetProcrustesRotationTranslation(
    bool procrustes_rotation_translation
)

Set if procrustes rotation/translation should be used.

function SetRelativeWeighting

void SetRelativeWeighting(
    double relative_weighting
)

Set the relative weighting (TODO: details)

function SetInitialRelativeWeighting

void SetInitialRelativeWeighting(
    double initial_relative_weighting
)

Set the initial relative weigting (TODO: details)

function SetStartingRegularization

void SetStartingRegularization(
    double starting_regularization
)

Set the starting regularization (TODO: details)

function SetEndingRegularization

void SetEndingRegularization(
    double ending_regularization
)

Set the ending regularization (TODO: details)

function SetRecomputeRegularizationInterval

void SetRecomputeRegularizationInterval(
    int recompute_regularization_interval
)

Set the interval for recomputing regularization (TODO: details)

function SetSaveInitSplits

void SetSaveInitSplits(
    bool save_init_splits
)

Set if initialization splits should be saved or not.

function SetCheckpointingInterval

void SetCheckpointingInterval(
    int checkpointing_interval
)

Set the checkpointing interval.

function SetKeepCheckpoints

void SetKeepCheckpoints(
    int keep_checkpoints
)

Set if checkpoints should be kept (0=disable, 1=enable)

function SetUseRegression

void SetUseRegression(
    bool use_regression
)

Set if regression should be used (TODO: details)

function SetUseMixedEffects

void SetUseMixedEffects(
    bool use_mixed_effects
)

Set if mixed effects should be used (TODO: details)

function SetUseDisentangledSpatiotemporalSSM

void SetUseDisentangledSpatiotemporalSSM(
    bool use_disentangled_ssm_4d
)

Set if optimization should be done using disentangled spatiotemporal SSM method.

function GetUseDisentangledSpatiotemporalSSM

bool GetUseDisentangledSpatiotemporalSSM()

Returns true if optimization is to be done using disentangled spatiotemporal SSM method.

function SetNormalAngle

void SetNormalAngle(
    double normal_angle
)

For good/bad analysis, set the normal angle to use (TODO: details)

function SetPerformGoodBad

void SetPerformGoodBad(
    bool perform_good_bad
)

Set if good/bad analysis should be done (TODO: details)

function SetLogEnergy

void SetLogEnergy(
    bool log_energy
)

Set the log energy (TODO: details)

function AddImage

void AddImage(
    ImageType::Pointer image,
    std::string name =""
)

Set the shape input images.

function AddMesh

void AddMesh(
    vtkSmartPointer< vtkPolyData > poly_data
)

function AddContour

void AddContour(
    vtkSmartPointer< vtkPolyData > poly_data
)

function SetFilenames

void SetFilenames(
    const std::vector< std::string > & filenames
)

Set the shape filenames (TODO: details)

function SetPointFiles

void SetPointFiles(
    const std::vector< std::string > & point_files
)

Set starting point files (TODO: details)

function SetInitialPoints

void SetInitialPoints(
    std::vector< std::vector< itk::Point< double > > > initial_points
)

Set initial particle positions (e.g. for fixed subjects)

function GetNumShapes

int GetNumShapes()

Get number of shapes.

function SetAttributeScales

void SetAttributeScales(
    const std::vector< double > & scales
)

Set attribute scales (TODO: details)

function SetFieldAttributes

void SetFieldAttributes(
    const std::vector< std::string > & field_attributes
)

Set the field attributes.

function SetParticleFlags

void SetParticleFlags(
    std::vector< int > flags
)

Set Particle Flags (TODO: details)

function SetFixedDomains

void SetFixedDomains(
    std::vector< int > flags
)

Set Domain Flags (TODO: details)

function SetSharedBoundaryEnabled

void SetSharedBoundaryEnabled(
    bool enabled
)

Shared boundary settings.

function SetSharedBoundaryWeight

void SetSharedBoundaryWeight(
    double weight
)

function GetDomainFlags

const std::vector< int > & GetDomainFlags()

function SetFileOutputEnabled

void SetFileOutputEnabled(
    bool enabled
)

Set if file output is enabled.

function GetUseXYZ

std::vector< bool > GetUseXYZ()

Return if XYZ is used, per shape.

function GetUseNormals

std::vector< bool > GetUseNormals()

Return if Normals are used, per shape.

function SetNarrowBand

void SetNarrowBand(
    double v
)

Set the narrow band used to be +/- the given value as a multiple of the spacing.

function GetNarrowBand

double GetNarrowBand()

Return the narrow band to be used.

function SetUseShapeStatisticsAfter

void SetUseShapeStatisticsAfter(
    int num_particles
)

Set the number of particles when correspondence based multiscale takes over.

function GetUseShapeStatisticsAfter

int GetUseShapeStatisticsAfter()

Return the number of particles when correspondence based multiscale takes over.

function PrintParamInfo

void PrintParamInfo()

Print parameter info to stdout.

function GetSampler

inline std::shared_ptr< Sampler > GetSampler()

Return the Sampler.

function GetParticleSystem

MatrixContainer GetParticleSystem()

Return the particle system as a matrix.

function SetPythonFile

void SetPythonFile(
    std::string filename
)

Set the python file to run at startup.

function SetGeodesicsEnabled

void SetGeodesicsEnabled(
    bool is_enabled
)

Set whether or not geodesics are enabled.

function SetGeodesicsCacheSizeMultiplier

void SetGeodesicsCacheSizeMultiplier(
    size_t n
)

Set cache size multiplier for geodesics. The total number of cache entries will be n * number_of_triangles

function SetGeodesicsRemeshPercent

void SetGeodesicsRemeshPercent(
    double percent
)

Set the remeshing percent for the mesh used for computing geodesics (0-100)

function GetVisualizer

OptimizationVisualizer & GetVisualizer()

function SetShowVisualizer

void SetShowVisualizer(
    bool show
)

function GetShowVisualizer

bool GetShowVisualizer()

function GetMeshFFCMode

inline bool GetMeshFFCMode()

function TransformPoint

vnl_vector_fixed< double, 3 > TransformPoint(
    int domain,
    vnl_vector_fixed< double, 3 > input
)

transform a point if necessary

function UpdateProgress

void UpdateProgress()

function set_particle_format

inline void set_particle_format(
    std::string format
)

Protected Functions Documentation

function SetIterationCallback

virtual void SetIterationCallback()

Set the iteration callback. Derived classes should override to set their own callback.

Reimplemented by: shapeworks::QOptimize::SetIterationCallback

function ComputeTotalIterations

void ComputeTotalIterations()

function OptimizerStop

void OptimizerStop()

function ReadTransformFile

void ReadTransformFile()

function ReadPrefixTransformFile

void ReadPrefixTransformFile(
    const std::string & s
)

function InitializeSampler

void InitializeSampler()

function GetMinNeighborhoodRadius

double GetMinNeighborhoodRadius()

function AddSinglePoint

void AddSinglePoint()

function Initialize

void Initialize()

function AddAdaptivity

void AddAdaptivity()

function RunOptimize

void RunOptimize()

function IterateCallback

virtual void IterateCallback(
    itk::Object * ,
    const itk::EventObject & 
)

Reimplemented by: shapeworks::QOptimize::IterateCallback

function ComputeEnergyAfterIteration

void ComputeEnergyAfterIteration()

function SetCotanSigma

void SetCotanSigma()

function WriteTransformFile

void WriteTransformFile(
    int iter =-1
) const

function WriteTransformFile

void WriteTransformFile(
    std::string iter_prefix
) const

function WriteTransformFiles

void WriteTransformFiles(
    int iter =-1
) const

function WriteTransformFiles

void WriteTransformFiles(
    std::string iter_prefix
) const

function WritePointFiles

void WritePointFiles(
    int iter =-1
)

function WritePointFiles

void WritePointFiles(
    std::string iter_prefix
)

function WritePointFilesWithFeatures

void WritePointFilesWithFeatures(
    int iter =-1
)

function WritePointFilesWithFeatures

void WritePointFilesWithFeatures(
    std::string iter_prefix
)

function WriteEnergyFiles

void WriteEnergyFiles()

function WriteSplitFiles

void WriteSplitFiles(
    std::string name
)

function WriteCuttingPlanePoints

void WriteCuttingPlanePoints(
    int iter =-1
)

function WriteParameters

void WriteParameters(
    std::string output_dir =""
)

function ReportBadParticles

void ReportBadParticles()

function SetParameters

int SetParameters()

function WriteModes

void WriteModes()

function PrintStartMessage

void PrintStartMessage(
    std::string str,
    unsigned int vlevel =0
) const

function PrintDoneMessage

void PrintDoneMessage(
    unsigned int vlevel =0
) const

function UpdateExportablePoints

virtual void UpdateExportablePoints()

Reimplemented by: shapeworks::QOptimize::UpdateExportablePoints

function GetProcrustesTransforms

virtual std::vector< std::vector< std::vector< double > > > GetProcrustesTransforms()

Reimplemented by: shapeworks::QOptimize::GetProcrustesTransforms

function UpdateProject

void UpdateProject()

function GetCheckpointDir

std::string GetCheckpointDir()

Protected Attributes Documentation

variable m_sampler

std::shared_ptr< Sampler > m_sampler;

variable m_procrustes

ProcrustesRegistration::Pointer m_procrustes;

variable m_good_bad

std::shared_ptr< ParticleGoodBadAssessment > m_good_bad;

variable m_verbosity_level

unsigned int m_verbosity_level = 0;

variable m_local_points

std::vector< std::vector< itk::Point< double > > > m_local_points;

variable m_global_points

std::vector< std::vector< itk::Point< double > > > m_global_points;

variable m_checkpoint_counter

int m_checkpoint_counter = 0;

variable m_procrustes_counter

int m_procrustes_counter = 0;

variable m_use_cutting_planes

bool m_use_cutting_planes = false;

variable m_optimizing

bool m_optimizing = false;

variable m_use_regression

bool m_use_regression = false;

variable m_use_mixed_effects

bool m_use_mixed_effects = false;

variable m_use_disentangled_ssm

bool m_use_disentangled_ssm = false;

variable m_domains_per_shape

unsigned int m_domains_per_shape = 1;

variable m_domain_type

shapeworks::DomainType m_domain_type = shapeworks::DomainType::Image;

variable m_number_of_particles

std::vector< int > m_number_of_particles;

variable m_transform_file

std::string m_transform_file;

variable m_prefix_transform_file

std::string m_prefix_transform_file;

variable m_output_dir

std::string m_output_dir;

variable m_output_transform_file

std::string m_output_transform_file;

variable m_output_transform_files

bool m_output_transform_files = false;

variable m_mesh_based_attributes

bool m_mesh_based_attributes = false;

variable m_use_xyz

std::vector< bool > m_use_xyz;

variable m_use_normals

std::vector< bool > m_use_normals;

variable m_attributes_per_domain

std::vector< int > m_attributes_per_domain;

variable m_distribution_domain_id

int m_distribution_domain_id = -1;

variable m_output_cutting_plane_file

std::string m_output_cutting_plane_file;

variable m_processing_mode

int m_processing_mode = 3;

variable m_adaptivity_mode

int m_adaptivity_mode = 0;

variable m_adaptivity_strength

double m_adaptivity_strength = 0.0;

variable m_mesh_ffc_mode

bool m_mesh_ffc_mode = 0;

variable m_timepts_per_subject

unsigned int m_timepts_per_subject = 1;

variable m_optimization_iterations

int m_optimization_iterations = 2000;

variable m_optimization_iterations_completed

int m_optimization_iterations_completed = 0;

variable m_iterations_per_split

int m_iterations_per_split = 1000;

variable m_use_shape_statistics_in_init

bool m_use_shape_statistics_in_init = false;

variable m_procrustes_interval

unsigned int m_procrustes_interval = 3;

variable m_procrustes_scaling

bool m_procrustes_scaling = true;

variable m_procrustes_rotation_translation

bool m_procrustes_rotation_translation = true;

variable m_relative_weighting

double m_relative_weighting = 1.0;

variable m_initial_relative_weighting

double m_initial_relative_weighting = 0.05;

variable m_starting_regularization

double m_starting_regularization = 1000;

variable m_ending_regularization

double m_ending_regularization = 1.0;

variable m_recompute_regularization_interval

int m_recompute_regularization_interval = 1;

variable m_save_init_splits

bool m_save_init_splits = false;

variable m_checkpointing_interval

unsigned int m_checkpointing_interval = 50;

variable m_keep_checkpoints

int m_keep_checkpoints = 0;

variable m_cotan_sigma_factor

double m_cotan_sigma_factor = 5.0;

variable m_particle_flags

std::vector< int > m_particle_flags;

variable m_domain_flags

std::vector< int > m_domain_flags;

variable m_narrow_band

double m_narrow_band = 0.0;

variable m_narrow_band_set

bool m_narrow_band_set = false;

variable m_fixed_domains_present

bool m_fixed_domains_present = false;

variable m_use_shape_statistics_after

int m_use_shape_statistics_after = -1;

variable m_python_filename

std::string m_python_filename;

variable m_geodesics_enabled

bool m_geodesics_enabled = false;

variable m_geodesic_cache_size_multiplier

size_t m_geodesic_cache_size_multiplier = 0;

variable m_geodesic_remesh_percent

double m_geodesic_remesh_percent = 100.0;

variable m_spacing

double m_spacing = 0;

variable m_filenames

std::vector< std::string > m_filenames;

variable m_num_shapes

int m_num_shapes = 0;

variable m_energy_a

std::vector< double > m_energy_a;

variable m_energy_b

std::vector< double > m_energy_b;

variable m_total_energy

std::vector< double > m_total_energy;

variable m_log_energy

bool m_log_energy = false;

variable m_str_energy

std::string m_str_energy;

variable m_bad_ids

std::vector< std::vector< int > > m_bad_ids;

variable m_normal_angle

double m_normal_angle = itk::Math::pi / 2.0;

variable m_perform_good_bad

bool m_perform_good_bad = false;

variable m_cutting_planes_per_input

std::vector< int > m_cutting_planes_per_input;

variable m_spheres_per_input

std::vector< int > m_spheres_per_input;

variable m_file_output_enabled

bool m_file_output_enabled = true;

variable m_aborted

bool m_aborted = false;

variable m_cut_planes

std::vector< std::array< itk::Point< double >, 3 > > m_cut_planes;

variable m_total_iterations

int m_total_iterations = 0;

variable m_iteration_count

int m_iteration_count = 0;

variable m_split_number

int m_split_number = 0;

variable current_particle_iterations_

int current_particle_iterations_ = 0;

variable total_particle_iterations_

int total_particle_iterations_ = 0;

variable iteration_callback_

std::function< void(void)> iteration_callback_;

variable show_visualizer_

bool show_visualizer_ = false;

variable visualizer_

shapeworks::OptimizationVisualizer visualizer_;

variable particle_format_

std::string particle_format_ = "particles";

variable project_

std::shared_ptr< Project > project_;

variable m_start_time

std::chrono::system_clock::time_point m_start_time;

variable m_last_update_time

std::chrono::system_clock::time_point m_last_update_time;

variable m_last_remaining_update_time

std::chrono::system_clock::time_point m_last_remaining_update_time;

variable m_remaining_time_message

std::string m_remaining_time_message;

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