Graph Neural Network and Machine Learning Analysis of Functional Neuroimaging for Understanding Schizophrenia
Developed with the software and tools below.
Graph representational learning can detect topological patterns by leveraging both the network structure as well as nodal features. The basis of our exploration involves the application of graph neural network architectures and machine learning to resting-state functional Magnetic Resonance Imaging (rs-fMRI) data for the purpose of detecting schizophrenia. Our study uses single-site data to avoid the shortcomings in generalizability of neuroimaging data obtained from multiple sites.
The performance of our graph neural network models is on par with that of our machine learning models, each of which is trained using 69 graph-theoretical measures computed from functional correlations between various regions of interest (ROI) in a brain graph. Our deep graph convolutional neural network (DGCNN) demonstrates a promising average accuracy score of 0.82 and a sensitivity score of 0.84.
This study provides insights into the role of advanced graph theoretical methods and machine learning on fMRI data to detect schizophrenia by harnessing changes in brain functional connectivity. The results of this study demonstrate the capabilities of using both traditional ML techniques as well as graph neural network-based methods to detect schizophrenia using features extracted from fMRI data. The study also proposes two methods to obtain potential biomarkers for the disease, many of which are corroborated by research in this area and can further help in the understanding of schizophrenia as a mental disorder.
└── Schizophrenia_Detection/
├── Code
│ ├── 1. Feature Generation
│ │ ├── Global Binary Measures.ipynb
│ │ ├── Global Weighted Measures.ipynb
│ │ ├── Local Binary Measures.ipynb
│ │ └── Local Weighted Measures.ipynb
│ ├── 2. Threshold Comparison
│ │ └── XGB for threshold comparison.ipynb
│ ├── 3. Data Augmentation
│ │ └── Data Augmentation Distribution sampling.ipynb
│ ├── 4. Machine Learning
│ │ └── All ML Models 10 fold CV.ipynb
│ ├── 5. Graph Neural Network
│ │ ├── DGCNN model 10 Fold CV.ipynb
│ │ ├── DGCNN model.ipynb
│ │ ├── DGCNN with node2vec.ipynb
│ │ └── GCN model 10 fold CV.ipynb
│ └── 6. Biomarker Detection
│ ├── RLF feature selection.ipynb
│ └── SpeCo.ipynb
├── README.md
└── requirements.txt
The research paper can be found at this link.
The data can be found at this link.
Ensure that you have installed the colab plugin on your google account if you want to run the code on google colab. To run the code on google colab, first right-click on the folder and select add shortcut to drive. After that, simply open and run any of the files. All the required package installations have been included in the code.
In order to run the code locally or in a virtual environment, the paths have to be changed accordingly. For example- /content/drive/MyDrive/SUPPLEMENTARY CODE/Data/Metadata/phenotypic_data.csv
would change to /SUPPLEMENTARY CODE/Data/Metadata/phenotypic_data.csv
. If absolute paths are required for the environment, add the required prefix before the modified path.
If you want to run the code locally on your system, create a virtual environment using Anaconda and run the requirements.txt file.
The preprocessed data is sufficient to run the given code files. However, the original data can be obtained from the UCLA repository.
- Clone the Schizophrenia_Detection repository:
git clone https://github.com/smruthig/Schizophrenia_Detection
- Change to the project directory:
cd Schizophrenia_Detection
- Install the dependencies:
pip install -r requirements.txt
Use the following command to run Schizophrenia_Detection using Jupyter:
jupyter notebook
Contributions are welcome! Here are several ways you can contribute:
- Submit Pull Requests: Review open PRs, and submit your own PRs.
- Report Issues: Submit bugs found or log feature requests for the
Schizophrenia_Detection
project.
Contributing Guidelines
- Fork the Repository: Start by forking the project repository to your github account.
- Clone Locally: Clone the forked repository to your local machine using a git client.
git clone https://github.com/smruthig/Schizophrenia_Detection
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear message describing your updates.
git commit -m 'Implemented new feature x.'
- Push to GitHub: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
Once your PR is reviewed and approved, it will be merged into the main branch.
This project is protected under the MIT License.