Implements the Computational Hypergraph Discovery algorithm
Project description
Computational Hypergraph Discovery: A Gaussian process framework for connecting the dots
This is the source code for the paper "Codiscovering graphical structure and functional relationships within data: A Gaussian Process framework for connecting the dots".
Please see the companion blog post for a gentle introduction to the method and the code. See the repo here for full documentation and examples.
Installation
The code is written in Python 3 and requires the following packages:
- matplotlib
- NumPy
- scipy
- JAX
- networkx
Using pip
The code is available on PyPI and can be installed using pip:
pip install ComputationalHypergraphDiscovery
Quick start
Graph discovery takes very little time. The following code runs the method on the example dataset provided in the repo. The dataset is a 2D array of shape (n_samples, n_features) where each row is a sample and each column is a feature. After fitting the model, the graph is stored in the GraphDiscovery
object, specifically its graph G
attribute. The graph is a networkx
object, which can be easily plotted using .plot_graph()
.
You can find the Sachs dataset in the repo, at this link.
import ComputationalHypergraphDiscovery as CHD
import pandas as pd
df=pd.read_csv('https://raw.githubusercontent.com/TheoBourdais/ComputationalHypergraphDiscovery/main/examples/SachsData.csv')
df=df.sample(n=500,random_state=1) #subsample to run example quickly
kernels=[CHD.Modes.LinearMode(),CHD.Modes.QuadraticMode()]
graph_discovery = CHD.GraphDiscovery.from_dataframe(df,kernels=kernels)
graph_discovery.fit()
graph_discovery.plot_graph()
Available modifications of the base algorithm
The code gives an easy-to-use interface to manipulate the graph discovery method. It is designed to be modular and flexible. The main changes you can make are
- Kernels and modes: You can decide what type of function will be used to link the nodes. The code provides a set of kernels, but you can easily add your own. The interface is designed to resemble the scikit-learn API, and you can use any kernel from scikit-learn.
- Decision logics: In order to identify the edges of the graph, we need to decide whether certain connections are significant. The code provides indicators (like the level of noise), and the user specifies how to interpret them. The code provides a set of decision logic, but you can define your own.
- Clustering: If a set of nodes is highly dependent, it is possible to merge them into a cluster of nodes. This gives greater readability and prevents the graph discovery method from missing other connections.
- Possible edges: If you know that specific nodes cannot be connected, you can specify it to the algorithm. By default, all edges are possible.
Full documentation is available here.
Acknowledgements
Copyright 2023 by the California Institute of Technology. ALL RIGHTS RESERVED. United States Government Sponsorship acknowledged. This software may be subject to U.S. export control laws. By accepting this software, the user agrees to comply with all applicable U.S. export laws and regulations. User has the responsibility to obtain export licenses, or other export authority as may be required before exporting such information to foreign countries or providing access to foreign persons.
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
Built Distribution
File details
Details for the file computationalhypergraphdiscovery-2.0.0.tar.gz
.
File metadata
- Download URL: computationalhypergraphdiscovery-2.0.0.tar.gz
- Upload date:
- Size: 29.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9816aa3d92157f516c2a55dabe2d337c2f8f4ef6ea56f63e17b04fd51e697597 |
|
MD5 | 3edd325f4f27d9b51a201bf2d127b2cd |
|
BLAKE2b-256 | 67dfe0d95fdc7dcad49438a67eb73219a9a8e468bd8c839baed11661051b3c5c |
File details
Details for the file ComputationalHypergraphDiscovery-2.0.0-py3-none-any.whl
.
File metadata
- Download URL: ComputationalHypergraphDiscovery-2.0.0-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ede1689b8d13c410cef549fa5db611fc6653206cb5f7c87b95a5f2852602995 |
|
MD5 | 2d0d2c26fcb01372989a6c106d15ad43 |
|
BLAKE2b-256 | 4b621480d4770c991f8177fd4087fceeeb5ca89508ec59a4bcca535c528d560c |