Releases: Bio2Byte/constava
Official release v1.2.0
Official release for v1.2.0
View it on PyPI | Read about it on Zenodo
What's new ?
For full details please review the Pull Request #3.
Changed
- Reworked the core calculation logic to significantly improve performance by parallelizing residue processing.
- The
calculatorclass now iterates over residues using aProcessPoolExecutor, taking advantage of multi-core hardware. - Added a new
indent_sizeparameter to control JSON output indentation.
Defaults to0to preserve backward compatibility. - Project Metadata and Manifest simplified and up-to-date.
Fixed
- Issue where the
bandwidthparameter was ignored due to a hardcoded value (it always was0.13). - Typos and spelling corrections throughout the codebase.
Added
- Added support for Python 3.14.
- New metadata:
Testing
To double-check that results are exactly the same than previous version, except the expected changes due to variable/probabilistic aspects of the algorithms, a comparison has been performed using six entries from the "Atlas of proTein moLecular dynAmicS". These testing experiments have been possible thanks to Heli García-Álvarez collaboration.
Verification of identical results
Comparing the same results columns between the output file generated by v1.1.0 and v.1.2.0:
Verification of acceptable results
In this case, a threshold of a delta less than 0.01 has been used:
Furthermore, when using a stricter threshold of 0.001:
Performance
To validate the improvements in terms of prediction speed, a benchmark study has been executed to compare the wall times of 30 executions of v1.1.0 and v1.2.0. The hardware that hosted the tests was:
OS / Runtime
OS : Darwin 25.2.0
Platform : macOS-26.2-arm64-arm-64bit
Architecture : arm64
Python : 3.10.19 (main, Oct 21 2025, 16:37:10) [Clang 20.1.8 ]
CPU
CPU model : Apple M2 Pro
Physical cores: 10
Logical cores : 10
Memory
Total RAM : 32.00 GiBResults
The following results consider the wall time (real_sec value) provided by command-tool time. This is the time measured by a literal stopwatch on the wall. Start the program, stop the program:
- CPU computation
- Waiting on disk I/O
- Waiting on memory
- Waiting on the OS scheduler
- Waiting because another process stole the CPU
If a user is waiting for the program to finish, this is the time they experience.
Statistics
Per-environment summary of the wall times (real_sec):
| Version | Runs (n) | Median (s) | Mean (s) | P95 (s) |
|---|---|---|---|---|
| v1.1.0 | 30 | 129.995 | 130.687 | 134.666 |
| v1.2.0 | 30 | 23.855 | 25.007 | 26.423 |
Speed-up: 5.449× (improvement: 81.65%)
Plots

Pre-release v1.2.0b1
Proposal for v1.2.0
Changed
- Reworked the core calculation logic to significantly improve performance by parallelizing residue processing.
- The
calculatorclass now iterates over residues using aProcessPoolExecutor, taking advantage of multi-core hardware. - Added a new
indent_sizeparameter to control JSON output indentation.
Defaults to0to preserve backward compatibility. - Project Metadata and Manifest simplified and up-to-date.
Fixed
- Fixed an issue where the
bandwidthparameter was ignored due to a hardcoded value (0.13).
Added
- Added support for Python 3.14.
- Minor typo and spelling corrections throughout the codebase.
- Authors and citation files
v1.1.0
Added Features:
- Improving unit tests
constava testcommand that runs tests
v1.0.0
The original version of the constava package used in the preprint:
Gavalda-Garcia,J., Bickel,D., Roca-Martinez,J., Raimondi,D., Orlando,G. and Vranken,W. (2023) Data-driven probabilistic definition of the low energy conformational states of protein residues. bioRxiv, 10.1101/2023.07.24.550386.