Source code for lipyd.mz

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#
#  This file is part of the `lipyd` python module
#
#  Copyright (c) 2015-2018 - EMBL
#
#  File author(s): Dénes Türei (turei.denes@gmail.com)
#
#  Distributed under the GNU GPLv3 License.
#  See accompanying file LICENSE.txt or copy at
#      http://www.gnu.org/licenses/gpl-3.0.html
#
#  Website: http://www.ebi.ac.uk/~denes
#

"""
Module for arithmetics with m/z values and adduct ions.
"""

from __future__ import print_function
from future.utils import iteritems
from past.builtins import xrange, range, reduce

import imp

import lipyd.mass as mass

[docs]class Mz(): """ Represents one m/z value. Provides methods for conversion to exact mass or various adducts. Other classes representing molecular entities and masses inherit these methods from here. """ def __init__(self, mz, z = 1, sign = None, tolerance = 0.01): self.mz = mz self.z = z self.sign = sign self.tol = tolerance def __eq__(self, other): return self.z == other.z and \ self.mz > other.mz - self.tol and \ self.mz < other.mz + self.tol def __str__(self): return 'm/z = %f' % self.mz
[docs] def adduct(self, m): return (self.mz * self.z + float(m)) / abs(self.z)
[docs] def weight(self): return self.mz * self.z
[docs] def remove_h(self): return self.adduct(-mass.proton)
[docs] def remove_ac(self): m = mass.MassBase('H3C2O2') return self.adduct(-m - mass.electron)
[docs] def remove_fo(self): m = mass.MassBase('HCO2') return self.adduct(-m - mass.electron)
[docs] def remove_nh4(self): m = mass.MassBase('NH4') return self.adduct(-m + mass.electron)
[docs] def remove_oh(self): m = mass.MassBase('OH') return self.adduct(-m - mass.electron)
[docs] def add_h(self): return self.adduct(mass.proton)
[docs] def add_2h(self): return self.adduct(2 * mass.proton)
[docs] def add_3h(self): return self.adduct(3 * mass.proton)
[docs] def add_oh(self): m = mass.MassBase('OH') return self.adduct(m + mass.electron)
[docs] def add_fo(self): m = mass.MassBase('HCO2') return self.adduct(m + mass.electron)
[docs] def add_ac(self): m = mass.MassBase('H3C2O2') return self.adduct(m + mass.electron)
[docs] def add_nh4(self): m = mass.MassBase('NH4') return self.adduct(m - mass.electron)
[docs] def add_na(self): m = mass.MassBase('Na') return self.adduct(m - mass.electron)
[docs] def remove_na(self): m = mass.MassBase('Na') return self.adduct(-m + mass.electron)
[docs] def reload(self): modname = self.__class__.__module__ mod = __import__(modname, fromlist=[modname.split('.')[0]]) imp.reload(mod) new = getattr(mod, self.__class__.__name__) setattr(self, '__class__', new)