An open API service indexing awesome lists of open source software.

https://github.com/fabian-sp/gglasso

A Python package for General Graphical Lasso computation
https://github.com/fabian-sp/gglasso

graphical-lasso graphical-models latent-variable-models network-inference optimization

Last synced: about 1 month ago
JSON representation

A Python package for General Graphical Lasso computation

Awesome Lists containing this project

README

        

# GGLasso

[![PyPI version fury.io](https://badge.fury.io/py/gglasso.svg)](https://pypi.python.org/pypi/gglasso/)
[![PyPI license](https://img.shields.io/pypi/l/gglasso.svg)](https://pypi.python.org/pypi/gglasso/)
[![Documentation Status](https://readthedocs.org/projects/gglasso/badge/?version=latest)](http://gglasso.readthedocs.io/?badge=latest)
[![DOI](https://joss.theoj.org/papers/10.21105/joss.03865/status.svg)](https://doi.org/10.21105/joss.03865)
[![arXiv](https://img.shields.io/badge/arXiv-2011.00898-b31b1b.svg)](https://arxiv.org/abs/2110.10521)

This package contains algorithms for solving General Graphical Lasso (GGLasso) problems, including single, multiple, as well as latent
Graphical Lasso problems.

[Docs](https://gglasso.readthedocs.io/en/latest/) | [Examples](https://gglasso.readthedocs.io/en/latest/auto_examples/index.html)

## Getting started

### Install via pip/conda

The package is available on pip and conda and can be installed with

pip install gglasso

or

conda install -c conda-forge gglasso

### Developer installation

If you want to create a conda environment with full development dependencies (for building docs, testing,...), run:

conda env create -f environment.yml

To install `gglasso` in developer mode run

python -m pip install --editable .

Test your installation with

pytest tests/ -v

## The `glasso_problem` class

`GGLasso` can solve multiple problem forumulations, e.g. single and multiple Graphical Lasso problems as well as with and without latent factors. Therefore, the main entry point for the user is the `glasso_problem` class which chooses automatically the correct solver and model selection functionality. See [our documentation](https://gglasso.readthedocs.io/en/latest/problem-object.html) for all the details.

## Algorithms

`GGLasso` contains algorithms for solving a multitude of Graphical Lasso problem formulations. For all the details, we refer to the [solver overview in our documentation](https://gglasso.readthedocs.io/en/latest/solvers-overview.html).

The package includes solvers for the following problems:

- **Single Graphical Lasso**

- **Group and Fused Graphical Lasso**

We implemented the ADMM (see [2] and [3]) and a proximal point algorithm (see [4]).

- **Non-conforming Group Graphical Lasso**

A Group Graphical Lasso problem where not all variables exist in all instances/datasets.

- **Functional Graphical Lasso**

A variant of Graphical Lasso where each variables has a functional representation (e.g. by Fourier coefficients).

Moreover, for all problem formulation the package allows to model latent variables (Latent variable Graphical Lasso) in order to estimate a precision matrix of type *sparse - low rank*.

## Citation

If you use `GGLasso`, please consider the following citation

@article{Schaipp2021,
doi = {10.21105/joss.03865},
url = {https://doi.org/10.21105/joss.03865},
year = {2021},
publisher = {The Open Journal},
volume = {6},
number = {68},
pages = {3865},
author = {Fabian Schaipp and Oleg Vlasovets and Christian L. Müller},
title = {GGLasso - a Python package for General Graphical Lasso computation},
journal = {Journal of Open Source Software}
}

## Community Guidelines

1) Contributions and suggestions to the software are always welcome.
Please, consult our [contribution guidelines](CONTRIBUTING.md) prior
to submitting a pull request.
2) Report issues or problems with the software using github’s [issue
tracker](https://github.com/fabian-sp/GGLasso/issues).
3) Contributors must adhere to the [Code of
Conduct](CODE_OF_CONDUCT.md).

## References
* [1] Friedman, J., Hastie, T., and Tibshirani, R. (2007). Sparse inverse covariance estimation with the Graphical Lasso. Biostatistics, 9(3):432–441.
* [2] Danaher, P., Wang, P., and Witten, D. M. (2013). The joint graphical lasso for inverse covariance estimation across multiple classes. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 76(2):373–397.
* [3] Tomasi, F., Tozzo, V., Salzo, S., and Verri, A. (2018). Latent Variable Time-varying Network Inference. InProceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. ACM.
* [4] Zhang, Y., Zhang, N., Sun, D., and Toh, K.-C. (2020). A proximal point dual Newton algorithm for solving group graphical Lasso problems. SIAM J. Optim., 30(3):2197–2220.