Skip to content

Commit

Permalink
Fixed calculating b ion mass for unlabeled peptides
Browse files Browse the repository at this point in the history
Added test case for Sean MHC peptide
  • Loading branch information
naderm committed Jan 28, 2019
1 parent e31c423 commit 9fe7941
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 9 deletions.
5 changes: 2 additions & 3 deletions pycamv/fragment/fragments.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ def _internal_fragment_ions(
[("C=O", ())]
)

mass = _sequence_mass(fragment)
mass = _sequence_mass(fragment) + masses.PROTON
name = _sequence_name(fragment)

# Also calculate any potential neutral losses from this fragment
Expand Down Expand Up @@ -383,8 +383,7 @@ def fragment_ions(
parent_max_charge = charge

if fragment_max_charge is None:
# TODO: This correct?
fragment_max_charge = parent_max_charge - 1
fragment_max_charge = parent_max_charge

if any_losses is None:
any_losses = PEPTIDE_LOSSES
Expand Down
12 changes: 6 additions & 6 deletions pycamv/fragment/masses.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def exact_mass(atoms):
PROTON = exact_mass({"H": [1]})

C_TERM = exact_mass({"H": [1], "O": [1]})
N_TERM = exact_mass({"H": [1]})
N_TERM = 0

# iTRAQ Masses not exact due to mass differences between isotopes
ITRAQ_4_PLEX = exact_mass({"C": [4, 3], "N": [1, 1], "O": [1], "H": [12]})
Expand Down Expand Up @@ -194,11 +194,11 @@ def exact_mass(atoms):
("Y", "Phospho"): PHOSPHO_TYROSINE,

# TMT / iTRAQ
("N-term", "iTRAQ4plex"): ITRAQ_4_PLEX - N_TERM,
("N-term", "iTRAQ8plex"): ITRAQ_8_PLEX - N_TERM,
("N-term", "TMT6plex"): TMT_6_PLEX - N_TERM,
("N-term", "TMT10plex"): TMT_10_PLEX - N_TERM,
("N-term", "TMT11plex"): TMT_11_PLEX - N_TERM,
("N-term", "iTRAQ4plex"): ITRAQ_4_PLEX,
("N-term", "iTRAQ8plex"): ITRAQ_8_PLEX,
("N-term", "TMT6plex"): TMT_6_PLEX,
("N-term", "TMT10plex"): TMT_10_PLEX,
("N-term", "TMT11plex"): TMT_11_PLEX,
("K", "iTRAQ4plex"): ITRAQ_4_PLEX,
("K", "iTRAQ8plex"): ITRAQ_8_PLEX,
("K", "TMT6plex"): TMT_6_PLEX,
Expand Down
37 changes: 37 additions & 0 deletions tests/fragments_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,42 @@
class FragmentIonsTest(TestCase):
def test_fragment_ions(self):
test_peptides = {
(
(
("N-term", ()),
("R", ()),
("V", ()),
("D", ()),
("E", ()),
("N", ()),
("N", ()),
("P", ()),
("E", ()),
("Y", ()),
("C-term", ()),
),
2,
): {
"a_{1}^{+}": 129.11347,
"a_{2}^{+}": 228.18189,
"b_{1}^{+}": 157.10839,
"b_{2}^{+}": 256.17680,
"b_{3}^{+}": 371.20374,
"b_{4}^{+}": 500.24634,
"b_{5}^{+}": 614.28926,
"b_{6}^{+}": 728.33219,
"b_{6}^{+2}": 364.66973,
"b_{7}^{+}": 825.38496,
"b_{8}^{+}": 954.42755,
"y_{1}^{+}": 182.08117,
"y_{2}^{+}": 311.12376,
"y_{3}^{+}": 408.17653,
"y_{4}^{+}": 522.21945,
"y_{5}^{+}": 636.26238,
"y_{6}^{+}": 765.30497,
"y_{7}^{+}": 880.33192,
"y_{8}^{+}": 979.40033,
},
(
(
("N-term", ("TMT6plex",)),
Expand Down Expand Up @@ -195,6 +231,7 @@ def test_fragment_ions(self):

for name, mz in hits.items():
self.assertIn(name, frag_ions)
print(name, frag_ions[name], mz)
self.assertLess(abs(frag_ions[name] - mz), 0.01)

def test_no_by_losses(self):
Expand Down

0 comments on commit 9fe7941

Please sign in to comment.