Skip to content

FAQ / Common Errors

Installation and Setup

No module named seahorse : Install Seahorse — pip install seahorse-stpp (or pip install -e . from a source checkout).

No module named ray or HPO errors : Install the HPO extras: pip install "seahorse-stpp[hpo]"

No module named plotly : plot_kde_surface requires Plotly: python -m pip install plotly


Data Problems

Missing train.jsonl or val.jsonl : Check the directory you passed to --dataset or --splits_dir. Both files are required for fitting.

FileNotFoundError for test.jsonl : Ensure test.jsonl is in the dataset directory. It is required for post-fit evaluation with --split test.

Unknown split source or path errors in bench : The bench command does not accept --train, --val, --test. Use --dataset for a single dataset directory or --splits_dir for a collection.

JSONDecodeError when loading JSONL : Each line must be a standalone JSON object, not part of a JSON array. Check for trailing commas or wrapped arrays.


Fitting

Unknown model preset: my_preset : The preset is not registered. Check spelling with list_available_models(). If you wrote a custom preset, make sure the config module is imported in seahorse/models/configs/__init__.py.

Out of memory during fit : Reduce --override training.batch_size=16 (or smaller). Use --n_workers 1 and fewer concurrent runs. For auto_stpp and deep_stpp, also reduce hidden dim with --override model.build_overrides.hidden_dim=64.

RuntimeError: autograd or enable_grad errors : Some models (AutoSTPP, neural ODE families) use torch.autograd.grad internally. Make sure the runner is using inference_mode=False. This is set automatically in STPPRunner but can be disrupted by manual Trainer construction.

Validation NLL does not decrease : Try a smaller learning rate (--override training.lr=1e-4) or more epochs. For AutoSTPP, confirm the bounding box was computed from training data — the PresetDescriptor handles this automatically.


Evaluation

Path ... is not a saved run directory : Pass a per-model run directory, not the top-level benchmark directory. Look up the correct path in cell_index.json.

Metric available: false in metrics.json : The model does not support the requested metric. Check the Model Capability Matrix. This is not a failure — it is intentional.

Requested metrics require unplanned heavy artifacts : You requested a metric that needs sampling or grid work but used --metric-profile core. Re-run with --metric-profile predictive, generative, or surface.

predictive-compare requires --horizon : Pass a positive duration such as --horizon 1.0.

NLL values differ between Python API and CLI : The Python API evaluate() uses in-memory state from the current fit() call. The CLI evaluate metrics loads from the saved checkpoint. Minor differences can arise from batch ordering. Large differences indicate a save/load or normalization mismatch.


Benchmarking

HPO dependency errors with --tune : Remove --tune unless you intend to run HPO, or install HPO extras: pip install "seahorse-stpp[hpo]"

Benchmark cells have inconsistent NLL : Check that all presets were run under the same --normalize / --no-normalize setting. The benchmark contract enforces this when using bench directly, but manual fit runs do not automatically apply the contract.

Unknown search-alg: bayesian : Make sure Ray Tune and its optional search backends are installed. Use --search-alg random as a fallback.


Results and Comparison

NLL values look very different from a published paper : Check normalization. Published results may use z-scored time and space (normalized NLL) or raw-coordinate NLL. See Evaluation Semantics for the conversion formula.

SMASH or Diffusion STPP NLL looks unexpectedly low : These families optimize surrogate objectives (score-matching, ELBO), not exact log-likelihood. Their test_nll values are not directly comparable to exact-NLL families. See Model Capability Matrix.

predict_next raises NotImplementedError : The fitted model does not support next-event sampling. Check the Sampling column in the Model Capability Matrix.