Commit c70f3f9b authored by Olga Stamati's avatar Olga Stamati
Browse files

[skip-ci] update paper

parent d96d8da4
Pipeline #43714 skipped
......@@ -46,6 +46,21 @@
doi={10.1007/s11340-014-9874-2}
}
@article{beare2006watershed,
title={The watershed transform in ITK-discussion and new developments},
author={Beare, Richard and Lehmann, Ga{\"e}tan},
journal={Insight J},
volume={92},
pages={1--24},
year={2006}
}
@article{bornert2004mesure,
title={Mesure tridimensionnelle de champs cin{\'e}matiques par imagerie volumique pour l'analyse des mat{\'e}riaux et des structures},
author={Bornert, Michel and Chaix, Jean-Marc and Doumalin, Pascal and Dupr{\'e}, Jean-Christophe and Fournel, Thierry and Jeulin, Dominique and Maire, Eric and Moreaud, Maxime and Moulinec, Herv{\'e}},
year={2004}
}
@article{catalano2014,
author = {Catalano, E. and Chareyre, B. and Barthélémy, E.},
title = {Pore-scale modeling of fluid-particles interaction and emerging poromechanical effects},
......@@ -68,6 +83,18 @@
url = "https://doc.cgal.org/5.0.2/Manual/packages.html"
}
@article{geuzaine2009gmsh,
title={Gmsh: A 3-D finite element mesh generator with built-in pre-and post-processing facilities},
author={Geuzaine, Christophe and Remacle, Jean-Fran{\c{c}}ois},
journal={International journal for numerical methods in engineering},
volume={79},
number={11},
pages={1309--1331},
year={2009},
publisher={Wiley Online Library}
}
@article{geers1996computing,
title={Computing strain fields from discrete displacement fields in 2D-solids},
author={Geers, MGD and De Borst, R and Brekelmans, WAM},
......@@ -119,6 +146,144 @@
doi={10.1180/002646100549760}
}
@article{mendoza2019complete,
title={Complete mechanical regularization applied to digital image and volume correlation},
author={Mendoza, Arturo and Neggers, Jan and Hild, Fran{\c{c}}ois and Roux, St{\'e}phane},
journal={Computer Methods in Applied Mechanics and Engineering},
volume={355},
pages={27--43},
year={2019},
publisher={Elsevier},
doi={10.1016/j.cma.2019.06.005}
}
@Article{matplotlib,
Author = {Hunter, J. D.},
Title = {Matplotlib: A 2D graphics environment},
Journal = {Computing in Science \& Engineering},
Volume = {9},
Number = {3},
Pages = {90--95},
abstract = {Matplotlib is a 2D graphics package used for Python for
application development, interactive scripting, and publication-quality
image generation across user interfaces and operating systems.},
publisher = {IEEE COMPUTER SOC},
doi = {10.1109/MCSE.2007.55},
year = 2007
}
@misc{meshio,
author = {Nico Schlömer and
Geordie McBain and
Keurfon Luu and
Tianyi Li and
christos and
Vicente Mataix Ferrándiz and
Chris Barnes and
Lisandro Dalcin and
eolianoe and
nilswagner and
Vladimír Lukeš and
Abhinav Gupta and
Sebastian Müller and
Leo Schwarz and
Jan Blechta and
Chris Coutinho and
Darcy Beurle and
Jørgen Schartum Dokken and
s1291 and
Iban Cereijo and
Bhavesh Shrimali and
Antonio Cervone and
Shriramana Sharma and
Matthias Bussonnier and
lgiraldi and
Guillaume Jacquenot and
Ghislain Antony Vaillant and
Cian Wilson},
title = {nschloe/meshio v4.0.10},
month = mar,
year = 2020,
publisher = {Zenodo},
version = {v4.0.10},
doi = {10.5281/zenodo.3714194},
url = {https://doi.org/10.5281/zenodo.3714194}
}
@article{numpy,
author = {Van der Walt, Stefan and Colbert,S. Chris and Varoquaux,Gaël },
title = {The NumPy Array: A Structure for Efficient Numerical Computation},
journal = {Computing in Science \& Engineering},
volume = {13},
number = {2},
pages = {22-30},
year = {2011},
doi = {10.1109/MCSE.2011.37},
URL = {https://aip.scitation.org/doi/abs/10.1109/MCSE.2011.37},
eprint = {https://aip.scitation.org/doi/pdf/10.1109/MCSE.2011.37}
}
@misc{pybind11,
author = {Wenzel Jakob and Jason Rhinelander and Dean Moldovan},
year = {2017},
note = {https://github.com/pybind/pybind11},
title = {pybind11 -- Seamless operability between C++11 and Python}
}
@article{R,
title={R: A language and environment for statistical computing},
author={{R Core Team and others}},
year={2013},
publisher={Vienna, Austria}
}
@article{roubin2015meso,
TITLE = {{Meso-scale modeling of concrete: A morphological description based on excursion sets of Random Fields}},
AUTHOR = {Roubin, Emmanuel and Colliat, Jean-Baptiste and Benkemoun, Nathan},
URL = {https://hal.archives-ouvertes.fr/hal-01130430},
JOURNAL = {{Computational Materials Science}},
HAL_LOCAL_REFERENCE = {ER4 : Couplages thermo-hydrom{\'e}caniques et chimiques},
PUBLISHER = {{Elsevier}},
VOLUME = {102},
PAGES = {183-196},
YEAR = {2015},
MONTH = May,
DOI = {10.1016/j.commatsci.2015.02.039},
KEYWORDS = {Cementitious material ; Morphological modeling ; Correlated Random Fields ; Excursion sets},
HAL_ID = {hal-01130430},
HAL_VERSION = {v1},
}
@article{roubin2015multi,
title = "Multi-scale failure of heterogeneous materials: A double kinematics enhancement for Embedded Finite Element Method",
journal = "International Journal of Solids and Structures",
volume = "52",
pages = "180 - 196",
year = "2015",
issn = "0020-7683",
doi = "https://doi.org/10.1016/j.ijsolstr.2014.10.001",
url = "http://www.sciencedirect.com/science/article/pii/S0020768314003710",
author = "Emmanuel Roubin and Alexis Vallade and Nathan Benkemoun and Jean-Baptiste Colliat",
keywords = "Heterogeneous quasi-brittle material, Strong discontinuity approach, E-FEM method, EAS method",
}
@article{roubin2016perco,
TITLE = {{Critical probability of percolation over bounded region in N-dimensional Euclidean space}},
AUTHOR = {Roubin, Emmanuel and Colliat, Jean-Baptiste},
URL = {https://hal.archives-ouvertes.fr/hal-01305745},
JOURNAL = {{Journal of Statistical Mechanics: Theory and Experiment}},
HAL_LOCAL_REFERENCE = {ER4 : Couplages thermo-hydrom{\'e}caniques et chimiques},
PUBLISHER = {{IOP Publishing}},
VOLUME = {2016},
PAGES = {033306},
YEAR = {2016},
MONTH = Mar,
DOI = {10.1088/1742-5468/2016/03/033306},
HAL_ID = {hal-01305745},
HAL_VERSION = {v1},
}
@article{roubin2019colours,
title={The colours of concrete as seen by X-rays and neutrons},
author={Roubin, Emmanuel and Ando, Edward and Roux, St{\'e}phane},
......@@ -144,6 +309,13 @@
url = {https://www.jstatsoft.org/v063/i08}
}
@misc{rpy2,
author = "Gautier, Laurent",
title = "rpy2",
year = "2020",
url = "https://rpy2.github.io/doc/latest/html/index.html"
}
@article{schroeder2003itk,
title={The ITK software guide},
author={Schroeder, Luis Ibanez Will and Ng, Lydia and Cates, Josh and others},
......@@ -151,6 +323,39 @@
year={2003}
}
@article{scikitimage,
title={scikit-image: image processing in Python},
author={Van der Walt, Stefan and Sch{\"o}nberger, Johannes L and Nunez-Iglesias, Juan and Boulogne, Fran{\c{c}}ois and Warner, Joshua D and Yager, Neil and Gouillart, Emmanuelle and Yu, Tony},
journal={PeerJ},
volume={2},
pages={e453},
year={2014},
publisher={PeerJ Inc.},
doi={10.7717/peerj.453}
}
@ARTICLE{SciPy2020,
author = {{Virtanen}, Pauli and {Gommers}, Ralf and {Oliphant},
Travis E. and {Haberland}, Matt and {Reddy}, Tyler and
{Cournapeau}, David and {Burovski}, Evgeni and {Peterson}, Pearu
and {Weckesser}, Warren and {Bright}, Jonathan and {van der Walt},
St{\'e}fan J. and {Brett}, Matthew and {Wilson}, Joshua and
{Jarrod Millman}, K. and {Mayorov}, Nikolay and {Nelson}, Andrew
R.~J. and {Jones}, Eric and {Kern}, Robert and {Larson}, Eric and
{Carey}, CJ and {Polat}, {\.I}lhan and {Feng}, Yu and {Moore},
Eric W. and {Vand erPlas}, Jake and {Laxalde}, Denis and
{Perktold}, Josef and {Cimrman}, Robert and {Henriksen}, Ian and
{Quintero}, E.~A. and {Harris}, Charles R and {Archibald}, Anne M.
and {Ribeiro}, Ant{\^o}nio H. and {Pedregosa}, Fabian and
{van Mulbregt}, Paul and {Contributors}, SciPy 1. 0},
title = "{SciPy 1.0: Fundamental Algorithms for Scientific
Computing in Python}",
journal = {Nature Methods},
year = "2020",
adsurl = {https://rdcu.be/b08Wh},
doi = {https://doi.org/10.1038/s41592-019-0686-2},
}
@article{stamati2018phase,
TITLE = {{Phase segmentation of concrete x-ray tomographic images at meso-scale: Validation with neutron tomography}},
AUTHOR = {Stamati, Olga and Roubin, Emmanuel and And{\`o}, Edward and Malecot, Yann},
......@@ -210,6 +415,15 @@
doi={10.1088/0957-0233/26/9/095606}
}
@misc{tifffile,
author = "Gohlke, Christoph",
title = "tifffile",
year = "2020",
url = "https://www.lfd.uci.edu/~gohlke/code/tifffile.py.html"
}
@article{tudisco2017extension,
title={An extension of digital volume correlation for multimodality image registration},
author={Tudisco, Erika and Jailin, Cl{\'e}ment and Mendoza, Arturo and Tengattini, A and And{\`o}, E and Hall, Stephen A and Viggiani, Gioacchino and Hild, Francois and Roux, St{\'e}phane},
......@@ -233,62 +447,6 @@
doi={10.1016/j.softx.2017.10.002}
}
@article{mendoza2019complete,
title={Complete mechanical regularization applied to digital image and volume correlation},
author={Mendoza, Arturo and Neggers, Jan and Hild, Fran{\c{c}}ois and Roux, St{\'e}phane},
journal={Computer Methods in Applied Mechanics and Engineering},
volume={355},
pages={27--43},
year={2019},
publisher={Elsevier},
doi={10.1016/j.cma.2019.06.005}
}
@article{roubin2015meso,
TITLE = {{Meso-scale modeling of concrete: A morphological description based on excursion sets of Random Fields}},
AUTHOR = {Roubin, Emmanuel and Colliat, Jean-Baptiste and Benkemoun, Nathan},
URL = {https://hal.archives-ouvertes.fr/hal-01130430},
JOURNAL = {{Computational Materials Science}},
HAL_LOCAL_REFERENCE = {ER4 : Couplages thermo-hydrom{\'e}caniques et chimiques},
PUBLISHER = {{Elsevier}},
VOLUME = {102},
PAGES = {183-196},
YEAR = {2015},
MONTH = May,
DOI = {10.1016/j.commatsci.2015.02.039},
KEYWORDS = {Cementitious material ; Morphological modeling ; Correlated Random Fields ; Excursion sets},
HAL_ID = {hal-01130430},
HAL_VERSION = {v1},
}
@article{roubin2015multi,
title = "Multi-scale failure of heterogeneous materials: A double kinematics enhancement for Embedded Finite Element Method",
journal = "International Journal of Solids and Structures",
volume = "52",
pages = "180 - 196",
year = "2015",
issn = "0020-7683",
doi = "https://doi.org/10.1016/j.ijsolstr.2014.10.001",
url = "http://www.sciencedirect.com/science/article/pii/S0020768314003710",
author = "Emmanuel Roubin and Alexis Vallade and Nathan Benkemoun and Jean-Baptiste Colliat",
keywords = "Heterogeneous quasi-brittle material, Strong discontinuity approach, E-FEM method, EAS method",
}
@article{roubin2016perco,
TITLE = {{Critical probability of percolation over bounded region in N-dimensional Euclidean space}},
AUTHOR = {Roubin, Emmanuel and Colliat, Jean-Baptiste},
URL = {https://hal.archives-ouvertes.fr/hal-01305745},
JOURNAL = {{Journal of Statistical Mechanics: Theory and Experiment}},
HAL_LOCAL_REFERENCE = {ER4 : Couplages thermo-hydrom{\'e}caniques et chimiques},
PUBLISHER = {{IOP Publishing}},
VOLUME = {2016},
PAGES = {033306},
YEAR = {2016},
MONTH = Mar,
DOI = {10.1088/1742-5468/2016/03/033306},
HAL_ID = {hal-01305745},
HAL_VERSION = {v1},
}
@article{wiebicke2019benchmark,
title={A benchmark strategy for the experimental measurement of contact fabric},
......@@ -332,145 +490,3 @@
publisher={Elsevier},
doi={10.1016/j.ijsolstr.2015.04.012}
}
@article{beare2006watershed,
title={The watershed transform in ITK-discussion and new developments},
author={Beare, Richard and Lehmann, Ga{\"e}tan},
journal={Insight J},
volume={92},
pages={1--24},
year={2006}
}
@article{scikitimage,
title={scikit-image: image processing in Python},
author={Van der Walt, Stefan and Sch{\"o}nberger, Johannes L and Nunez-Iglesias, Juan and Boulogne, Fran{\c{c}}ois and Warner, Joshua D and Yager, Neil and Gouillart, Emmanuelle and Yu, Tony},
journal={PeerJ},
volume={2},
pages={e453},
year={2014},
publisher={PeerJ Inc.},
doi={10.7717/peerj.453}
}
@ARTICLE{SciPy2020,
author = {{Virtanen}, Pauli and {Gommers}, Ralf and {Oliphant},
Travis E. and {Haberland}, Matt and {Reddy}, Tyler and
{Cournapeau}, David and {Burovski}, Evgeni and {Peterson}, Pearu
and {Weckesser}, Warren and {Bright}, Jonathan and {van der Walt},
St{\'e}fan J. and {Brett}, Matthew and {Wilson}, Joshua and
{Jarrod Millman}, K. and {Mayorov}, Nikolay and {Nelson}, Andrew
R.~J. and {Jones}, Eric and {Kern}, Robert and {Larson}, Eric and
{Carey}, CJ and {Polat}, {\.I}lhan and {Feng}, Yu and {Moore},
Eric W. and {Vand erPlas}, Jake and {Laxalde}, Denis and
{Perktold}, Josef and {Cimrman}, Robert and {Henriksen}, Ian and
{Quintero}, E.~A. and {Harris}, Charles R and {Archibald}, Anne M.
and {Ribeiro}, Ant{\^o}nio H. and {Pedregosa}, Fabian and
{van Mulbregt}, Paul and {Contributors}, SciPy 1. 0},
title = "{SciPy 1.0: Fundamental Algorithms for Scientific
Computing in Python}",
journal = {Nature Methods},
year = "2020",
adsurl = {https://rdcu.be/b08Wh},
doi = {https://doi.org/10.1038/s41592-019-0686-2},
}
@article{numpy,
author = {Van der Walt, Stefan and Colbert,S. Chris and Varoquaux,Gaël },
title = {The NumPy Array: A Structure for Efficient Numerical Computation},
journal = {Computing in Science \& Engineering},
volume = {13},
number = {2},
pages = {22-30},
year = {2011},
doi = {10.1109/MCSE.2011.37},
URL = {https://aip.scitation.org/doi/abs/10.1109/MCSE.2011.37},
eprint = {https://aip.scitation.org/doi/pdf/10.1109/MCSE.2011.37}
}
@misc{pybind11,
author = {Wenzel Jakob and Jason Rhinelander and Dean Moldovan},
year = {2017},
note = {https://github.com/pybind/pybind11},
title = {pybind11 -- Seamless operability between C++11 and Python}
}
@Article{matplotlib,
Author = {Hunter, J. D.},
Title = {Matplotlib: A 2D graphics environment},
Journal = {Computing in Science \& Engineering},
Volume = {9},
Number = {3},
Pages = {90--95},
abstract = {Matplotlib is a 2D graphics package used for Python for
application development, interactive scripting, and publication-quality
image generation across user interfaces and operating systems.},
publisher = {IEEE COMPUTER SOC},
doi = {10.1109/MCSE.2007.55},
year = 2007
}
@misc{tifffile,
author = "Gohlke, Christoph",
title = "tifffile",
year = "2020",
url = "https://www.lfd.uci.edu/~gohlke/code/tifffile.py.html"
}
@misc{meshio,
author = {Nico Schlömer and
Geordie McBain and
Keurfon Luu and
Tianyi Li and
christos and
Vicente Mataix Ferrándiz and
Chris Barnes and
Lisandro Dalcin and
eolianoe and
nilswagner and
Vladimír Lukeš and
Abhinav Gupta and
Sebastian Müller and
Leo Schwarz and
Jan Blechta and
Chris Coutinho and
Darcy Beurle and
Jørgen Schartum Dokken and
s1291 and
Iban Cereijo and
Bhavesh Shrimali and
Antonio Cervone and
Shriramana Sharma and
Matthias Bussonnier and
lgiraldi and
Guillaume Jacquenot and
Ghislain Antony Vaillant and
Cian Wilson},
title = {nschloe/meshio v4.0.10},
month = mar,
year = 2020,
publisher = {Zenodo},
version = {v4.0.10},
doi = {10.5281/zenodo.3714194},
url = {https://doi.org/10.5281/zenodo.3714194}
}
@article{R,
title={R: A language and environment for statistical computing},
author={{R Core Team and others}},
year={2013},
publisher={Vienna, Austria}
}
@misc{rpy2,
author = "Gautier, Laurent",
title = "rpy2",
year = "2020",
url = "https://rpy2.github.io/doc/latest/html/index.html"
}
......@@ -32,8 +32,7 @@ authors:
- name: Robert Caulk
orcid: 0000-0001-5618-8629
affiliation: 1
- name: Cyrille Couture
orcid: 0000-0001-9073-3926
- name: Cyrille-B Couture
affiliation: 1
- name: Alejandro Ortega Laborin
orcid: 0000-0001-9026-5288
......@@ -41,7 +40,6 @@ authors:
- name: Denis Caillerie
affiliation: 1
- name: Takashi Matsushima
orcid: 0000-0002-2553-7643
affiliation: 5
- name: Olumide Okubadejo
affiliation: 1
......@@ -55,32 +53,21 @@ authors:
- name: Tom Arnaud
affiliation: 7
- name: Yue Sun
orcid: 0000-0002-9154-282X
affiliation: 8
- name: Alessandro Tengattini
orcid: 0000-0003-0320-3340
affiliation: "1, 13"
affiliation: 1
- name: Jean-Baptiste Colliat
affiliation: 8
- name: Mohammad Saadatfar
affiliation: 9
- name: Fernando E. Garcia
orcid: 0000-0001-7993-0347
- name: Estefan Garcia
affiliation: 10
- name: Christos Papazoglou
affiliation: 1
- name: Gustavo Pinzon
orcid: 0000-0002-6526-7393
affiliation: 1
- name: Sébastien Brisard
orcid: 0000-0002-1976-6263
affiliation: 11
- name: Jelke Dijkstra
orcid: 0000-0003-3792-0727
affiliation: 12
- name: Georgios Birmpilis
orcid: 0000-0002-8353-693X
affiliation: 12
orcid: 0000-0002-6526-7393
<!-- affiliation: "1, 2" # (Multiple affiliations must be quoted) -->
affiliations:
......@@ -88,7 +75,7 @@ affiliations:
index: 1
- name: Univ. Grenoble Alpes, CNRS, INRAE, IRD, Météo France, OSUG, 38000 Grenoble, France
index: 2
- name: Institute of Geotechnical Engineering, Technische Universität Dresden, D-01062 Dresden, Germany
- name: Institute of Geotechnical Engineering, Technische Universit\"at Dresden, D-01062 Dresden, Germany
index: 3
- name: Johns Hopkins University, Baltimore, MD 21218, USA
index: 4
......@@ -98,18 +85,12 @@ affiliations:
index: 6
- name: Univ. Grenoble Alpes, IUT2, 38000 Grenoble, France
index: 7
- name: Univ. Lille, CNRS, Centrale Lille, UMR 9013 - LaMcube - Laboratoire de Mécanique, Multiphysique, Multiéchelle, F-59000 Lille, France
- name: Université Lille Nord de France, F-59000 Lille, France
index: 8
- name: Australian National University, Canberra, Australia
index: 9
- name: Division of Engineering \& Applied Science, California Institute of Technology, Pasadena, CA 91125, USA
index: 10
- name: Université Gustave Eiffel, Laboratoire Navier, ENPC, IFSTTAR, CNRS UMR 8205, Marne-la-Vallée, F-77455, France
index: 11
- name: Department of Architecture and Civil Engineering, Chalmers University of Technology, SE-412 96 Gothenburg, Sweden
index: 12
- name: Institut Laue-Langevin (ILL), Grenoble, France
index: 13
date: March 2020
bibliography: paper.bib
......@@ -126,34 +107,34 @@ A radically open approach to measurement science with the disclosure of analysis
Furthermore, the hope is that there is a community-driven improvement of the tools with time.
# Summary
``spam``, the Software for the Practical Analysis of Materials is a library that extends the extremely convenient framework of NumPy and SciPy by providing or accelerating tools for the material- science/mechanics oriented analysis of 2D images or 3D volumes representing field measurements.
The package is organised into a library of python ``tools`` which are expected to be used in new scripts and a number of more sophisticated standalone scripts.
``spam``, the Software for the Practical Analysis of Materials is a library that extends the extremely convenient framework of NumPy [@numpy] and SciPy [@SciPy2020] by providing or accelerating tools for the material- science/mechanics oriented analysis of 2D images or 3D volumes representing field measurements.
The package is organised into a library of python ``tools`` which are expected to be used in user-written scripts and a number of more sophisticated standalone scripts.
The tools are organised as follows:
- `DIC`: toolkit for Digital image/volume correlation. This toolkit provides tools to measure the deformation between two images/volumes. A robust registration tool based on the same-modality version of @tudisco2017extension is provided, as well as some cutting edge tools such as multi-modal registration that implements @roubin2019colours.
- `DIC`: toolkit for Digital Image/Volume Correlation. This toolkit provides tools to measure the deformation between two images/volumes. A robust registration tool based on the same-modality version of @tudisco2017extension is provided, as well as some cutting edge tools such as multi-modal registration that implements @roubin2019colours.
A version of Global-DVC as per @mendoza2019complete is in the process of being developed.
- `deformation`: toolkit of tools for manipulating deformation functions called $\Phi$ (expressed in homogeneous coordinates), as well as the more usual transformation gradient tensor $F$.
Tools are also provided to compute fields of $F$ from a displacement field measured on a regular grid (coming from a "local" DIC for example), either using square/cubic finite element shape functions, or the method proposed in @geers1996computing.
For a displacement field on an irregular grid (for example defined at particle centres from a *discrete* DIC), a Delaunay triangulation based method [@bagi1996stress; @zhang2015large; @catalano2014] is implemented.
- `deformation`: toolkit of tools for manipulating deformation functions called $\Phi$ (expressed in homogeneous coordinates), as well as the more usual in continuum mechanics transformation gradient tensor $F$.
Tools are also provided to compute fields of $F$ from a displacement field measured on a regular grid (coming from a "local" correlation for example), either using square/cubic finite element shape functions, or the method proposed in @geers1996computing.
For a displacement field on an irregular grid (for example defined at particle centres coming from a "discrete" correlation), a Delaunay triangulation based method [@bagi1996stress; @zhang2015large; @catalano2014] is implemented.
Both finite (large) strain and infinitesimal (small) strain frameworks are implemented for both regular and irregular grids.
- `excursions`: library of tools for the excursion set of correlated random fields theory [@adler2008new]. It includes functions that give the analytical predictions of the global descriptors (or Lipschitz-Killing curvatures) of excursions in spaces of arbitrary dimensions [@roubin2015meso; @roubin2016perco] along with the generation of correlated random fields using "RandomFields" in R through rpy2 [@R; @rpy2; @schlather2015randomfields].
- `excursions`: toolkit for the excursion set of correlated random fields theory [@adler2008new]. It includes functions that give the analytical predictions of the global descriptors (or Lipschitz-Killing curvatures) of excursions in spaces of arbitrary dimensions [@roubin2015meso; @roubin2016perco] along with the generation of correlated random fields using "RandomFields" in R through rpy2 [@R; @rpy2; @schlather2013randomfields].
- `filters`: toolkit of 3D filters that provide some functionality missing in ``scipy.ndimage.filters`` such as the computation of a local hessian, or functions which are slow (such as the computation of a local variance).
- `helpers`: a toolkit of internal helper functions such as the parsers for the scripts, as well as tools for reading and writing TSV and VTK files (the latter partially uses ``meshio``).
- `helpers`: toolkit of internal helper functions such as the parsers for the scripts, as well as tools for reading and writing TSV and VTK files (the latter partially uses ``meshio`` [@meshio]).
- `kalisphera`: wrapper for C++ version of `kalisphera` [@tengattini2015kalisphera] which generates analytically-correct partial-volume spheres which are useful for testing discrete analysis code (see `label` below).
- `label`: library of functions to measure and manipulate "labelled" images, where discrete particles are labelled with integer voxel patches. The computation of standard quantities such as the volume, barycentre and moment of inertia tensor of each particle can be done very rapidly.
- `label`: toolkit to measure and manipulate "labelled" images, where discrete particles are labelled with integer voxel patches. The computation of standard quantities such as the volume, barycentre and moment of inertia tensor of each particle can be done very rapidly.
An estimation of an ellipse fitting of each particle is implemented with the algorithm from @ikeda:2000.
Tools for characterising inter-particle contacts based on the work of @wiebicke2017.
A wrapper for ITK's morphological watershed [@schroeder2003itk; @beare2006watershed] is also provided.
- `measurements`: toolkit implementing the measurement of covariance, porosity and global descriptors (volume, perimeter, surface area, and Euler characteristic).
- `mesh`: toolkit of tools for the creation or manipulation of meshes -- in ``spam`` tetrahedral meshes are principally used. Meshers based on ``gmsh`` are used through ``pygmsh`` and weighted Delaunay triangulation (Laguerre triangulation) is provided through an interface with ``CGAL`` [@cgal] -- alpha-shapes are also implemented to help clean up badly-shaped tetrahedra. In addition a set of projection functions creates meshes able to represent heterogeneities (phases and interfaces of a given meso/micro structure) based on binary or trinary images or continuous fields (level set) with outputs easily convertible to any FE software [@roubin2015multi; @stamati2018tensile].
- `mesh`: toolkit for the creation or manipulation of meshes -- in ``spam`` tetrahedral meshes are principally used. Meshers based on ``gmsh`` [@geuzaine2009gmsh] are used through ``pygmsh`` and weighted Delaunay triangulation (Laguerre triangulation) is provided through an interface with ``CGAL`` [@cgal] -- alpha-shapes are also implemented to help clean up badly-shaped tetrahedra. In addition, a set of projection functions creates meshes able to represent heterogeneities (phases and interfaces of a given meso/micro structure) based on binary or trinary images or continuous fields (level set) with outputs easily convertible to any FE Softwares [@roubin2015multi; @stamati2018tensile].
- `plotting`: toolkit of plotting tools based on `matplotlib` [@matplotlib] for creating complex plots such as a 3D orientation plot.
......@@ -163,7 +144,7 @@ A number of scripts are available to be called from the command line, at the mom
- `spam-ldic` and `spam-regularStrain`: A "local" image correlation script, working for series of greyscale 2D or 3D images where kinematics are measured on independent points spread on a regular grid, accompanied by a strain computation script.
- `spam-ddic` and `spam-discreteStrain`: A "discrete" image correlation script, working on greyscale 3D images plus a "labelled" image of the reference configuration, this script also has its own strain calculation based on a triangulation of grain centres.
- `spam-ddic` and `spam-discreteStrain`: A "discrete" image correlation script, working on greyscale 3D images plus a "labelled" image of the reference configuration. This script also has its own strain calculation based on a triangulation of grain centres.
- `spam-gdic` (in beta test): A "global" image correlation script, where the displacement field between two 3D images is computed as a global problem expressed on a tetrahedral mesh.
......@@ -173,7 +154,7 @@ A number of scripts are available to be called from the command line, at the mom
# Technical details
``spam`` is based on simple Python data types, avoiding complex data structures, and all functions have a reasonable and safe set of default parameters, with required parameters kept to a minimum. ``spam`` has a number of different use cases:
- Use in a highly interactive manner in iPython or Jupyter. Many outputs from 3D analysis in materials science are highly sensitive to the parameters used, encouraging a ``live'' exploration of optimal settings.
- Use in a highly interactive manner in iPython or Jupyter. Many outputs from 3D analysis in materials science are highly sensitive to the parameters used, encouraging a "live"" exploration of optimal settings.
- To be imported and used within user-written Python scripts.
......@@ -184,7 +165,7 @@ The current wrapping method is with PyBind11 [@pybind11].
Building on the large number of functions already available in NumPy [@numpy], SciPy [@SciPy2020], scikit-image [@scikitimage] and making use of tifffile [@tifffile] and meshio [@meshio], ``spam`` adds a large amount of functionality, which means that a number of advanced forms of data analysis can be chained together in ways that are otherwise complex, requiring the combination of many different tools.
``spam`` uses `unittest` to check each commit with a coverage upwards of 80\% of lines of code covered as of March 2020.
``spam`` uses `unittest` to check each commit with a coverage upwards of 80\% of lines of code covered as of May 2020.
Details of coverage are currently available [at this address](https://ttk.gricad-pages.univ-grenoble-alpes.fr/spam/coverage/).
# Online documentation
......@@ -195,29 +176,29 @@ The documentation for this project is currently available online here:
There are three main components to the documentation:
- The module index is built automatically by sphinx, and function headers are written in such a way (following the NumPy norm) that a brief description appears in the module index.
- The module index is built automatically by ``sphinx``, and function headers are written in such a way (following the NumPy norm) that a brief description appears in the module index.
- A partial "Gallery of Examples" using `sphinx-gallery` where downloadable python scripts or Jupyter notebooks are executed during the compilation of the documentation and whose results are visible.
- Last but not least a series of "tutorials" with longer and more detailed explanations are available, which cover the mathematical/mechanics background of the functions provided, and some longer examples of processing
- Last but not least a series of "tutorials" with longer and more detailed explanations are available, which cover the mathematical/mechanics background of the functions provided, and some longer examples of using the provided tools.
# Other software available
Other software packages exist for material science analysis, such as the popular commercial software Avizo whose closedness makes it unsuitable for inspection and therefore trust.
Other open-source packages could be ITK which remains quite a complex ecosystem, or ImageJ/Fiji [@imagej2] which is not fully 3D and not perfectly suited to scripting or running remotely.
Other software packages exist for material science analysis, such as the popular commercial software Avizo whose closedness makes it unsuitable inspection and therefore trust.
Other open-source packages could be ITK [@schroeder2003itk] which remains quite a complex ecosystem, or ImageJ/Fiji [@imagej2] which is not fully 3D and not perfectly suited to scripting or running remotely.
On the specific topic of Digital Image/Volume Correlation,