Skip to content

rockliu601/neuroBN

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bayesian Networks for Neuroscience

Overview

Many research fields have benefit from the flexibility and expressiveness of the Bayesian Network framework - medicine, economics, artificial intelligence, social science, and many more. Still, Bayesian networks have failed to penetrate the field of neuroscience, where they could be of incredible use. With that in mind, this project is aimed at making Bayesian Networks more accessible to neuroscientists. The motivation for this project is very much derived from the review paper by Bielza and Larranaga - "Bayesian networks in neuroscience: a survey."

As it relates to neuroscience, this code base aims to perform the following general tasks:

  • Function Connectivity Mapping
    • looking for network-based relationships among variables of interest. This is known in the more general case as "Association Discovery".
  • Feature Selection
    • choosing the appropriate features (variables) to use in classifying a target variable, or otherwise reducing the dimensionality of a large dataset.
  • Supervised Classification
    • predict class labels of new data from training data.
  • Unsupervised Classification
    • learning from data where the ground truth is unknown. One example of this task is "clustering" - assigning data into clusters of similar observations.
  • Inference
    • answering marginal or conditional probability queries, such as "what is the probability a person will develop dimentia given that he/she is 60 years old and had a stroke within the last five years?"

Data

The goal is to achieve full availability of state-of-the-art Bayesian network functionality for seamless use with all types of neuroscience data.

  • Morphological Data
  • Electrophysiological Data
  • Genomics/Proteomics/Transcriptomics Data
  • Neuroimaging Data
    • fMRI
    • MRI
    • EEG
  • Others
    • ECoG, EMG, JME, TCD, DTI, PET

Current features

Marginal Inference

- Exact Marginal Inference - Sum-Product Variable Elimination - Clique Tree Message Passing - Approximate Marginal Inference - Forward Sampling - Likelihood Weighted Sampling - Gibbs (MCMC) Sampling - Loopy Belief Propagation

MAP/MPE Inference

- Exact MAP Inference - Max-Product Variable Elimination - Integer Linear Programming - Approximate MAP Inference - LP Relaxation

Constraint-Based Structure Learning

- Algorithms - PC - Grow-Shrink - IAMB/Lambda-IAMB/Fast-IAMB - Independence Tests - Marginal Mutual Information - Conditional Mutual Information - Pearson Chi-Square

Score-Based Structure Learning

- Algorithms - Greedy Hill Climbing - Tabu Search - Random Restarts - Scoring Functions - BIC/AIC/MDL - BDe/BDeu/K2

Tree-Based Structure Learning

- Naive Bayes - Tree-Augmented Naive Bayes - Chow-Liu

Hybrid Structure Leanring

- MMPC - MMHC

Exact Structure Learning

- GOBNILP Solver

Parameter Learning

- Maximum Likelihood Estimation - Dirichlet-Multinomial Estimation

Classification

- Naive Bayes - Tree-Augmented Naive Bayes - General DAG

Multi-Dimensional Classification

- Empty/Tree/Polytree/Forest - General DAG

Comparing Two Bayesian Networks

- Structure-Based Distance Metrics - Missing Edges - Extra Edges - Incorrect Edge Orientation - Hamming Distance - Parameter-Based Distance Metrics - KL-Divergence and JS-Divergence - Manhattan and Euclidean - Hellinger - Minkowski

Utility Functionality

- Determine Class Equivalence - Discretize continuous data - Orient a PDAG - Generate random sample dataset from a BN - Markov Blanket operations

Usage

To use this package, do the following: - download the zip file from the button in the upper-right corner of this page - unzip the folder - from the command line, change directories to be in the main neuroBN directory - install the package by running the following command: - if you're using ipython shell, type "run setup.py install --user" - if you're using normal command line, type "python setup.py install --user"

Call for Researchers

If you are a neuroscience researcher or student who thinks the incredible learning/classification/inference functionality of Bayesian networks can add value to your work or want to see support for a specific type of data, please contact me and I will either a) answer questions or give advice on how to get the most out of neuroBN or b) work with you to build custom functionality that integrates your work with the neuroBN code. Email me at ncullen.th@dartmouth.edu.

References

- [1] Bielza, C., Larranaga, P. "Bayesian networks in neuroscience: a survey" - [2] Daly, R., Shen, Q., Aitken, S. "Learning Bayesian networks: approaches and issues" - [3] Bielza, C., Li, G., Larranaga, P. "Multi-dimensional classification with Bayesian networks" - [4] Pham, D., Ruz, G. "Unsupervised training of Bayesian networks for data clustering"

About

Bayesian Networks for Neuroscience

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%