Skip to content

Instantly share code, notes, and snippets.

@deeenes
Created July 13, 2016 22:50
Show Gist options
  • Save deeenes/834a3b78d71e1d94a30bd4547ef8a1c3 to your computer and use it in GitHub Desktop.
Save deeenes/834a3b78d71e1d94a30bd4547ef8a1c3 to your computer and use it in GitHub Desktop.
MS adduct masses calculator
class Mz(object):
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
def adduct(self, m):
return (self.mz * self.z + float(m)) / abs(self.z)
def weight(self):
return self.mz * self.z
def remove_h(self):
return self.adduct(-mass.proton)
def remove_ac(self):
m = MolWeight('H3C2O2')
return self.adduct(-m - mass.electron)
def remove_fo(self):
m = MolWeight('HCO2')
return self.adduct(-m - mass.electron)
def remove_nh4(self):
m = MolWeight('NH4')
return self.adduct(-m + mass.electron)
def remove_oh(self):
m = MolWeight('OH')
return self.adduct(-m - mass.electron)
def add_h(self):
return self.adduct(mass.proton)
def add_2h(self):
return self.adduct(2 * mass.proton)
def add_3h(self):
return self.adduct(3 * mass.proton)
def add_oh(self):
m = MolWeight('OH')
return self.adduct(m + mass.electron)
def add_fo(self):
m = MolWeight('HCO2')
return self.adduct(m + mass.electron)
def add_ac(self):
m = MolWeight('H3C2O2')
return self.adduct(m + mass.electron)
def add_nh4(self):
m = MolWeight('NH4')
return self.adduct(m - mass.electron)
def add_na(self):
m = MolWeight('Na')
return self.adduct(m - mass.electron)
def remove_na(self):
m = MolWeight('Na')
return self.adduct(-m + mass.electron)
def reload(self):
modname = self.__class__.__module__
mod = __import__(modname, fromlist = [modname.split('.')[0]])
reload(mod)
new = getattr(mod, self.__class__.__name__)
setattr(self, '__class__', new)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment