marrink-lab / polyply_1.0

Generate input parameters and coordinates for atomistic and coarse-grained simulations of polymers, ssDNA, and carbohydrates
Apache License 2.0
124 stars 21 forks source link

PEGylate DOPC in Martini2 #167

Closed vk208 closed 2 years ago

vk208 commented 2 years ago

Hi, I came across this tutorial and noticed it's not implemented for Martini DOPC yet. https://github.com/marrink-lab/polyply_1.0/wiki/Tutorial:-PEGylated-lipid-bilayers

Could you implement this for DOPC so I can explore some PEGylated DOPC bilayers for one of my research projects? Thanks!

fgrunewald commented 2 years ago

Hi, thanks for your interest. We certainly can implement PEGylation for DOPC. I've have opened a PR #168 which will implement it to the library. Probably it takes a day or so. I'll notify you when it's done. Alternatively you can also download this file:

https://github.com/marrink-lab/polyply_1.0/blob/fix/167/polyply/data/martini2/links.ff

And then use it with polyply and the -f option. I think that should work as well.

vk208 commented 2 years ago

Thank you!

And could you also implement it for DPPC, if you have time? I would really appreciate it!

fgrunewald commented 2 years ago

@vk208 In fact we have been discussing this internally a little bit. Experimentally it isn't possible to PEGylate PC lipids (i.e. DPPC, POPC, DOPC). There have been numerous people using Martini2 PEGylated PC lipids, however, they are in fact PE lipids. The implementation we did takes a PC lipid and PEGylates it. However, in fact the resulting lipid is the same as a PEGylated PE lipid. So in your case just use the corresponding PE lipids. They yield the same parameters. Please let me know if there are more questions. Note that all simulations done with either implementation are still correct. It is just a matter of naming the lipids.

vk208 commented 2 years ago

Isn't the bead type for the 1st head group bead between a PC and PE lipid different in MARTINI? I think PC has Q0 and PE has Qd (at least the DOPC/DOPE do). That change doesn't affect the parameters that are generated?

fgrunewald commented 2 years ago

Well yes they are different between PC and PE, but: When you add the PEG to the lipid the type of the head bead changes in both cases to P5. The reason is that when a PE lipid gets PEGylated the primary amine is replaced by an amide. Have a look at the chemical structure here: https://avantilipids.com/product/880234. For PC lipids it is likely that the choline head group would also be replaced by a charge neutral linker. Due to the limited number of types likely a P5 as well. This change in bead type effectively makes a PEGylated PE lipid the same as a PC lipid.

vk208 commented 2 years ago

Okay that makes sense, thank you! I appreciate your help with all of this. I'll try PEGylating with the PE lipids.

fgrunewald commented 2 years ago

You're welcome! If you have any more questions feel free to post them here or under the discussions board, which you find here https://github.com/marrink-lab/polyply_1.0/discussions. And if you are happy with the program consider giving it a star.

vk208 commented 2 years ago

Hi sorry to bother again, but I'm having trouble with the gen_coords step of PEGylating a 30 nm X 30 nm mixed lipid bilayer. I have 25% DTPC, 70% DOPC and 5% DOPE, and I'm trying to PEGylate the DOPE, following your tutorial. However, when I get to the gen_coords of the mushroom state, I keep getting a key error at the template generation step. I checked the FAQs, and checked my files to make sure I'm not calling any unspecified atomtypes. Could you provide more insight?

Here's my top file:

include "martini_v2.2P.itp"

include "all_lipids.itp"

include "peg.itp"

include "pegylated_lipid.itp"

[ system ] ; name DODD_PEG

[ molecules ] ; name number DTPC 380 PEL 76 DOPC 1064 DTPC 380 PEL 76 DOPC 1064

fgrunewald commented 2 years ago

Hi, could you provide the error message you get as well. That makes it easier to figure out the problem.

vk208 commented 2 years ago

Sure, here's the command line: polyply gen_coords -p 30dodd_peg.top -o struct.gro -res PEO OHter -c 30dodd_peg.gro -name test -box 30.0 30.0 25.0 -split DOPE:HEAD-NH3:TAIL-PO4,GL1,GL2,C1A,D2A,C3A,C4A,C1B,D2B,C3B,C4B

And here's the error message: NFO - Couldn't import numba. Install it for a speed boost. INFO - step - reading topology INFO - step - processing topology INFO - step - splitting residues INFO - step - loading coordinates INFO - step - checking residue integrity INFO - step - generating templates 12%|█████████▎ | 380/3040 [00:00<00:01, 2059.14it/s] Traceback (most recent call last): File "/Users/vkarra/opt/miniconda3/bin/polyply", line 256, in main() File "/Users/vkarra/opt/miniconda3/bin/polyply", line 252, in main args.func(args) File "/Users/vkarra/opt/miniconda3/lib/python3.8/site-packages/polyply/src/gen_coords.py", line 135, in gen_coords GenerateTemplates(topology=topology, max_opt=10).run_system(topology) File "/Users/vkarra/opt/miniconda3/lib/python3.8/site-packages/polyply/src/processor.py", line 31, in run_system mols.append(self.run_molecule(molecule)) File "/Users/vkarra/opt/miniconda3/lib/python3.8/site-packages/polyply/src/generate_templates.py", line 364, in run_molecule templates, volumes = self._gen_templates(meta_molecule) File "/Users/vkarra/opt/miniconda3/lib/python3.8/site-packages/polyply/src/generate_templates.py", line 353, in _gen_templates self.volumes[resname] = compute_volume(meta_molecule, block, coords, self.topology.nonbond_params) File "/Users/vkarra/opt/miniconda3/lib/python3.8/site-packages/polyply/src/generate_templates.py", line 180, in compute_volume rad = float(nonbond_params[frozenset([atom_key, atom_key])]["nb1"]) KeyError: frozenset({'EO'})

fgrunewald commented 2 years ago

Ahh yes that looks familiar. The reason is that in Martini2 PEO has a special bead that is not part of the standard Martini2 distribution. The martini.itp file including the parameters for PEO you can find here: http://cgmartini.nl/images/parameters/polymers/Linear/PEG/martini_v2.2refP_PEO.itp

I'm not sure we extensively tested the polarziable water version though. I'd recommend if you can afford it also to run regular Martini2 and see if it makes a difference.

vk208 commented 2 years ago

Oh that makes sense! Thank you!

I'll talk to my advisor about polarizable vs regular Martini water.

fgrunewald commented 2 years ago

@vk208 I assume this issue is closed for now. Feel free to open a new one or reopen this if you have more questions.