Software
Here is a list of ready-to-use software that I have developed over the course of this last years, both as scientific programmer, as PhD student and now as postdoc. Feel free to use it if you need, with the license provided and to cite it accordingly.
xyz
Information-theoretic estimators for continuous and time-series data

xyz is a Python library implementing estimators for information-theoretic quantities on continuous and time-series data. It provides tools for entropy estimation (Kozachenko-Leonenko k-NN), mutual information (Kraskov-Stögbauer-Grassberger), transfer entropy, and partial information decomposition. It features a scikit-learn compatible API and supports TRENTOOL-style workflows for analyzing directed information flow in complex systems. The documentation is available at https://carlonicolini.github.io/xyz
skfolio-online
Online Convex Optimization branch of the skfolio library

skfolio-online is the branch regarding online convex optimization for skfolio, a Python library for portfolio optimization and risk management built on top of scikit-learn. The branch contains modern a collection of modern Online Convex Optimization methods for the regret minimization in online settings, where data come day after day.
autoresearch-skfolio
Autonomous portfolio optimization research using AI agents

autoresearch-skfolio is a framework for autonomous portfolio optimization research where an AI agent iteratively improves portfolio performance by modifying a single training script. It automates testing of portfolio optimization models (MeanRisk, RiskBudgeting, HierarchicalRiskParity, NestedClustersOptimization) against multiple datasets using walk-forward analysis, cross-validation, and rigorous validation techniques including reversed-return testing.
scikit-xml
Evaluation metrics for extreme multilabel classification

scikit-xml provides specialized evaluation metrics for extreme multilabel classification and ranking tasks, extending scikit-learn functionality. It offers metrics like Precision@k, Recall@k, MAP@k, and NDCG@k with propensity-scored variants for handling imbalanced datasets. The package is optimized with NumPy and Numba implementations.
scikit-omikuji
Scikit-learn compatible wrapper for Omikuji extreme multi-label classification

scikit-omikuji provides a scikit-learn compatible interface to the high-performance Rust-based Omikuji library for extreme multi-label classification. It implements PARABEL (Partitioned Label Trees) and features 1.3x to 4.6x speedups, sparse matrix support, multi-threaded training and prediction, and comprehensive evaluation metrics for extreme multi-label tasks.
loop-erased-thermodynamics
Wilson's algorithm for thermodynamic analysis of graphs

A Python implementation of Wilson’s algorithm for analyzing thermodynamic properties of graphs through spanning forest sampling and spectral reconstruction. It samples random spanning forests to reconstruct spectral properties and compute thermodynamic quantities including partition functions. Supports Erdős-Rényi, Barabási-Albert, regular, and grid graph families.
festival-cli
Command-line Sokoban puzzle solver

festival-cli is a modern command-line reimplementation of the Festival Sokoban solver with JSON output support. It solves Sokoban puzzles (finding sequences to push boxes onto goal locations) and outputs solutions in LURD notation. Features configurable time limits, verbose output, and cross-platform support via CMake.
Networkqit
Network Quantum Information Theory toolbox

Networkqit is a Python toolbox to perform model optimization and assessment within the spectral entropies of complex networks framework. You can install it with the pip package manager as it is hosted on the pypi repositories: pip install networkqit.
PACO
Partitioning Cost Optimization

PACO is the second iteration of the FAGSO algorithm, written from scratch with better data structures implementation as well as the full support of the igraph library. PACO implements agglomerative optimization methods as well as simulated annealing, and its written in a modular fashion so optimization of cost functions of various type can be carried on in a series of subsequent steps. We suggest to download and use PACO instead of FAGSO as it is faster and supports a wider variety of quality functions, not only Surprise but also Asymptotical Surprise. Additionally it contains a Matlab wrapper for Infomap community detection.
FAGSO
Fast Agglomerative Surprise Optimization

FAGSO is an agglomerative Surprise Optimization algorithm written in C++ with bindings as MEX MATLAB and Octave file as well as Python library. It comes as the first proof of concept implementation of the idea, and accompanies the paper Modular structure of brain functional connectivity: breaking the resolution limit by Surprise. All the documentation on how to compile and use FAGSO is indicated on the github webpage.
CommunityAlg
Collections of Matlab functions useful for community detection.

CommunityAlg is a set of Matlab functions for the analysis of complex networks and it extends largely the Brain connectivity Toolbox (BCT) by Sporns and Rubinov. CommunityAlg at the moment is a moving target and the implementations of the methods may change in the future as well as their signatures.
CNCSVision
A library for experiments in visual perception, psychophysics and visualization.
![]()
CNCSVision makes it possible to simulate interactive three-dimensional environments. It connects all the facilities necessary in a research lab of vision science, with head tracking and haptic/psychophysics perception. CNCSVision was developed in the laboraties of IIT in Rovereto, under the supervision of Prof. Fulvio Domini.
LFRWMX
A Matlab wrapper around the Lancichinetti-Fortunato-Radicchi benchmark network generator

LFR is an implementations of the planted partition model where the degrees and the community size is modeled after powerlaws with specific exponents. This implementation is a Matlab wrapper around the LFR Weighted with non overlapping communities that is available on the website of Santo Fortunato.
InfomapMex
A Matlab wrapper around the latest available implementation of Rosvall and Bergstroms Infomap code available on github.

Infomap optimizes the map equation, which exploits the information-theoretic duality between the problem of compressing data, and the problem of detecting and extracting significant patterns or structures within those data. Specifically, the map equation is a flow-based method and operates on dynamics on the network.
MultilouvainMX
A Matlab wrapper around the Traag louvain python package.

Multilouvain comes a C++ library and a Matlab mex wrapper that is able to optimize different quality functions for community detection on graphs. Multilouvain features Asymptotical Surprise, Significance, Reichardt and Bornholdt, CPM and Newman modularity in a single unified framework. All the credits for the C++ code are to Vincent Traag. This wrapper modified some functions to make faster calls to methods and the code is not completely equal, though.
Hyperquick
Hyperquick is a C++ implementation of the hyperquick method.

Hyperquick computes the hypergeometric distribution pdf efficiently and without under/overflows.
GraphInsight
GraphInsight is a software that let you visualize complex networks interactively.

GraphInsight is released in its final version in many flavours: OSX, Linux and Windows 7. Here is a complete list of the versions you can download depending on your operating system.
Linux Tested on Ubuntu 10.04 or newer, Debian.
- 15.3 MB GraphInsight-Pro-1.3.3-Linux-i686.deb
- 3.41 MB GraphInsight-Pro-1.3.3-Linux-i686.rpm
- 15.4 MB GraphInsight-Pro-1.3.3-Linux-i686.sh
- 15.3 MB GraphInsight-Pro-1.3.3-Linux-i686.tar.gz
- 19.9 MB GraphInsight-Pro-1.3.3-Linux-x86_64.deb
- 3.51 MB GraphInsight-Pro-1.3.3-Linux-x86_64.rpm
- 19.9 MB GraphInsight-Pro-1.3.3-Linux-x86_64.sh
- 19.9 MB GraphInsight-Pro-1.3.3-Linux-x86_64.tar.gz
OSX Tested on OSX 10.8 or newer
Windows Tested on Windows 7 or newer
- 6.36 MB GraphInsight-Pro-1.3.3-Windows-x86.exe
- 8.17 MB GraphInsight-Pro-1.3.3-Windows-x86.zip
- Source code (zip)
- Source code (tar.gz)
For the Python API of GraphInsight, please look here GraphInsight Python API