Comments (7)
Hi,
The goal of this algorithm is to determine a Martini parameterization that minimizes a cost function with respect to the mapping and chooses bead types such that the octanol/water partition free energy of each corresponding fragment as predicted by the ALOGPS neural network matches as closely with the chosen bead type as possible. For the second issue, of the mapping of 5 and 6 heavy atom fragments to a single bead: When I downloaded the earlier version of the code and tested the fragments you pointed out, I saw that these mappings are still single-bead mappings, meaning that the updates to the code did not affect this mapping. For some fragments, single-bead mappings are allowed if the additivity check fails for mappings with higher numbers of beads. Also note that mappings coarser than 4:1 mappings are possible when using Martini (for example butanol: maps to a single bead, also see Advanced Parameterization of Martini by Manuel Nuno Melo from the martini lectures page http://cgmartini.nl/index.php/lectures). Regardless of the number of heavy atoms mapped, auto_martini assigns a bead type such that the partition free energy of the bead type matches as closely as possible with the ALOGPS prediction (which does take into account the fragment size). We are still working on further improvements to the algorithm to further minimize the number of fragments for which this occurs. For the first issue, regarding the bead typing for benzene: The approach for ring molecules is to use the entire set of atoms in the ring for each fragment and weight each bead’s contribution by a scaling factor. For all ring molecules, this was previously set to 2/3 so as to reproduce the Martini parameterizations for benzene and cyclohexane. However, we found, by parameterizing many multitudes of ring-containing molecules from the Generated Database, that a factor of 1/2 for 5-membered rings and 1/3 for six-membered rings yielded much better agreement with respect to the ALOGPS predictions for the ring molecules. This does, however, cause the benzene and cyclohexane parameterizations prescribed by Martini to no longer be the ones obtained from auto_martini. If you wish to use the old scaling factor that preserves the benzene and cyclohexane mappings, I recommend you try the refactor branch. Simply type:
git checkout refactor
and then running the code is slightly different:
python auto_martini.py --smi “O(CCOC(=O)c1ccccc1)CO” --mol MOL
You can also fine tune the results of the parameterization yourself by replacing certain assignments if you know that a certain bead type makes more sense for that specific fragment based on more relevant properties for your system (rather than the octanol/water partitioning free energy).
from auto_martini.
Thanks for your patient answer. I will try it.
from auto_martini.
Hi
So I had similar query. I was trying to get parameters for dodecanol which is having 13 heavy atoms and what I got using auto_martini was
**;;;; GENERATED WITH auto-martini
; dodecanol.sdf
; Tristan Bereau (2014)
[moleculetype]
; molname nrexcl
DODE 2
[atoms]
; id type resnr residu atom cgnr charge smiles
1 C1 1 DODE C01 1 0 ; [H]C([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]
2 C5 1 DODE C02 2 0 ; [H]OC([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])[H]
[bonds]
; i j funct length force.c.
1 2 1 0.65 1250**
It is 13:2 (heavy atoms to bead ratio), I mean how reliable is this? Any comments? It will be helpful if you can also give some other examples (of-course butanol) where people used something similar.
from auto_martini.
Using the master
branch and dodecanol's smiles string ("OCCCCCCCCCCCC") I get 3 beads:
; GENERATED WITH auto_martini.py
; INPUT SMILES: [H]OC([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]
; Tristan Bereau (2014)
[moleculetype]
; molname nrexcl
MOL 2
[atoms]
; id type resnr residue atom cgnr charge smiles
1 N0 1 MOL N01 1 0 ; CCCCO
2 C3 1 MOL C01 2 0 ; CCC
3 C1 1 MOL C02 3 0 ; CCCCC
[bonds]
; i j funct length force.c.
1 2 1 0.32 1250
2 3 1 0.32 1250
[angles]
; i j k funct angle force.c.
1 2 3 2 94.3 25.0
maybe try using smiles string rather than sdf files, as we've done more tests with the former.
from auto_martini.
What I am getting using smiles string is :
;;;; GENERATED WITH auto-martini
; INPUT SMILES: [H]OC([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]
; Tristan Bereau (2014)
[moleculetype]
; molname nrexcl
DODE 2
[atoms]
; id type resnr residu atom cgnr charge smiles
1 Nda 1 DODE N01 1 0 ; CCCCO
2 C3 1 DODE C01 2 0 ; CCC
3 C1 1 DODE C02 3 0 ; CCCCC
[bonds]
; i j funct length force.c.
1 2 1 0.32 1250
2 3 1 0.32 1250
[angles]
; i j k funct angle force.c.
1 2 3 2 94.3 25.0
Bead type 1 is different.
from auto_martini.
Please confirm which version of the code you are using. Tristan's result (which I also get) is from using the master
branch. I do get the same result as yours when using the refactor
branch. In addition to the parameters for ring molecules, the refactor
branch has a higher tolerance for assigning fragments to donor/acceptor types as compared to the master
branch. Overall, the main difference between the two branches is that the master
branch more strictly tries to match the water/octanol partition free energy of the CG molecule to the atomistic one as predicted by ALOGPS. On the other hand, the
refactor
branch uses different parameters that aim to preserve some of the mappings that Martini has prescribed for specific molecules, like the butanol fragment that is given in this case. For dodecanol the partition free energy value is -7.3573 kcal/mol. You can see the comparison yourself by adding the -v
flag like so ./auto_martini --smi "OCCCCCCCCCCCC" -v --mol MOL
. For dodecanol, using the master
branch, the CG partition free energy is -7.3327 kcal/mol, whereas the result is -6.9192 kcal/mol using the refactor
branch. (Note that, if using the refactor
branch and the -v
flag, the units are for octanol/water partitioning free energy in kJ/mol, so dividing by a factor of -4.184 will give you the same numbers as I have listed here, but this unit conversion is already implemented in the master
branch). Both results are within 10% of the target value, but the master branch is slightly more accurate. However, if the hydrogen bonding of the alcohol functional group is very relevant to your system, it may be worth keeping the Nda bead type versus the N0 bead type.
from auto_martini.
Sure. Thanks a lot for the explanation. I have understood the difference now.
Comment - The script is very useful :)
from auto_martini.
Related Issues (20)
- "Missing parentheses in call to 'print'." HOT 15
- Max. number of attempts: 54517 HOT 1
- VisibleDeprecationWarning
- Improving molecule sanitization HOT 1
- auto_martini as an interoperable component HOT 2
- auto_martini fails 4 tests
- auto_martini doesn't work for silica coarse graining HOT 1
- setup.py
- The CG model for ethanol is different from the original paper HOT 1
- martini3 HOT 3
- ALOGPS can't predict fragment HOT 2
- Installation instructions are incomplete HOT 5
- No Metadata for AutoMartini HOT 5
- Meets ValueError when testing example molecules HOT 6
- ValueError: setting an array element with a sequence HOT 4
- pytest fail HOT 5
- Can we ask one bead per heavy atom? [question] HOT 2
- How many heavy atoms can be processed[no reply required]
- Installation not working HOT 7
- Problems with installation HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from auto_martini.