Code Monkey home page Code Monkey logo

bgsr-py's Introduction

BGSR (Brain Graph Super-Resolution) in Python3

BGSR (Brain Graph Super-Resolution) for super-resolving low-resolution graphs code, recoded by Busra Asan. Please contact [email protected] for further inquiries. Thanks.

You can download the Matlab version of BGSR at: https://github.com/basiralab/BGSR

While a few image super-resolution techniques have been proposed for MRI super-resolution, graph super-resolution techniques are currently absent. To this aim, we design the first brain graph super-resolution using functional brain data with the aim to boost neurological disorder diagnosis. Our framework learns how to generate high-resolution (HR) graphs from low-resolution (LR) graphs without resorting to the computationally expensive image processing pipelines for connectome construction at high-resolution scales.

BGSR pipeline

Detailed proposed BGSR pipeline

This work has been published in the journal. Brain Graph Super Resolution (BGSR) is the first brain graph super resolution. The proposed method consists of three steps to build a HR graph of a testing subject by non-linearly fusing the HR graphs in the training sample.(1) The first step is a multi-kernel manifold learning to cluster similar low-resolution (LR) graphs in the training sample using the weights for a set of Gaussian kernels. (2) The second step is building the brain template of LR graphs for each cluster using an iterative diffusion process with a kernel matrix P about the similarity between ROIs. (3) The last step is identifying the most K similar training LR graphs of a test subject using the multi-kernel manifold learning with three centrality metrics (degree centrality, closeness centrality, and betweenness centrality). Experimental results and comparisons with the state-of-the-art methods demonstrate that BGSR can achieve the best prediction performance, and remarkably boosted the classification accuracy using predicted HR graphs in comparison to LR, and remarkably boosted the classification accuracy using predicted HR graphs in comparison to LR graphs. We evaluated our proposed framework from ABIDE preprocessed dataset (http://preprocessed-connectomes-project.org/abide/).

More details can be found at: https://www.sciencedirect.com/science/article/pii/S1361841520301328 or https://www.researchgate.net/publication/342493237_Brain_Graph_Super-Resolution_for_Boosting_Neurological_Disorder_Diagnosis_using_Unsupervised_Multi-Topology_Connectional_Brain_Template_Learning

BGSR pipeline

Demo

BGSR is coded in Python 3.

In this repo, we release the BGSR source code trained and tested on a simulated heterogeneous graph data from 2 Gaussian distributions as shown in Example Results section.

Data preparation

We simulated random graph dataset from two Gaussian distributions using the function simulateData_LR_HR.py. The number of graphs in class 1, the number graphs in class 2, and the number of nodes (must be >20) are manually inputted by the user when starting the demo.

To train and evaluate BGSR code on other datasets, you need to provide:

• A tensor of size ((n-1) × m × m) stacking the symmetric matrices of the training subjects. n denotes the total number of subjects and m denotes the number of nodes.
• A vector of size (n-1) stacking the training labels.
• A matrix (n × (m × m)) stacking the source HR brain graph.
• Kn: the number of the most similar LR training subjects to the testing subject.
• K1: the number of neighbors for applying SIMLR on clusters.
• K2: the number of neighbors for applying SNF.

The BGSR outputs are:

• A vector of size (1 × (m × m)) vector stacking the predicted features of the testing subject.

Train and test BGSR

To evaluate our framework, we used leave-one-out cross validation strategy.

To test our code, you can run: BGSR_demo.py

Example Results

If you set the number of samples (i.e., graphs) from class 1 to 25, from class 2 to 25, the size of each graph to 60 (nodes), K1 to 10 and K2 to 20, you will get the following outputs when running the demo with default parameter setting (alpha=0.5 and T=20 (number of iterations)):

BGSR results

Acknowledgement

We used the following codes:

SIMLR code from https://github.com/bowang87/SIMLR_PY

SNF code from https://github.com/rmarkello/snfpy

We used the following libraries:

  • numpy>=1.16.6
  • networkx>=2.4
  • matplotlib>=3.1.3
  • sklearn>=0.0

Degrees, closeness and isDirected functions of this library are converted to Python:

Octave networks toolbox: https://github.com/aeolianine/octave-networks-toolbox

Functions for Pearson Correlation coded by @dfrankov in Stack Overflow.

Related references

Similarity Network Fusion (SNF): Wang, B., Mezlini, A.M., Demir, F., Fiume, M., Tu, Z., Brudno, M., HaibeKains, B., Goldenberg, A., 2014. Similarity network fusion for aggregating data types on a genomic scale. [http://www.cogsci.ucsd.edu/media/publications/nmeth.2810.pdf] (2014) [https://github.com/maxconway/SNFtool].

Single‐cell Interpretation via Multi‐kernel LeaRning (SIMLR): Wang, B., Ramazzotti, D., De Sano, L., Zhu, J., Pierson, E., Batzoglou, S.: SIMLR: a tool for large-scale single-cell analysis by multi-kernel learning. [https://www.biorxiv.org/content/10.1101/052225v3] (2017) [https://github.com/bowang87/SIMLR_PY].

Please cite the following paper when using BGSR:

@article{mhiri2020brain,
title={Brain Graph Super-Resolution for Boosting Neurological Disorder Diagnosis using Unsupervised Multi-Topology Connectional Brain Template Learning},
author={Mhiri, Islem and Khalifa, Anouar Ben and Mahjoub, Mohamed Ali and Rekik, Islem},
journal={Medical Image Analysis},
pages={101768},
year={2020},
publisher={Elsevier}
}

Paper link on Elsevier: https://www.sciencedirect.com/science/article/pii/S1361841520301328

Paper link on ResearchGate: https://www.researchgate.net/publication/342493237_Brain_Graph_Super-Resolution_for_Boosting_Neurological_Disorder_Diagnosis_using_Unsupervised_Multi-Topology_Connectional_Brain_Template_Learning

License

Our code is released under MIT License (see LICENSE file for details).

Contributing

We always welcome contributions to help improve BGSR and evaluate our framework on other types of graph data. If you would like to contribute, please contact [email protected]. Many thanks.

bgsr-py's People

Contributors

basiralab avatar islemrekik avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

dlwbm123 mayssa19

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.