SPHARM PDM Correspondence improvement

Slicer salt3.0,windows10
when I use“ spharm-pdm correspondence improvement ”the python show "OSError:Invalid argument:“C://users//…//2022—06—16T11:51:18.762701.csv”.
the input models directory: i use the*SPHARM.vtk.
the input fiducial files directory :i use the makeup model to define the landmark on the "SPHARM.vtk"model
Common unit sphere directory:i use only one “para.vtk”file
can anyone tell me what’s wrong,thank you

1 Like

Hello everyone.

I am facing the same issue - unfortunately.
Currently, I am using SlicerSALT software version 3.0.0-2022 - GUI. Operating system: Windows 10

I have already generated the correspondence for all shapes; however, further improvement to the correspondence is needed before running “Covariant significant testing” and “Population Analysis” modules.

After uploading the required material into the SPHARM PDM Correspondence improvement module [I got no response - and no error message].

The material uploaded into the "SPHARM PDM Correspondence improvement" module include:

*Input models directory*: all models with *SPHARM.vtk extension.
*Input fiducial files directory*: I used the markeup module along with ALPACA module to automate the process of generating of landmarks for "SPHARM.vtk" models in my sample. The landmark files was saved as (.FCSV file).
*Common unit sphere directory*:I used one of the “para.vtk” file generated after running the SPHARM-PDM generator module.

It will be helpful if someone can share with us his knowledge regarding this pipeline, and how to correct it.

Thanks in advance.

@Connor-Bowley could you please take a look into this problem? Thank you!

1 Like

I will look into this, but I may not have something until next week.


Thanks for your prompt response @bpaniagua and @Connor-Bowley.

Still looking into this, but I noticed the tutorial wasn’t linked properly. There is a tutorial here that may be of some use.

1 Like

I have found and fixed a couple problems with this module on Windows and am working to get the fixes into the mainline SlicerSALT build.

Next steps (for me):

  1. Pull request into RigidAlignment: Run on windows by Connor-Bowley · Pull Request #8 · NIRALUser/RigidAlignment · GitHub
  2. Open a pull request into GROUPS with the branch GitHub - Connor-Bowley/GROUPS at run-on-windows, updated to to include the RigidAlignment change
  3. Open a pull request into SlicerSALT with the updates from above.

Thanks for your informative feedback @Connor-Bowley.

Additionally, I also noticed that “Correspondance Improvment” section in the SHARM-PDM Generator module is not working properly even after uploading the required material !

We will be able to proceed with our data processing - using SlicerSALT modules - in Windows - once these issues is fixed. Hopefully soon.

Thanks again for your hard work.

1 Like

I opened the following pull request into the SlicerSALT repo that should fix this problem.

1 Like

This issue should be fixed in SlicerSALT-3.0.0-2022-09-16 which can be downloaded by going to Download • SlicerSALT, clicking Visit Girder -> Nightly -> SlicerSALT-3.0.0-2022-09-16-win-amd64.exe. Please try it out and let me know if you are still having problems.

Thanks alot for your hard work @Connor-Bowley
I will use SlicerSALT (latest version), and let you know if there is a problem.


@SAO I was wondering if you were able to get your Correspondence improvement module to work with the latest version of SlicerSalt? It seems I am running into a problem similar to yours.

I have about 50 shapes but was forerunning with two to figure out the workflow.

I pathed:

Input Models Directory: a folder with the 2 models with the vtk extension
Fiducial files directory: a folder with 2 separate fcsv’s (should I be merging them?)
Common unit sphere: a folder with one of the para.vtk files

Upon running, I also get no response nor an error message. I’m wondering if I need to format/name the fcsv’s with the same name as my models? Or change something within the file itself?

I’ve also been using the tutorial that @Connor-Bowley had linked above. Thank you!

Dear @Connor-Bowley, @Hoai-Nam_Bui, and @bpaniagua,
I hope you all doing well.

Actually, I am still facing the same issue - even with the latest version of SlicerSALT 4.0.1.

After uploading the required material [I got no response - and no error message].

I agree with you that there is a need for detailed-tutorial, with a case, that outline the pipeline for the “correspondence improvement module”.

All the best.


So I am looking into this again and have found a problem which I am looking into resolving. The problem did not occur on my original data I was using to test the module because that data was generated with an old version of SALT.

Hopefully I will have a resolution in the next couple of days.


I have a fix and have the started the work to integrate it into SlicerSALT. In short, there was a bug when reading the newer file format verison for .vtk files. My data I used to test during the original fix was an old enough version of the .vtk format that it didn’t cause the problem.

Found another small bug that is working its way through reviews. Will let you know when everything is through and SALT gets updated.

To answer some questions @Hoai-Nam_Bui asked about naming:

When using the SPHARM-PDM Correspondence Improvement module:

  • The models must be named <some-name>_pp_surf_SPHARM.vtk
  • The corresponding fiducials must be named <some-name>_fid.fcsv
  • The spheres folder only needs 1 sphere and it must be named <something>_surf_para.vtk

The <some-name> for a model and its corresponding fiducial should match exactly.
(e.g. subject1_pp_surf_SPHARM.vtk and subject1_fid.fcsv)

The <something> for the sphere is not required to match any of the <some-name>s.

When using SPHARM-PDM / Shape Analysis Module with the Correspondence Improvement -> Enable Correspondence Improvement checkbox checked, SPHARM will make sure the models and sphere are named correctly, you just need to worry about the fiducials.

The tutorial is definitely not clear about this. I had to go look at the source code to understand the naming requirements. I think the assumption is because SPHARM outputs the files in this way and this is SPHARM correspondence improvement the files should just be named appropriately. I have added this issue to track this problem.

The bugs were fixed and those fixes are incorporated in the latest nightly build of SlicerSALT, SlicerSALT-4.0.1-2023-01-25, which can be found on Girder here.

@Hoai-Nam_Bui @SAO Please try downloading this updated version of SALT and see if it works for your data (keeping the naming requirements detailed above in mind). If it does not work, please go to the “SPHARM-PDM Generator” module, click Tutorials -> Correspondence Improvement (this will download sample data) -> Run ShapeAnalysisModule let run (it may take ~45 minutes) and see if produces any errors.

For reference, here is the pull request bringing the fixes into SALT:

1 Like

Thanks for your hard work @Connor-Bowley.Your informative response is highly appreciated.
I will download the updated version of SALT(SlicerSALT-4.0.1-2023-01-25), and see if it works for my data, soon.

All the best to everyone.


Hi @Connor-Bowley, thanks so much for your hard work. I believe your fixes are running successfully!

I have a relatively large sample to align, but here are the results of two shapes with 9 landmarks.
I was hoping that 9 landmarks would be sufficient but I am assuming that due to their non-aligned alignment that I most likely need more? Your thoughts would be greatly appreciated!

Thanks again for everything.

Hi @Hoai-Nam_Bui,

SPHARM-PDM Correspondence improvement is a module that improves point-wise correspondence between meshes. It takes a unit sphere from the SPHARM-PDM/Shape Analysis Module work and rigidly aligns the sphere-mapped landmarks from each mesh onto the input sphere, and remeshes the models based on that. This has the effect of changing the point numbering and cell numbering of the different meshes to be in correspondence without changing the actual geometries or any of the actual point locations.

For doing the physical alignment after the correspondence improvement, you could take the output of the SPHARM-PDM Correspondence improvement and run it through something like the Procrustes Registration module (under Shape Analysis). Note that for the Procrustes Registration module to work, the meshes must be in point correspondence (which they will be coming out of the SPHARM-PDM Correspondence improvement module).

I hope this helps.

1 Like