marrink-lab / vermouth-martinize

Describe and apply transformation on molecular structures and topologies
Apache License 2.0
84 stars 37 forks source link

Wrong exclusions for charged termini in 2.2P #558

Closed yummy-hat closed 2 months ago

yummy-hat commented 8 months ago

Hello,

I have charged terminal beads: N-terminal is Qd, with a +1 charge and index 1, while C-terminal is Qa, with a -1 charge and index 2044. I would expect these to interact with anything except for their own side chains.

The exclusions are exactly opposite what I would expect. The N-terminal (and C-terminal) bead has exclusions for the virtual particles (SCP/SCN) for all other residues, but not for the virtual particles within that same residue.

For the N-terminal residue, during my vacuum minimization, the side chain reorients itself such that the negatively-charged bead gets inserted into its own backbone bead. The resulting forces are very high and the system crashes immediately in the next simulation step. I think this interaction should be excluded.

Am I missing some logic for why we wouldn't want the termini interacting with the polarized side chains? I think it would be strange to have the termini interact with water/lipids/ions etc. but not other protein.

FYI, I do have elastic network activated, though I'm not sure whether it's relevant to this problem.

Maybe this was missed because tests weren't done on residues with polarized side chains at patched termini?

fgrunewald commented 8 months ago

@yummy-hat that does not sound good indeed. It probably is a data file issue. Would it be possible for you to run martinize1 and see what that yields.

yummy-hat commented 8 months ago

I tried martinize1 (from here, version 2.6) and got the expected output:

[ exclusions ]
    1     3 ; ASN(1)
    1     4 ; ASN(1)
 2044  2046 ; ASN(700)
 2044  2047 ; ASN(700)

Side note: the script produces a lot of nice comments! Might be nice to have them in martinize2.

fgrunewald commented 8 months ago

@pckroon should this be taken care of by links or the dummy particle processor thingy?

pckroon commented 8 months ago

The LocateChargeDummies currently does not deal with interactions right? So I'd say links (or ideally modifications) are the best place. In addition, it keeps the code more model agnostic.

pckroon commented 3 months ago

Apologies for the long delay, this issue completely fell through the cracks.

The exclusions come from the Link in https://github.com/marrink-lab/vermouth-martinize/blob/master/vermouth/data/force_fields/martini22p/aminoacids.ff#L893, which got merged back in #53 and hasn't been touched since. Digging into De Jong 2013 which introduces the martini22p model, it doesn't mention what the desired behaviour actually is :/. Digging through the martinize1 code it seem you're right:

Side Chain exclusions: The polarizable forcefield give problems with the charges in the sidechain, if the backbone is also charged. To avoid that, we add explicit exclusions

The code that does that is... hard to read though, so I guess it just got interpreted wrongly. Anyway, PR #583 finally opened.