MountainSort5: expose `pca_seed` / `random_seed` sorter param (pair with MS5 configurable PCA seed)

Đang mở
#4,919 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
43/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
data

Hướng nghiên cứu

Start with src/spikeinterface/sorters/external/mountainsort5.py, especially the whitening_seed parameter and _params_description; check the current MountainSort5 Scheme parameter objects and issue #69 to confirm seed support before forwarding it. Then review the sorter documentation and existing MountainSort5 tests to identify where to document and check reproducibility. Done means a seed parameter is passed through, its distinction from whitening_seed and threading caveats are documented, and a small seeded-run test is added.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

si.run_sorter('mountainsort5', ...) already accepts whitening_seed and forwards it to whiten(seed=...) (#4600). There is no analogous parameter for MountainSort5's internal PCA / clustering RNG.

Callers who need deterministic, seed-controlled sorts currently set process-global np.random.seed / random.seed before run_sorter, force n_jobs=1 + single-threaded BLAS, and hope MS5 / sklearn honor the ambient RNG. That is fragile:

  • On mountainsort5 < 0.5.9, unseeded PCA() can follow the ambient NumPy RNG.
  • On mountainsort5 ≥ 0.5.9, PCA hardcodes random_state=0, so ambient seeding no longer changes PCA output.

Proposal

Depends on exposing a seed in MountainSort5 itself (https://github.com/flatironinstitute/mountainsort5/issues/69).

  1. Add a sorter param next to whitening_seed in src/spikeinterface/sorters/external/mountainsort5.py (suggested name: pca_seed or random_seed; default matching MS5, likely 0).
  2. Forward it into the Scheme1/Scheme2(/3) parameter objects once MS5 supports it.
  3. Document in _params_description and the sorter docs that:
    • this controls MS5 PCA / classifier PCA RNG;
    • whitening_seed is separate (SI whitening before MS5);
    • n_jobs > 1 / multi-threaded BLAS can void bit-identical reproducibility.
  4. Add a small test: two runs with the same seed agree on spike trains (or unit count + spike counts on a tiny recording); a different seed can differ (if feasible in CI time).
Optional follow-ups (not required for this PR)
  • Persist the effective seed into sorting-folder / provenance metadata.
  • A top-level seed= on run_sorter that fans out to sorter-specific kwargs when supported.
  • A short “deterministic sorting” recipe in the docs (seed + spawn/mp_context + threadpool_limits(1)).

I can open a PR once the MS5 parameter lands (or against a known MS5 commit if maintainers prefer).

Context

We rely on reproducible MS5 sorts for parameter sweeps and for re-running a chosen configuration with a content fingerprint of the spike trains. An explicit sorter kwarg would make that a supported SpikeInterface path instead of ambient RNG.

Ngôn ngữ chính
Python
Star
870
Fork
284
Merge trung bình
3 ngày 1 giờ
Pull request đã merge (30 ngày)
41

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của SpikeInterface/spikeinterface

Tất cả issue của SpikeInterface/spikeinterface

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.