Peakoscope is a python package for hierarchical analysis of peak and valley regions in numeric data.
- Peak regions can be nested, for example, when a large peak region contains smaller subpeak regions.
- A one-pass algorithm that finds all nested regions and orders them into a tree.
- Trees that can filtered, traversed, partitioned, pruned, grafted and serialized.
- Optional interfaces: matplotlib, pandas, polars, CLI and object-oriented.
Compute the tree of nested peak regions in a data set:
>>> import peakoscope
>>> data = [10, 30, 40, 30, 10, 50, 70, 70, 50, 80]
>>> peaktree = peakoscope.tree(data)
>>> print(peaktree)
0:10
├─5:10
│ ├─9:10
│ └─6:8
└─1:4
└─2:3Print the tree minus its root:
>>> peaktree = peakoscope.tree(data, forest=True)
>>> print(peaktree - peaktree.roots())
5:10
├─9:10
└─6:8
1:4
└─2:3Print the leaf nodes (which are local maxima in data) and corresponding slices of data:
>>> for leaf in peaktree.leaf_nodes():
... print(leaf, leaf.subarray(data))
...
9:10 [80]
6:8 [70, 70]
2:3 [40]Demo, tutorials and a glossary:
- Eivind Tøstesen, [email protected]
Copyright (C) 2021-2025 Eivind Tøstesen. This software is licensed under GPL-3.0-or-later
Citation can include one or more of:
-
Peakoscope v1.2.0
-
Github URL: https://github.com/eivindtostesen/hierarchical_peak_finding
-
PyPI URL: https://pypi.org/project/peakoscope/
-
The open-access article:
Tøstesen, E. A stitch in time: Efficient computation of genomic DNA melting bubbles. Algorithms for Molecular Biology, 3, 10 (2008). DOI: 10.1186/1748-7188-3-10
