Software / Open source

Scientific software

Scientific software for portfolio optimization, information theory, networks, and machine learning.

OPEN SOURCE / 01
pybsp project illustration

pybsp

Native Python bindings for a backtracking survey-propagation SAT solver

About the project

pybsp exposes the C++ bsp_core solver through a direct nanobind interface. Its Python API accepts SAT formulas and solver options, runs complete solves in process, and returns assignments as NumPy arrays together with pandas diagnostic tables, structured run information, and captured logs. It also provides batch solving, dataset workflows, and a scikit-learn compatible estimator for experiments with random K-SAT instances.

OPEN SOURCE / 02
xyz project illustration

xyz

Information-theoretic estimators for continuous and time-series data

About the project

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

OPEN SOURCE / 03
scikit-portfolio project illustration

scikit-portfolio

A library for making portfolio allocation familiar to data scientists and machine learning engineers

About the project

The main idea of scikit-portfolio is to provide many well-known portfolio optimization methods with an easily accessible scikit-learn inspired set of API. This approach makes it possible to incorporate portfolio estimators as if they are classical scikit-learn estimators, thus enabling cross-validation and hyperparameters optimization with the tools of the Python data-science toolkit, and with an eye the highly technical domain of investment portfolio management.

OPEN SOURCE / 04
skfolio-online project illustration

skfolio-online

Online Convex Optimization branch of the skfolio library

About the project

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.

OPEN SOURCE / 05
skfolio-accelerate project illustration

skfolio-accelerate

Compiled acceleration for skfolio cross-validation

About the project

skfolio-accelerate accelerates repeated skfolio cross-validation by compiling the validation plan once and reusing solver structure across portfolio optimization trajectories.

OPEN SOURCE / 06
autoresearch-skfolio project illustration

autoresearch-skfolio

Autonomous portfolio optimization research using AI agents

About the project

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.

OPEN SOURCE / 07
scikit-xml project illustration

scikit-xml

Evaluation metrics for extreme multilabel classification

About the project

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.

OPEN SOURCE / 08
scikit-omikuji project illustration

scikit-omikuji

Scikit-learn compatible wrapper for Omikuji extreme multi-label classification

About the project

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.

OPEN SOURCE / 09
loop-erased-thermodynamics project illustration

loop-erased-thermodynamics

Wilson's algorithm for thermodynamic analysis of graphs

About the project

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.

OPEN SOURCE / 10
hyperdimensional-probe project illustration

hyperdimensional-probe

This work combines symbolic representations and neural probing to introduce Hyperdimensional Probe, a new paradigm for decoding LLM vector space into human-interpretable features, consistently extracting meaningful concepts across models and inputs.

OPEN SOURCE / 11
festival-cli project illustration

festival-cli

Command-line Sokoban puzzle solver

About the project

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.

OPEN SOURCE / 13
Networkqit project illustration

Networkqit

Network Quantum Information Theory toolbox

About the project

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.

OPEN SOURCE / 14
PACO project illustration

PACO

Partitioning Cost Optimization

About the project

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.

OPEN SOURCE / 15
FAGSO project illustration

FAGSO

Fast Agglomerative Surprise Optimization

About the project

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.

OPEN SOURCE / 16
CommunityAlg project illustration

CommunityAlg

Collections of Matlab functions useful for community detection.

About the project

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.

OPEN SOURCE / 17
CNCSVision project illustration

CNCSVision

A library for experiments in visual perception, psychophysics and visualization.

About the project

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.

OPEN SOURCE / 18
LFRWMX project illustration

LFRWMX

A Matlab wrapper around the Lancichinetti-Fortunato-Radicchi benchmark network generator

About the project

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.

OPEN SOURCE / 19
InfomapMex project illustration

InfomapMex

A Matlab wrapper around the latest available implementation of Rosvall and Bergstroms Infomap code available on github.

About the project

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.

OPEN SOURCE / 20
MultilouvainMX project illustration

MultilouvainMX

A Matlab wrapper around the Traag louvain python package.

About the project

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.

OPEN SOURCE / 21
Hyperquick project illustration

Hyperquick

Hyperquick is a C++ implementation of the hyperquick method.

About the project

Hyperquick computes the hypergeometric distribution pdf efficiently and without under/overflows.