Implementation of the connectome embedding (CE) framework.
Embedding of brain graph or connectome embedding (CE) involves finding a compact vectorized representation of nodes that captures their higher-order topological attributes. CE are obtained using the node2vec algorithm fitted on random walk on a brain graph. The current framework includes a novel approach to align separately learned embeddings to the same latent space. Cepy is tested for Python 3.6, 3.7 and 3.8.
- Documentation: https://cepy.readthedocs.io/en/latest/
pip install cepy
import cepy as ce import numpy as np # Load an adjacency matrix (structural connectivity matrix) sc_group = ce.get_example('sc_group_matrix') # Initiate and fit the connectome embedding model ce_group = ce.CE(permutations = 1, seed=1) ce_group.fit(sc_group) # Extract the cosine similarity matrix among all pairwise nodes cosine_sim = ce_group.similarity() # Save and load the model ce_group.save_model('group_ce.json') ce_loaded = ce.load_model('group_ce.json') # load it # Load two existing CE models ce_subject1 = ce.get_example('ce_subject1') ce_subject2 = ce.get_example('ce_subject2') # Align the two to the space of the [ce_group]: ce_subject1_aligned = ce.align(ce_group, ce_subject1) ce_subject2_aligned = ce.align(ce_group, ce_subject2) # Extract the node vectorized representations (normalized) for subsequent use - prediction, for example w_sbject1 = ce_subject1_aligned.weights.get_w_mean(norm = True) w_sbject2 = ce_subject2_aligned.weights.get_w_mean(norm = True)
A set of example interactive Jupyter notebooks are also available here.
If you find cepy useful for your research, please consider citing the following paper:
Levakov, G., Faskowitz, J., Avidan, G. & Sporns, O. (2021). Mapping structure to function and behavior with individual-level connectome embedding. bioRxiv. doi: https://doi.org/10.1101/2021.01.13.426513
Cepy is an open-source software project, and we welcome contributions from anyone. We suggest raising an issue prior to working on a new feature.
- The node2vec implementation is modeified from the node2vec package by Elior Cohen and the connectome_embedding code by Gideon Rosenthal.
- Rosenthal, G., Váša, F., Griffa, A., Hagmann, P., Amico, E., Goñi, J., ... & Sporns, O. (2018). Mapping higher-order relations between brain structure and function with embedded vector representations of connectomes. Nature communications, 9(1), 1-12. ;