This repository contains the code to the paper "Scalable, Axiomatic Explanations of Deep Alzheimer's Diagnosis from Heterogeneous Data." If you are using this code, please cite:
@inproceedings(Poelsterl2021-svehnn,
title = {{Scalable, Axiomatic Explanations of Deep Alzheimer's Diagnosis from Heterogeneous Data}},
author = {P{\"{o}}lsterl, Sebastian and Aigner, Christina and Wachinger, Christian},
booktitle = {International Conference on Medical Image Computing and Computer Assisted Intervention (MICCAI)},
pages = {434--444},
year = {2021},
url = {https://arxiv.org/abs/2107.05997},
doi = {10.1007/978-3-030-87199-4_41},
}
Install Python 3.7 and the dependencies listed in requirements.txt
.
To quantitatively evaluate SVEHNN on synthetically generated point clouds, execute:
python -m svehnn.syntehtic.run
The results will be stored in outputs-synthetic-seed868662447/metrics.csv
.
In this experiment, we used T1 structural brain MRI and tabular data from the Alzheimer's Disease Neuroimaging Initiative (ADNI). Since we are not allowed to share our data, you would need to process the data yourself.
- We used FreeSurfer 5.3 to segment all T1 structural brain MRI, and obtained point clouds of the Hippocampus by running the Marching Cubes algorithm on the binary segmentation masks. Finally, we randomly selected 1024 points from each mesh.
- As tabular data, we used the following fields from
ADNIMERGE.CSV
:
- AGE
- PTEDUCAT
- PTGENDER
- APOE4
- ABETA
- TAU
- PTAU
- FDG
- AV45
- We imputed missing values with scikit-learn's SimpleImputer and appended a binary missingness indicator for each variable with missing values.
- Once you processed the data, train
svehnn.adni.model.WidePointNetClassifier
using standard PyTorch. - To run SVEHNN on the trained model, you need to implement
BaseDataModule
insvehnn/adni/data.py
and then run:
python -m svehnn.adni.run
The estimated Shapley Values will be stored in sv_svehnn.pkl
.