def get_precursors(seq, min_mz=400, max_mz=2000, min_charge=1, max_charge=5): m = mass_from_sequence(seq) prec = [{ 'charge_state': c, 'mz': (m + c * Formula('H').mass) / c } for c in xrange(min_charge, max_charge + 1)] return filter(lambda x: min_mz <= x['mz'] <= max_mz, prec)
def __init__(self, name, formula): self.display_name = name self.formula = formula self.mass = Formula(formula).isotope.mass LOSSES.add(self) def __str__(self): return self.formula
def predict_fragments_from_sequence(sequence=[], nterm='N-term', cterm='C-term'): verify_sequence(sequence) out = [] # b-ions nterm_mass = AMINO_ACIDS[nterm].mass out += append_residue(mass=nterm_mass, pos=1, ion_type='b_', seq=sequence, term=cterm, loss=[]) for l in AMINO_ACIDS[nterm].losses: out += append_residue(mass=nterm_mass - l.mass, pos=1, ion_type='b_', seq=sequence, term=cterm, loss=update_loss([], l.formula)) # a-ions nterm_mass = AMINO_ACIDS[nterm].mass - Formula('CO').isotope.mass out += append_residue(mass=nterm_mass, pos=1, ion_type='a_', seq=sequence, term=cterm, loss=[]) for l in AMINO_ACIDS[nterm].losses: out += append_residue(mass=nterm_mass - l.mass, pos=1, ion_type='a_', seq=sequence, term=cterm, loss=update_loss([], l.formula)) # y-ions cterm_mass = AMINO_ACIDS[cterm].mass out += append_residue(mass=cterm_mass, pos=1, ion_type='y_', seq=sequence[::-1], term=nterm, loss=[]) for l in AMINO_ACIDS[cterm].losses: out += append_residue(mass=cterm_mass - l.mass, pos=1, ion_type='y_', seq=sequence[::-1], term=nterm, loss=update_loss([], l.formula)) out = sorted(list(set(out)), key=lambda x: x[0]) return out
def __init__(self, residue='', mod='', formula='', losses=[]): self.residue = residue self.mod = mod self.formula = formula if formula: self.mass = Formula(formula).isotope.mass else: self.mass = 0.0 self.losses = losses AMINO_ACIDS.add(self)
def predict_positive_fragments_from_sequence(sequence=[], nterm='N-term', cterm='C-term', max_charge_state=1): out = [] fragments = predict_fragments_from_sequence(sequence=sequence, nterm=nterm, cterm=cterm) for item in fragments: out.append((round(item[0] + Formula('H').isotope.mass, 5), item[1] + ' (+1)')) for cs in range(2, max_charge_state + 1): if item[0] > 200 * cs: out.append( (round((item[0] + cs * Formula('H').isotope.mass) / cs, 5), item[1] + ' (+' + str(cs) + ')')) out = sorted(list(set(out)), key=lambda x: x[0]) return out