def __init__(self,name, code, code3,composition):
     #: Full name of the AA
     self.name = name
     #: One letter code
     self.code = code
     #: Three letter code
     self.code3 = code3
     #: Elemental composition
     self.composition = {}
     self.composition = composition
     #: Library of elements
     self.elementsLib = Elements()
     self.deltaMass = Formulas.mass(self.composition, elementsLib = self.elementsLib) #self.calDeltaMass()
Exemple #2
0
 def __init__(self, name, code, code3, composition):
     #: Full name of the AA
     self.name = name
     #: One letter code
     self.code = code
     #: Three letter code
     self.code3 = code3
     #: Elemental composition
     self.composition = {}
     self.composition = composition
     #: Library of elements
     self.elementsLib = Elements()
     self.deltaMass = Formulas.mass(
         self.composition,
         elementsLib=self.elementsLib)  #self.calDeltaMass()
 def __init__(self, aminoacid, tpp_Mod, unimodAccession, peakViewAccession, is_labeling, composition):
     #self.aminoacid = Aminoacid()
     self.aminoacid            = aminoacid
     self.is_Nterminal = False
     self.is_Cterminal = False
     if self.aminoacid == 'N-term' : self.is_Nterminal = True
     if self.aminoacid == 'C-term' : self.is_Cterminal = True
     self.unimodAccession     = unimodAccession
     self.peakviewAccession     = peakViewAccession
     self.TPP_Mod             = tpp_Mod
     self.composition         = composition
     self.is_labeling         = is_labeling
     #if deltaMass        : self.deltamass = deltaMass
     self.deltamass             = Formulas.mass(composition) #self._getMass()
     self.id                 = aminoacid + str(int(round(self.deltamass,0)))
 def __init__(self, aminoacid, tpp_Mod, unimodAccession, peakViewAccession,
              is_labeling, composition):
     #self.aminoacid = Aminoacid()
     self.aminoacid = aminoacid
     self.is_Nterminal = False
     self.is_Cterminal = False
     if self.aminoacid == 'N-term': self.is_Nterminal = True
     if self.aminoacid == 'C-term': self.is_Cterminal = True
     self.unimodAccession = unimodAccession
     self.peakviewAccession = peakViewAccession
     self.TPP_Mod = tpp_Mod
     self.composition = composition
     self.is_labeling = is_labeling
     #if deltaMass        : self.deltamass = deltaMass
     self.deltamass = Formulas.mass(composition)  #self._getMass()
     self.id = aminoacid + str(int(round(self.deltamass, 0)))
    def _getMassFromSequence(self):
        #self.aaList = Aminoacides()

        mass = 0
        for aa in self.sequence[:]:
            for ac in self.aaList.list:
                if aa == ac.code:
                    mass += ac.deltaMass

        #Adding an H2O to the mass, as it is calculated by using delta masses
        mass += Formulas.mass(Formulas.H2O)  #(1.007825032 *2 + 15.99491462)

        #Adding modifications deltamass
        for aaPosMod in self.modifications.iterkeys():
            mass += self.modifications[aaPosMod].deltamass

        return mass
    def _getMassFromSequence(self):
        #self.aaList = Aminoacides()

        mass = 0
        for aa in self.sequence[:]:
            for ac in self.aaList.list:
                if aa == ac.code:
                    mass += ac.deltaMass
        
        #Adding an H2O to the mass, as it is calculated by using delta masses
        mass += Formulas.mass(Formulas.H2O) #(1.007825032 *2 + 15.99491462) 
        
        #Adding modifications deltamass
        for aaPosMod in self.modifications.iterkeys() :
            mass += self.modifications[aaPosMod].deltamass

        return mass
    def getMZfragment(self,
                      ion_type,
                      ion_number,
                      ion_charge,
                      label='',
                      fragmentlossgain=0.0):
        #Check label
        if len(label) > 0 and label not in self.labelings:
            print "Coding error: this labeling is not reported!! %s" % label
            sys.exit(2)

        #Check ion type
        #if ion_type not in self.iontypes :
        #print "This ion type can not be processed :" , ion_type
        #print "This is the list of ion types considered in this library : " , self.iontypes
        #sys.exit(2)

        massH = 1.007825032
        massO = 15.99491462
        massN = 14.00307401
        massC = 12.0000000
        massProton = 1.0072765
        massNH3 = Formulas.mass(Formulas.NH3)  #massN + 3 * massH
        massH2O = Formulas.mass(Formulas.H2O)  #(massH *2 + massO)
        massCO2 = Formulas.mass(Formulas.CO2)  #(massC + 2 * massO)
        protonMass = 1.007825032

        massN15 = 15.0001089
        massShiftN15 = massN15 - massN
        massC13 = 13.003355
        massShiftC13 = massC13 - massC

        frg_number = int(ion_number)
        frg_charge = int(ion_charge)

        mzfragment = 0
        frg_seq = ''

        #precursors
        if ion_type == 'p':
            mzfragment = self.getMZ(frg_charge, label)
            return mzfragment

        #a series
        if ion_type == 'a':
            frg_seq = self.sequence[:frg_number]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment -= (massC + massO)
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys():
                if aaPosMod <= frg_number:
                    mzfragment += self.modifications[aaPosMod].deltamass

        #b series
        if ion_type == 'b':
            frg_seq = self.sequence[:frg_number]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys():
                if aaPosMod <= frg_number:
                    mzfragment += self.modifications[aaPosMod].deltamass

        #c series
        if ion_type == 'c':
            frg_seq = self.sequence[:frg_number]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment += massNH3
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys():
                if aaPosMod <= frg_number:
                    mzfragment += self.modifications[aaPosMod].deltamass

        #x series
        if ion_type == 'x':
            frg_seq = self.sequence[-frg_number:]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment += massCO2
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys():
                if (len(self.sequence) - frg_number) < aaPosMod:
                    mzfragment += self.modifications[aaPosMod].deltamass

        #y series
        if ion_type == 'y':
            frg_seq = self.sequence[-frg_number:]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment += massH2O
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys():
                if (len(self.sequence) - frg_number) < aaPosMod:
                    mzfragment += self.modifications[aaPosMod].deltamass

        #z series
        if ion_type == 'z':
            frg_seq = self.sequence[-frg_number:]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment += massH2O
            mzfragment -= massNH3
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys():
                if (len(self.sequence) - frg_number) < aaPosMod:
                    mzfragment += self.modifications[aaPosMod].deltamass

        # 15N labeling: adds up the shift mass
        if label == '15N' or label == 'N15':
            frg_composition = self._getCompositionSeq(frg_seq)
            if 'N' in frg_composition:
                shift = (float(frg_composition['N']) * massShiftN15)
                mzfragment += shift

        #AQUA_KR labeling: adds up the shift mass
        if label == 'AQUA_KR':
            #Update (23.nov.2010): AQUA_KR only modifies Lys and Arg in the C-terminal position.
            #Update (1.dec.2010) : I am a jerk. I should have taken it only for y ions , and not for the b ones
            if 'K' in self.sequence[-1:] and ion_type == 'y':
                mzfragment += 6 * massShiftC13 + 2 * massShiftN15
            if 'R' in self.sequence[-1:] and ion_type == 'y':
                mzfragment += 6 * massShiftC13 + 4 * massShiftN15

        if label == 'SILAC_K6R10':
            #All K and R amino acides are shifted 6 Da and 10 Da.
            numK = 0
            numR = 0
            for aa in frg_seq[:]:
                if aa == 'K': numK += 1
                if aa == 'R': numR += 1
            mzfragment += numK * (6 * massShiftC13)
            mzfragment += numR * (6 * massShiftC13 + 4 * massShiftN15)

        if label == 'SILAC_K8R10':
            #All K and R amino acides are shifted 8 Da and 10 Da.
            numK = 0
            numR = 0
            for aa in frg_seq[:]:
                if aa == 'K': numK += 1
                if aa == 'R': numR += 1
            mzfragment += numK * (6 * massShiftC13 + 2 * massShiftN15)
            mzfragment += numR * (6 * massShiftC13 + 4 * massShiftN15)

        if label == 'SILAC_K8R6':
            #All K and R amino acides are shifted 8 Da and 6 Da.
            numK = 0
            numR = 0
            for aa in frg_seq[:]:
                if aa == 'K': numK += 1
                if aa == 'R': numR += 1
            mzfragment += numK * (6 * massShiftC13 + 2 * massShiftN15)
            mzfragment += numR * (6 * massShiftC13)

        mzfragment += frg_charge * massProton
        mzfragment += fragmentlossgain
        mzfragment /= frg_charge

        return mzfragment
