MINT
Mesh of Idealized Neural Trajectories adapted to the LaDyS API.
Source
- Registry name:
mint - Model class:
ladys.models.mint.MINT - Config class:
ladys.models.mint.MINTConfig - Source file:
src/ladys/models/mint.py
Method
MINT builds a library of idealized neural trajectories (Omega_plus) and
paired task-state trajectories (Phi_plus). Prediction does not optimize
model parameters. Instead, it bins incoming spikes, updates a Poisson
likelihood recursion over the library, and estimates rates by interpolating
between likely library states. This makes MINT a library/inference method
rather than a differentiable PyTorch training loop.
NLB datasets
The native LaDyS MINT port supports the three MINT/NLB datasets used in the
original repository: area2_bump, mc_maze, and mc_rtt, plus a
LaDyS-native dmfc_rsg adapter built from the NLB 5 ms H5 tensors. Area2
and Maze smooth and average repeated condition-aligned trials; RTT can use
single-trial AutoLFADS-rate trajectories from the MINT MATLAB data; DMFC
averages the NLB condition-indexed reproduction trials. The ladys run
command dispatches MINT NLB configs through ladys.mint_nlb, which writes a
hidden-test H5 submission and a report.md with co-BPS.
Lorenz datasets
The synthetic Lorenz adapter is a LaDyS-specific trajectory builder. With
the default lorenz_library_source="smoothed_spikes", the library is
estimated from training spikes by Gaussian smoothing and condition averaging.
This keeps the comparison non-oracular while still matching MINT's
assumption that useful trajectory templates are learned before inference.
The true_rates library source is intentionally exposed for debugging. It
reproduces an oracle/template-retrieval sanity check, not a fair method
comparison. Use it only when validating the likelihood/interpolation code.
Outputs
forward accepts (batch, time, neurons) spikes and returns decoded rates
in the standard ModelOutput.rates field. loss returns a zero scalar so
the common trainer can record inference-only epochs without updating model
parameters.
Configuration
Config for the MINT trajectory-library decoder.
MINT is inference-only after its trajectory library has been built. The
optimization block should normally remain name="inference_only". Lorenz
benchmark epoch curves can progressively add repeated trials to the
trajectory library, but those curves still do not imply a backward pass or
EM loop.
For NLB tasks, dataset selects a task-specific trajectory builder.
area2_bump and mc_maze can build libraries from DANDI NWBs, mc_rtt
uses the downloaded MINT MATLAB data by default, and dmfc_rsg can use
DANDI/NWB trials, prepared NLB H5 tensors, or an experimental LFADS-derived
trajectory library. The NLB runner writes EvalAI-style held-out rate
submissions and reports co-smoothing bits/spike.
For the synthetic Lorenz task, LaDyS builds the MINT trajectory library from
repeated training trials. The default lorenz_library_source="smoothed_spikes"
estimates library rates by Gaussian-smoothing training spikes and averaging
by initial condition. lorenz_library_source="true_rates" is an oracle
sanity-check mode only and should not be used for fair method comparisons.
The default Lorenz split repeats the same initial-condition trajectories
across train and validation trials, so this benchmark measures denoising of
seen trajectories rather than interpolation to unseen trajectories.
| Field | Type | Default |
|---|---|---|
name |
Literal['mint'] |
'mint' |
objective |
str |
'mint_likelihood_recursion' |
dataset |
Literal['area2_bump', 'dmfc_rsg', 'mc_maze', 'mc_rtt', 'lorenz'] |
'mc_maze' |
train_source |
Literal['h5', 'lfads', 'mat', 'nwb'] |
'nwb' |
train_split |
Literal['auto', 'train', 'trainval'] |
'trainval' |
nlb_neural_state_defaults |
bool |
True |
nwb_root |
str |
'data/real/nlb/dandi' |
mat_data_root |
str |
'data/mint' |
target_h5 |
Optional[str] |
None |
eval_bin_size_ms |
int |
5 |
lorenz_library_source |
Literal['smoothed_spikes', 'true_rates'] |
'smoothed_spikes' |
n_candidates |
Optional[int] |
None |
window_length |
Optional[int] |
None |
delta |
Optional[int] |
None |
sigma |
Optional[int] |
None |
min_rate |
Optional[float] |
None |
causal |
Optional[bool] |
None |
lfads_epochs |
int |
25 |
lfads_batch_size |
int |
16 |
lfads_train_bin_size |
int |
1 |
lfads_lr |
float |
0.001 |
lfads_generator_dim |
int |
64 |
lfads_factor_dim |
int |
20 |
lfads_inferred_input_dim |
int |
2 |
lfads_encoder_dim |
int |
64 |
lfads_controller_dim |
int |
64 |
lfads_keep_prob |
float |
0.95 |
optimization |
OptimizationConfig |
OptimizationConfig(name='inference_only') |
Contracts
forwardinputs use(batch, time, neurons)observations.- Runtime outputs follow the model output contract.
- Optimizer epochs follow the optimizer contract.