GSoC 2021 project idea 1.1: A Python toolbox for computing high-order information in neuroimaging

The functioning of complex systems (i.e. the brain, and many others) depends on the interaction between different units; crucially, the resulting dynamics is different from the sum of the dynamics of the parts. In order to deepen our understanding of these systems, we need to make sense of these interdependencies. Several tools and frameworks have been developed to look at different statistical dependencies among multivariate datasets. Among these, information theory offers a powerful and versatile framework; notably, it allows detecting high-order interactions that determine the joint informational role of a group of variables.

The goal of this project is to collect and refine existing metrics of high-order interactions currently implemented in Matlab or Java, for example

and integrate them in an unified python-based toolbox.

The main deliverable of the project is a toolbox, whose inputs are the measurements of different variables plus some parameters, and whose outputs are the measures of higher order interdependencies. Ideally, the toolbox will interface with visualisation & processing platforms of neuroimaging data, such as MNE — MNE 0.22.0 documentation fMRIPrep: A Robust Preprocessing Pipeline for fMRI Data — fmriprep version documentation and become a docker container too. A parallel project would focus on the visualization of these higher order measures.

Experience in statistics and neuroimaging data analysis is a plus, but not a requirement.

Lead mentor: @Daniele_Marinazzo, Ghent University; [GitHub]
Co-mentor: @f.rosas Fernando Rosas, Imperial College London; [GitHub]

Skills: neuroimaging, statistics, Python, Matlab, Java, MNE, fMRIprep


very interesting project !


@Daniele_Marinazzo , @f.rosas
Dear mentees,
This is Sama Sai Karthik. I am in my third year pursuing an integrated Bachelor’s and Master’s program (5 year program) in Computer Science at International Institute of Technology, Bangalore. I have a general interest in computational neuroscience, through which I got to know about the field of Non-Linear Dynamics. I found the subject really interesting and am currently taking a course in NLD at the institute. I also have experience of developing web apps using python and Java. I went through the description and the code mentioned in Github links. I want to contribute to this project, it would be really kind of you to help me get started. Thank you :grinning:.


Dear Karthik
thanks a lot for your interest!
The focus of this project is the neuroinformatics/implementation aspect, but of course the fact that you are interested in (nonlinear) dynamics and in neuroscience is a great thing.
For how I see the project, the starting point would be to start understanding the code in
GitHub - danielemarinazzo/dynamic_O_information: code for dynamic O information and
GitHub - brincolab/High-Order-interactions: High-Order interactions
and see if you can reproduce it with Java or Python. The JIDT toolbox already contains some implementations in Java.
On the other hand some estimation in Python of information theoretical quantities (including a Gaussian copula as used in the dynamic_O_information above) can be found here
GitHub - robince/partial-info-decomp: Partial Entropy Decomposition and Partial Information Decomposition with pointwise surprisal measures
GitHub - robince/pyentropy: Information Theoretic Tools for Python
GitHub - robince/gcmi: Functions for calculating mutual information and other information theoretic quantities using a parametric Gaussian copula..

@f.rosas, do you have other suggestions for the moment?



1 Like

Dear @Daniele_Marinazzo, @f.rosas,

I am Pranav Mahajan, a final year undergraduate in electronics and communications engineering, with a background in cognitive and computational neuroscience, dynamical systems (nonlinear and chaotic too), signal processing and information theory.

A very interesting project indeed, I too am interested in contributing to this project (and collaborating) as it feels like a natural next step after having written a synchronization measures MATLAB toolbox recently (GitHub, Docs, Preprint) with focus time-series data from neuroscience and biological neural nets. It also had a few simpler info theoretic measures, I am looking forward to learning more about the measures mentioned above, specific to studying higher-order interactions. In addition, I do have some familiarity with MNE Python, while working at a CogNeuro lab and am looking forward to familiarizing myself with fMRIPrep while contributing to this project.

Thanks a lot for the GitHub repo links to get started, I’ll start with understanding their code and try to reproduce them in Python. Thanks!


@Pranav_Mahajan great to have company! even I have started to reproduce the script in python can we collaborate?


Dear Pranav and Karthik

As Pranav mentioned, these measures are the natural high-order extension of more standard synchronisation measures which are capable of providing a much more detailed depiction of quasi-ordered metastable configurations. Hence it is really great to hear your share our enthusiasms about them!

Please let us if you have questions about the papers that Daniele mentioned above, or about anything else.

Best wishes,