Releases: cajigaslab/nSTAT-python
v0.3.0 — Full Matlab Parity
What's New in v0.3.0
This release achieves full method-level parity with the Matlab nSTAT toolbox across all 16 audited classes (484 methods).
New Methods
- SignalObj:
MTMspectrum(),spectrogram(),periodogram(),findPeaks(),findMaxima(),findMinima(),findGlobalPeak(),shift(),shiftMe(),alignTime(),power(),sqrt(),xcov() - DecodingAlgorithms: Full SSGLM EM suite (
PPSS_EStep,PPSS_MStep,PPSS_EM,PPSS_EMFB,estimateInfoMat,prepareEMResults), UKF methods (ukf,ukf_ut,ukf_sigmas) - SpikeTrainCollection:
ssglm(),ssglmFB()entry points - FitResSummary:
plotAllCoeffs(),plot3dCoeffSummary(),plot2dCoeffSummary(),plotKSSummary()
Paper Examples
All 5 paper examples rewritten as self-contained, documented scripts matching the Matlab workflow:
- mEPSC Poisson analysis (constant vs piecewise-rate)
- Whisker stimulus thalamus (lag search, nested model comparison)
- PSTH and SSGLM (CIF simulation, GLM-PSTH, state-space learning)
- Place cells (Gaussian + Zernike receptive fields, population statistics)
- Decoding (PPAF, goal-directed reach, hybrid filter)
Fidelity Summary
- Classes: 11 exact, 7 high fidelity, 1 N/A (19 total)
- Notebooks: 8 exact, 5 high fidelity (13 total)
- Tests: 198 passed, 2 skipped
Install
pip install nstat-toolbox==0.3.0Full changelog: v0.2.0...v0.3.0
v0.2.0 — Matlab API Parity
nSTAT Python v0.2.0 — Matlab API Parity
Complete functional parity with the Matlab nSTAT toolbox.
New Methods
State-Space GLM (SSGLM) EM Algorithm
PPSS_EMFB,PPSS_EStep,PPSS_MStep,PPSS_EMestimateInfoMat,prepareEMResults,_ComputeStimulusCIs_MCnstColl.ssglm(),nstColl.ssglmFB()
Unscented Kalman Filter
ukf,ukf_ut,ukf_sigmas
SignalObj Spectral Analysis
MTMspectrum,spectrogram,periodogram
SignalObj Utilities
shift,shiftMe,alignTime,power,sqrt,xcov
SignalObj Peak-Finding
findPeaks,findMaxima,findMinima,findGlobalPeak
FitResSummary Visualization
plotAllCoeffs,plot3dCoeffSummary,plot2dCoeffSummary,plotKSSummary
Paper Examples
All 5 paper examples (Sections 2.3–2.6 of Cajigas et al. 2012) rewritten as self-contained documented scripts with --export-figures support.
Documentation
- Complete help files with grouped method listings for all 16 classes
- Paper overview with SSGLM workflow, decoding, and signal processing sections
- README aligned with Matlab nSTAT repo structure
Bug Fixes (vs Matlab)
findPeaksminima branch: now correctly negates data (nSTAT#12)findGlobalPeak: fixedsOBj→sObjtypo (nSTAT#13)shiftMe: now updatesminTime/maxTime(nSTAT#14)nspikeTrain.plot(): acceptshandlekwarg for API consistency
Verification
- 180 tests pass across Python 3.11 and 3.12
- All 5 paper examples verified end-to-end (24 figures generated)
- 13/13 CI checks green
Full Changelog: v0.1.0...v0.2.0
v1.0.0-rc1
Release candidate baseline for MATLAB-equivalent parity in nSTAT-python.\n\nHighlights:\n- Parity snapshot at release commit 8b69adf: high=0, medium=0, low=0\n- CI now enforces high/medium parity gate in test-and-build\n- Green workflows on release commit: test-and-build, pages, notebooks-full\n- Canonical validation artifact attached: nstat_python_validation_report_20260301_212022.pdf\n
nSTAT-python v1.0.0-rc5
nSTAT-python v1.0.0-rc5
Automated release-candidate notes generated from parity, functional, and numeric-drift artifacts.
Structural parity
- High gaps:
0 - Medium gaps:
0 - Low gaps:
0 - Total gaps:
0
Functional parity
- Total methods:
501 - Contract-verified methods:
480 - Contract-explicit verified methods:
480 - Probe-verified methods:
0 - Excluded methods:
21 - Missing symbol methods:
0 - Unverified behavior methods:
0
Example parity
- Total topics:
30 - Validated topics:
26 - MATLAB doc-only topics:
4 - Pending manual review topics:
0 - Out-of-scope topics:
DocumentationSetup2025bFitResSummaryExamplesFitResultExamplesFitResultReference
Numeric drift
- Topics checked:
31 - Topics passed:
31 - Topics failed:
0 - Metrics checked:
180 - Metrics failed:
0
RC delta vs v1.0.0-rc4
- Structural high gaps:
0 -> 0(+0) - Structural medium gaps:
0 -> 0(+0) - Validated example topics:
26 -> 26(+0) - MATLAB doc-only topics:
4 -> 4(+0) - Contract-explicit verified methods:
480 -> 480(+0) - Probe-verified methods:
0 -> 0(+0) - Unverified behavior methods:
0 -> 0(+0) - Numeric topics checked:
31 -> 31(+0) - Numeric topics passed:
31 -> 31(+0) - Numeric topics failed:
0 -> 0(+0) - Numeric metrics checked:
126 -> 180(+54) - Numeric metrics failed:
0 -> 0(+0)
Frozen MATLAB snapshot
- Snapshot id:
matlab_gold_20260302(2026-03-02) - Source manifest:
data/shared/matlab_source_20260302.manifest.json(sha256578a20db6433efed11466eb64ab23d77a1f106f3a2da8937c28849511e9385e7) - Mirror manifest:
data/shared/matlab_gold_20260302.manifest.json(sha256b980cb16f5872b53e841f360e9a81a34c9e6b4a5149a9ef3b7fd96314899bfe4) - File count:
42 - Total size bytes:
504513862
Validation asset
- PDF:
nstat_python_validation_report_20260302_224759.pdf
Build metadata
- Commit:
aa7c0ccb87a868512bc5bf490d970a12baeab778 - Workflow run: https://github.com/cajigaslab/nSTAT-python/actions/runs/22599268208
nSTAT-python v1.0.0-rc4
nSTAT-python v1.0.0-rc4
Automated release-candidate notes generated from parity, functional, and numeric-drift artifacts.
Structural parity
- High gaps:
0 - Medium gaps:
0 - Low gaps:
0 - Total gaps:
0
Functional parity
- Total methods:
501 - Contract-verified methods:
480 - Contract-explicit verified methods:
480 - Probe-verified methods:
0 - Excluded methods:
21 - Missing symbol methods:
0 - Unverified behavior methods:
0
Example parity
- Total topics:
30 - Validated topics:
26 - MATLAB doc-only topics:
4 - Pending manual review topics:
0 - Out-of-scope topics:
DocumentationSetup2025bFitResSummaryExamplesFitResultExamplesFitResultReference
Numeric drift
- Topics checked:
31 - Topics passed:
31 - Topics failed:
0 - Metrics checked:
126 - Metrics failed:
0
Frozen MATLAB snapshot
- Snapshot id:
matlab_gold_20260302(2026-03-02) - Source manifest:
data/shared/matlab_source_20260302.manifest.json(sha256578a20db6433efed11466eb64ab23d77a1f106f3a2da8937c28849511e9385e7) - Mirror manifest:
data/shared/matlab_gold_20260302.manifest.json(sha256b980cb16f5872b53e841f360e9a81a34c9e6b4a5149a9ef3b7fd96314899bfe4) - File count:
42 - Total size bytes:
504513862
Validation asset
- PDF:
nstat_python_validation_report_20260302_221606.pdf
Build metadata
- Commit:
cf36c2f1978a640948cb0d937d3230d8ee73e162 - Workflow run: https://github.com/cajigaslab/nSTAT-python/actions/runs/22598121674
nSTAT-python v1.0.0-rc3
nSTAT-python v1.0.0-rc3
Automated release-candidate notes generated from parity, functional, and numeric-drift artifacts.
Structural parity
- High gaps:
0 - Medium gaps:
0 - Low gaps:
0 - Total gaps:
0
Functional parity
- Total methods:
501 - Contract-verified methods:
480 - Contract-explicit verified methods:
277 - Probe-verified methods:
203 - Excluded methods:
21 - Missing symbol methods:
0 - Unverified behavior methods:
0
Example parity
- Total topics:
30 - Validated topics:
26 - MATLAB doc-only topics:
4 - Pending manual review topics:
0 - Out-of-scope topics:
DocumentationSetup2025bFitResSummaryExamplesFitResultExamplesFitResultReference
Numeric drift
- Topics checked:
13 - Topics passed:
13 - Topics failed:
0 - Metrics checked:
36 - Metrics failed:
0
Frozen MATLAB snapshot
- Snapshot id:
matlab_gold_20260302(2026-03-02) - Source manifest:
data/shared/matlab_source_20260302.manifest.json(sha256578a20db6433efed11466eb64ab23d77a1f106f3a2da8937c28849511e9385e7) - Mirror manifest:
data/shared/matlab_gold_20260302.manifest.json(sha256b980cb16f5872b53e841f360e9a81a34c9e6b4a5149a9ef3b7fd96314899bfe4) - File count:
42 - Total size bytes:
504513862
Validation asset
- PDF:
nstat_python_validation_report_20260302_204327.pdf
Build metadata
- Commit:
8675f3d127b454c9b0d84e5449433ee2da95e8f4 - Workflow run: https://github.com/cajigaslab/nSTAT-python/actions/runs/22594829334
nSTAT-python v1.0.0-rc2
nSTAT-python v1.0.0-rc2
This release candidate tightens parity enforcement for in-scope examples and freezes the MATLAB data snapshot used for reproducible validation.
Highlights
- Enforced
alignment_status=validatedfor all in-scope example topics in CI. - Explicitly documented out-of-scope MATLAB documentation-only topics in parity policy/spec:
DocumentationSetup2025bFitResSummaryExamplesFitResultExamplesFitResultReference
- Added frozen MATLAB gold data snapshot metadata:
- Updated gate-mode PDF parity logic to honor in-scope vs out-of-scope topic policy.
Validation (latest on this release commit)
- test-and-build: 22593954595
- validation-pdf: 22594014785
- pages: 22593954590
Numeric Drift Report
Frozen MATLAB Gold Snapshot
- Mirror manifest:
data/shared/matlab_gold_20260302.manifest.json- SHA256:
b980cb16f5872b53e841f360e9a81a34c9e6b4a5149a9ef3b7fd96314899bfe4 - Files:
42 - Total size bytes:
504513862
- SHA256:
- Source manifest:
data/shared/matlab_source_20260302.manifest.json- SHA256:
578a20db6433efed11466eb64ab23d77a1f106f3a2da8937c28849511e9385e7 - Files:
42 - Total size bytes:
504513862
- SHA256:
PDF Asset
- Attached:
nstat_python_validation_report_20260302_151458.pdf
nSTAT-python v0.1.0-split
Split Release: Standalone Python nSTAT
This release establishes nSTAT-python as the standalone Python repository split from nSTAT.
Included
- Standalone package layout at repo root (
nstat/,tools/,docs/,notebooks/,tests/) - Canonical Python APIs (
nstat.signal,nstat.spikes,nstat.trial,nstat.analysis,nstat.fit,nstat.cif,nstat.decoding,nstat.datasets) - Help topic docs generated from
helpfiles/helptoc.xml(full topic coverage) - Example notebook generation and execution gating for all 25 help example topics
- Bundled datasets required for offline example execution
- CI gate requiring:
- docs coverage verification
- notebook execution and topic alignment
- strict offline target-install standalone verification
- pytest
Migration Guidance
- Python users should now use this repository:
cajigaslab/nSTAT-python. - MATLAB users should use
cajigaslab/nSTAT: https://github.com/cajigaslab/nSTAT - If migrating from monorepo paths, drop the
python/prefix in commands and imports from checkout root.
Related Split PRs
- nSTAT-python bootstrap PR: #1
- nSTAT MATLAB-only cleanup PR: cajigaslab/nSTAT#4