sphericity, surface area, centroid, local centroid etc.). These are mostly characteristics that can be calculated with popular python image processing libraries, such as with the scikit-image regionprops function, or are easy to calculate, such as sphericity and surface area. For each particle label, the Euclidean Distance Transform (EDT) is calculated and rounded to the nearest integer in order to calculate 'layers', see figure . Care was taken to develop an algorithm that used vectorised operations and avoided nested loops for rapid computation with the large 3D image datasets typical in tomographic imaging. Once the radial layers are extracted, we calculate the mean grey-level and mean normalised grey-level in each radial layer and store this in the table. In addition, the table is populated with the mask, grey-level, and EDT image of each particle in a bounding box. The toolkit contains a number of other utility functions that help characterise, subset, and explore both in-situ and ex-situ datasets of particles. When benchmarked, the computation of a GRAPES table took 36 seconds, with a peak memory usage of 1600 MiB, this for a dataset that contained ∼ 10,000 particle labels with an average pixel volume of 25,300 px. An Intel ® Xeon ® 2.70 GHz CPU processor on a workstation with 128 GB of installed RAM was used for this computation. All 24 cores were used in parallel during the parallel computation of the label EDTs. Alongside this article, we make available this code in the form of the GRAPES python toolkit and a user-friendly GRAPES GUI.