Citing axonforge

If the software did part of your analysis, cite the version you ran. A citation without a version number is not reproducible, because defaults have changed twice in this project's history and will change again.

Software citation#

Plain text, for a reference list:

Brauner, I. and Reyn, T. (2026). axonforge: spike detection, sorting
and interval statistics for extracellular recordings. Version 0.7.2.
Harlin Institute for Neural Dynamics.

As BibTeX:

@software{axonforge_0_7_2,
  author    = {Brauner, Ida and Reyn, Tomas},
  title     = {axonforge: spike detection, sorting and interval
               statistics for extracellular recordings},
  version   = {0.7.2},
  year      = {2026},
  month     = {9},
  publisher = {Harlin Institute for Neural Dynamics},
  url       = {https://axonforge.dev/}
}

The installed package can tell you what to write, so that the version in the paper is the version that ran:

python - <<'EOF'
import axonforge
print(axonforge.citation())                 # plain text
print(axonforge.citation(style="bibtex"))   # the entry above
EOF

There is no methods paper to cite yet. One is being written; until it exists, citing a preprint that does not exist is worse than citing the software, and we would rather say so plainly than leave a placeholder here.

What to report in a methods section#

Every value below changes the result, and all of them are in units.provenance after an analysis, so this list is a matter of copying rather than of remembering.

The minimum set that makes a spike-sorting analysis reproducible with this tool.
ReportFieldDefault
Versionaxonforge_version—
Filter band and orderfilt.bandpass300–6000 Hz, order 4, zero-phase
Referencingfilt.common_medianper channel group
Noise estimatordetect.sigmamedian/0.6745
Threshold multiplierdetect.k4.5
Polarity and dead timedetect.polarity, dead_time_msnegative, 1.0 ms
Waveform windowwaveform.pre_ms, post_ms0.5 and 1.5 ms
Alignment modewaveform.align.modepeak, interpolated
Components and criterionsort.n_components, criterion3, BIC
Refractory period usedquality.refractory_ms1.5 ms
Manual curationprovenance.curationlist of merges and drops
One sentence that covers most of it

«Spikes were detected and sorted with axonforge 0.7.2: common median referencing by tetrode group, zero-phase Butterworth bandpass 300–6000 Hz, threshold at 4.5 σ with σ estimated as the median absolute deviation scaled by 0.6745, 1.0 ms dead time, waveforms −0.5 to +1.5 ms aligned on the interpolated negative peak, three principal components, and a Gaussian mixture with model order chosen by BIC over one to eight components. Clusters with more than 1 % of intervals below 1.5 ms were discarded.»

Authors#

Correspondence: maintainers@axonforge.dev. Development was supported by internal funds of the Harlin Institute for Neural Dynamics; no external grant paid for it, and no commercial party has a say in what it does.

Licence#

BSD 3-clause. In short: use it for anything, including commercially; keep the copyright notice and the list of conditions in redistributions, in source or in binary form; do not use the names of the project or its authors to endorse something derived from it without permission. It is provided without warranty of any kind.

The full text ships as LICENSE in the source tarball and in the installed package metadata. Nothing in the dependency set imposes stricter terms: NumPy, SciPy, h5py and matplotlib are all permissively licensed.

Citing the benchmark separately#

If you reuse the synthetic sets from validation — the twelve templates and the noise construction — say which signal-to-noise levels and which seeds you used. The whole generator is axonforge.bench in the same package and under the same licence, so it needs no separate citation beyond the version.