Exemple #8
0
            elementsLib=self.elementsLib)  #self.calDeltaMass()


if __name__ == "__main__":

    myAAs = Aminoacides()

    #    for aa in myAAs.list:
    #        for elem,num in aa.composition.iteritems():
    #            print("%s: %s" % (elem,num))

    print("1-letter code    3-letter code    Chemical formula    Monoisotopic")
    print("-" * 65)
    for aa in myAAs.list:
        print("%-10s  %-15s  %-20s %s" %
              (aa.code, aa.code3, Formulas.compositionString(
                  aa.composition), aa.deltaMass))

##1-letter code 3-letter code Chemical formula Monoisotopic
##-----------------------------------------------------------------
##A           Ala              H5C3ON               71.03711379
##R           Arg              H12C6ON4             156.101111044
##N           Asn              H6C4O2N2             114.042927452
##D           Asp              H5C4O3N              115.02694303
##C           Cys              H5C3SON              103.00918448
##E           Glu              H7C5O3N              129.042593094
##Q           Gln              H8C5O2N2             128.058577516
##G           Gly              H3C2ON               57.021463726
##H           His              H7C6ON3              137.058911874
##I           Ile              H11C6ON              113.084063982
##L           Leu              H11C6ON              113.084063982
##K           Lys              H12C6ON2             128.094963024
from peptide  import Peptide
from modifications import Modifications
from elements import Formulas

