Created
July 13, 2016 22:50
-
-
Save deeenes/834a3b78d71e1d94a30bd4547ef8a1c3 to your computer and use it in GitHub Desktop.
MS adduct masses calculator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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