diff --git a/pyteomics/proforma.py b/pyteomics/proforma.py index 3a17f58..8763f1f 100644 --- a/pyteomics/proforma.py +++ b/pyteomics/proforma.py @@ -25,6 +25,7 @@ from .mass import Composition, std_aa_mass, Unimod, nist_mass, calculate_mass, std_ion_comp, mass_charge_ratio from .auxiliary import PyteomicsError, BasicComposition from .auxiliary.utils import add_metaclass +from .auxiliary.utils import memoize try: import numpy as np @@ -343,6 +344,7 @@ def load_database(self): return obo_cache.resolve("http://www.unimod.org/obo/unimod.obo") return Unimod() + @memoize(maxsize=10000) def resolve(self, name=None, id=None, **kwargs): strict = kwargs.get("strict", self.strict) exhaustive = kwargs.get("exhaustive", True) @@ -398,6 +400,7 @@ def __init__(self, **kwargs): def load_database(self): return load_psimod() + @memoize(maxsize=10000) def resolve(self, name=None, id=None, **kwargs): if name is not None: defn = self.database[name] @@ -443,6 +446,7 @@ def __init__(self, **kwargs): def load_database(self): return load_xlmod() + @memoize(maxsize=10000) def resolve(self, name=None, id=None, **kwargs): if name is not None: defn = self.database[name] @@ -562,6 +566,7 @@ def get_mass_from_term(self, term, raw_mass): "Only a rough approximation is available.") % (term, )) return rough_mass + @memoize(maxsize=10000) def resolve(self, name=None, id=None, **kwargs): if name is not None: term = self.database[name] @@ -613,6 +618,7 @@ def parse_identifier(self, identifier): """ return identifier, None + @memoize(maxsize=10000) def resolve(self, name=None, id=None, **kwargs): defn = None for resolver in self.resolvers: