Skip to content
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

Martini3-IDP #647

Open
wants to merge 18 commits into
base: master
Choose a base branch
from
Open

Martini3-IDP #647

wants to merge 18 commits into from

Conversation

csbrasnett
Copy link
Collaborator

This PR:

  1. Adds the IDP force field of @WangLiguo-kyrie as per the parameters
  2. Makes some small edits for Go models to ensure that for multi domain proteins Go bonds applied between folded-disordered pairs are removed.
  3. For IDPs in general, we overwrite assigned secondary structure as "C" to ensure that we're not applying IDP parameters to folded regions by accident.

Note that the martini3-IDP/aminoacids.ff file is slightly different here to ensure that it works properly with martinize.

Will need to update citations.bib once the paper is accepted

csbrasnett and others added 7 commits November 4, 2024 11:20
- enforce that the cgsecstruct is "C" to make sure we don't overapply a folded domain in the links later
- adapt the secondary structure header to get the header from the cg not atomistic graph
- in FFs where we have -go but not -water-bias, cross disordered-folded go bonds won't be removed because this is buried in the water_bias processor.
- so call it anyway with an empty list of water biases, which will remove them
- reverting dssp sequence_from_residues behaviour so doesn't default to something with cg
- move the ss_cg conversion into martinize2 using a global variable
Copy link
Member

@pckroon pckroon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some small questions. Note that I didn't look at the ff files

bin/martinize2 Outdated
Comment on lines 973 to 982
ss_sequence = list(
itertools.chain(
*(
SS_CG[i]
for i in dssp.sequence_from_residues(molecule, "cgsecstruct")
for molecule in system.molecules
if selectors.is_protein(molecule) if i is not None
)
)
)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This translation to CG is too simplistic, no?

Suggested change
ss_sequence = list(
itertools.chain(
*(
SS_CG[i]
for i in dssp.sequence_from_residues(molecule, "cgsecstruct")
for molecule in system.molecules
if selectors.is_protein(molecule) if i is not None
)
)
)
ss_sequence = list(
itertools.chain(
*(
dssp.convert_dssp_to_martini(dssp.sequence_from_residues(molecule, "cgsecstruct"))
for molecule in system.molecules
if selectors.is_protein(molecule) if i is not None
)
)
)

Also, how does this interact with the "normal" dssp processing, and people providing a secondary structure on the cli?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This won't affect the "normal" processing, the annotation is done for both ways before martinize() is called. The dssp/ss flags are dealt with at that point, and this is only to make sure that the cg secondary structure is determined correctly. The ss_sequence needs to be moved here to align with the overwriting that happens in the idr annotation, otherwise the 'uncorrected' string is written out

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My concern with this is that it becomes ambiguous what's atomistic SS and whats CG SS. The idea of printing the found SS structure is so that users can pass it to the -ss flag to reproduce the behaviour. However, if that only works if the SS flavour that's expected is the same as the one printed.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Point taken. However, for the purposes of the current IDP models, ensuring the ss used when the links are applied doesn't intersect in a nasty way with the -idr flags is fairly important.

Perhaps the way around is if the string gets changed, print it in the itp twice? first what was found by dssp, second what was actually applied in the links?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That sounds reasonable

vermouth/processors/annotate_idrs.py Outdated Show resolved Hide resolved
- need to modify create_sys_all_attrs so cgsecstruct not always written
- remove duplicate annotation in annotate_idrs.py
- annotate_idrs.py now adds meta if annotation changes
- move cg_ss dict to CG_SS in dssp.py
- if meta is found in Martinize then write changed cg_ss into header of the ouput itp file
@csbrasnett
Copy link
Collaborator Author

csbrasnett commented Jan 31, 2025

checking ff files, hold off on merging

edit: files checked, generating itps as expected, all good to add new ff

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants