/FeARLesS

4D reconstruction of developmental trajectories using spherical harmonics

Primary LanguagePythonMIT LicenseMIT

Contributors Forks Stargazers Issues MIT License CI status

4D reconstruction of developmental trajectories
using spherical harmonics

Twitter: giodalmasso


Computer based approach to recreate the continuous evolution in time and space of developmental stages from 3D volumetric images. This method uses the mathematical approach of spherical harmonics to re-map discrete shape data into a space in which facilitates a smooth interpolation over time.

This aproach was tested on mouse limb buds (from E10 to E12.5) and embryonic hearts (from 10 to 29 somites).

A key advantage of this method is that the resulting 4D trajectory takes advantage of all the available data, while also being able to interpolate well through time intervals for which there is little or no data.

This method/code can be used to recreate the 4D growth of embryonic organs from 3D image datasets of the paper:
Dalmasso et al., 4D reconstruction of murine developmental trajectories using spherical harmonics, Developmental Cell (2022) --> https://doi.org/10.1016/j.devcel.2022.08.005


video


Datasets

All the data can be dowloaded from --> https://www.ebi.ac.uk/biostudies/studies/S-BIAD441 (folders /limbs-noFlank/ and /limbs+flank/).

Pipeline

Follow the pipeline steps below to reproduce the analysis results.

python pureSPharm.py

  • Description: compute the spherical harmonics decomposition and reconstruction producing the 4D trajectory of the growing limb buds without the flank (original data can be found in the folder /limbs-noFlank/ of the archive).
  • Usage: in the code, DataPath should be change to the location of the folder /limbs-noFlank/ downloaded from the archive. Run the code with the command: python pureSPharm.py lmax, where lmax is the desired degree of shaprical harmonics expansion.
  • Results: the results will be stored in a floder created automatically of the form res/pure_spharm-lmax-N-deg_fit/ where N is the number of grid intervals on the sphere and deg_fit the degree of interpolation of the spherical harmonics coefficients. If the results folder already exists the code will ask if the user wants to delete it and continue or stop.

python makeVoxel.py

  • Description: convert a vtk mesh from the limb-data files into voxel data (original data can be found in the folder /limbs+flank/ of the archive).
  • Usage: in the code, DataPath should be change to the location of the folder /limbs+flank/ downloaded from the archive. Run the code with the command: python makeVoxel.py.
  • Results: ihe results will be stored in a floder created automatically of the form res/TIF-signedDist_sampleSize100/. Changing in the code the variable sampleSize will also change the name of the results folder. If the results folder already exists the code will ask if the user wants to delete it and continue or stop.

python computeAllIntesities.py

  • Description: compute the voxel intensities along the radii of a sphere of the voxel-limb-data obtained in the previous step.
  • Usage: in the code, DataPath should be change to the location of the folder res/TIF-signedDist_sampleSize100/ obtained in the previous step. Run the code with the command: python computeAllIntesities.py.
  • Results: ihe results will be stored in a floder created automatically of the form res/allIntensities-sampleSize100-radiusDiscretisation-N/ where radiusDiscretisation is the discretisation of the radii of the sphere and N is the number of grid intervals on the sphere. Changing in the code the variable radiusDiscretisation and N will also change the name of the results folder. If the results folder already exists the code will ask if the user wants to delete it and continue or stop. The results will be in the form of numpy files, one for each limb.

python morphing.py

  • Description: produce the 4D trajectory of the growing limb buds with the flank using the voxel intensities computed in the previous step.
  • Usage: in the code, path should be change to the location of the folder res/allIntensities-sampleSize100-radiusDiscretisation-N/obtained in the previous step. Run the code with the command: python morphing.py.
  • Results: two folder will be created automatically, res/CLM/morphing_sampleSize-radDisc-N-degFit-lmax/ and res/morphing_sampleSize-radDisc-N-degFit-lmax/ (where sampleSize is voxel dimension of the data, radDisc is the discretisation of the radii of the sphere and N is the number of grid intervals on the sphere, degFit is the degree of interpolation of the spherical harmonics coefficients and lmax is the desired degree of shaprical harmonics expansion). In the first one, a matrix containing the shperical harmonics coefficients will be stored (in the form of numpy file) and in the second the volumes and isosurfaces of the limbs forming the 4D trajectory. If the results folders already exist the code will ask if the user wants to delete them and continue or stop.

python utils.py

  • Description: contains some basic functions used.


Authors

👤 Giovanni Dalmasso

👤 Marco Musy

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!

Cite the code: DOI

vedo_powered

embl

📝 License

Copyright © 2021 Giovanni Dalmasso.
This project is MIT licensed.