Giter VIP home page Giter VIP logo

mvgcn's Introduction

Multi-View GCN (MVGCN) for Brain Networks

Overview

Multi-View GCN

This repository contains TensorFlow code for implementing Multi-View Graph Convolutional Network for brain networks (DTI data). To do this, we train models using graph convolutional networks (GCNs) in multiple views to learn view-based feature representations. Then, view pooling is conducted for the purpose of multi-view feature fusion. The code is documented and should be easy to modify for your own applications.

Model

The objective function is established for a binary classification problem, which is matching vs. non-matching classes. Brain networks in the same group (Parkinson's Disease or Healthy Control) are labeled as matching pairs while brain networks from different groups are labeled as non-matching pairs. Hence, pairwise training samples are feed into the neural network. The figure depicts the pairwise learning architecture.

Pairwise Learning Architecture

  • The components utilized in the MVGCN are:
    • GCNs: incorporating coordinates of ROI (Region of Interest) with brain networks (DTI) together to learn interpretable representations.
    • View pooling: combining view-based representations of DTI data that are obtained from various tractography algorithms.
    • Pairwise matching: computing similarities by euclidean distance for sample pairs in terms of the pooled features.
    • Softmax: classifying the output of pairwise matching layer into the matching vs. non-matching classes.

This repository contains the slides we presented in AMIA 2018.

Requirements

This package has the following requirements:

Usage

How to Run

To run MVGCN on your data, you need to: change the function of loading data in utils.py; define the names of multiple views in mvgcn.sh; set hyperparameters for MVGCN in mvgcn.sh; run the shell script mvgcn.sh

bash mvgcn.sh

Data Format

The input file "dti.coo.pkl" is the XYZ-coordinate for given samples with the 3d dimension: n_samples x n_nodes x n_XYZ, where n_node equals to the number of ROI in our case. n_XYZ equals to 3 which indicates the X axis, Y axis, and Z axis.

The input file "dti.pair.pkl" stores the index of samples and their corresponding labels by a tuple(pair, label), where pair is a list of pairwise indices. And label is a list of integer values. Here is an example with several sample pairs and labels:

Index 1 Index 2 Label
0 8 1
0 9 1
0 10 1
0 26 0
1 5 0
1 6 0
... ... ...

In detail, we use label 1 to indicate the sample pair belongs to the same class (matching) and label 0 to indicate it belongs to the different classes (non-matching). The index begins from 0.

Additional Material

There is implementations used in:

Michaël Defferrard, Xavier Bresson, Pierre Vandergheynst, Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering, Neural Information Processing Systems (NIPS), 2016.

Sofia Ira Ktena, Sarah Parisot, Enzo Ferrante, Martin Rajchl, Matthew Lee, Ben Glocker, Daniel Rueckert, Distance Metric Learning using Graph Convolutional Networks: Application to Functional Brain Networks, Medical Image Computing and Computer-Assisted Interventions (MICCAI), 2017.

References

If you happen to use our work, please consider citing our paper:

@inproceedings{zhang2018multi,
  title={Multi-view graph convolutional network and its applications on neuroimage analysis for parkinson’s disease},
  author={Zhang, Xi and He, Lifang and Chen, Kun and Luo, Yuan and Zhou, Jiayu and Wang, Fei},
  booktitle={AMIA Annual Symposium Proceedings},
  volume={2018},
  pages={1147},
  year={2018},
  organization={American Medical Informatics Association}
}

This paper can be accessed on : [Multi-View GCN] (https://arxiv.org/pdf/1805.08801.pdf)

Acknowledgements

We owe many thanks to Dr. Liang Zhan for helping us on processing the neuroimages. Please see the paper for funding details and additional (non-code related) acknowledgements.

mvgcn's People

Contributors

sheryl-ai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

mvgcn's Issues

data set

Could you please post the dataset you used? Thank you so much, this means a lot to me!

Myself datasets

How to use my own multiview dataset? My dataset has two views representing an object, 10 categories and 30000 objects.Similar to modelnet dataset, but smaller in number.
Thank you very much!

provide all voxels or single voxel

For the input file "dti.coo.pkl" does the algorithm expect all the voxels for each ROI for each subject (where number of rows would be n_subjects x n_ROIs x n_voxels in each ROI), or does it expect a single voxel for each ROI, e.g., the center voxel (where number of rows would be n_subjects x n_ROIs x 1).

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.