mods = Modifications()
phospho    = mods.mods_unimods[21]
oxi        = mods.mods_TPPcode['M[147]'];
cys        = mods.mods_TPPcode['C[160]'];
nTMT       = mods.mods_TPPcode['n[230]'];
TMT        = mods.mods_TPPcode['K[357]'];

massNH3 = Formulas.mass(Formulas.NH3) #massN + 3 * massH
massH2O = Formulas.mass(Formulas.H2O) #(massH *2 + massO) 

p1  = Peptide('CKDALA',modifications={1: cys})
p2  = Peptide('CKDALA',modifications={1: cys, 0: nTMT, 2:TMT})

for pep in [ p1, p2 ]: 

#    annot , ion_masses = pep.all_ions(ionseries = ['y','b'], 
#                                      frg_z_list = [1,2], 
#                                      fragmentlossgains = [0, ], 
#                                      mass_limits = [100,3000], 
#                                      label = '')
#    for a in annot: 
#        print a


    print "PEPTIDE:", pep.getSequenceWithMods("TPP"), "\tpreMz:", pep.getMZ(2)      #CHARGE=2

    for v in range(1, len(pep.sequence)):
        self.elementsLib = Elements()
        self.deltaMass = Formulas.mass(self.composition, elementsLib = self.elementsLib) #self.calDeltaMass()
    
    
if __name__ == "__main__":
    
    myAAs = Aminoacides()
    
#    for aa in myAAs.list:
#        for elem,num in aa.composition.iteritems():
#            print("%s: %s" % (elem,num))
    
    print("1-letter code    3-letter code    Chemical formula    Monoisotopic")
    print("-"*65)
    for aa in myAAs.list:
        print("%-10s  %-15s  %-20s %s" % (aa.code, aa.code3, Formulas.compositionString(aa.composition), aa.deltaMass))
          
