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

first draft of martinize2 command tutorials #616

Closed
wants to merge 33 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
38fa6e2
first draft of martinize2 command tutorials
csbrasnett Oct 9, 2024
688bf23
Merge branch 'master' into martinize2_tutorials
csbrasnett Oct 9, 2024
5ba58d8
first draft of martinize2 command tutorials
csbrasnett Oct 9, 2024
879c452
Merge remote-tracking branch 'origin/martinize2_tutorials' into marti…
csbrasnett Oct 9, 2024
6c11f45
Merge remote-tracking branch 'origin/martinize2_tutorials' into marti…
csbrasnett Oct 9, 2024
c4446e1
Merge remote-tracking branch 'origin/martinize2_tutorials' into marti…
csbrasnett Oct 9, 2024
543d245
update index
csbrasnett Oct 9, 2024
1973c94
refactor
csbrasnett Oct 9, 2024
9657bdf
refactor
csbrasnett Oct 9, 2024
89ac412
Merge remote-tracking branch 'origin/martinize2_tutorials' into marti…
csbrasnett Oct 9, 2024
bcd0a06
missed item in index
csbrasnett Oct 9, 2024
25ff84a
fixed equation formatting, added more -ss description
csbrasnett Oct 10, 2024
5386dbe
added note about polyply
csbrasnett Oct 10, 2024
6444dd3
corrected lines in go_models.rst for including go files in martini_v3…
csbrasnett Oct 10, 2024
ebfae82
Made requested changes
csbrasnett Oct 14, 2024
f0a6d44
Update doc/source/tutorials/elastic_networks.rst
csbrasnett Oct 14, 2024
6e5957b
think there needs to be a blank line in the math to make it math
csbrasnett Oct 14, 2024
208498f
made requested changes
csbrasnett Oct 21, 2024
0d8be32
added missing overbars
csbrasnett Oct 21, 2024
04df1d6
update information about scfix and elastic network defaults.
csbrasnett Oct 21, 2024
2a1cd18
Merge branch 'marrink-lab:master' into martinize2_tutorials
csbrasnett Oct 24, 2024
a3ec536
(hopefully) fix the relative links, add some small clarifications
csbrasnett Oct 24, 2024
bc5742e
(hopefully) fix the relative links, add some small clarifications
csbrasnett Oct 24, 2024
b4ebdbf
change rst to html
csbrasnett Oct 24, 2024
0cdf3c7
Merge remote-tracking branch 'origin/martinize2_tutorials' into marti…
csbrasnett Oct 24, 2024
be7b3d8
Fix links to network pages
csbrasnett Oct 29, 2024
814995b
maybe this fixes the links
csbrasnett Oct 29, 2024
1aefec9
add refs
csbrasnett Oct 29, 2024
fadda0b
try doc referencing as per https://www.sphinx-doc.org/en/master/usage…
csbrasnett Oct 30, 2024
3dc5fd2
Merge branch 'marrink-lab:master' into martinize2_tutorials
csbrasnett Oct 30, 2024
fc8cbe6
Merge branch 'marrink-lab:master' into martinize2_tutorials
csbrasnett Nov 13, 2024
66daa25
Merge branch 'master' into martinize2_tutorials
pckroon Nov 15, 2024
22ce8af
Merge branch 'master' into martinize2_tutorials
csbrasnett Nov 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions doc/source/tutorials/basic_usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Martinize2 can deal with secondary structure intelligently using dssp in one of
To explain these more:

1) If you have dssp installed locally, note that martinize2 is only validated for particular versions of dssp.
csbrasnett marked this conversation as resolved.
Show resolved Hide resolved
Currently the versions supported are 2.2.1 and 3.0.0.
If a non-validated version is used, a warning will be raised and nothing is written.
If you know what you're doing and are confident with what's been produced, you can override the warning
with the ``-maxwarn`` flag. Otherwise, dssp can be used using the ``-dssp`` flag in martinize.
Expand Down Expand Up @@ -79,11 +80,81 @@ we must we the full length string again:

``martinize2 -f protein.pdb -o topol.top -x cg_protein.pdb -ss HHHHHCCCCC``

Other basic features of martinize2
==================================

Side chain fixing
-----------------

