Skip to content

Instantly share code, notes, and snippets.

View albertbuchard's full-sized avatar

Albert Buchard albertbuchard

View GitHub Profile
# Your init script
#
# Atom will evaluate this file each time a new window is opened. It is run
# after packages are loaded/activated and after the previous editor state
# has been restored.
#
# An example hack to log to the console when each text editor is saved.
#
# atom.workspace.observeTextEditors (editor) ->
# editor.onDidSave ->
@albertbuchard
albertbuchard / timeit_fleuret.py
Last active July 23, 2022 21:39
Comparison tensor fill
setup='''
import numpy as np
import torch
V_nat = [[1, 2], [3, 4]]
U_nat = [[2, -1, 0, 0, 0, 0],
[5, 2, 8, -1, 0, 0]]
def compute_using_fleuret_1():
@albertbuchard
albertbuchard / sparsemax_torch.py
Last active April 18, 2023 18:31
This code defines a PyTorch implementation of the Sparsemax activation function. Sparsemax is an alternative to the softmax activation function that produces sparse probability distributions (euclidian projection to the simplex). The implementation is provided as a PyTorch nn.Module, making it easy to integrate into any architecture.
import torch
import torch.nn as nn
class Sparsemax(nn.Module):
def __init__(self, dim=-1):
super(Sparsemax, self).__init__()
self.dim = dim
def forward(self, x):
# Move the dimension to apply Sparsemax to the front
@albertbuchard
albertbuchard / ddp_debug.py
Created September 11, 2023 13:35
Distributed Data Parallel Debugging - Pytorch / PDB - ddp_pdb()
class DistributedIdentity:
"""
Singleton class to hold distributed identity information.
Handles SLURM, torchrun, and local runs.
Looks for the following environment variables:
- RANK
- WORLD_SIZE
- LOCAL_RANK
@albertbuchard
albertbuchard / mine_mwe.py
Last active October 22, 2023 11:49
MINE: Mutual Information Neural Estimation | Minimal Working Example
import math
import torch.optim as optim
import torch
from torch import nn
class MineWrapper(nn.Module):
def __init__(self, stat_model, moving_average_rate=0.1, unbiased=False):
super(MineWrapper, self).__init__()
@albertbuchard
albertbuchard / .bashrc
Created November 2, 2023 16:49
Useful SLURM bash functions (add to your ~/.bashrc)
tailast() {
# Get the directory from the argument or use the current directory as default
local dir="${1:-.}"
# Find the most recently modified file in the directory without descending into subdirectories
local latest_file=$(find "$dir" -maxdepth 1 -type f -exec stat --format='%Y %n' {} \; | sort -n | tail -1 | awk '{print $2}')
# Check if a file was found
if [[ -z "$latest_file" ]]; then
echo "No files found in $dir"
@albertbuchard
albertbuchard / hh_ht_win_rate.py
Last active March 19, 2024 18:25
Parallelizing Simulations to Calculate HH vs HT Win Rates
from concurrent.futures import ProcessPoolExecutor
import numpy as np
from scipy.signal import convolve2d
from tqdm import tqdm
nsims = int(1e6)
nevents = int(1e5)
@albertbuchard
albertbuchard / textrepo.py
Last active January 4, 2026 19:20
textrepo: A Python Script to Concatenate All Files in a Repository into a Single Text File, Ignoring Specified Patterns
#!/usr/bin/env python3
"""
textrepo — dump a repository into a single text file, optimized for LLM input.
Features
- Always prints a folder tree of the discovered files (after ignores).
- Emits a per-file section for every *text-eligible* file (even if skipped/truncated).
- Respects .gitignore by default (disable with --no-gitignore).
- Supports extra ignore patterns and an additional ignore file (gitignore-ish).
- Detects and omits binary / non-text files from the per-file sections
@albertbuchard
albertbuchard / partial_correlations.py
Created October 14, 2024 17:18
Partial Correlation Algorithms Evaluation
import matplotlib.pyplot as plt
import networkx as nx
from causallearn.utils.KCI.KCI import KCI_CInd, KCI_UInd
from npeet_plus import mi, mi_pvalue
from tqdm import tqdm
from src.causal_discovery.static_causal_discovery import (
run_causal_discovery,
visualize_causal_graph,
)
@albertbuchard
albertbuchard / active_learning_voI_surprisal.md
Created May 15, 2025 13:58
O3 Answers: Value of Information and Active Learning

Active learning in one line Keep a model $p_\theta(y\mid x,\mathcal D)$ that already knows something ($\mathcal D$); then ask for the single measurement $(x^*,y^*)$ that, once answered, will help most.


1. Value of Information (VoI)

Concept Formal core Intuition for the next query
Decision-centric $\text{VoI}(x)=\mathbb E_{y\sim p_\theta(y\mid x,\mathcal D)}\big[\Delta U(\theta\mid x,y)\big]$ “If I were given the label of $x$, how much would my future utility rise on average?”