# Shape Model for Multiple Domains directly from Mesh

## What and Where is the Use Case?

This use case demonstrates using ShapeWorks tools to perform the following.

• Generate shape models for anatomies with multiple structures (domains), e.g., joints.
• Optimization is carried out in the given domains' shared/joint shape spaces to capture inter-domains correlations and interactions
• Build a shape model where shapes are given as triangular surface meshes

The use case is located at: Examples/Python/ellipsoid_multiple_domain_mesh.py

There are three datasets available for this use case: - ellipsoid_joint_rotation - ellipsoid_joint_size - ellipsoid_joint_size_rotation By defualt, the use case runs on the ellipsoid_joint_rotation dataset. The name of the dataset can be changed in the ellipsoid_multiple_domain_mesh.py file if required.

## Running the Use Case

To run the use case, run RunUseCase.py (in Examples/Python/).

$cd /path/to/shapeworks/Examples/Python$ python RunUseCase.py ellipsoid_multiple_domain_mesh


This calls ellipsoid_multiple_domain_mesh.py (in Examples/Python/) to perform the following.

• Loads the ellipsoid joint dataset using a local version if it exists (i.e., previously downloaded); otherwise, the dataset is automatically downloaded from the ShapeWorks Data Portal.
• Optimizes particle distribution (i.e., the shape/correspondence model) by calling optimization functions in OptimizeUtils.py (in Examples/Python/). See Optimizing Shape Model for details about algorithmic parameters for optimizing the shape model.
• Launches ShapeWorks Studio to visualize the use case results (i.e., the optimized shape model and the groomed data) by calling functions in AnalyzeUtils.py (in Examples/Python/).

## Grooming Data

In this use case, we download pre-groomed data. The use case will be updated soon to demonstrate the full mesh grooming process.

## Optimizing Shape Model

Below are the default optimization parameters when running this use case. For a description of the optimize tool and its algorithmic parameters, see: How to Optimize Your Shape Model.

\$ python RunUseCase.py ellipsoid_multiple_domain_mesh

The list of <inputs> (surface mesh ) should be ordered consistently for each shape.(e.g., shape1-domain1, shape1-domain2, shape2-domain1, shape2-domain2 ... etc.).

{
"number_of_particles" : [512,512],
"use_normals": [0,0],
"normal_weight": [1.0,1.0],
"checkpointing_interval" : 200,
"keep_checkpoints" : 0,
"iterations_per_split" : 500,
"optimization_iterations" : 500,
"starting_regularization" :100,
"ending_regularization" : 0.5,
"recompute_regularization_interval" : 2,
"domains_per_shape" : 2,
"domain_type" : 'mesh',
"relative_weighting" : 1,
"initial_relative_weighting" : 0.1,
"procrustes_interval" : 0,
"procrustes_scaling" : 0,
"save_init_splits" : 0,
"verbosity" : 3

}


## Analyzing Shape Model

ShapeWorks Studio visualizes/analyzes the optimized particle-based shape model by visualizing the mean shape, individual shape samples, and the shape modes of variations. For more information, see: How to Analyze Your Shape Model?.