I've just released chemfp 1.6, which is the latest version of the no-cost/open source chemfp development track. You can download it from PyPI using:
python -m pip install chemfp
The main goal of this release was to improve the no-cost/free software version of chemfp for use as a good baseline for fingerprint similarity search. It may also be useful for legacy users who are still using Python 2.7.
Two performance features were backported from chemfp 3, which together give a 10-20% performance increase for common fingerprint sizes:
The fast integer-based rejection test in chemfp 1.5 was replaced with an even faster popcount rejection test when searching indexed arenas.
Additional specialized popcount functions were added which use the POPCNT instruction for fingerprints with storage sizes of 24, 64, 112, and 128 bytes, plus additional multiples of 128 bytes up to 1024 bytes. These improve the search performance of 166-bit fingerprints (MACCS keys), 512-bit fingerprints, 881-bit fingerprints (PubChem fingerprints), and 1024-bit, 2048-bit, 3072-bit, …. up to 8192-bit fingerprints.
I also improved the FPS "scan" performance by about 15%.
See the chemfp 1.6 release notes for a more complete list of what's new.
NOTE: This version only supports Python 2.7. The Open Babel, OpenEye, and RDKit toolkits all dropped support for Python 2.7 by 2019. If you need to generate new fingerprints for use with chemfp 1.6, perhaps for benchmarking purposes, then install chemfp 3.4 for a Linux-based OS and have it generate the FPS files for you.