Skip to main content

Python implementation of concepts from network control theory

Project description

nctpy: Network Control Theory for Python

Overview

.. image:: https://zenodo.org/badge/370716682.svg :target: https://zenodo.org/badge/latestdoi/370716682 .. image:: https://readthedocs.org/projects/nctpy/badge/?version=latest :target: https://nctpy.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status .. image:: https://img.shields.io/pypi/l/ansicolortags.svg :target: https://pypi.python.org/pypi/ansicolortags/

Network Control Theory (NCT) is a branch of physical and engineering sciences that treats a network as a dynamical system. Generally, the system is controlled through control signals that originate at a control node (or control nodes) and move through the network. In the brain, NCT models each region’s activity as a time-dependent internal state that is predicted from a combination of three factors: (i) its previous state, (ii) whole-brain structural connectivity, and (iii) external inputs. NCT enables asking a broad range of questions of a networked system that are highly relevant to network neuroscientists, such as: which regions are positioned such that they can efficiently distribute activity throughout the brain to drive changes in brain states? Do different brain regions control system dynamics in different ways? Given a set of control nodes, how can the system be driven to a specific target state, or switch between a pair of states, by means of internal or external control input?

nctpy is a Python toolbox that provides researchers with a set of tools to conduct some of the common NCT analyses reported in the literature. Below, we list select publications that serve as a primer for these tools and their use cases:

  1. Parkes, L., Kim, J. Z., et al. A network control theory pipeline for studying the dynamics of the structural connectome. In press at Nature Protocols (2024). https://www.biorxiv.org/content/10.1101/2023.08.23.554519v1

  2. Karrer, T. M., Kim, J. Z., Stiso, J. et al. A practical guide to methodological considerations in the controllability of structural brain networks. Journal of Neural Engineering (2020). https://doi.org/10.1088/1741-2552/ab6e8b

  3. Kim, J. Z., & Bassett, D. S. Linear dynamics & control of brain networks. arXiv (2019). https://arxiv.org/abs/1902.03309

.. _readme_requirements:

Requirements

Currently, nctpy works with Python 3.9 and requires the following core dependencies:

- numpy (tested on 1.23.4)
- scipy (tested on 1.9.3)
- tqdm (tested on 4.64.1)

The utils module also requires:

- statsmodels (tested on 0.13.2)

The plotting module also requires:

- seaborn (tested on 0.12.0)
- nibabel (tested on 4.0.2)
- nilearn (tested on 0.9.2)

There are some additional (optional) dependencies you can install (note, these are only used for i/o and plotting in the Python notebooks located in the scripts directory):

- pandas (tested on 1.5.1)
- matplotlib (tested on 3.5.3)
- jupyterlab (tested on 3.4.4)
- sklearn (tested on 0.0.post1)

If you want to install the environment that was used to run the analyses presented in the manuscript, use the environment.yml file.

Basic installation

Assuming you have Python 3.9 installed, you can install nctpy by opening a terminal and running the following:

.. code-block:: bash

pip install nctpy

Questions

If you have any questions, please contact Linden Parkes and Jason Kim: info@parkeslab.com.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nctpy-1.0.1.tar.gz (22.8 kB view details)

Uploaded Source

Built Distribution

nctpy-1.0.1-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file nctpy-1.0.1.tar.gz.

File metadata

  • Download URL: nctpy-1.0.1.tar.gz
  • Upload date:
  • Size: 22.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for nctpy-1.0.1.tar.gz
Algorithm Hash digest
SHA256 e587a59c87723c4e4293e666877f97083ed9eea73e4c72dc96139649f3b2f2f5
MD5 332b435f92279739f328d35aa95391aa
BLAKE2b-256 e5b9cf940010f77b3655665b0d41879c2c72e6af9fb756dc092c0d72d2282dda

See more details on using hashes here.

File details

Details for the file nctpy-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: nctpy-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for nctpy-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4f8cb13832e074adb68e025ad60d7b464be30b9564d20a31ff1cd253ebfbc8d7
MD5 f3cca4748a3c0d97919dfda834913393
BLAKE2b-256 967ea2cf289b9a0aed1f227e6f605ec2096ff1edbdc6cec619a76706faefd5d1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page