Perelman School of Medicine at the University of Pennsylvania

Section for Biomedical Image Analysis (SBIA)

GraSP: A graph-based parcellation tool originally developed for the functional parcellation of the cortex.

The development of methods for the segmentation of the brain into patchworks of regions, also known as parcellation, is a vivid domain of research supported by computational needs and neuroscience interests.

Averaging the signals measured inside brain regions is indeed a very efficient way of compressing neuroscience data. Due to their large size, this dimensionality reduction step is now a prerequisite for the analysis of most of the available datasets.

In addition, neurologists have discovered that the brain is organized into spatially compact units, interacting together for addressing complex functional tasks. Because this organization is fairly similar across subjects and evolves slowly, as brain develops and ages, it is possible to create cartographies of the brain, by associating brain locations with functional/cognitive tasks. This “brain mapping” approach, more than a century after Brodmann atlas release, is still of paramount importance and drives a large part of the neuroscience research. For instance, the similarity between the cytoarchitectonic atlases derived from the observation of post-mortem histological cuts and the functional parcellations established with in-vivo fMRI scans is still investigated today. Satisfactory answers won't emerge without efficient and reliable functional parcellation methods.

GraSP was developed for addressing these needs.

GraSP is a graph-based parcellation software. GraSP was initially developed for parcellating the cortex into functionally coherent regions, based on their Pearson correlation, that presents different cortical parcellations of the left hemisphere. However, the software can handle any graph, and 3D parcellations can be obtained easily.




Figure 1. Parcellation of [A] the medial surface of the cortex [B] the temporal surface surface of the cortex; at four different resolutions.


[A]       [B]       [C]

Figure 2. [A] coronal [B] sagittal [C] axial slices of a 3D parcellation of the gray matter.


Parcellations of the left hemisphere of the cortex generated by GraSP, at increasing resolution.


Software License

GraSP software is freely available under a BSD-style open source license that is compatible with the Open Source Definition by The Open Source Initiative and contains no restrictions on use of the software. The full license text is included with the distribution package and available online.

To download visit our NITRC page for GraSP




This software parcellates graphs into connected groups of highly correlated nodes. It was initially proposed for parcellating the cortex into functionally coherent connected regions of interest, according to resting-state fMRI data.

If you use this software, YOU MUST CITE the following in any resulting publication:

[1] Honnorat, N., Eavani, H., Satterthwaite, T. D., Gur, R. E., Gur, R. C., & Davatzikos, C. (2015). GraSP: Geodesic Graph-based Segmentation with Shape Priors for the functional parcellation of the cortex. NeuroImage, 106, 207-221.

Details about the software are enumerated below.



2.1 Dependencies
  • C++ complier
  • CMake
  • GCO MRF Solver

To obtain the GCO MRF solver, please go to the following website:

Download the file under the "Multi-label optimization" section:

Once the archived has been unzipped, please move all the .cpp, .h and .txt (licenses) files into the src directory (these c++ files should be in the same directory as the GRASP_.. files during the compilation).

2.2 Generating standalone executables

Use CMake to generate files for the compiler in use (MSVC/GCC) and then run accordingly.

An example under UNIX using CMake command line:

Go to the build directory:

cd build

Run CMake (note you can also use ccmake ../ to configure the installation directory):

cmake ../

Build and install:


make install

GraSP has been tested on GCC 4.4.7.

2.3 Generating documentation

After generating project files, run the following commands:

UNIX: make doc

WINDOWS: Build the doc project.

The documentation is generated into the binary directory by default (BIN_DIR/docs/) and it required Doxygen to run. The documentation has to be generated before the install. The best sequence is: cmake ../

make doc
make install

2.4 Testing

After generating project files, run the following commands:

UNIX: make tests
WINDOWS: Build the RUN_TESTS project.

The test executables (if any) are generated into the binary directory by default (BIN_DIR/testing/).



3.1 Graph and Signal

First, the graph and the data need to be stored in proper binary files.

Assuming that your graph contains N nodes and M undirected edges, please generate two binary files:

  • one file for the data, containing N x T floats, where the T-long timeseries are stored one after the other
  • one file for the graph, containing M x 2 int, the edges being stored one after the other (each edge being described by the indices of two nodes to link).

Two example text files are provided in the /testing directory: "data" and "graph", for which

N=16642 , T=3 , M=33025

The binary files should have the same structure.

For more details, you can check the "void test(string folder);" function of the "GraSP_Parcellation.cpp" file.

3.2 Usage

Enter the following command to read the usage:


Using GraSP, three main tasks can be performed:

  • parcellating a graph
  • grouping the parcels of a parcellation into larger regions (which allows to perform a hierarchical parcellation)
  • comparing parcellations, in terms of Dice index and adjusted Rand index.

Please see the following paper for more details:

Pfitzner, D., Leibbrandt, R., Powers, D., 2009. Characterization and evaluation of similarity measures for pairs of clusterings. Knowledge and Information Systems 19, 361 - 394

3.3 Output

The parcellation is stored in ASCII format, in a file containing N+1 lines, if N is the number of nodes of the graph:

  • the first line recalls the number of nodes, N
  • then, each line contains the index of the center of the parcel containing the node (by convention, the first node has index "0")

For instance, if the line number 5+1=6 contains "117", it means that the fifth node of the graph is part of a parcel centered at the 118th node (the first node being denoted as "0").

For parcellation comparison, the indices computed are written in a text file.



Version 1.1.0 (Feb 20, 2015)
  • Changed command-line interface to improve usability.
Version 1.0.0 (Dec 1, 2014)
  • First public release of the GraSP software.



  • Christos Davatzikos
Software Authors:
  • Nicolas Honnorat 
    • Developed the algorithm
    • Implemented the software



Please cite [NeuroImage2015] when using GraSP in your research


[NeuroImage2015] Honnorat, N. Eavani, H., Satterthwaite, T. D., Gur, R. E., Gur, R. C., and Davatzikos, C., "Grasp: Geodesic graph-based segmentation with shape priors for the functional parcellation of the cortex", Neuroimage (2015), vol. 106, pp. 207-221