One important addition for the generation of correct Martini protein topologies is side chain fixing.
Side chain fixing is essential for ensuring correct sampling of side chain dynamics, and involves adding
additional bonded terms into the structure of the protein, relating to the angles and dihedrals around
side chain and backbone atoms. For further information on the background and motivation for these terms,
please read the paper by `Herzog et. al <https://pubs.acs.org/doi/full/10.1021/acs.jctc.6b00122>`_.

Building on the command we wrote above, side chain fixing is added into martini topologies through the
`-scfix` flag:

``martinize2 -f protein.pdb -o topol.top -x cg_protein.pdb -ff martini3001 -dssp -scfix``

**PLEASE NOTE**: Side chain fixes are *essential* for martini3 proteins. Currently martinize2
(version 0.11.0) *does not* add side chain fixing parameters automatically, and so `-scfix`
must explictly be given as an argument. This will be fixed in future version of martinize2.

Secondary and tertiary structure considerations
-----------------------------------------------

The examples given on this page show how to generate basic coarse grained topologies for the
martini force field using martinize2. Martinize2 has many further features to
transform your simulation from a physically naive coarse grained model to one that really
reproduces underlying atomistic behaviour. One of the most important considerations in this
is how to treat secondary structure in the absence of hydrogen bonding. Two such methods
are described in both the
`Martini protein tutorial <https://cgmartini.nl/docs/tutorials/Martini3/ProteinsI/>`_, which
should be an essential route in to conducting simulations with the martini force field.

We cover the documentation of these features in greater detail in the pages about
`Elastic Networks <elastic_networks.rst>`_ and `Gō models <go_models.rst>`_.

Cysteine bridges
----------------

If your protein contains cysteine bridges, martinize2 can attempt to identify linked residues
and add correct Martini parameters between them using the `-cys` flag. When bridged residue pairs
are identified, a constraint of length 0.24 nm will be added between the side chains of the two
residues.

The `-cys` flag can read one of two types of argments. `-cys auto` will look for pairs of residues
within a short cutoff:

``martinize2 -f protein.pdb -o topol.top -x cg_protein.pdb -ff martini3001 -dssp -scfix -cys auto``
csbrasnett marked this conversation as resolved.
Show resolved Hide resolved

You can check if the correct bridges have been identified and added in the `[ constraints ]` directive
of the output itp file. Disulfide bonds are written at the top of the directive like so::

[ constraints ]
5 25 1 0.24 ; Disulfide bridge
30 50 1 0.24 ; Disulfide bridge

Alternatively if you need to assert the identification of the bridges over a distance that isn't
automatically identified, a distance in nm can be supplied to `-cys`, e.g.:

``martinize2 -f protein.pdb -o topol.top -x cg_protein.pdb -ff martini3001 -dssp -scfix -cys 5``

will look for cysteines within 5 nm of each other and apply the same disulfide bond as before.

Citations
---------

At the end of the execution of martinize2, the final output log writes general information with
requests to citate relevant papers. Martinize2 collects paper citation information dynamically
based on what features have been used, such as force fields, extra parameters,
how secondary structure has been determined, and so on. For posterity and to ensure ease of
reference, the same paper citations are also printed to the header information of the output
topology files.

As the correct references are collected dynamically, all the papers printed here by martinize2
should be cited, to ensure that relevant authors and features are credited. Please do so!
Martinize2 is both free and open source, and continued citations help us to keep it this way.


4 changes: 4 additions & 0 deletions doc/source/tutorials/elastic_networks.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ Elastic Networks

The first method applied to maintain the secondary and tertiary structure
of Martini proteins was `Elastic Networks <https://doi.org/10.1021/ct9002114>`_.
In Martini and other coarse-grained models, extra restraints are necessary to
retain folded protein structure in the absense of hydrogen bonding. As the
`Martini protein tutorial <https://cgmartini.nl/docs/tutorials/Martini3/ProteinsI/>`_
suggests, try simulating a protein without them and seeing what happens!

Elastic networks are formed by finding contacts between protein backbone
beads within a particular cutoff distance, and applying harmonic bonds between them,
Expand Down
34 changes: 17 additions & 17 deletions doc/source/tutorials/go_models.rst
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
=========
Go models
models
=========

