MAGPIEFingerprint#
- class skfp.fingerprints.MAGPIEFingerprint(sparse: bool = False, n_jobs: int | None = None, batch_size: int | None = None, verbose: int | dict = 0)#
Materials Agnostic Platform for Informatics and Exploration (MAGPIE) fingerprint.
This is a descriptor-based fingerprint, computed from the elemental composition (chemical formula) of a molecule [1]. It was originally designed for inorganic materials, but is applicable to any compound with a well-defined stoichiometry. Here, the composition is the count of each element in the molecule, including hydrogens, normalized to fractions.
Note that this fingerprint uses only the molecular formula and is therefore identical for all isomers, ignoring any structural information.
It computes 145 features, in 4 groups:
stoichiometric attributes (6 features), depending only on element fractions, and not on element identity:
number of distinct elements
\(L^p\) norms of the element fraction vector, for p = 2, 3, 5, 7, 10
elemental property statistics (132 features), i.e. 6 weighted statistics (mean, range, mean absolute deviation, max, min, mode) of 22 elemental properties: atomic number, Mendeleev number, atomic weight, melting temperature, periodic table column and row, covalent radius, electronegativity, number of valence electrons in the s, p, d and f orbitals and in total, number of unfilled s, p, d and f orbitals and unfilled orbitals in total, ground state volume per atom, ground state band gap energy, ground state magnetic moment, and space group number
valence orbital occupation attributes (4 features), i.e. the fraction of valence electrons in the s, p, d, and f orbitals
ionic compound attributes (3 features):
whether a charge-neutral ionic compound can be formed
maximal ionic character of any pair of constituent elements
mean ionic character, weighted by element fractions
Elements are supported up to copernicium (atomic numbers 1-112). Some properties are undefined for a few elements, like electronegativity of noble gases, resulting in NaN values for some properties in those cases.
- Parameters:
sparse (bool, default=False) – Whether to return dense NumPy array, or sparse SciPy CSR array.
n_jobs (int, default=None) – The number of jobs to run in parallel.
transform()is parallelized over the input molecules.Nonemeans 1 unless in ajoblib.parallel_backendcontext.-1means using all processors. See scikit-learn documentation onn_jobsfor more details.batch_size (int, default=None) – Number of inputs processed in each batch.
Nonedivides input data into equal-sized parts, as many asn_jobs.verbose (int or dict, default=0) – Controls the verbosity when computing fingerprints. If a dictionary is passed, it is treated as kwargs for
tqdm(), and can be used to control the progress bar.
- n_features_out#
Number of output features, size of fingerprints.
- Type:
int = 145
- requires_conformers#
This fingerprint uses only the molecular formula and does not require conformers.
- Type:
bool = False
References
Examples
>>> from skfp.fingerprints import MAGPIEFingerprint >>> smiles = ["O", "CC", "[C-]#N", "CC=O"] >>> fp = MAGPIEFingerprint() >>> fp MAGPIEFingerprint()
>>> fp.transform(smiles).shape (4, 145)
>>> fp.transform(smiles)[:, :3] # number of elements and L2, L3 norms array([[2. , 0.74535599, 0.69336127], [2. , 0.79056942, 0.75914724], [2. , 0.70710678, 0.62996052], [3. , 0.65465367, 0.59704846]])
Methods
fit(X[, y])Unused, kept for scikit-learn compatibility.
fit_transform(X[, y])The same as
.transform()method, kept for scikit-learn compatibility.get_feature_names_out([input_features])Get fingerprint output feature names.
Get metadata routing of this object.
get_params([deep])Get parameters for this estimator.
set_output(*[, transform])Set output container.
set_params(**params)Set the parameters of this estimator.
set_transform_request(*[, copy])Configure whether metadata should be requested to be passed to the
transformmethod.transform(X[, copy])Compute MAGPIE fingerprints.
- fit(X: Sequence[str | Mol], y: Any | None = None, **fit_params)#
Unused, kept for scikit-learn compatibility.
- Parameters:
X (any) – Unused, kept for scikit-learn compatibility.
y (any) – Unused, kept for scikit-learn compatibility.
**fit_params (dict) – Unused, kept for scikit-learn compatibility.
- Return type:
self
- fit_transform(X: Sequence[str | Mol], y: Any | None = None, **fit_params)#
The same as
.transform()method, kept for scikit-learn compatibility.- Parameters:
X (any) – See
.transform()method.y (any) – See
.transform()method.**fit_params (dict) – Unused, kept for scikit-learn compatibility.
- Returns:
X_new – See
.transform()method.- Return type:
any
- get_feature_names_out(input_features=None) ndarray#
Get fingerprint output feature names.
- Parameters:
input_features (array-like of str or None, default=None) – Unused, kept for scikit-learn compatibility.
- Returns:
feature_names_out – MAGPIE feature names.
- Return type:
ndarray of str objects
- get_metadata_routing()#
Get metadata routing of this object.
Please check User Guide on how the routing mechanism works.
- Returns:
routing – A
MetadataRequestencapsulating routing information.- Return type:
MetadataRequest
- get_params(deep=True)#
Get parameters for this estimator.
- Parameters:
deep (bool, default=True) – If True, will return the parameters for this estimator and contained subobjects that are estimators.
- Returns:
params – Parameter names mapped to their values.
- Return type:
dict
- set_output(*, transform=None)#
Set output container.
See Introducing the set_output API for an example on how to use the API.
- Parameters:
transform ({"default", "pandas", "polars"}, default=None) –
Configure output of transform and fit_transform.
”default”: Default output format of a transformer
”pandas”: DataFrame output
”polars”: Polars output
None: Transform configuration is unchanged
Added in version 1.4: “polars” option was added.
- Returns:
self – Estimator instance.
- Return type:
estimator instance
- set_params(**params)#
Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects (such as
Pipeline). The latter have parameters of the form<component>__<parameter>so that it’s possible to update each component of a nested object.- Parameters:
**params (dict) – Estimator parameters.
- Returns:
self – Estimator instance.
- Return type:
estimator instance
- set_transform_request(*, copy: bool | None | str = '$UNCHANGED$') MAGPIEFingerprint#
Configure whether metadata should be requested to be passed to the
transformmethod.Note that this method is only relevant when this estimator is used as a sub-estimator within a meta-estimator and metadata routing is enabled with
enable_metadata_routing=True(seesklearn.set_config()). Please check the User Guide on how the routing mechanism works.The options for each parameter are:
True: metadata is requested, and passed totransformif provided. The request is ignored if metadata is not provided.False: metadata is not requested and the meta-estimator will not pass it totransform.None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
- Parameters:
copy (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for
copyparameter intransform.- Returns:
self – The updated object.
- Return type:
object
- transform(X: Sequence[str | Mol], copy: bool = False) ndarray | csr_array#
Compute MAGPIE fingerprints.
- Parameters:
X ({sequence, array-like} of shape (n_samples,)) – Sequence containing SMILES strings or RDKit
Molobjects.copy (bool, default=False) – Copy the input X or not.
- Returns:
X – Array with fingerprints.
- Return type:
{ndarray, sparse matrix} of shape (n_samples, 145)