##1-letter code 3-letter code Chemical formula Monoisotopic
##-----------------------------------------------------------------
##A           Ala              H5C3ON               71.03711379
##R           Arg              H12C6ON4             156.101111044
##N           Asn              H6C4O2N2             114.042927452
##D           Asp              H5C4O3N              115.02694303
##C           Cys              H5C3SON              103.00918448
##E           Glu              H7C5O3N              129.042593094
##Q           Gln              H8C5O2N2             128.058577516
##G           Gly              H3C2ON               57.021463726
##H           His              H7C6ON3              137.058911874
##I           Ile              H11C6ON              113.084063982
##L           Leu              H11C6ON              113.084063982
##K           Lys              H12C6ON2             128.094963024
    def getMZfragment(self, ion_type, ion_number, ion_charge, label='', fragmentlossgain=0.0):
        #Check label
        if len(label) > 0 and label not in self.labelings : 
            print "Coding error: this labeling is not reported!! %s" % label
            sys.exit(2)
        
        #Check ion type
        #if ion_type not in self.iontypes :
            #print "This ion type can not be processed :" , ion_type
            #print "This is the list of ion types considered in this library : " , self.iontypes
            #sys.exit(2)
        
        massH = 1.007825032
        massO = 15.99491462
        massN = 14.00307401
        massC = 12.0000000
        massProton = 1.0072765
        massNH3 = Formulas.mass(Formulas.NH3) #massN + 3 * massH
        massH2O = Formulas.mass(Formulas.H2O) #(massH *2 + massO) 
        massCO2     = Formulas.mass(Formulas.CO2) #(massC + 2 * massO)
        protonMass = 1.007825032

        massN15 = 15.0001089
        massShiftN15 = massN15 - massN
        massC13 = 13.003355
        massShiftC13 = massC13 - massC
       
        frg_number = int(ion_number)
        frg_charge = int(ion_charge)    
        
        mzfragment = 0
        frg_seq = ''

        #precursors
        if ion_type == 'p' :
            mzfragment = self.getMZ(frg_charge, label)
            return mzfragment
        
        #a series
        if ion_type == 'a' :
            frg_seq = self.sequence[:frg_number] 
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment -= (massC + massO)
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys() :
                if aaPosMod <= frg_number: mzfragment += self.modifications[aaPosMod].deltamass

        #b series
        if ion_type == 'b' :
            frg_seq = self.sequence[:frg_number] 
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys() :
                if aaPosMod <= frg_number: mzfragment += self.modifications[aaPosMod].deltamass
        
        #c series
        if ion_type == 'c' :
            frg_seq = self.sequence[:frg_number] 
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment += massNH3
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys() :
                if aaPosMod <= frg_number: mzfragment += self.modifications[aaPosMod].deltamass
        
        #x series
        if ion_type == 'x' :
            frg_seq = self.sequence[-frg_number:]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment += massCO2
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys() :
                if (len(self.sequence) - frg_number) < aaPosMod : mzfragment += self.modifications[aaPosMod].deltamass


        #y series
        if ion_type == 'y' :
            frg_seq = self.sequence[-frg_number:]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment += massH2O
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys() :
                if (len(self.sequence) - frg_number) < aaPosMod : mzfragment += self.modifications[aaPosMod].deltamass

        #z series
        if ion_type == 'z' :
            frg_seq = self.sequence[-frg_number:]
            mzfragment = self.getDeltaMassFromSequence(frg_seq)
            mzfragment += massH2O
            mzfragment -= massNH3
            #Adding modifications deltamass
            for aaPosMod in self.modifications.iterkeys() :
                if (len(self.sequence) - frg_number) < aaPosMod : mzfragment += self.modifications[aaPosMod].deltamass

            
        # 15N labeling: adds up the shift mass
        if label == '15N' or label == 'N15':
            frg_composition = self._getCompositionSeq(frg_seq)
            if 'N' in frg_composition:
                shift = (float(frg_composition['N']) * massShiftN15) 
                mzfragment += shift
                
        #AQUA_KR labeling: adds up the shift mass
        if label == 'AQUA_KR':
            #Update (23.nov.2010): AQUA_KR only modifies Lys and Arg in the C-terminal position. 
            #Update (1.dec.2010) : I am a jerk. I should have taken it only for y ions , and not for the b ones 
            if 'K' in self.sequence[-1:] and ion_type == 'y' : mzfragment += 6 * massShiftC13 + 2 * massShiftN15
            if 'R' in self.sequence[-1:] and ion_type == 'y' : mzfragment += 6 * massShiftC13 + 4 * massShiftN15
        
        if label == 'SILAC_K6R10' :
            #All K and R amino acides are shifted 6 Da and 10 Da.
            numK = 0
            numR = 0
            for aa in frg_seq[:] :
                if aa == 'K' : numK += 1
                if aa == 'R' : numR += 1
            mzfragment += numK * (6 * massShiftC13)
            mzfragment += numR * (6 * massShiftC13 + 4 * massShiftN15)
        
        if label == 'SILAC_K8R10' :
            #All K and R amino acides are shifted 8 Da and 10 Da.
            numK = 0
            numR = 0
            for aa in frg_seq[:] :
                if aa == 'K' : numK += 1
                if aa == 'R' : numR += 1
            mzfragment += numK * (6 * massShiftC13 + 2 * massShiftN15) 
            mzfragment += numR * (6 * massShiftC13 + 4 * massShiftN15)

        if label == 'SILAC_K8R6' :
            #All K and R amino acides are shifted 8 Da and 6 Da.
            numK = 0
            numR = 0
            for aa in frg_seq[:] :
                if aa == 'K' : numK += 1
                if aa == 'R' : numR += 1
            mzfragment += numK * (6 * massShiftC13 + 2 * massShiftN15) 
            mzfragment += numR * (6 * massShiftC13)


        mzfragment += frg_charge * massProton
        mzfragment += fragmentlossgain
        mzfragment /= frg_charge
        
        return mzfragment