__version__ = "0.3.1"
__author__ = "Sylvain Cormier"
from .tonnetz import Tonnetz, distance_matrix
from .masks import ToroidalMask, SparseMask, sinkhorn_knopp, is_doubly_stochastic
from .logit_bias import ToroidalLogitProcessor
from .drift import DriftMeter, compute_drift_rate, compute_coherence_variance
from .attention import (
BaselineAttention,
ToroidalAttention,
RandomGraphAttention,
create_random_graph_mask,
)
from .models import TinyTransformer
def create_tonnetz_distance_matrix(n_tokens: int, grid_size: int = 12):
import torch
return torch.from_numpy(distance_matrix(n_tokens, grid_size).astype("float32"))
def create_tonnetz_mask(seq_len: int, radius: float = 2.0, alpha: float = 1.0):
mask = ToroidalMask.hybrid(seq_len, radius=radius, alpha=alpha)
return mask.to_tensor()
__all__ = [
"Tonnetz",
"ToroidalMask",
"SparseMask",
"ToroidalLogitProcessor",
"DriftMeter",
"BaselineAttention",
"ToroidalAttention",
"RandomGraphAttention",
"TinyTransformer",
"distance_matrix",
"sinkhorn_knopp",
"is_doubly_stochastic",
"compute_drift_rate",
"compute_coherence_variance",
"create_tonnetz_distance_matrix",
"create_tonnetz_mask",
"create_random_graph_mask",
]