Orignally written for the MST-based Generalized Dataset Procrustes Distance by Jesús Puente; this current version contains experimental features involving two synchronization-based alignment algorithms (spectral/SDP relaxation).
MATLAB Code originally written by Jesús Puente (jparrubarrena@gmail.com); currently maintained by Tingran Gao (trgao10@math.duke.edu) and Julie Winchester (julia.m.winchester@gmail.com). This code has also been ported to R by Christopher Glynn (glynn@stat.duke.edu) under the name auto3dgm.
The entry point is the script code/main.m
; see comments at the top of that script for a quick introduction.
The current version of PuenteAlignment supports parallel computations on a cluster managed by Sun Grid Engine (SGE). To enable parallel execution, follow the steps 1 to 6 below.
-
Get the current version of PuenteAlignment. Simply
cd
into your desired path, then typegit clone https://github.com/trgao10/PuenteAlignment/
-
Find script
jadd_path.m
in the folder PuenteAlignment/code/, and set paths and parameters there. If you assign an email address to the varialbeemail_notification
, a notification will be sent automatically to that email address whenever a cluster job completes or aborts. -
Launch
MATLAB
,cd
into the folder PuenteAlignment/code/, type inclusterPreprocess
and pressENTER
. All jobs should then be submitted to the cluster. Useqstat
to monitor job status. -
After all jobs are completed, type in
clusterMapLowRes
and pressENTER
. -
After all jobs are completed, type in
clusterReduceLowRes
and pressENTER
. This generates low-resolution alignment results in theoutput
folder you specified injadd_path.m
. -
Type in
clusterMapHighRes
and pressENTER
to submit high-resolution alignment jobs to the cluster. Useqstat
to monitor job status. -
After all jobs are completed, type in
clusterReduceHighRes
and pressENTER
. This generates high-resolution alignment results in theoutput
folder you specified injadd_path.m
.
After the alignment process is completed, the result can be visualized using a javascript-based viewer located under the folder viewer/. See here for an online demo.
- Move all output files ending with "_aligned.obj" from the subfolder aligned/ (under your output folder) to the subfolder viewer/aligned_meshes/.
- Set up an HTTP server under the folder viewer/. (If you already placed the folder viewer/ somewhere with HTTP services, feel free to skip this step.) For instance, you can
cd viewer/
and type into the terminalpython -m SimpleHTTPServer 8000
if you are using Python 2.x, or equivalentlypython -m http.server 8000
if you have Python 3.x. - Launch your browser and direct it to
http://localhost:8000/auto3dgm.html
.
You will need a mosek license for using the fast linear programming routine for pairwise alignments. If you have an academic/institutional email address, you are eligible for a free academic license from mosek.com. Upon receiving the mosek license, simply drop it under the folder PuenteAlignment/software/mosek/
.
Boyer, Doug M., et al. A New Fully Automated Approach for Aligning and Comparing Shapes. The Anatomical Record 298.1 (2015): 249-276.
Puente, Jesús. Distances and Algorithms to Compare Sets of Shapes for Automated Biological Morphometrics. PhD Thesis, Princeton University, 2013.