GoMartini is a popular method for retaining the secondary and tertiary structures of proteins originating from the lab
of `Adolfo Poma <https://pubs.acs.org/doi/full/10.1021/acs.jctc.6b00986>`_. In contrast to an elastic network, the Go
model enforces interactions between specific pairs of beads within a protein based on residue overlap and restricted
chemical structural unit criteria.
The MartiniGō model is a method of maintaining secondary and tertiary structure using native contacts of proteins
to create a `Gō-like model <https://pubs.acs.org/doi/full/10.1021/acs.jctc.6b00986>`_ between beads.
In contrast to an elastic network, the Go model applies non-bonded interactions between pairs of
csbrasnett marked this conversation as resolved.
Show resolved Hide resolved
beads within a protein based on residue overlap and restricted chemical structural unit criteria.

The latest version of Martinize2 implements the newest version of the
`Go model <https://www.biorxiv.org/content/10.1101/2024.04.15.589479v1>`_. In this version of the Go model, interactions
The latest version of Martinize2 (version ≥ 0.10.0) implements the newest version of the
` model <https://www.biorxiv.org/content/10.1101/2024.04.15.589479v1>`_. In this version of the Go model, interactions
csbrasnett marked this conversation as resolved.
Show resolved Hide resolved
are mediated through the addition of extra virtual sites on top of backbone beads in the protein. Interactions are in
the form of Lennard-Jones interactions, which are written as an extra file to be included in the protein topology.

The Go model is described in the help::
The model is described in the help::

Virtual site based GoMartini:
-go GO Contact map to be used for the Martini Go model. Currently, only one format is supported. See docs. (default: None)
Expand All @@ -24,7 +24,7 @@ The Go model is described in the help::
-go-res-dist GO_RES_DIST
Minimum graph distance (similar sequence distance) below which contacts are removed. (default: 3)

To add a Go model to your protein, the first step is to calculate the contact map of your protein by uploading it
To add a model to your protein, the first step is to calculate the contact map of your protein by uploading it
to the `web server <http://pomalab.ippt.pan.pl/GoContactMap/>`_.
pckroon marked this conversation as resolved.
Show resolved Hide resolved

The contact map is then used in your martinize2 command:
Expand Down Expand Up @@ -70,7 +70,7 @@ depend on your protein)::
molecule_0_23 molecule_0_19 1 0.53307395 9.41400000 ;go bond 0.5983552758317587
...

To activate your Go model for use in Gromacs, the `martini_v3.0.0.itp` master itp needs the additional files included.
To activate your model for use in Gromacs, the `martini_v3.0.0.itp` master itp needs the additional files included.
The additional atomtypes defined in the ``go_atomtypes.itp`` file should be included at the end of the `[ atomtypes ]`
directive as::

Expand Down Expand Up @@ -108,26 +108,26 @@ directive::
#endif

Then in the .top file for your system, simply include `#define GO_VIRT` along with the other files
to be included to active the Go network in your model.
to be included to active the network in your model.

As a shortcut for writing the include statements above, you can simply include these files in your master
``martini_v3.0.0.itp`` file with the following commands::
``martini_v3.0.0.itp`` file with the following commands in a bash shell::

sed -i "s/\[ nonbond_params \]/\#ifdef GO_VIRT\n\#include \"go_atomtypes.itp\"\n\#endif\n\n\[ nonbond_params \]/" martini_v3.0.0.itp

echo -e "\n#ifdef GO_VIRT \n#include \"go_nbparams.itp\"\n#endif" >> martini_v3.0.0.itp

The Go model should then be usable in your simulations following the `general protein tutorial <https://pubs.acs.org/doi/10.1021/acs.jctc.4c00677>`_.
But careful! While the Go model specifies nonbonded interactions, the interactions are only defined
internally for each molecule. This means that if you have multiple copies of your Go model protein
in the system, the Go bonds are still only specified internally for each copy of the molecule,
The model should then be usable in your simulations following the `general protein tutorial <https://pubs.acs.org/doi/10.1021/acs.jctc.4c00677>`_.
But careful! While the model specifies nonbonded interactions, the interactions are only defined
internally for each molecule. This means that if you have multiple copies of your model protein
in the system, the bonds are still only specified internally for each copy of the molecule,
not truly as intermolecular forces in the system as a whole. For more detail on this phenomenon,
see the paper by `Korshunova et al. <https://pubs.acs.org/doi/10.1021/acs.jctc.4c00677>`_.


Visualising Go networks
----------------------------

If you want to look at your Go network in VMD to confirm that it's been constructed in the
If you want to look at your network in VMD to confirm that it's been constructed in the
way that you're expecting, the `MartiniGlass <https://github.com/Martini-Force-Field-Initiative/MartiniGlass>`_
package can help write visualisable topologies to view.
Loading