SchweppeLab / CometCIDS

MIT License
1 stars 0 forks source link

Ensure c/z ions and NLs are handled properly under new fragmentation models #14

Open PMSeitzer opened 2 years ago

PMSeitzer commented 2 years ago

Currently, fragmentation masses are determined as a vector of masses, e.g. <b1,b2,b3,b3...>. The index of the position in the vector is used to determine the length of the peptide. However, if there are NLs intermixed in the vector, this assumption is no longer true <b1, b1-NL, b2, b2-NL, ...>. This will lead, at least, to the HyperFragModel associating the wrong distributions to the various fragment ions.

At the very least, need to understand how fragment masses are generated, and properly handle neutral losses.

PMSeitzer commented 2 years ago

To start, ensure that all the right ion series are computed, and that this works in the PlainModel and the HyperFragModel.

NL and b- and y- ions should be exclusively for HyperFragModel and PlainModel - need to say this in the paper.

PMSeitzer commented 2 years ago

Use same dataset as #12 , but with hyper_frag_v2.ini and plain_v2.ini

PMSeitzer commented 2 years ago

Carry out this work on issue-11.

PMSeitzer commented 2 years ago

Fragmentation distributions are created here: https://github.com/SchweppeLab/CometCIDS/blob/issue-11/comet-ms/CometSearch/CometSearch.cpp#L2877-L2881

Currenly, only b- and y- ions are being created: https://github.com/SchweppeLab/CometCIDS/blob/issue-11/comet-ms/CometSearch/PeptideFragmentation/MakeMS2/peptidemass.cpp#L63-L89

Need to add support for other distributions, and NL. Then, PlainModel and HyperFragModel should respect these ion series, and add fragments appropriately.

This code should all be tested very carefully - for instance, it would be good to know how use_c_ions and use_z_ions are being used currently.

Finally, don't forget to consider https://github.com/SchweppeLab/CometCIDS/blob/issue-11/comet-ms/CometSearch/CometPostAnalysis.cpp#L104-#L202, as it looks like there may be some consideration of c- and z- ions.

PMSeitzer commented 2 years ago

Using branch issue-14-ions

PMSeitzer commented 2 years ago

Note that CometSearch::SearchForPeptides(), which populates _pdAAforward and _pdAAreverse. This traces all the way back into CometMassSpecUtils::GetFragmentIonMass()

PMSeitzer commented 2 years ago

It appears that CometSearch::GetFragmentIonMass() contains the ability to convert forward, reverse ions already. The trick being that _pdAAforward is the same as ION_SERIES_B, while _pdAAreverse is the same as ION_SERIES_Y.

PMSeitzer commented 2 years ago

ion series are correctly handled here: https://github.com/SchweppeLab/CometCIDS/blob/main/comet-ms/CometSearch/CometSearch.cpp#L1764-L1798