-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Explicit support for global terminal modifications #6
Comments
For now using a workaround while waiting for official support and an implementation in Pyteomics. See HUPO-PSI/ProForma#6
This is currently legal: Options to extend: ProForma current allows amino acids to be lower case, so the second is not a good idea If we wanted to support N-term amino acids: <[TMT6plex]@k,N-term,N-term:AS>ATPEILTCASIGCLK After discussion, end up Discuss again with other ProForma 2.0 stakeholders Other potential things to change:
|
As a bit of a follow up thought after the meeting. I would argue for My argument for allowing the first form is that this is easier to type out. This makes the grammar slightly more complex but there is no dividing character used so the rule is that anything (alphabetic characters only) following the colon is a location where this modification can be placed. In terms of logic for the parser this is not much more complex because it had to check if the character following the initial amino acid is a comma anyways and with this addition it just has to keep taking input until the next comma. On the level of complexity for the intermediate representation used any program using pro forma notation I would argue there is no difference in either syntax. So that means that any program able to handle the But I am quite interested to hear about the feasibility from the other people writing ProForma parsers. This mostly reflects how my parser is written and it might be harder if you are using other libraries or parser generators. |
My argument against the class ModificationRule {
modification: Modification
targets: List<ModificationTarget>
}
class ModificationTarget {
amino_acid: String | null
terminal: String | null
} This fully covers the first existing usage, where each amino acid is a separate The second concern is a syntax to semantics concern. Suppose I write Neither is intractable to break, and others may implement things in such a way that this is not an issue. |
I do the grouping internally already, so for me on the parser side there is no problem. But your second argument on semantics I fully agree with. So that leaves me in favour of the |
Support for diagnostic ions from labile modifications Bit of refactoring for proforma parse code
Original intent: <[Carbamidomethyl]@C>AAHHAFA Do we want to amend the specification to ProForma 2.1 to clarify these things? Douwe's code has the capability to read a ProForma string that has all the fixed modifications prefixed and normalizes it to what is actually in the peptide. If we added the N-term support, it would be a breaking change, and would be ProForma 2.1 TODO: Start a Google doc in which we start documenting and resolving these various open issues, including #8 and #9 |
This is fine imo. |
**Modification caching** All ModificationResolver types now use an in-memory cache for resolved modification definitions, reducing overhead of resolving the same rule over and over again. Sub-classes should move their implementation of `resolve` to the `_resolve_impl` method, otherwise the cache will not be used. To disable the cache for a resolver instance, call `resolver.enable_caching(False)`. **Constant terminal modifications** This implements support for the syntax discussed in HUPO-PSI/ProForma#6 to include constant modification rules that apply to specific sequence terminals with or without specific amino acids.
Fixed modifications, such as carbamidomethylation of C can be written as a global modification (section 4.6.2). For instance:
However, it is not explicitly stated whether global terminal modifications are supported, and if so, which "target tags" should be used. I would use this in the case of isobaric labeling modifications. For instance:
Which would be equivalent to:
This would require a definition of the tags to be used for terminal modifications, for example
N-term
andC-term
.The text was updated successfully, but these errors were encountered: