A Python package implementing Bocker & Liptak's algorithm for finding molecular formulae from a given mass, as well as Kind and Fiehn's heuristics
Project description
find-mfs: Accurate mass ➜ Molecular Formulae
find-mfs is a Python implementation of Böcker & Lipták's algorithm for efficiently finding
molecular formulae candidates which fit some given mass (+/- an error window), as implemented in SIRIUS.
find-mfs also implements other methods
for filtering the MF candidate lists:
- Octet rule
- Ring/double bond equivalents (RDBE's)
- Predicted isotope envelopes, generated using using Łącki and Startek's algorithm
as implemented in
IsoSpecPy
Motivation:
I needed to perform mass decomposition and, shockingly, I could not find a Python library for it
(despite being a routine process). find-mfs is intended to be used by anyone looking to incorporate
molecular formula finding into their Python project.
Installation
pip install find_mfs
Example Usage:
from find_mfs import FormulaFinder
finder = FormulaFinder()
finder.find_formulae(
mass=613.2391, # Novobiocin [M+H]+ ion; C31H37N2O11+
charge=1, # Charge should be specified - electron mass matters
error_ppm=5.0, # Can also specify error_da instead
# --- FORMULA FILTERS ----
check_octet=True, # Candidates must obey the octet rule
filter_rdbe=(0, 20), # Candidates must have 0 to 20 ring/double-bond equivalents
max_counts={
'P': 0, # Candidates must not have any phosphorous atoms
'S': 2, # Candidates can have up to two sulfur atoms
},
)
Output:
FormulaSearchResults(query_mass=613.2391, n_results=38)
Formula Error (ppm) Error (Da) RDBE
----------------------------------------------------------------------
[C6H25N30O4S]+ -0.12 0.000073 9.5
[C31H37N2O11]+ 0.14 0.000086 14.5
[C14H29N24OS2]+ 0.18 0.000110 12.5
[C16H41N10O11S2]+ 0.20 0.000121 1.5
[C29H33N12S2]+ -0.64 0.000392 19.5
... and 33 more
See basic_usage.ipynb for more thorough examples/demonstrations
If you use this package, make sure to cite:
- Böcker & Lipták, 2007 - this package uses their algorithm for formula finding...
- ...as implemented in SIRIUS: Böcker et. al., 2008
- Łącki, Valkenborg & Startek 2020 - this package uses IsoSpecPy to quickly simulate isotope envelopes
- Gohlke, 2025 - this package uses
molmass, which provides very convenient methods for handling chemical formulae
Contributing
Contributions are welcome. Here's a list of features I feel should be implemented eventually:
- Statistics-based isotope envelope fitting
- Fragmentation constraints
- Element ratio constraints
- GUI app
License
This project is distributed under the GPL-3 license.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file find_mfs-0.1.0.tar.gz.
File metadata
- Download URL: find_mfs-0.1.0.tar.gz
- Upload date:
- Size: 215.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e2dc25621d9adad2a0ec065d6b2af6f6fbbbec49366e5afe488987356928e8b
|
|
| MD5 |
6bc0e946dd7943a503811710e639cb16
|
|
| BLAKE2b-256 |
f5637c7a9b4ba82daab31acb2abd443cb61f4d44db2dbc966cad78e39fac733d
|
File details
Details for the file find_mfs-0.1.0-py3-none-any.whl.
File metadata
- Download URL: find_mfs-0.1.0-py3-none-any.whl
- Upload date:
- Size: 218.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e639138ad582615cbcc02f367f91c9f1ebcfa815d279b5bdb8153eb2d8319ed
|
|
| MD5 |
ded2cd2cf393f611a2f2e4a5f1ab4dc3
|
|
| BLAKE2b-256 |
1465b7028ff843710956e8f480ff2631c609173378a66ed82c9fa11e319e8faa
|