├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── devtools ├── conda-recipe │ ├── README.md │ ├── build.sh │ └── meta.yaml └── travis-ci │ ├── after_success.sh │ └── install.sh ├── oe_license.txt.enc ├── scripts └── start.py ├── setup.py └── solvationtoolkit ├── __init__.py ├── mol2tosdf.py ├── solvated_mixtures.py └── test ├── data ├── gromacs │ ├── benzene.gro │ ├── benzene.top │ ├── cyclohexane.gro │ ├── cyclohexane.top │ ├── ethane.gro │ ├── ethane.top │ ├── toluene.gro │ ├── toluene.top │ ├── toluene_benzene_cyclohexane_ethane_3_1_80_7.gro │ ├── toluene_benzene_cyclohexane_ethane_3_1_80_7.top │ ├── toluene_benzene_cyclohexane_ethane_3_5_80_7.gro │ └── toluene_benzene_cyclohexane_ethane_3_5_80_7.top ├── monomers │ ├── benzene.frcmod │ ├── benzene.mol2 │ ├── cyclohexane.frcmod │ ├── cyclohexane.mol2 │ ├── ethane.frcmod │ ├── ethane.mol2 │ ├── toluene.frcmod │ └── toluene.mol2 ├── packmol_boxes │ ├── toluene_benzene_cyclohexane_ethane_3_1_80_7.pdb │ └── toluene_benzene_cyclohexane_ethane_3_5_80_7.pdb └── tleap │ ├── benzene.inpcrd │ ├── benzene.prmtop │ ├── cyclohexane.inpcrd │ ├── cyclohexane.prmtop │ ├── ethane.inpcrd │ ├── ethane.prmtop │ ├── toluene.inpcrd │ ├── toluene.prmtop │ ├── toluene_benzene_cyclohexane_ethane_3_1_80_7.inpcrd │ ├── toluene_benzene_cyclohexane_ethane_3_1_80_7.prmtop │ ├── toluene_benzene_cyclohexane_ethane_3_5_80_7.inpcrd │ └── toluene_benzene_cyclohexane_ethane_3_5_80_7.prmtop └── test_solvated_mixtures.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | 26 | # PyInstaller 27 | # Usually these files are written by a python script from a template 28 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 29 | *.manifest 30 | *.spec 31 | 32 | # Installer logs 33 | pip-log.txt 34 | pip-delete-this-directory.txt 35 | 36 | # Unit test / coverage reports 37 | htmlcov/ 38 | .tox/ 39 | .coverage 40 | .coverage.* 41 | .cache 42 | nosetests.xml 43 | coverage.xml 44 | *,cover 45 | 46 | # Translations 47 | *.mo 48 | *.pot 49 | 50 | # Django stuff: 51 | *.log 52 | 53 | # Sphinx documentation 54 | docs/_build/ 55 | 56 | # PyBuilder 57 | target/ 58 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: c 2 | sudo: false 3 | 4 | branches: 5 | only: 6 | - master 7 | 8 | install: 9 | # Configure environment. 10 | - source devtools/travis-ci/install.sh 11 | - export PYTHONUNBUFFERED=true 12 | - echo $TRAVIS_SECURE_ENV_VARS 13 | # Unpack encrypted OpenEye license file 14 | - openssl aes-256-cbc -K $encrypted_935501d0d612_key -iv $encrypted_935501d0d612_iv -in oe_license.txt.enc -out oe_license.txt -d 15 | 16 | script: 17 | # Add omnia channel 18 | - conda config --add channels ${ORGNAME} 19 | # Build conda dev package 20 | - conda build devtools/conda-recipe 21 | # Create and activate test environment 22 | - conda create --yes -n test python=$python 23 | - source activate test 24 | # Install package prerequisites 25 | - conda install --yes --quiet pip nose nose-timer 26 | - conda install --yes --quiet packmol 27 | #- pip install $OPENEYE_CHANNEL openeye-toolkits 28 | #Use beta version instead 29 | - pip install --pre -i https://pypi.anaconda.org/openeye/label/beta/simple openeye-toolkits && python -c "import openeye; print(openeye.__version__)" 30 | # Build the recipe 31 | - conda build devtools/conda-recipe 32 | # Install 33 | - conda install --yes --use-local solvationtoolkit 34 | # Test the package 35 | - conda install --yes nose nose-timer 36 | - cd devtools && nosetests $PACKAGENAME --nocapture --verbosity=2 --with-doctest --with-timer -a '!slow' && cd .. 37 | 38 | env: 39 | matrix: 40 | # OpenEye production 41 | - python=2.7 CONDA_PY=27 OPENEYE_CHANNEL="-i https://pypi.anaconda.org/openeye/channel/main/simple" 42 | - python=3.4 CONDA_PY=34 OPENEYE_CHANNEL="-i https://pypi.anaconda.org/openeye/channel/main/simple" 43 | - python=3.5 CONDA_PY=35 OPENEYE_CHANNEL="-i https://pypi.anaconda.org/openeye/channel/main/simple" 44 | 45 | global: 46 | - ORGNAME="omnia" 47 | - PACKAGENAME="solvationtoolkit" 48 | # Location of decrypted OpenEye license file 49 | - OE_LICENSE="$HOME/oe_license.txt" 50 | # encrypted ANACONDA_TOKEN for push of dev package to Anaconda 51 | - secure: "QflOtg3nSmlKJlXCR+CEYnHSRfLemF7vTDjWK0H3dPe8mu+9eEbIiJyIupZI+Zg0fgcgqnqb9k9IZNKCi5K7gKmNemnNuKEDxxzxAkTf3abaoTJ2YaUx2yFO1SKrkfeqaH8x4jxehnM/H7QDaC7cjcQEVqgc2uKNWzchEcz5/ywqhj7HOxwhEo9cT93f713jZwlK3BZzo8E7HVPh9Docs920FxgIXQ5e6d6wAg8f84zb9DLK3WcVJfj8PFuIjPJqFcEw1tCTpcVmWlu6Rf01mcPuygHMzk5GzxSkIhOIz+IXbg2XuxntH4G2geGVwDyw4sX+5NDjIktuDo9j+G1WTvkbWl4TiJNeA2CGuga/247k6qYCSEQCI6lHs6zNaM1gaD1CNtrY2f9ciwinZP748Dsrq5uqdyCNlZusdk9bpw2vx//46AS+cugMz8wYd2S/LBxSjpgD7e01DvZtfaWWc6AphvUWM+SXyzIOP6pXHxfkBNj4y0Kbo1n2uO1TrFHl/6FSJ6uUeSWcyXZRZHbAJNo35juU55gOTOoIOzOOwUWk/gKz4S4hAm5PVLcQ9vHsinACCHPTTNCOar5qNLzacfCnTowxyNJ31McayMZfrougqsFbhVAwGXIJaxFPqrTSPPhx+kEtJGxM2pyYATp/eXwLm/RNG1zHZsuoXfBGVZ8=" 52 | 53 | #after_success: 54 | # - echo "after_success" 55 | # - source devtools/travis-ci/after_success.sh 56 | 57 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, Mobley Lab 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 14 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 15 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 16 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 17 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 18 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 19 | OR OTHER DEALINGS IN THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Build Status 2 | 3 | [![Build Status](https://travis-ci.org/MobleyLab/SolvationToolkit.svg?branch=master)](https://travis-ci.org/MobleyLab/SolvationToolkit) 4 | 5 | # SolvationToolkit 6 | Tools for setting up arbitrary (currently non-water) solute-solvent mixtures for simulation in GROMACS or AMBER formats, or for use in OpenMM. 7 | 8 | This provides the MixtureSystem class (in `solvationtoolkit.solvated_mixtures`) for definition and construction of mixtures as discussed below. Usage examples are below, as well as in `scripts/start.py`. 9 | 10 | Latest release: [![DOI](https://zenodo.org/badge/35064710.svg)](https://zenodo.org/badge/latestdoi/35064710) 11 | 12 | # Installing 13 | 14 | ## Prerequisites 15 | * Auto-installable: 16 | * openmoltools v0.6.5 or later 17 | * mdtraj (via omnia channel on conda) 18 | * OpenEye tools 19 | * packmol (via omnia channel on conda) 20 | * ParmEd v2.5.1.10 (currently, parmed-dev) or later, such as via omnia channel on conda 21 | 22 | ## Installing 23 | * Download the archive from GitHub, extract, and type `python setup.py install` 24 | * Hopefully installation via conda is coming very soon 25 | 26 | # Usage 27 | 28 | ## Example usage 29 | ```python 30 | # Set up mixture of phenol, toluene, and cyclohexane 31 | # using specified numbers of each component 32 | mixture = MixtureSystem('mydata') 33 | mixture.addComponent(label='phenol', smiles='c1ccc(cc1)O', number=1) 34 | mixture.addComponent(label='toluene', smiles='Cc1ccccc1', number=10) 35 | mixture.addComponent(label='cyclohexane', smiles='C1CCCCC1', number=500) 36 | #Generate output files for AMBER 37 | mixture.build(amber = True) 38 | 39 | # Set up simple liquid of TIP3P water 40 | liquid = MixtureSystem() 41 | liquid.addComponent('water') 42 | liquid.build() 43 | 44 | # Set up binary mixture of water and methanol 45 | binary_mixture = MixtureSystem() 46 | binary_mixture.addComponent(name='water', mole_fraction=0.2) 47 | # add a filling compound - assumed to be rest of mixture if no 48 | # mole_fraction specified 49 | binary_mixture.addComponent(name='methanol') 50 | #Build for GROMACS 51 | binary_mixture.build(gromacs = True) 52 | 53 | # Set up ternary mixture of ethanol, methanol, and water 54 | ternary_mixture = MixtureSystem() 55 | ternary_mixture.addComponent(name='ethanol', mole_fraction=0.2) 56 | ternary_mixture.addComponent(name='methanol', mole_fraction=0.2) 57 | ternary_mixture.addComponent(name='water') 58 | 59 | # Set up a system of phenol at infinite dilution (a single molecule) 60 | # in otherwise pure water 61 | infinite_dilution = MixtureSystem() 62 | infinite_dilution.addComponent(name='phenol', mole_fraction=0.0) 63 | infinite_dilution.addComponent(name='water') 64 | 65 | 66 | # Setup a molecule of taurine; use protonation states appropriate for neutral pH 67 | taurine = MixtureSystem(protonation=True) 68 | taurine.addComponent(name='taurine', smiles='C(CS(=O)(=O)O)N', number=1) 69 | ``` 70 | 71 | ## Other usage information 72 | 73 | One or multiple components must be specified, and each component must have a 74 | name or label (or both), as well as optionally SMILES strings and number of 75 | molecules or mole fraction. Each component must end up with a string which can 76 | be used to construct filenames (which will be taken from `label` or, if not 77 | provided, `name`), and each component must also be unambiguously identified 78 | via a name or SMILES string. SMILES strings are the preferred identifier, but 79 | if SMILES are not provided, it attempts to process the name to a SMILES, and if 80 | there is no name, the label is interpreted as a name. 81 | 82 | Except in certain special cases, each component must also have a quantity, 83 | which can either be a number of molecules, or a mole fraction. Numbers of 84 | molecules and mole fractions cannot be mixed; system specification must either 85 | occur via numbers or via mole fractions. Special cases are the case of a single 86 | component, in which no quantity is necessary as the solution is pure and can be 87 | generated based on the target system size, and the case of a filling component, 88 | which is provided without quantity specification along with several other 89 | components with specified mole fractions. 90 | 91 | Systems are finalized by executing the build functionality, which has optional 92 | arguments `amber = True` and `gromacs = True` for generating output for the 93 | specified packages. For aid with solvation free energy calculations, build of 94 | GROMACS systems takes an additional optional argument, `solute_index`, 95 | specifying the component number (i.e. in the order ardded, counting from 0) to 96 | treat as the solute. 97 | 98 | ## Storage of results/intermediate files 99 | 100 | Data files are stored in subdirectories of the directory specified by the 101 | constructor, i.e. MixtureSystem('path'); the default location is 'data'. 102 | Within that, subdirectories contain .sdf and .mol2 files for monomers, 103 | the generated .pdb format boxes from packmol, and AMBER and GROMACS files if 104 | generated. 105 | 106 | ## Protonation states 107 | 108 | This retains the legacy behavior where molecules are by default set up in their "standard" protonation state as obtained from the SMILES (typically their neutral form). An option argument, `protonation`, to the `MixtureSystem` constructor, will use `OENeutralpHModel` to attempt to set up typical neutral pH appropriate protonation states as per OpenEye's model, if set to True. Alternatively, providing SMILES strings with formal charges specified should result in the desired protonation states, though this has not been tested. 109 | 110 | Depending on the application, different protonation states may be desired, so you may need to devote some care to this aspect. 111 | 112 | # Other Stuff 113 | 114 | ## Issues/problems/bug reports 115 | * See issue tracker 116 | 117 | ## Versions: 118 | - [Version 0.4.2](https://doi.org/10.5281/zenodo.180626): Institutes Zenodo version tracking/unique DOIs for each version. 119 | - [Version 0.4.3](https://dx.doi.org/10.5281/zenodo.1205593): Functionally the same as 0.4.2 but removes dependence on libgfortran. 120 | 121 | ## Changes not yet in a release: 122 | - Addition of optional argument to allow use of a pH model for selection of protonation states. 123 | 124 | ## Disclaimers 125 | * This code is currently in approximately beta release status. Use at your own risk. We will almost certainly be making changes to the API in the near future. (A very substantial API change was made in v0.4.0) 126 | -------------------------------------------------------------------------------- /devtools/conda-recipe/README.md: -------------------------------------------------------------------------------- 1 | This is a recipe for building the current development package into a conda 2 | binary. 3 | 4 | The installation on travis-ci is done by building the conda package, installing 5 | it, running the tests, and then if successful (the idea would be to proceed by) pushing the package to binstar. The binstar auth token is an encrypted environment variable generated using: 6 | 7 | binstar auth -n openmoltools-travis -o omnia --max-age 22896000 -c --scopes api:write 8 | 9 | and then saved in the environment variable BINSTAR_TOKEN. 10 | 11 | Note that most of the above is from openmoltools and we are currently working on adapting for solvationtoolkit. 12 | 13 | 14 | -------------------------------------------------------------------------------- /devtools/conda-recipe/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | $PYTHON setup.py install 4 | 5 | -------------------------------------------------------------------------------- /devtools/conda-recipe/meta.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | name: solvationtoolkit 3 | version: 0.4.4 4 | 5 | source: 6 | path: ../../ 7 | 8 | build: 9 | preserve_egg_dir: True 10 | number: 0 11 | 12 | requirements: 13 | build: 14 | - python 15 | - setuptools 16 | - numpy 17 | - numpydoc 18 | - scipy 19 | - ambermini 20 | - parmed 21 | - openmoltools 22 | - mdtraj 23 | - packmol 24 | - netcdf4 25 | - pandas 26 | - openmm 27 | - pytables 28 | run: 29 | - python 30 | - setuptools 31 | - numpy 32 | - numpydoc 33 | - scipy 34 | - ambermini 35 | - parmed 36 | #- libgfortran ==1.0 # [linux] 37 | - openmoltools 38 | - mdtraj 39 | - packmol 40 | - netcdf4 41 | - pandas 42 | - openmm 43 | - pytables 44 | test: 45 | requires: 46 | - nose 47 | - packmol 48 | imports: 49 | - openmoltools 50 | - parmed 51 | #commands: 52 | # - nosetests openmoltools -v -a '!slow' 53 | 54 | about: 55 | home: https://github.com/mobleylab/solvationtoolkit 56 | license: MIT 57 | -------------------------------------------------------------------------------- /devtools/travis-ci/after_success.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Must be invoked with $PACKAGENAME 3 | 4 | echo $TRAVIS_PULL_REQUEST $TRAVIS_BRANCH 5 | 6 | if [ "$TRAVIS_PULL_REQUEST" = true ]; then 7 | echo "This is a pull request. No deployment will be done."; exit 0 8 | fi 9 | 10 | 11 | if [ "$TRAVIS_BRANCH" != "master" ]; then 12 | echo "No deployment on BRANCH='$TRAVIS_BRANCH'"; exit 0 13 | fi 14 | 15 | 16 | # Deploy to anaconda 17 | conda install --yes anaconda-client jinja2 18 | pushd . 19 | cd $HOME/miniconda/conda-bld 20 | FILES=*/${PACKAGENAME}-dev-*.tar.bz2 21 | for filename in $FILES; do 22 | #We're aiming to get this into omnia eventually but for now, dmobley channel 23 | anaconda -t $ANACONDA_TOKEN remove --force dmobley/${PACKAGENAME}-dev/${filename} 24 | anaconda -t $ANACONDA_TOKEN upload --force -u dmobley -p ${PACKAGENAME}-dev ${filename} 25 | #anaconda -t $ANACONDA_TOKEN remove --force ${ORGNAME}/${PACKAGENAME}-dev/${filename} 26 | #anaconda -t $ANACONDA_TOKEN upload --force -u ${ORGNAME} -p ${PACKAGENAME}-dev ${filename} 27 | done 28 | popd 29 | 30 | -------------------------------------------------------------------------------- /devtools/travis-ci/install.sh: -------------------------------------------------------------------------------- 1 | MINICONDA=Miniconda2-latest-Linux-x86_64.sh 2 | MINICONDA_MD5=$(curl -s https://repo.continuum.io/miniconda/ | grep -A3 $MINICONDA | sed -n '4p' | sed -n 's/ *\(.*\)<\/td> */\1/p') 3 | wget http://repo.continuum.io/miniconda/$MINICONDA 4 | if [[ $MINICONDA_MD5 != $(md5sum $MINICONDA | cut -d ' ' -f 1) ]]; then 5 | echo "Miniconda MD5 mismatch" 6 | exit 1 7 | fi 8 | bash $MINICONDA -b -p $HOME/miniconda 9 | PIP_ARGS="-U" 10 | 11 | export PATH=$HOME/miniconda/bin:$PATH 12 | 13 | conda install --yes conda-build jinja2 anaconda-client pip 14 | 15 | 16 | -------------------------------------------------------------------------------- /oe_license.txt.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MobleyLab/SolvationToolkit/eab32dcd0d0e5dff8f126ae73184af323d9ec417/oe_license.txt.enc -------------------------------------------------------------------------------- /scripts/start.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | ###################################################################### 3 | # SolvationToolkit: A toolkit for setting up molecular simulations of mixtures 4 | # Copyright 2011-2015 UC Irvine and the Authors 5 | # 6 | # Authors: David Mobley and Gaetano Calabro 7 | # With thanks to Kyle Beauchamp, whose liquid_tools.py provided an initial basis for this code 8 | # (https://github.com/choderalab/LiquidBenchmark/blob/master/src/simulation/liquid_tools.py) in April 2015 9 | # 10 | #This library is free software; you can redistribute it and/or 11 | #modify it under the terms of the GNU Lesser General Public 12 | #License as published by the Free Software Foundation; either 13 | #version 2.1 of the License, or (at your option) any later version. 14 | # 15 | #This library is distributed in the hope that it will be useful, 16 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 | #Lesser General Public License for more details. 19 | # 20 | #You should have received a copy of the GNU Lesser General Public 21 | #License along with this library; if not, see . 22 | ###################################################################### 23 | 24 | 25 | from solvationtoolkit.solvated_mixtures import * 26 | 27 | liquids = MixtureSystem() 28 | 29 | # liquids.addComponent(numbers=5, name='ethane') 30 | # liquids.addComponent(numbers=2, name='toluene') 31 | # liquids.addComponent(numbers=3, name='methane') 32 | 33 | 34 | liquids.addComponent(mole_fraction=0.2, name='ethane') 35 | liquids.addComponent(mole_fraction=0.0, name='toluene') 36 | liquids.addComponent(mole_fraction=0.6, name='methane') 37 | liquids.addComponent(name='water') 38 | 39 | # liquids[1]=Component(mole_fraction=0.6, name='methane') 40 | # print liquids 41 | 42 | liquids.build(amber=True, gromacs=True) 43 | 44 | 45 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | """ 2 | SolvationToolkit: Tools for setting up mixtures of small organic molecules for AMBER, GROMACS, OpenMM and others. 3 | 4 | You can install SolvationTookit via 5 | 6 | python setup.py install 7 | 8 | """ 9 | 10 | import sys 11 | from setuptools import setup, find_packages 12 | 13 | if sys.argv[-1] == 'setup.py': 14 | print("To install, run 'python setup.py install'") 15 | print() 16 | 17 | if sys.version_info[:2] < (2, 7): 18 | print("SolvationToolkit requires Python 2.7 or later (%d.%d detected)." % 19 | sys.version_info[:2]) 20 | sys.exit(-1) 21 | 22 | 23 | ########################## 24 | VERSION = "0.4.4.dev0" 25 | ISRELEASED = False 26 | __version__ = VERSION 27 | ########################## 28 | 29 | 30 | descr = """ 31 | SolvationToolkit is a simple toolkit for setting up input files for simulations of solutions of small organic molecules for various simulation packages. 32 | """ 33 | 34 | data = {'solvationtoolkit':['test/*.py'] } 35 | 36 | setup( 37 | name = 'solvationtoolkit', 38 | version = __version__, 39 | description = 'Solvation Toolkit', 40 | long_description = descr, 41 | url = 'https://github.com/mobleylab/solvationtoolkit', 42 | author = 'Gaetano Calabro and David Mobley', 43 | author_email = 'gcalabro -at- uci.edu', 44 | license = 'MIT', 45 | platforms = ['Linux-64', 'Mac OSX-64', 'Unix-64'], 46 | packages = find_packages(), 47 | package_data = data, 48 | include_package_data = True, 49 | 50 | #entry_points = {'console_scripts':['start=scripts/start.py']}, 51 | zip_safe = False 52 | 53 | ) 54 | -------------------------------------------------------------------------------- /solvationtoolkit/__init__.py: -------------------------------------------------------------------------------- 1 | #!/bin/env python 2 | 3 | """ 4 | A toolkit for molecular simulations of mixtures for AMBER, GROMACS, and OpenMM 5 | 6 | COPYRIGHT AND LICENSE 7 | 8 | Copyright 2011-2016 UC Irvine and the Authors 9 | 10 | @author David L. Mobley 11 | @author Gaetano Calabro 12 | With thanks to Kyle Beauchamp, whose liquid_tools.py provided an initial 13 | basis for this code (https://github.com/choderalab/LiquidBenchmark/blob/master/src/simulation/liquid_tools.py) in April 2015 14 | 15 | This library is free software; you can redistribute it and/or 16 | modify it under the terms of the GNU Lesser General Public 17 | License as published by the Free Software Foundation; either 18 | version 2.1 of the License, or (at your option) any later version. 19 | 20 | This library is distributed in the hope that it will be useful, 21 | but WITHOUT ANY WARRANTY; without even the implied warranty of 22 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23 | Lesser General Public License for more details. 24 | 25 | You should have received a copy of the GNU Lesser General Public 26 | License along with this library; if not, see . 27 | """ 28 | 29 | from solvationtoolkit import solvated_mixtures 30 | from solvationtoolkit import mol2tosdf 31 | -------------------------------------------------------------------------------- /solvationtoolkit/mol2tosdf.py: -------------------------------------------------------------------------------- 1 | ###################################################################### 2 | # SolvationToolkit: A toolkit for setting up molecular simulations of mixtures 3 | # Copyright 2011-2015 UC Irvine and the Authors 4 | # 5 | # Authors: David Mobley, Gaetano Calabro, and Camila Zanette 6 | # With thanks to Kyle Beauchamp, whose liquid_tools.py provided an initial basis for this code 7 | # (https://github.com/choderalab/LiquidBenchmark/blob/master/src/simulation/liquid_tools.py) in April 2015 8 | # Thanks to Christopher Bayly, whose helped with reading .mol2 files with GAFF atom types. 9 | # 10 | #This library is free software; you can redistribute it and/or 11 | #modify it under the terms of the GNU Lesser General Public 12 | #License as published by the Free Software Foundation; either 13 | #version 2.1 of the License, or (at your option) any later version. 14 | # 15 | #This library is distributed in the hope that it will be useful, 16 | #but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 | #Lesser General Public License for more details. 19 | # 20 | #You should have received a copy of the GNU Lesser General Public 21 | #License along with this library; if not, see . 22 | ###################################################################### 23 | 24 | 25 | import sys 26 | from openmoltools.utils import import_ 27 | 28 | def writeSDF(mol2_filename, sdf_filename, mol_name): 29 | """For generating .sdf file format from .mol2 file, using OEIFlavor (OpenEye). Creates three tags (partial_charges, partial_bond_orders, and atom_types) in the .sdf file using values from the reference (.mol2 file). 30 | 31 | Parameters 32 | ---------- 33 | mol2_filename: str 34 | Mol2 filename used to write the .sdf file. The .mol2 file is preserved. 35 | sdf_filename: str 36 | SDF filename (path) used to save the sdf file generated. 37 | mol_name: str 38 | Name of molecule used to write the title for the .sdf file generated. 39 | 40 | Notes 41 | ----------- 42 | In partial_bonds_orders tag, .mol2 bond orders are translated to .sdf bond orders using OEIFlavor, aromatic bonds ('ar') are transformed to 1 or 2. 43 | 44 | Limitations 45 | ----------- 46 | Creates only three tags in .sdf file. The tags are partial_charges, partial_bond_orders, and atom_types (GAFF). Their values are set according to the correspondent .mol2 file properties. 47 | """ 48 | oechem = import_("openeye.oechem") 49 | 50 | ifs = oechem.oemolistream(mol2_filename) 51 | MOL2flavor = oechem.OEIFlavor_Generic_Default | oechem.OEIFlavor_MOL2_Default | oechem.OEIFlavor_MOL2_Forcefield 52 | ifs.SetFlavor(oechem.OEFormat_MOL2, MOL2flavor) 53 | 54 | ofs = oechem.oemolostream(sdf_filename) 55 | tag_names = ['partial_charges', 'partial_bond_orders', 'atom_types'] 56 | 57 | # Set the title and assign partial charges for the .mol2 file 58 | for mol in ifs.GetOEGraphMols(): 59 | mol.SetTitle(mol_name) 60 | molToCharge = oechem.OEMol(mol) 61 | 62 | # Get partial charges and atom types from .mol2 file and store them to put into the .sdf file as tags 63 | charges = [] 64 | atom_types = [] 65 | for atom, atomCharged in zip(mol.GetAtoms(), molToCharge.GetAtoms()): 66 | atom.SetPartialCharge( atomCharged.GetPartialCharge() ) 67 | charges += [atom.GetPartialCharge()] 68 | atom_types += [atom.GetType()] 69 | 70 | #print("partial charges " + str(charges)) 71 | #print("atom types: " + str(atom_types)) 72 | # Create the tags for the sdf file 73 | mol = createTag(tag_names, mol, charges, atom_types) 74 | oechem.OEWriteMolecule(ofs, mol) 75 | ifs.close() 76 | ofs.close() 77 | 78 | 79 | def createTag(tag_names, mol, charges, atom_types): 80 | """Create the tags for sdf file.""" 81 | oechem = import_("openeye.oechem") 82 | mol_id = oechem.OEGetSDData(mol, 'Mol_Index') 83 | for tag in tag_names: 84 | if tag == 'partial_charges': 85 | value = manipulatePartialChargesTag(charges) 86 | elif tag == 'partial_bond_orders': 87 | value = manipulateBondOrdersTag(mol) 88 | elif tag == 'atom_types': 89 | value = manipulateAtomTypes(atom_types) 90 | else: 91 | #Tag Name Error 92 | raise Exception('Wrong tag name') 93 | break 94 | oechem.OESetSDData(mol, oechem.OESDDataPair(tag, value)) 95 | return mol 96 | 97 | 98 | def manipulatePartialChargesTag(charges): 99 | """Transform charges from float to string format.""" 100 | value = '' 101 | for charge in charges: 102 | value += str(charge) + '\n' 103 | return value 104 | 105 | 106 | def manipulateBondOrdersTag(mol): 107 | """Get bonds and store their order for partial bond orders Tag""" 108 | partial_bonds_order = '' 109 | for bond in mol.GetBonds(): 110 | partial_bonds_order += str(float(bond.GetOrder())) + '\n' 111 | return partial_bonds_order 112 | 113 | def manipulateAtomTypes(atom_types): 114 | """Transform atom types to the right string format.""" 115 | value = '' 116 | for atm in atom_types: 117 | value += str(atm) + '\n' 118 | return value 119 | -------------------------------------------------------------------------------- /solvationtoolkit/solvated_mixtures.py: -------------------------------------------------------------------------------- 1 | 2 | """Defines MixtureSystem class for creating and handling mixtures 3 | 4 | solvationtoolkit.solvated_mixtures provides the main MixtureSystem class and 5 | functionality used here. This allows construction of arbitrary mixtures 6 | of small organic compounds via specification of names/SMILES string and 7 | numbers/mole fractions of molecules. 8 | 9 | 10 | USAGE EXAMPLES: 11 | 12 | # Set up mixture of phenol, toluene, and cyclohexane 13 | # using specified numbers of each component 14 | mixture = MixtureSystem('mydata') 15 | mixture.addComponent(label='phenol', smiles='c1ccc(cc1)O', number=1) 16 | mixture.addComponent(label='toluene', smiles='Cc1ccccc1', number=10) 17 | mixture.addComponent(label='cyclohexane', smiles='C1CCCCC1', number=500) 18 | #Generate output files for AMBER 19 | mixture.build(amber = True) 20 | 21 | # Set up simple liquid of TIP3P water 22 | liquid = MixtureSystem() 23 | liquid.addComponent('water') 24 | liquid.build() 25 | 26 | # Set up binary mixture of water and methanol 27 | binary_mixture = MixtureSystem() 28 | binary_mixture.addComponent(name='water', mole_fraction=0.2) 29 | # add a filling compound - assumed to be rest of mixture if no 30 | # mole_fraction specified 31 | binary_mixture.addComponent(name='methanol') 32 | #Build for GROMACS 33 | binary_mixture.build(gromacs = True) 34 | 35 | # Set up ternary mixture of ethanol, methanol, and water 36 | ternary_mixture = MixtureSystem() 37 | ternary_mixture.addComponent(name='ethanol', mole_fraction=0.2) 38 | ternary_mixture.addComponent(name='methanol', mole_fraction=0.2) 39 | ternary_mixture.addComponent(name='water') 40 | 41 | # Set up a system of phenol at infinite dilution (a single molecule) 42 | # in otherwise pure water 43 | infinite_dilution = MixtureSystem() 44 | infinite_dilution.addComponent(name='phenol', mole_fraction=0.0) 45 | infinite_dilution.addComponent(name='water') 46 | 47 | 48 | OTHER USAGE INFORMATION: 49 | 50 | One or multiple components must be specified, and each component must have a 51 | name or label (or both), as well as optionally SMILES strings and number of 52 | molecules or mole fraction. Each component must end up with a string which can 53 | be used to construct filenames (which will be taken from "label" or, if not 54 | provided, "name"), and each component must also be unambiguously identified 55 | via a name or SMILES string. SMILES strings are the preferred identifier, but 56 | if SMILES are not provided, it attempts to process the name to a SMILES, and if 57 | there is no name, the label is interpreted as a name. 58 | 59 | Except in certain special cases, each component must also have a quantity, 60 | which can either be a number of molecules, or a mole fraction. Numbers of 61 | molecules and mole fractions cannot be mixed; system specification must either 62 | occur via numbers or via mole fractions. Special cases are the case of a single 63 | component, in which no quantity is necessary as the solution is pure and can be 64 | generated based on the target system size, and the case of a filling component, 65 | which is provided without quantity specification along with several other 66 | components with specified mole fractions. 67 | 68 | Systems are finalized by executing the build functionality, which has optional 69 | arguments `amber = True` and `gromacs = True` for generating output for the 70 | specified packages. For aid with solvation free energy calculations, build of 71 | GROMACS systems takes an additional optional argument, `solute_index`, 72 | specifying the component number (i.e. in the order ardded, counting from 0) to 73 | treat as the solute. 74 | 75 | 76 | STORAGE OF RESULTS/INTERMEDIATE FILES: 77 | 78 | Data files are stored in subdirectories of the directory specified by the 79 | constructor, i.e. MixtureSystem('path'); the default location is 'data'. 80 | Within that, subdirectories contain .sdf and .mol2 files for monomers, 81 | the generated .pdb format boxes from packmol, and AMBER and GROMACS files if 82 | generated. 83 | """ 84 | 85 | import numpy as np 86 | import os,sys 87 | import inspect 88 | import itertools 89 | import mdtraj as md 90 | import parmed 91 | import openmoltools 92 | import solvationtoolkit.mol2tosdf as mol2tosdf 93 | from simtk.unit import * 94 | from openmoltools.utils import import_ 95 | import shutil 96 | 97 | 98 | # We require at least ParmEd 2.5.1 because of issues with the .mol2 writer 99 | # (issue #691 on ParmEd) prior to that, and 2.5.1.10 because of OpenEye reader 100 | # formatting bugs requireing compressed spacing in .mol2 files (added in 101 | # ParmEd 2.5.1.10) 102 | # Previously 2.0.4 or later was required due to issues with FudgeLJ/FudgeQQ in 103 | # resulting GROMACS topologies in 104 | # earlier versions 105 | 106 | try: #Try to get version tag 107 | ver = parmed.version 108 | except: #If too old for version tag, it is too old 109 | oldParmEd = Exception('ERROR: ParmEd is too old, please upgrade to 2.5.1.10 or later (parmed-dev if necessary)' ) 110 | raise oldParmEd 111 | if ver < (2,5,1,10): 112 | raise RuntimeError("ParmEd is too old, please upgrade to 2.5.1.10 or later (parmed-dev if necessary)") 113 | 114 | 115 | def make_path(pathname): 116 | try: 117 | os.makedirs(pathname) 118 | except: 119 | pass 120 | 121 | class MixtureSystem(object): 122 | """A MixtureSystem object for defining and preparing input files for a 123 | mixture of arbitrary organic solutes. Outputs to formats for several simulation 124 | packages are available. 125 | 126 | Usage 127 | ----------- 128 | 129 | 130 | Parameters 131 | ----------- 132 | directory : str (optional) 133 | Directory tree in which to store the data. Default: "data" 134 | protonation : bool 135 | Use a protonation model to determine protonation states of compounds? Default: None. 136 | If True, uses OpenEye's neutral pH model to predict likely protonation statesself. 137 | WARNING: Currently charged systems are not neutralized by addition of counterions, 138 | thus use of this may result in systems with a formal charge. 139 | 140 | 141 | Limitations 142 | ----------- 143 | Existing files with the same name present in the data directory tree may be 144 | overwritten. This results in a limitation/failure in a small (and probably 145 | random) fraction of cases if multiple systems involving the same monomers 146 | are written into the same data directory. Specifically, 147 | openmoltools.amber.build_mixture_prmtop requires that each mol2 file for a 148 | component have a unique residue name, which is handled automatically by 149 | openmoltools when constructing monomers (each is assigned a unique random 150 | residue name). However, if these are overwritten with other monomers (i.e. 151 | if we set up, say, 'octanol' in the same directory twice) 152 | which by chance end up with non-unique residue names then 153 | amber.build_mixture_prmtop will fail with a ValueError. This can be avoided 154 | by ensuring that if you are constructing multiple MixtureSystems involving 155 | the same monomers, your data directories are different. This issue also 156 | will likely be fixed when openmoltools switches to topology merging 157 | via ParmEd rather than tleap, as unique residue names are built into 158 | ParmEd in a better way. 159 | """ 160 | 161 | 162 | def __init__(self, directory='data', protonation=None): 163 | 164 | """ 165 | Initialization of the Molecule Database Class 166 | 167 | Parameters 168 | ---------- 169 | directory : str 170 | the directory name used to save the data 171 | protonation : bool 172 | Use a protonation model to determine protonation states of compounds? Default: None. 173 | If True, uses OpenEye's neutral pH model to predict likely protonation statesself. 174 | WARNING: Currently charged systems are not neutralized by addition of counterions, 175 | thus use of this may result in systems with a formal charge. 176 | 177 | """ 178 | 179 | # Set directory names 180 | self.data_path = directory 181 | self.data_path_monomers = os.path.join(self.data_path,'monomers') 182 | self.data_path_packmol = os.path.join(self.data_path,'packmol_boxes') 183 | self.protonation_model = protonation 184 | 185 | # List container of all the added components to the solution 186 | self.component_list = [] 187 | 188 | # Index used to perform index selection by using __iter__ function 189 | self.__ci = 0 190 | 191 | return 192 | 193 | 194 | def __str__(self): 195 | """ 196 | Printing object function 197 | """ 198 | 199 | 200 | string = '' 201 | 202 | for i in self.component_list: 203 | string = string + str(i) 204 | 205 | return string 206 | 207 | 208 | def __iter__(self): 209 | """ 210 | Index generator 211 | """ 212 | return self 213 | 214 | 215 | def next(self): # Python 3: def __next__(self) 216 | """ 217 | Select the molecule during an iteration 218 | """ 219 | 220 | if self.__ci > len(self.component_list) - 1: 221 | self.__ci = 0 222 | raise StopIteration 223 | else: 224 | self.__ci = self.__ci + 1 225 | return self.component_list[self.__ci - 1] 226 | 227 | 228 | def __getitem__(self, index): 229 | """ 230 | Index selection function 231 | """ 232 | 233 | return self.component_list[index] 234 | 235 | 236 | def __setitem__(self, index, component): 237 | """ 238 | Index setting function 239 | 240 | Parameters 241 | ---------- 242 | index : int 243 | the component index 244 | component : Component obj 245 | the component to assign to the component in the mixture 246 | MixtureSystem[index] = component 247 | 248 | """ 249 | 250 | if not isinstance(component, Component): 251 | raise ValueError('The passed component is not a Component class object') 252 | 253 | self.component_list[index] = component 254 | 255 | 256 | 257 | def addComponent(self, name=None, **args): 258 | """ 259 | Add a component to the solution 260 | 261 | Parameters 262 | ---------- 263 | name : string 264 | the name of the compound to add the solution 265 | **args : see class Component for a full description 266 | 267 | """ 268 | 269 | # Component object creation 270 | component=Component(name, **args) 271 | 272 | # Add object to the component list 273 | self.component_list.append(component) 274 | 275 | 276 | 277 | def build(self, amber=False, gromacs=False, solute_index='auto'): 278 | """ 279 | Build all the monomers and the amber or gromacs mixture files 280 | 281 | Parameters 282 | ---------- 283 | amber : bool 284 | this flag is used to control if output or not the amber files 285 | gromacs : bool 286 | this flag is used to control if output or not the gromacs files 287 | solute_index : int/str, optional. Default: "auto" 288 | Optional parameter to specify which of the components (in the list of specified components) 289 | will be treated as a solute in constructing GROMACS topology files 290 | (which means that a single molecule of this component will be singled out as the 'solute' 291 | in the resulting GROMACS topology file). Valid options are 'auto' 292 | (pick the first component present with n_monomers = 1, 293 | otherwise the first component), None (don't pick any), or an integer 294 | (pick the component smiles_strings[solute_index]. 295 | 296 | """ 297 | 298 | #If no components were specified, then we can't proceed 299 | if len(self.component_list)==0: 300 | raise TypeError("One or more components must be specified via addComponent") 301 | 302 | #If we want GROMACS, we have to also build AMBER as we get GROMACS from AMBER 303 | if gromacs and not amber: 304 | print("Turning on build of AMBER parameter/coordinate files in order to obtain files for GROMACS via conversion.") 305 | amber = True 306 | 307 | #NOW GENERATE FINAL STORAGE FOR FILE NAMES/COMPONENT LISTS 308 | #Now that we're building, we can generate the full set of components 309 | #we will be using since we're done adding components 310 | # List of all the smiles strings 311 | self.smiles_strings = [] 312 | 313 | # List of all the number of monomers 314 | self.n_monomers = [] 315 | 316 | # List of all the mole fractions 317 | self.mole_fractions = [] 318 | 319 | # List of all the effective compound names. If the compond name is None 320 | # than the compound label will be used in this list as compound name 321 | self.labels = [] 322 | 323 | # The filling compound is a compound with None molecule number and None 324 | # mole fraction. It is used to fill out the solution 325 | self.filling_compound = None 326 | 327 | # Lists of filenames related to gaff mol2 files, amber files and sdf 328 | # file format 329 | self.gaff_mol2_filenames = [] 330 | self.frcmod_filenames = [] 331 | self.inpcrd_filenames = [] 332 | self.prmtop_filenames = [] 333 | self.sdf_filenames = [] 334 | 335 | # Final strings for output filenames 336 | self.mix_fname = '' 337 | self.pdb_filename = '' 338 | self.prmtop_filename = '' 339 | self.inpcrd_filename = '' 340 | self.top_filename = '' 341 | self.gro_filename = '' 342 | 343 | 344 | #BUILD 345 | 346 | 347 | # Now begin building by building monomers 348 | def build_monomers(self): 349 | """ 350 | Generate GAFF mol2 and frcmod files for each chemical 351 | """ 352 | 353 | # Filenames generation 354 | for comp in self.component_list: 355 | if comp.label: 356 | mol2_filename = os.path.join(self.data_path_monomers, comp.label+'.mol2') 357 | frcmod_filename = os.path.join(self.data_path_monomers, comp.label+'.frcmod') 358 | inpcrd_filename = os.path.join(self.data_path_monomers, comp.label+'.inpcrd') 359 | prmtop_filename = os.path.join(self.data_path_monomers, comp.label+'.prmtop') 360 | sdf_filename = os.path.join(self.data_path_monomers, comp.label+'.sdf') 361 | self.mix_fname = self.mix_fname + '_' + comp.label 362 | else: 363 | mol2_filename = os.path.join(self.data_path_monomers, comp.name+'.mol2') 364 | frcmod_filename = os.path.join(self.data_path_monomers, comp.name+'.frcmod') 365 | inpcrd_filename = os.path.join(self.data_path_monomers, comp.name+'.inpcrd') 366 | prmtop_filename = os.path.join(self.data_path_monomers, comp.name+'.prmtop') 367 | sdf_filename = os.path.join(self.data_path_monomers, comp.name+'.sdf') 368 | self.mix_fname = self.mix_fname + '_' + comp.name 369 | 370 | # Filling compound selection 371 | if comp.number == None and comp.mole_fraction == None: 372 | if self.filling_compound == None: 373 | self.filling_compound = comp 374 | self.mole_fractions.append(comp.mole_fraction) 375 | else: 376 | raise ValueError('Error: Two or more fillig compounds have been specified') 377 | 378 | # Number and mol fractions lists generation 379 | if comp.number: 380 | self.n_monomers.append(comp.number) 381 | if comp.mole_fraction is not None: 382 | self.mole_fractions.append(comp.mole_fraction) 383 | 384 | # Lists of filenames generation 385 | self.smiles_strings.append(comp.smiles) 386 | self.gaff_mol2_filenames.append(mol2_filename) 387 | self.frcmod_filenames.append(frcmod_filename) 388 | self.inpcrd_filenames.append(inpcrd_filename) 389 | self.prmtop_filenames.append(prmtop_filename) 390 | self.sdf_filenames.append(sdf_filename) 391 | 392 | if not (os.path.exists(mol2_filename) and os.path.exists(frcmod_filename)): 393 | #Convert SMILES strings to mol2 and frcmod files for antechamber 394 | openmoltools.openeye.smiles_to_antechamber(comp.smiles, mol2_filename, frcmod_filename, protonation = self.protonation_model) 395 | #Correct the mol2 file partial atom charges to have a total net integer molecule charge 396 | mol2f = parmed.formats.Mol2File 397 | mol2f.write(parmed.load_file(mol2_filename).fix_charges(),mol2_filename, compress_whitespace=True) 398 | 399 | #Generate amber coordinate and topology files for the unsolvated molecules 400 | mol_name = os.path.basename(mol2_filename).split('.')[0] 401 | openmoltools.amber.run_tleap(mol_name, mol2_filename, frcmod_filename, prmtop_filename, inpcrd_filename) 402 | 403 | #Read Mol2 File and write SDF file 404 | mol2tosdf.writeSDF(mol2_filename, sdf_filename, mol_name) 405 | 406 | 407 | #Generate unique residue names for molecules in mol2 files 408 | openmoltools.utils.randomize_mol2_residue_names(self.gaff_mol2_filenames) 409 | 410 | 411 | def build_boxes(self): 412 | """ 413 | Build an initial box with packmol and use it to generate AMBER files 414 | """ 415 | 416 | def mole_fractions_to_n_monomers(self, density= 1 * grams/milliliter, cutoff=12*angstrom): 417 | """ 418 | This function is used to generate the number of molecules for 419 | each compound in the solution from the mole fractions of each molecule. 420 | 421 | Parameters 422 | ---------- 423 | density : openmm units 424 | the solution density 425 | cutoff : openmm units 426 | the cutoff distance of the largest compound in the solution 427 | 428 | Returns 429 | ------- 430 | self.n_monomers : integer list 431 | the list of molecule number for each compound in the solution 432 | 433 | size : float 434 | the edge of the box volume 435 | 436 | """ 437 | oechem = import_("openeye.oechem") 438 | 439 | # Calculate the maximum atomic distance in a molecule 440 | def max_dist_mol(mol): 441 | max_dist = 0.0 442 | coords = mol.GetCoords() # Are the coords always in A in mol2 file? 443 | for i in range(0, mol.NumAtoms()): 444 | crdi = np.array([coords[i][0], coords[i][1], coords[i][2]]) 445 | for j in range(i+1, mol.NumAtoms()): 446 | crdj = np.array([coords[j][0], coords[j][1], coords[j][2]]) 447 | dist = np.linalg.norm(crdi-crdj) 448 | if dist > max_dist: 449 | max_dist = dist 450 | 451 | return max_dist * angstrom 452 | 453 | # The sum of all the mole fractions 454 | sum_fractions = sum([i for i in self.mole_fractions if i != None]) 455 | 456 | if sum_fractions > 1.0: 457 | raise ValueError('Error: The total molar fraction is greater than 1.0') 458 | 459 | if sum_fractions == 1.0 and self.filling_compound: 460 | raise ValueError('Error: The total molar fraction is 1.0 and it is not possible to add any filling compound to the solution, but a filling compound was specified') 461 | 462 | if sum_fractions < 1.0 and not self.filling_compound: 463 | raise ValueError('Error: The total molar fraction is less than 1.0 and no filling compound (i.e. compound with unspecified mole fraction) is provided') 464 | 465 | if self.filling_compound: 466 | self.filling_compound.mole_fraction = 1.0 - sum_fractions 467 | self.mole_fractions = [i if i != None else (1.0 - sum_fractions) for i in self.mole_fractions] 468 | 469 | 470 | max_dist_mols = 0.0 * angstrom 471 | delta_volume = 0.0 * angstrom**3 472 | sum_wgt_frac = 0.0 * grams/mole 473 | 474 | 475 | for i in range(0, len(self.sdf_filenames)): 476 | istream = oechem.oemolistream(self.sdf_filenames[i])#gaff_mol2_files give wrong wgt because not sybyl format! 477 | mol = oechem.OEMol() 478 | 479 | if not oechem.OEReadMolecule(istream, mol): 480 | raise IOError('Error: It was not possible to create the OpenEye molecule object by reading the file: %s' % self.gaff_mol2_filenames[i]) 481 | # Molecular weight 482 | wgt = oechem.OECalculateMolecularWeight(mol) * grams/mole 483 | 484 | if self.component_list[i].mole_fraction == 0.0: 485 | delta_volume = oechem.OECalculateMolecularWeight(mol) * angstrom**3 486 | 487 | sum_wgt_frac = sum_wgt_frac + wgt * self.component_list[i].mole_fraction 488 | 489 | max_dist= max_dist_mol(mol) 490 | 491 | if max_dist > max_dist_mols: 492 | max_dist_mols = max_dist 493 | 494 | 495 | cube_length = ((max_dist_mols + 2*cutoff)**3 + delta_volume)**(1.0/3.0) 496 | 497 | n_monomers = [] 498 | 499 | 500 | # n_i = Volume * Density * mole_fraction_i/sum_j(wgt_j * mole_fraction_j) 501 | self.n_monomers = [int(round(AVOGADRO_CONSTANT_NA * comp.mole_fraction * density * cube_length**3 / sum_wgt_frac)) \ 502 | if comp.mole_fraction !=0 else 1 for comp in self.component_list] 503 | 504 | 505 | return self.n_monomers, cube_length 506 | 507 | 508 | if not self.gaff_mol2_filenames: 509 | raise ValueError('The list of gaff mol2 molecules is empty') 510 | 511 | if self.n_monomers and self.mole_fractions: 512 | print (self.n_monomers, self.mole_fractions) 513 | raise ValueError('Error: For different compounds it is not possible to mix mole_fractions and number of molecules') 514 | 515 | 516 | # The solution has been specified by using number of molecules 517 | if self.n_monomers: 518 | 519 | if self.filling_compound: 520 | raise ValueError('Error: The filling compound cannot be mixed with components specified by defining the number of molecules') 521 | 522 | size = openmoltools.packmol.approximate_volume_by_density(self.smiles_strings, self.n_monomers) 523 | mdtraj_components = [md.load(mol2) for mol2 in self.gaff_mol2_filenames] 524 | # Standardize water to avoid issue where waters are not recognized by MDTraj unless they have specific names 525 | for component in mdtraj_components: 526 | openmoltools.packmol.standardize_water(component) 527 | 528 | packed_trj = openmoltools.packmol.pack_box( mdtraj_components, self.n_monomers, box_size = size) 529 | 530 | self.labels = self.mix_fname[1:].split('_') 531 | self.mix_fname = self.mix_fname[1:] + ''.join(['_'+str(i) for i in self.n_monomers]) 532 | self.pdb_filename = os.path.join(self.data_path_packmol, self.mix_fname+'.pdb') 533 | packed_trj.save(self.pdb_filename) 534 | 535 | 536 | # The solutions has been specified by using mole fractions 537 | elif self.mole_fractions: 538 | 539 | n_monomers, size = mole_fractions_to_n_monomers(self) 540 | 541 | # WARNING: The size estimated with the mole_to_n_monomers 542 | # function is underestimating the volume calculated by using 543 | # openmoltools and for now we are using this estimate. 544 | # If the volume is underestimated, apparently Packmol struggles 545 | # to find convergence and introduces extra molecules 546 | # into the found best solutionx (bug?) 547 | 548 | size = openmoltools.packmol.approximate_volume_by_density(self.smiles_strings, self.n_monomers) 549 | mdtraj_components = [md.load(mol2) for mol2 in self.gaff_mol2_filenames] 550 | # Standardize water to avoid issue where waters are not recognized by MDTraj unless they have specific names 551 | for component in mdtraj_components: 552 | openmoltools.packmol.standardize_water(component) 553 | 554 | packed_trj = openmoltools.packmol.pack_box(mdtraj_components, n_monomers, box_size = size) 555 | 556 | self.labels = self.mix_fname[1:].split('_') 557 | self.mix_fname = self.mix_fname[1:] +''.join(['_'+str(i) for i in self.mole_fractions if i is not None]) 558 | self.pdb_filename = os.path.join(self.data_path_packmol, self.mix_fname+'.pdb') 559 | packed_trj.save(self.pdb_filename) 560 | 561 | return 562 | 563 | 564 | 565 | def convert_to_gromacs(self, solute_index): 566 | """From AMBER-format prmtop and crd files, generate final solvated 567 | GROMACS topology and coordinate files. Ensure that the desired "solute" (as per 568 | solute_index) has a single monomer treated via a unique residue name to allow 569 | treatment as a solute separate from other residues of the same name (if 570 | desired). The solute will be given residue name "solute" Also, check to see if 571 | there are "WAT" residues present, in which case tleap will have re-ordered 572 | them to the end of the data file. If so, update data structures accordingly 573 | and handle conversion appropriately. 574 | 575 | Notes 576 | ----- 577 | Currently, this function ensures that - after AMBER conversion reorders 578 | water molecules with residue names 'WAT' to occur last in the resulting 579 | parameter/coordinate files - the internal data structures are updated to 580 | have the correct order in the relevant lists (labels, smiles_strings, 581 | n_monomers). If for some reason GROMACS conversion were removed, these 582 | would need to be updated elsewhere. (Probably this should be done anyway, 583 | as this is not really a GROMACS issue.) 584 | 585 | """ 586 | # Read in AMBER format parameter/coordinate file and convert in gromacs 587 | gromacs_topology = parmed.load_file(self.prmtop_filename, self.inpcrd_filename ) 588 | 589 | # Split the topology into components and check that we have the right number of components 590 | components = gromacs_topology.split() 591 | assert len(components)==len(self.n_monomers), "Number of monomers and number of components in the combined topology do not match." 592 | 593 | 594 | #### HANDLE ORDERING OF WATER #### 595 | # Check if any of the residues is named "WAT". If it is, antechamber will potentially have re-ordered it from where it was (it places residues named "WAT" at the end) so it may no longer appear in the order in which we expect. 596 | resnames = [ components[i][0].residues[0].name for i in range(len(components)) ] 597 | wat_present = False 598 | 599 | 600 | # Manage presence of WAT residues and possible re-ordering 601 | if 'WAT' in resnames: 602 | 603 | # If there is a water present, then we MIGHT have re-ordering. 604 | # Check smiles to find out where it was originally. 605 | wat_orig_index = self.smiles_strings.index('O') 606 | 607 | # Where is it now? 608 | wat_new_index = resnames.index('WAT') 609 | 610 | # Reordered? If so, we have to adjust the ordering of 611 | # n_monomers, smiles_strings, labels, and potentially 612 | # solute_index. Filenames will be preserved since these were 613 | #already created 614 | if wat_orig_index != wat_new_index: 615 | # tleap moves water to the end so if they aren't equal, we 616 | # know where water will be... 617 | self.n_monomers = self.n_monomers[0:wat_orig_index] + self.n_monomers[wat_orig_index+1:] + [self.n_monomers[wat_orig_index]] 618 | self.smiles_strings = self.smiles_strings[0:wat_orig_index] + self.smiles_strings[wat_orig_index+1:] + [self.smiles_strings[wat_orig_index]] 619 | self.labels = self.labels[0:wat_orig_index] + self.labels[wat_orig_index+1:] + [self.labels[wat_orig_index] ] 620 | # Check solute_index and alter if needed 621 | if not solute_index=='auto' and not solute_index==None: 622 | # Index unchanged if it's before the water 623 | if solute_index < wat_orig_index: 624 | pass 625 | # If it is the water, now it is at the end 626 | elif solute_index == wat_orig_index: 627 | solute_index = len(self.n_monomers)-1 628 | # If it was after the water, then it moved up one position 629 | else: 630 | solute_index -= 1 631 | #### END HANDLING OF ORDERING OF WATER #### 632 | 633 | 634 | # Figure out what we're treating as the solute (if anything) 635 | if solute_index=='auto': 636 | # Check which of the molecules is present in qty 1 637 | try: 638 | solute_index = self.n_monomers.index(1) 639 | except ValueError: 640 | # If none is present in qty 1, then use the first 641 | solute_index = 0 642 | 643 | # Check that the passed solute index is correct 644 | check_solute_indices = range(0,len(self.n_monomers)) 645 | assert solute_index in check_solute_indices and isinstance(solute_index, int) or solute_index == None, "Solute index must be an element of the list: %s or None. The value passed is: %s" % (check_solute_indices, solute_index) 646 | 647 | # Now all we have to do is to change the name of the solute molecule (residue, in ParmEd) and ParmEd will automatically make it a new molecule on write. 648 | # To do this, first build a list of the residue names we want, by molecule 649 | resnames = [ ] 650 | for i in range(len(self.n_monomers)): 651 | # If this is not the solute, just keep what we had 652 | if i!=solute_index: 653 | resnames += [ self.labels[i] ] * self.n_monomers[i] 654 | # If it is the solute, make the first residue be named solute and the rest what they were already 655 | else: 656 | resnames += [ 'solute' ] + [ self.labels[i]] * (self.n_monomers[i]-1) 657 | 658 | # Make sure we didn't botch this 659 | assert len(resnames) == len( gromacs_topology.residues ), "Must have the same number of residues named as defined in the topology file." 660 | 661 | 662 | # Now we just go through and rename all the residues and we're done 663 | for i in range(len(resnames)): 664 | gromacs_topology.residues[i].name = resnames[i] 665 | 666 | 667 | # Write GROMACS topology/coordinate files 668 | gromacs_topology.save(self.top_filename, format='gromacs') 669 | gromacs_topology.save(self.gro_filename) 670 | 671 | return 672 | 673 | 674 | # Create monomers and packmol directories 675 | make_path(os.path.join(self.data_path_monomers)) 676 | make_path(os.path.join(self.data_path_packmol)) 677 | 678 | # Call the monomers creation and packmol systems 679 | build_monomers(self) 680 | build_boxes(self) 681 | 682 | # Create amber files 683 | if amber: 684 | self.data_path_amber = os.path.join(self.data_path,'amber') 685 | make_path(os.path.join(self.data_path_amber)) 686 | self.prmtop_filename = os.path.join(self.data_path_amber, self.mix_fname+'.prmtop') 687 | self.inpcrd_filename = os.path.join(self.data_path_amber, self.mix_fname+'.inpcrd') 688 | # Make AMBER PDB file (will have water residue names/atom names modified if applicable) 689 | self.pdb_filename_amber = os.path.join(self.data_path_packmol, self.mix_fname+'amber.pdb') 690 | shutil.copy(self.pdb_filename, self.pdb_filename_amber) 691 | 692 | tleap_cmd = openmoltools.amber.build_mixture_prmtop(self.gaff_mol2_filenames, self.frcmod_filenames, self.pdb_filename_amber, self.prmtop_filename, self.inpcrd_filename) 693 | 694 | # Create gromacs files 695 | if gromacs: 696 | self.data_path_gromacs = os.path.join(self.data_path,'gromacs') 697 | make_path(os.path.join(self.data_path_gromacs)) 698 | self.top_filename = os.path.join(self.data_path_gromacs, self.mix_fname+'.top') 699 | self.gro_filename = os.path.join(self.data_path_gromacs, self.mix_fname+'.gro') 700 | convert_to_gromacs(self,solute_index) 701 | 702 | 703 | 704 | #************************* 705 | # Component Class 706 | #************************* 707 | 708 | class Component(object): 709 | """ 710 | This Class is used to save the component parameters 711 | 712 | """ 713 | 714 | 715 | def __init__(self, name=None, label=None, smiles=None, number=None, mole_fraction=None): 716 | """ 717 | Initialization class function 718 | 719 | Parameters 720 | ---------- 721 | name : str 722 | the molecule name 723 | label : str 724 | the molecule label used to generates files 725 | smiles : str 726 | the molecule SMILES string 727 | number : int 728 | the number of molecule 729 | mole_fraction : float 730 | molecular mole fraction 731 | 732 | REQUIRED: A name and/or label. If no SMILES is provided, the name will be used to generate SMILES and if no name is provided, the label will be used to attempt to generate SMILES. 733 | """ 734 | 735 | 736 | oechem = import_("openeye.oechem") 737 | oeiupac = import_("openeye.oeiupac") 738 | 739 | # Checking name and label 740 | 741 | ref_str = '' 742 | 743 | if not name and not label: 744 | raise ValueError("Error: No component parameters name or label"+ 745 | " have been provided for the component") 746 | 747 | if label: 748 | if not isinstance(label, str): 749 | raise ValueError("Error: The component label %s is not a string" % label) 750 | ref_str = label 751 | 752 | if name: 753 | if not isinstance(name, str): 754 | raise ValueError("Error: The component name %s is not a string" % name) 755 | ref_str = name 756 | 757 | if label and not name: 758 | print('\nWARNING: component name not provided; label will be used as component name\n') 759 | 760 | # Checking smiles, molecule number and mole fraction 761 | 762 | if smiles: 763 | if not isinstance(smiles, str): 764 | raise ValueError("Error: The SMILES % for the component %s is not a string" % (smiles, ref_str)) 765 | #Check this is a valid SMILES string 766 | mol = oechem.OEMol() 767 | status = oechem.OEParseSmiles(mol, smiles) 768 | if not status: 769 | raise ValueError("Error: The SMILES %s for the component %s" 770 | " cannot be processed by OEChem." % (smiles, ref_str) ) 771 | 772 | if number is not None: 773 | if not isinstance(number, int): 774 | raise ValueError("Error: The molecule quantity %s for the component %s is not an integer" % (number, ref_str)) 775 | if number < 1: 776 | raise ValueError("Error: The molecule quantity %s for the component %s must be a positive integer" % (number, ref_str)) 777 | 778 | if mole_fraction: 779 | if not isinstance(mole_fraction, float): 780 | raise ValueError("Error: The mole fraction %s for the component %s is not a float number" % (mole_fraction, ref_str)) 781 | if mole_fraction < 0.0: 782 | raise ValueError("Error: The mole fraction %s for the component %s must be positive" % (mole_fraction, ref_str)) 783 | if mole_fraction > 1.0: 784 | raise ValueError("Error: The mole fraction %s for the component %s is greater than one" % (mole_fraction, ref_str)) 785 | 786 | if number and mole_fraction: 787 | raise ValueError("Error: molecule number and mole fraction for the compound %s cannot be both specified" % ref_str) 788 | 789 | if not smiles: 790 | mol = oechem.OEMol() 791 | if name: 792 | try: 793 | oeiupac.OEParseIUPACName(mol, name) 794 | smiles = oechem.OECreateIsoSmiString(mol) 795 | #If smiles is empty, didn't parse correctly 796 | if smiles == '': 797 | raise ValueError("Error: The supplied name '%s' could not be parsed" % name) 798 | except: 799 | raise ValueError("Error: The supplied name '%s' could not be parsed" % name) 800 | elif label: 801 | try: 802 | oeiupac.OEParseIUPACName(mol, label) 803 | smiles = oechem.OECreateIsoSmiString(mol) 804 | if smiles == '': 805 | raise ValueError("Error: The supplied name '%s' could not be parsed" % name) 806 | except: 807 | raise ValueError("Error: The supplied label '%s' could not be parsed" % label) 808 | 809 | self.name = name 810 | self.label = label 811 | self.smiles = smiles 812 | self.number = number 813 | self.mole_fraction = mole_fraction 814 | 815 | 816 | return 817 | 818 | 819 | def __str__(self): 820 | """ 821 | Printing object function 822 | """ 823 | 824 | return "\nname = %s\nlabel = %s\nsmiles = %s\nnumber = %s\nmole_frac = %s\n" \ 825 | %(self.name, self.label, self.smiles, self.number, self.mole_fraction) 826 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/benzene.gro: -------------------------------------------------------------------------------- 1 | benzene_GMX.gro created by acpype (Rev: 403) on Thu May 21 09:54:30 2015 2 | 12 3 | 1 MOL C1 1 0.189 -0.104 -0.011 4 | 1 MOL C2 2 0.292 -0.163 0.061 5 | 1 MOL C3 3 0.288 -0.165 0.200 6 | 1 MOL C4 4 0.180 -0.108 0.268 7 | 1 MOL C5 5 0.076 -0.048 0.196 8 | 1 MOL C6 6 0.081 -0.046 0.056 9 | 1 MOL H1 7 0.192 -0.102 -0.120 10 | 1 MOL H2 8 0.376 -0.208 0.008 11 | 1 MOL H3 9 0.369 -0.212 0.256 12 | 1 MOL H4 10 0.177 -0.110 0.376 13 | 1 MOL H5 11 -0.008 -0.004 0.248 14 | 1 MOL H6 12 0.000 0.000 -0.000 15 | 0.38370 0.21150 0.49590 16 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/benzene.top: -------------------------------------------------------------------------------- 1 | ; benzene_GMX.top created by acpype (Rev: 403) on Thu May 21 09:54:30 2015 2 | 3 | [ defaults ] 4 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 5 | 1 2 yes 0.5 0.8333 6 | 7 | [ atomtypes ] 8 | ;name bond_type mass charge ptype sigma epsilon Amb 9 | ca ca 0.00000 0.00000 A 3.39967e-01 3.59824e-01 ; 1.91 0.0860 10 | ha ha 0.00000 0.00000 A 2.59964e-01 6.27600e-02 ; 1.46 0.0150 11 | 12 | [ moleculetype ] 13 | ;name nrexcl 14 | benzene 3 15 | 16 | [ atoms ] 17 | ; nr type resi res atom cgnr charge mass ; qtot bond_type 18 | 1 ca 1 MOL C1 1 -0.130100 12.01000 ; qtot -0.130 19 | 2 ca 1 MOL C2 2 -0.130100 12.01000 ; qtot -0.260 20 | 3 ca 1 MOL C3 3 -0.130100 12.01000 ; qtot -0.390 21 | 4 ca 1 MOL C4 4 -0.130100 12.01000 ; qtot -0.520 22 | 5 ca 1 MOL C5 5 -0.130100 12.01000 ; qtot -0.651 23 | 6 ca 1 MOL C6 6 -0.130100 12.01000 ; qtot -0.781 24 | 7 ha 1 MOL H1 7 0.130100 1.00800 ; qtot -0.651 25 | 8 ha 1 MOL H2 8 0.130100 1.00800 ; qtot -0.520 26 | 9 ha 1 MOL H3 9 0.130100 1.00800 ; qtot -0.390 27 | 10 ha 1 MOL H4 10 0.130100 1.00800 ; qtot -0.260 28 | 11 ha 1 MOL H5 11 0.130100 1.00800 ; qtot -0.130 29 | 12 ha 1 MOL H6 12 0.130100 1.00800 ; qtot 0.000 30 | 31 | [ bonds ] 32 | ; ai aj funct r k 33 | 1 2 1 1.3870e-01 4.0033e+05 ; C1 - C2 34 | 1 6 1 1.3870e-01 4.0033e+05 ; C1 - C6 35 | 1 7 1 1.0870e-01 2.8811e+05 ; C1 - H1 36 | 2 3 1 1.3870e-01 4.0033e+05 ; C2 - C3 37 | 2 8 1 1.0870e-01 2.8811e+05 ; C2 - H2 38 | 3 4 1 1.3870e-01 4.0033e+05 ; C3 - C4 39 | 3 9 1 1.0870e-01 2.8811e+05 ; C3 - H3 40 | 4 5 1 1.3870e-01 4.0033e+05 ; C4 - C5 41 | 4 10 1 1.0870e-01 2.8811e+05 ; C4 - H4 42 | 5 6 1 1.3870e-01 4.0033e+05 ; C5 - C6 43 | 5 11 1 1.0870e-01 2.8811e+05 ; C5 - H5 44 | 6 12 1 1.0870e-01 2.8811e+05 ; C6 - H6 45 | 46 | [ pairs ] 47 | ; ai aj funct 48 | 1 4 1 ; C1 - C4 49 | 1 9 1 ; C1 - H3 50 | 1 11 1 ; C1 - H5 51 | 2 5 1 ; C2 - C5 52 | 2 10 1 ; C2 - H4 53 | 2 12 1 ; C2 - H6 54 | 3 11 1 ; C3 - H5 55 | 4 8 1 ; C4 - H2 56 | 4 12 1 ; C4 - H6 57 | 5 9 1 ; C5 - H3 58 | 6 3 1 ; C6 - C3 59 | 6 8 1 ; C6 - H2 60 | 6 10 1 ; C6 - H4 61 | 7 3 1 ; H1 - C3 62 | 7 5 1 ; H1 - C5 63 | 7 8 1 ; H1 - H2 64 | 7 12 1 ; H1 - H6 65 | 8 9 1 ; H2 - H3 66 | 9 10 1 ; H3 - H4 67 | 10 11 1 ; H4 - H5 68 | 11 12 1 ; H5 - H6 69 | 70 | [ angles ] 71 | ; ai aj ak funct theta cth 72 | 1 2 3 1 1.1997e+02 5.6216e+02 ; C1 - C2 - C3 73 | 1 2 8 1 1.2001e+02 4.0551e+02 ; C1 - C2 - H2 74 | 1 6 5 1 1.1997e+02 5.6216e+02 ; C1 - C6 - C5 75 | 1 6 12 1 1.2001e+02 4.0551e+02 ; C1 - C6 - H6 76 | 2 1 6 1 1.1997e+02 5.6216e+02 ; C2 - C1 - C6 77 | 2 1 7 1 1.2001e+02 4.0551e+02 ; C2 - C1 - H1 78 | 2 3 4 1 1.1997e+02 5.6216e+02 ; C2 - C3 - C4 79 | 2 3 9 1 1.2001e+02 4.0551e+02 ; C2 - C3 - H3 80 | 3 2 8 1 1.2001e+02 4.0551e+02 ; C3 - C2 - H2 81 | 3 4 5 1 1.1997e+02 5.6216e+02 ; C3 - C4 - C5 82 | 3 4 10 1 1.2001e+02 4.0551e+02 ; C3 - C4 - H4 83 | 4 3 9 1 1.2001e+02 4.0551e+02 ; C4 - C3 - H3 84 | 4 5 6 1 1.1997e+02 5.6216e+02 ; C4 - C5 - C6 85 | 4 5 11 1 1.2001e+02 4.0551e+02 ; C4 - C5 - H5 86 | 5 4 10 1 1.2001e+02 4.0551e+02 ; C5 - C4 - H4 87 | 5 6 12 1 1.2001e+02 4.0551e+02 ; C5 - C6 - H6 88 | 6 1 7 1 1.2001e+02 4.0551e+02 ; C6 - C1 - H1 89 | 6 5 11 1 1.2001e+02 4.0551e+02 ; C6 - C5 - H5 90 | 91 | [ dihedrals ] ; propers 92 | ; for gromacs 4.5 or higher, using funct 9 93 | ; i j k l func phase kd pn 94 | 1 2 3 4 9 180.00 15.16700 2 ; C1- C2- C3- C4 95 | 1 2 3 9 9 180.00 15.16700 2 ; C1- C2- C3- H3 96 | 1 6 5 4 9 180.00 15.16700 2 ; C1- C6- C5- C4 97 | 1 6 5 11 9 180.00 15.16700 2 ; C1- C6- C5- H5 98 | 2 1 6 5 9 180.00 15.16700 2 ; C2- C1- C6- C5 99 | 2 1 6 12 9 180.00 15.16700 2 ; C2- C1- C6- H6 100 | 2 3 4 5 9 180.00 15.16700 2 ; C2- C3- C4- C5 101 | 2 3 4 10 9 180.00 15.16700 2 ; C2- C3- C4- H4 102 | 3 4 5 6 9 180.00 15.16700 2 ; C3- C4- C5- C6 103 | 3 4 5 11 9 180.00 15.16700 2 ; C3- C4- C5- H5 104 | 4 3 2 8 9 180.00 15.16700 2 ; C4- C3- C2- H2 105 | 4 5 6 12 9 180.00 15.16700 2 ; C4- C5- C6- H6 106 | 5 4 3 9 9 180.00 15.16700 2 ; C5- C4- C3- H3 107 | 6 1 2 3 9 180.00 15.16700 2 ; C6- C1- C2- C3 108 | 6 1 2 8 9 180.00 15.16700 2 ; C6- C1- C2- H2 109 | 6 5 4 10 9 180.00 15.16700 2 ; C6- C5- C4- H4 110 | 7 1 2 3 9 180.00 15.16700 2 ; H1- C1- C2- C3 111 | 7 1 2 8 9 180.00 15.16700 2 ; H1- C1- C2- H2 112 | 7 1 6 5 9 180.00 15.16700 2 ; H1- C1- C6- C5 113 | 7 1 6 12 9 180.00 15.16700 2 ; H1- C1- C6- H6 114 | 8 2 3 9 9 180.00 15.16700 2 ; H2- C2- C3- H3 115 | 9 3 4 10 9 180.00 15.16700 2 ; H3- C3- C4- H4 116 | 10 4 5 11 9 180.00 15.16700 2 ; H4- C4- C5- H5 117 | 11 5 6 12 9 180.00 15.16700 2 ; H5- C5- C6- H6 118 | 119 | [ dihedrals ] ; impropers 120 | ; treated as propers in GROMACS to use correct AMBER analytical function 121 | ; i j k l func phase kd pn 122 | 1 3 2 8 4 180.00 4.60240 2 ; C1- C3- C2- H2 123 | 1 5 6 12 4 180.00 4.60240 2 ; C1- C5- C6- H6 124 | 2 4 3 9 4 180.00 4.60240 2 ; C2- C4- C3- H3 125 | 3 5 4 10 4 180.00 4.60240 2 ; C3- C5- C4- H4 126 | 4 6 5 11 4 180.00 4.60240 2 ; C4- C6- C5- H5 127 | 7 1 6 2 4 180.00 4.60240 2 ; H1- C1- C6- C2 128 | 129 | [ system ] 130 | benzene 131 | 132 | [ molecules ] 133 | ; Compound nmols 134 | benzene 1 135 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/cyclohexane.gro: -------------------------------------------------------------------------------- 1 | cyclohexane_GMX.gro created by acpype (Rev: 403) on Thu May 21 09:54:30 2015 2 | 18 3 | 1 MOL C1 1 0.033 0.023 -0.142 4 | 1 MOL C2 2 -0.101 -0.038 -0.100 5 | 1 MOL C3 3 -0.142 0.007 0.040 6 | 1 MOL C4 4 -0.033 -0.023 0.142 7 | 1 MOL C5 5 0.101 0.038 0.100 8 | 1 MOL C6 6 0.142 -0.007 -0.040 9 | 1 MOL H1 7 0.022 0.131 -0.153 10 | 1 MOL H2 8 0.062 -0.017 -0.240 11 | 1 MOL H3 9 -0.179 -0.009 -0.172 12 | 1 MOL H4 10 -0.094 -0.147 -0.103 13 | 1 MOL H5 11 -0.163 0.114 0.039 14 | 1 MOL H6 12 -0.235 -0.044 0.069 15 | 1 MOL H7 13 -0.062 0.017 0.240 16 | 1 MOL H8 14 -0.022 -0.131 0.153 17 | 1 MOL H9 15 0.094 0.147 0.103 18 | 1 MOL H10 16 0.179 0.009 0.172 19 | 1 MOL H11 17 0.235 0.044 -0.069 20 | 1 MOL H12 18 0.163 -0.114 -0.039 21 | 0.46910 0.29440 0.48000 22 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/cyclohexane.top: -------------------------------------------------------------------------------- 1 | ; cyclohexane_GMX.top created by acpype (Rev: 403) on Thu May 21 09:54:30 2015 2 | 3 | [ defaults ] 4 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 5 | 1 2 yes 0.5 0.8333 6 | 7 | [ atomtypes ] 8 | ;name bond_type mass charge ptype sigma epsilon Amb 9 | c3 c3 0.00000 0.00000 A 3.39967e-01 4.57730e-01 ; 1.91 0.1094 10 | hc hc 0.00000 0.00000 A 2.64953e-01 6.56888e-02 ; 1.49 0.0157 11 | 12 | [ moleculetype ] 13 | ;name nrexcl 14 | cyclohexane 3 15 | 16 | [ atoms ] 17 | ; nr type resi res atom cgnr charge mass ; qtot bond_type 18 | 1 c3 1 MOL C1 1 -0.076100 12.01000 ; qtot -0.076 19 | 2 c3 1 MOL C2 2 -0.075500 12.01000 ; qtot -0.152 20 | 3 c3 1 MOL C3 3 -0.075500 12.01000 ; qtot -0.227 21 | 4 c3 1 MOL C4 4 -0.075500 12.01000 ; qtot -0.303 22 | 5 c3 1 MOL C5 5 -0.075500 12.01000 ; qtot -0.378 23 | 6 c3 1 MOL C6 6 -0.075500 12.01000 ; qtot -0.454 24 | 7 hc 1 MOL H1 7 0.037800 1.00800 ; qtot -0.416 25 | 8 hc 1 MOL H2 8 0.037800 1.00800 ; qtot -0.378 26 | 9 hc 1 MOL H3 9 0.037800 1.00800 ; qtot -0.340 27 | 10 hc 1 MOL H4 10 0.037800 1.00800 ; qtot -0.302 28 | 11 hc 1 MOL H5 11 0.037800 1.00800 ; qtot -0.265 29 | 12 hc 1 MOL H6 12 0.037800 1.00800 ; qtot -0.227 30 | 13 hc 1 MOL H7 13 0.037800 1.00800 ; qtot -0.189 31 | 14 hc 1 MOL H8 14 0.037800 1.00800 ; qtot -0.151 32 | 15 hc 1 MOL H9 15 0.037800 1.00800 ; qtot -0.113 33 | 16 hc 1 MOL H10 16 0.037800 1.00800 ; qtot -0.076 34 | 17 hc 1 MOL H11 17 0.037800 1.00800 ; qtot -0.038 35 | 18 hc 1 MOL H12 18 0.037800 1.00800 ; qtot -0.000 36 | 37 | [ bonds ] 38 | ; ai aj funct r k 39 | 1 2 1 1.5350e-01 2.5363e+05 ; C1 - C2 40 | 1 6 1 1.5350e-01 2.5363e+05 ; C1 - C6 41 | 1 7 1 1.0920e-01 2.8225e+05 ; C1 - H1 42 | 1 8 1 1.0920e-01 2.8225e+05 ; C1 - H2 43 | 2 3 1 1.5350e-01 2.5363e+05 ; C2 - C3 44 | 2 9 1 1.0920e-01 2.8225e+05 ; C2 - H3 45 | 2 10 1 1.0920e-01 2.8225e+05 ; C2 - H4 46 | 3 4 1 1.5350e-01 2.5363e+05 ; C3 - C4 47 | 3 11 1 1.0920e-01 2.8225e+05 ; C3 - H5 48 | 3 12 1 1.0920e-01 2.8225e+05 ; C3 - H6 49 | 4 5 1 1.5350e-01 2.5363e+05 ; C4 - C5 50 | 4 13 1 1.0920e-01 2.8225e+05 ; C4 - H7 51 | 4 14 1 1.0920e-01 2.8225e+05 ; C4 - H8 52 | 5 6 1 1.5350e-01 2.5363e+05 ; C5 - C6 53 | 5 15 1 1.0920e-01 2.8225e+05 ; C5 - H9 54 | 5 16 1 1.0920e-01 2.8225e+05 ; C5 - H10 55 | 6 17 1 1.0920e-01 2.8225e+05 ; C6 - H11 56 | 6 18 1 1.0920e-01 2.8225e+05 ; C6 - H12 57 | 58 | [ pairs ] 59 | ; ai aj funct 60 | 1 4 1 ; C1 - C4 61 | 1 11 1 ; C1 - H5 62 | 1 12 1 ; C1 - H6 63 | 1 15 1 ; C1 - H9 64 | 1 16 1 ; C1 - H10 65 | 2 5 1 ; C2 - C5 66 | 2 13 1 ; C2 - H7 67 | 2 14 1 ; C2 - H8 68 | 2 17 1 ; C2 - H11 69 | 2 18 1 ; C2 - H12 70 | 3 15 1 ; C3 - H9 71 | 3 16 1 ; C3 - H10 72 | 4 9 1 ; C4 - H3 73 | 4 10 1 ; C4 - H4 74 | 4 17 1 ; C4 - H11 75 | 4 18 1 ; C4 - H12 76 | 5 11 1 ; C5 - H5 77 | 5 12 1 ; C5 - H6 78 | 6 3 1 ; C6 - C3 79 | 6 9 1 ; C6 - H3 80 | 6 10 1 ; C6 - H4 81 | 6 13 1 ; C6 - H7 82 | 6 14 1 ; C6 - H8 83 | 7 3 1 ; H1 - C3 84 | 7 5 1 ; H1 - C5 85 | 7 9 1 ; H1 - H3 86 | 7 10 1 ; H1 - H4 87 | 7 17 1 ; H1 - H11 88 | 7 18 1 ; H1 - H12 89 | 8 3 1 ; H2 - C3 90 | 8 5 1 ; H2 - C5 91 | 8 9 1 ; H2 - H3 92 | 8 10 1 ; H2 - H4 93 | 8 17 1 ; H2 - H11 94 | 8 18 1 ; H2 - H12 95 | 9 11 1 ; H3 - H5 96 | 9 12 1 ; H3 - H6 97 | 10 11 1 ; H4 - H5 98 | 10 12 1 ; H4 - H6 99 | 11 13 1 ; H5 - H7 100 | 11 14 1 ; H5 - H8 101 | 12 13 1 ; H6 - H7 102 | 12 14 1 ; H6 - H8 103 | 13 15 1 ; H7 - H9 104 | 13 16 1 ; H7 - H10 105 | 14 15 1 ; H8 - H9 106 | 14 16 1 ; H8 - H10 107 | 15 17 1 ; H9 - H11 108 | 15 18 1 ; H9 - H12 109 | 16 17 1 ; H10 - H11 110 | 16 18 1 ; H10 - H12 111 | 112 | [ angles ] 113 | ; ai aj ak funct theta cth 114 | 1 2 3 1 1.1063e+02 5.2894e+02 ; C1 - C2 - C3 115 | 1 2 9 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H3 116 | 1 2 10 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H4 117 | 1 6 5 1 1.1063e+02 5.2894e+02 ; C1 - C6 - C5 118 | 1 6 17 1 1.1005e+02 3.8802e+02 ; C1 - C6 - H11 119 | 1 6 18 1 1.1005e+02 3.8802e+02 ; C1 - C6 - H12 120 | 2 1 6 1 1.1063e+02 5.2894e+02 ; C2 - C1 - C6 121 | 2 1 7 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H1 122 | 2 1 8 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H2 123 | 2 3 4 1 1.1063e+02 5.2894e+02 ; C2 - C3 - C4 124 | 2 3 11 1 1.1005e+02 3.8802e+02 ; C2 - C3 - H5 125 | 2 3 12 1 1.1005e+02 3.8802e+02 ; C2 - C3 - H6 126 | 3 2 9 1 1.1005e+02 3.8802e+02 ; C3 - C2 - H3 127 | 3 2 10 1 1.1005e+02 3.8802e+02 ; C3 - C2 - H4 128 | 3 4 5 1 1.1063e+02 5.2894e+02 ; C3 - C4 - C5 129 | 3 4 13 1 1.1005e+02 3.8802e+02 ; C3 - C4 - H7 130 | 3 4 14 1 1.1005e+02 3.8802e+02 ; C3 - C4 - H8 131 | 4 3 11 1 1.1005e+02 3.8802e+02 ; C4 - C3 - H5 132 | 4 3 12 1 1.1005e+02 3.8802e+02 ; C4 - C3 - H6 133 | 4 5 6 1 1.1063e+02 5.2894e+02 ; C4 - C5 - C6 134 | 4 5 15 1 1.1005e+02 3.8802e+02 ; C4 - C5 - H9 135 | 4 5 16 1 1.1005e+02 3.8802e+02 ; C4 - C5 - H10 136 | 5 4 13 1 1.1005e+02 3.8802e+02 ; C5 - C4 - H7 137 | 5 4 14 1 1.1005e+02 3.8802e+02 ; C5 - C4 - H8 138 | 5 6 17 1 1.1005e+02 3.8802e+02 ; C5 - C6 - H11 139 | 5 6 18 1 1.1005e+02 3.8802e+02 ; C5 - C6 - H12 140 | 6 1 7 1 1.1005e+02 3.8802e+02 ; C6 - C1 - H1 141 | 6 1 8 1 1.1005e+02 3.8802e+02 ; C6 - C1 - H2 142 | 6 5 15 1 1.1005e+02 3.8802e+02 ; C6 - C5 - H9 143 | 6 5 16 1 1.1005e+02 3.8802e+02 ; C6 - C5 - H10 144 | 7 1 8 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H2 145 | 9 2 10 1 1.0835e+02 3.2995e+02 ; H3 - C2 - H4 146 | 11 3 12 1 1.0835e+02 3.2995e+02 ; H5 - C3 - H6 147 | 13 4 14 1 1.0835e+02 3.2995e+02 ; H7 - C4 - H8 148 | 15 5 16 1 1.0835e+02 3.2995e+02 ; H9 - C5 - H10 149 | 17 6 18 1 1.0835e+02 3.2995e+02 ; H11 - C6 - H12 150 | 151 | [ dihedrals ] ; propers 152 | ; for gromacs 4.5 or higher, using funct 9 153 | ; i j k l func phase kd pn 154 | 1 2 3 4 9 0.00 0.75312 3 ; C1- C2- C3- C4 155 | 1 2 3 4 9 180.00 0.83680 1 ; C1- C2- C3- C4 156 | 1 2 3 4 9 180.00 1.04600 2 ; C1- C2- C3- C4 157 | 1 2 3 11 9 0.00 0.66944 3 ; C1- C2- C3- H5 158 | 1 2 3 12 9 0.00 0.66944 3 ; C1- C2- C3- H6 159 | 1 6 5 4 9 0.00 0.75312 3 ; C1- C6- C5- C4 160 | 1 6 5 4 9 180.00 0.83680 1 ; C1- C6- C5- C4 161 | 1 6 5 4 9 180.00 1.04600 2 ; C1- C6- C5- C4 162 | 1 6 5 15 9 0.00 0.66944 3 ; C1- C6- C5- H9 163 | 1 6 5 16 9 0.00 0.66944 3 ; C1- C6- C5- H10 164 | 2 1 6 5 9 0.00 0.75312 3 ; C2- C1- C6- C5 165 | 2 1 6 5 9 180.00 0.83680 1 ; C2- C1- C6- C5 166 | 2 1 6 5 9 180.00 1.04600 2 ; C2- C1- C6- C5 167 | 2 1 6 17 9 0.00 0.66944 3 ; C2- C1- C6- H11 168 | 2 1 6 18 9 0.00 0.66944 3 ; C2- C1- C6- H12 169 | 2 3 4 5 9 0.00 0.75312 3 ; C2- C3- C4- C5 170 | 2 3 4 5 9 180.00 0.83680 1 ; C2- C3- C4- C5 171 | 2 3 4 5 9 180.00 1.04600 2 ; C2- C3- C4- C5 172 | 2 3 4 13 9 0.00 0.66944 3 ; C2- C3- C4- H7 173 | 2 3 4 14 9 0.00 0.66944 3 ; C2- C3- C4- H8 174 | 3 4 5 6 9 0.00 0.75312 3 ; C3- C4- C5- C6 175 | 3 4 5 6 9 180.00 0.83680 1 ; C3- C4- C5- C6 176 | 3 4 5 6 9 180.00 1.04600 2 ; C3- C4- C5- C6 177 | 3 4 5 15 9 0.00 0.66944 3 ; C3- C4- C5- H9 178 | 3 4 5 16 9 0.00 0.66944 3 ; C3- C4- C5- H10 179 | 4 3 2 9 9 0.00 0.66944 3 ; C4- C3- C2- H3 180 | 4 3 2 10 9 0.00 0.66944 3 ; C4- C3- C2- H4 181 | 4 5 6 17 9 0.00 0.66944 3 ; C4- C5- C6- H11 182 | 4 5 6 18 9 0.00 0.66944 3 ; C4- C5- C6- H12 183 | 5 4 3 11 9 0.00 0.66944 3 ; C5- C4- C3- H5 184 | 5 4 3 12 9 0.00 0.66944 3 ; C5- C4- C3- H6 185 | 6 1 2 3 9 0.00 0.75312 3 ; C6- C1- C2- C3 186 | 6 1 2 3 9 180.00 0.83680 1 ; C6- C1- C2- C3 187 | 6 1 2 3 9 180.00 1.04600 2 ; C6- C1- C2- C3 188 | 6 1 2 9 9 0.00 0.66944 3 ; C6- C1- C2- H3 189 | 6 1 2 10 9 0.00 0.66944 3 ; C6- C1- C2- H4 190 | 6 5 4 13 9 0.00 0.66944 3 ; C6- C5- C4- H7 191 | 6 5 4 14 9 0.00 0.66944 3 ; C6- C5- C4- H8 192 | 7 1 2 3 9 0.00 0.66944 3 ; H1- C1- C2- C3 193 | 7 1 2 9 9 0.00 0.62760 3 ; H1- C1- C2- H3 194 | 7 1 2 10 9 0.00 0.62760 3 ; H1- C1- C2- H4 195 | 7 1 6 5 9 0.00 0.66944 3 ; H1- C1- C6- C5 196 | 7 1 6 17 9 0.00 0.62760 3 ; H1- C1- C6- H11 197 | 7 1 6 18 9 0.00 0.62760 3 ; H1- C1- C6- H12 198 | 8 1 2 3 9 0.00 0.66944 3 ; H2- C1- C2- C3 199 | 8 1 2 9 9 0.00 0.62760 3 ; H2- C1- C2- H3 200 | 8 1 2 10 9 0.00 0.62760 3 ; H2- C1- C2- H4 201 | 8 1 6 5 9 0.00 0.66944 3 ; H2- C1- C6- C5 202 | 8 1 6 17 9 0.00 0.62760 3 ; H2- C1- C6- H11 203 | 8 1 6 18 9 0.00 0.62760 3 ; H2- C1- C6- H12 204 | 9 2 3 11 9 0.00 0.62760 3 ; H3- C2- C3- H5 205 | 9 2 3 12 9 0.00 0.62760 3 ; H3- C2- C3- H6 206 | 10 2 3 11 9 0.00 0.62760 3 ; H4- C2- C3- H5 207 | 10 2 3 12 9 0.00 0.62760 3 ; H4- C2- C3- H6 208 | 11 3 4 13 9 0.00 0.62760 3 ; H5- C3- C4- H7 209 | 11 3 4 14 9 0.00 0.62760 3 ; H5- C3- C4- H8 210 | 12 3 4 13 9 0.00 0.62760 3 ; H6- C3- C4- H7 211 | 12 3 4 14 9 0.00 0.62760 3 ; H6- C3- C4- H8 212 | 13 4 5 15 9 0.00 0.62760 3 ; H7- C4- C5- H9 213 | 13 4 5 16 9 0.00 0.62760 3 ; H7- C4- C5- H10 214 | 14 4 5 15 9 0.00 0.62760 3 ; H8- C4- C5- H9 215 | 14 4 5 16 9 0.00 0.62760 3 ; H8- C4- C5- H10 216 | 15 5 6 17 9 0.00 0.62760 3 ; H9- C5- C6- H11 217 | 15 5 6 18 9 0.00 0.62760 3 ; H9- C5- C6- H12 218 | 16 5 6 17 9 0.00 0.62760 3 ; H10- C5- C6- H11 219 | 16 5 6 18 9 0.00 0.62760 3 ; H10- C5- C6- H12 220 | 221 | [ system ] 222 | cyclohexane 223 | 224 | [ molecules ] 225 | ; Compound nmols 226 | cyclohexane 1 227 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/ethane.gro: -------------------------------------------------------------------------------- 1 | ethane_GMX.gro created by acpype (Rev: 403) on Thu May 21 09:54:30 2015 2 | 8 3 | 1 MOL C1 1 0.082 -0.054 0.049 4 | 1 MOL C2 2 0.215 -0.005 -0.001 5 | 1 MOL H1 3 0.000 0.000 0.000 6 | 1 MOL H2 4 0.069 -0.161 0.029 7 | 1 MOL H3 5 0.073 -0.038 0.157 8 | 1 MOL H4 6 0.297 -0.059 0.048 9 | 1 MOL H5 7 0.228 0.102 0.019 10 | 1 MOL H6 8 0.224 -0.021 -0.109 11 | 0.29700 0.26240 0.26630 12 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/ethane.top: -------------------------------------------------------------------------------- 1 | ; ethane_GMX.top created by acpype (Rev: 403) on Thu May 21 09:54:30 2015 2 | 3 | [ defaults ] 4 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 5 | 1 2 yes 0.5 0.8333 6 | 7 | [ atomtypes ] 8 | ;name bond_type mass charge ptype sigma epsilon Amb 9 | c3 c3 0.00000 0.00000 A 3.39967e-01 4.57730e-01 ; 1.91 0.1094 10 | hc hc 0.00000 0.00000 A 2.64953e-01 6.56888e-02 ; 1.49 0.0157 11 | 12 | [ moleculetype ] 13 | ;name nrexcl 14 | ethane 3 15 | 16 | [ atoms ] 17 | ; nr type resi res atom cgnr charge mass ; qtot bond_type 18 | 1 c3 1 MOL C1 1 -0.093900 12.01000 ; qtot -0.094 19 | 2 c3 1 MOL C2 2 -0.093900 12.01000 ; qtot -0.188 20 | 3 hc 1 MOL H1 3 0.031300 1.00800 ; qtot -0.157 21 | 4 hc 1 MOL H2 4 0.031300 1.00800 ; qtot -0.125 22 | 5 hc 1 MOL H3 5 0.031300 1.00800 ; qtot -0.094 23 | 6 hc 1 MOL H4 6 0.031300 1.00800 ; qtot -0.063 24 | 7 hc 1 MOL H5 7 0.031300 1.00800 ; qtot -0.031 25 | 8 hc 1 MOL H6 8 0.031300 1.00800 ; qtot 0.000 26 | 27 | [ bonds ] 28 | ; ai aj funct r k 29 | 1 2 1 1.5350e-01 2.5363e+05 ; C1 - C2 30 | 1 3 1 1.0920e-01 2.8225e+05 ; C1 - H1 31 | 1 4 1 1.0920e-01 2.8225e+05 ; C1 - H2 32 | 1 5 1 1.0920e-01 2.8225e+05 ; C1 - H3 33 | 2 6 1 1.0920e-01 2.8225e+05 ; C2 - H4 34 | 2 7 1 1.0920e-01 2.8225e+05 ; C2 - H5 35 | 2 8 1 1.0920e-01 2.8225e+05 ; C2 - H6 36 | 37 | [ pairs ] 38 | ; ai aj funct 39 | 3 6 1 ; H1 - H4 40 | 3 7 1 ; H1 - H5 41 | 3 8 1 ; H1 - H6 42 | 4 6 1 ; H2 - H4 43 | 4 7 1 ; H2 - H5 44 | 4 8 1 ; H2 - H6 45 | 5 6 1 ; H3 - H4 46 | 5 7 1 ; H3 - H5 47 | 5 8 1 ; H3 - H6 48 | 49 | [ angles ] 50 | ; ai aj ak funct theta cth 51 | 1 2 6 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H4 52 | 1 2 7 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H5 53 | 1 2 8 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H6 54 | 2 1 3 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H1 55 | 2 1 4 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H2 56 | 2 1 5 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H3 57 | 3 1 4 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H2 58 | 3 1 5 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H3 59 | 4 1 5 1 1.0835e+02 3.2995e+02 ; H2 - C1 - H3 60 | 6 2 7 1 1.0835e+02 3.2995e+02 ; H4 - C2 - H5 61 | 6 2 8 1 1.0835e+02 3.2995e+02 ; H4 - C2 - H6 62 | 7 2 8 1 1.0835e+02 3.2995e+02 ; H5 - C2 - H6 63 | 64 | [ dihedrals ] ; propers 65 | ; for gromacs 4.5 or higher, using funct 9 66 | ; i j k l func phase kd pn 67 | 3 1 2 6 9 0.00 0.62760 3 ; H1- C1- C2- H4 68 | 3 1 2 7 9 0.00 0.62760 3 ; H1- C1- C2- H5 69 | 3 1 2 8 9 0.00 0.62760 3 ; H1- C1- C2- H6 70 | 4 1 2 6 9 0.00 0.62760 3 ; H2- C1- C2- H4 71 | 4 1 2 7 9 0.00 0.62760 3 ; H2- C1- C2- H5 72 | 4 1 2 8 9 0.00 0.62760 3 ; H2- C1- C2- H6 73 | 5 1 2 6 9 0.00 0.62760 3 ; H3- C1- C2- H4 74 | 5 1 2 7 9 0.00 0.62760 3 ; H3- C1- C2- H5 75 | 5 1 2 8 9 0.00 0.62760 3 ; H3- C1- C2- H6 76 | 77 | [ system ] 78 | ethane 79 | 80 | [ molecules ] 81 | ; Compound nmols 82 | ethane 1 83 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/toluene.gro: -------------------------------------------------------------------------------- 1 | toluene_GMX.gro created by acpype (Rev: 403) on Thu May 21 09:54:30 2015 2 | 15 3 | 1 MOL C1 1 0.193 -0.101 -0.160 4 | 1 MOL C2 2 0.189 -0.104 -0.011 5 | 1 MOL C3 3 0.292 -0.163 0.061 6 | 1 MOL C4 4 0.288 -0.165 0.200 7 | 1 MOL C5 5 0.180 -0.108 0.268 8 | 1 MOL C6 6 0.076 -0.048 0.196 9 | 1 MOL C7 7 0.081 -0.046 0.056 10 | 1 MOL H1 8 0.244 -0.011 -0.195 11 | 1 MOL H2 9 0.246 -0.189 -0.199 12 | 1 MOL H3 10 0.092 -0.104 -0.203 13 | 1 MOL H4 11 0.377 -0.208 0.009 14 | 1 MOL H5 12 0.369 -0.212 0.256 15 | 1 MOL H6 13 0.177 -0.110 0.376 16 | 1 MOL H7 14 -0.008 -0.004 0.248 17 | 1 MOL H8 15 -0.001 0.000 0.001 18 | 0.38410 0.21180 0.57860 19 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/toluene.top: -------------------------------------------------------------------------------- 1 | ; toluene_GMX.top created by acpype (Rev: 403) on Thu May 21 09:54:30 2015 2 | 3 | [ defaults ] 4 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 5 | 1 2 yes 0.5 0.8333 6 | 7 | [ atomtypes ] 8 | ;name bond_type mass charge ptype sigma epsilon Amb 9 | c3 c3 0.00000 0.00000 A 3.39967e-01 4.57730e-01 ; 1.91 0.1094 10 | ca ca 0.00000 0.00000 A 3.39967e-01 3.59824e-01 ; 1.91 0.0860 11 | hc hc 0.00000 0.00000 A 2.64953e-01 6.56888e-02 ; 1.49 0.0157 12 | ha ha 0.00000 0.00000 A 2.59964e-01 6.27600e-02 ; 1.46 0.0150 13 | 14 | [ moleculetype ] 15 | ;name nrexcl 16 | toluene 3 17 | 18 | [ atoms ] 19 | ; nr type resi res atom cgnr charge mass ; qtot bond_type 20 | 1 c3 1 MOL C1 1 -0.054000 12.01000 ; qtot -0.054 21 | 2 ca 1 MOL C2 2 -0.077000 12.01000 ; qtot -0.131 22 | 3 ca 1 MOL C3 3 -0.130500 12.01000 ; qtot -0.262 23 | 4 ca 1 MOL C4 4 -0.126800 12.01000 ; qtot -0.388 24 | 5 ca 1 MOL C5 5 -0.135000 12.01000 ; qtot -0.523 25 | 6 ca 1 MOL C6 6 -0.126800 12.01000 ; qtot -0.650 26 | 7 ca 1 MOL C7 7 -0.130500 12.01000 ; qtot -0.781 27 | 8 hc 1 MOL H1 8 0.043600 1.00800 ; qtot -0.737 28 | 9 hc 1 MOL H2 9 0.043600 1.00800 ; qtot -0.693 29 | 10 hc 1 MOL H3 10 0.043600 1.00800 ; qtot -0.650 30 | 11 ha 1 MOL H4 11 0.130200 1.00800 ; qtot -0.520 31 | 12 ha 1 MOL H5 12 0.129800 1.00800 ; qtot -0.390 32 | 13 ha 1 MOL H6 13 0.129800 1.00800 ; qtot -0.260 33 | 14 ha 1 MOL H7 14 0.129800 1.00800 ; qtot -0.130 34 | 15 ha 1 MOL H8 15 0.130200 1.00800 ; qtot -0.000 35 | 36 | [ bonds ] 37 | ; ai aj funct r k 38 | 1 2 1 1.5130e-01 2.7070e+05 ; C1 - C2 39 | 1 8 1 1.0920e-01 2.8225e+05 ; C1 - H1 40 | 1 9 1 1.0920e-01 2.8225e+05 ; C1 - H2 41 | 1 10 1 1.0920e-01 2.8225e+05 ; C1 - H3 42 | 2 3 1 1.3870e-01 4.0033e+05 ; C2 - C3 43 | 2 7 1 1.3870e-01 4.0033e+05 ; C2 - C7 44 | 3 4 1 1.3870e-01 4.0033e+05 ; C3 - C4 45 | 3 11 1 1.0870e-01 2.8811e+05 ; C3 - H4 46 | 4 5 1 1.3870e-01 4.0033e+05 ; C4 - C5 47 | 4 12 1 1.0870e-01 2.8811e+05 ; C4 - H5 48 | 5 6 1 1.3870e-01 4.0033e+05 ; C5 - C6 49 | 5 13 1 1.0870e-01 2.8811e+05 ; C5 - H6 50 | 6 7 1 1.3870e-01 4.0033e+05 ; C6 - C7 51 | 6 14 1 1.0870e-01 2.8811e+05 ; C6 - H7 52 | 7 15 1 1.0870e-01 2.8811e+05 ; C7 - H8 53 | 54 | [ pairs ] 55 | ; ai aj funct 56 | 1 4 1 ; C1 - C4 57 | 1 6 1 ; C1 - C6 58 | 1 11 1 ; C1 - H4 59 | 1 15 1 ; C1 - H8 60 | 2 5 1 ; C2 - C5 61 | 2 12 1 ; C2 - H5 62 | 2 14 1 ; C2 - H7 63 | 3 6 1 ; C3 - C6 64 | 3 13 1 ; C3 - H6 65 | 3 15 1 ; C3 - H8 66 | 4 7 1 ; C4 - C7 67 | 4 14 1 ; C4 - H7 68 | 5 11 1 ; C5 - H4 69 | 5 15 1 ; C5 - H8 70 | 6 12 1 ; C6 - H5 71 | 7 11 1 ; C7 - H4 72 | 7 13 1 ; C7 - H6 73 | 8 3 1 ; H1 - C3 74 | 8 7 1 ; H1 - C7 75 | 9 3 1 ; H2 - C3 76 | 9 7 1 ; H2 - C7 77 | 10 3 1 ; H3 - C3 78 | 10 7 1 ; H3 - C7 79 | 11 12 1 ; H4 - H5 80 | 12 13 1 ; H5 - H6 81 | 13 14 1 ; H6 - H7 82 | 14 15 1 ; H7 - H8 83 | 84 | [ angles ] 85 | ; ai aj ak funct theta cth 86 | 1 2 3 1 1.2063e+02 5.3421e+02 ; C1 - C2 - C3 87 | 1 2 7 1 1.2063e+02 5.3421e+02 ; C1 - C2 - C7 88 | 2 1 8 1 1.1015e+02 3.9296e+02 ; C2 - C1 - H1 89 | 2 1 9 1 1.1015e+02 3.9296e+02 ; C2 - C1 - H2 90 | 2 1 10 1 1.1015e+02 3.9296e+02 ; C2 - C1 - H3 91 | 2 3 4 1 1.1997e+02 5.6216e+02 ; C2 - C3 - C4 92 | 2 3 11 1 1.2001e+02 4.0551e+02 ; C2 - C3 - H4 93 | 2 7 6 1 1.1997e+02 5.6216e+02 ; C2 - C7 - C6 94 | 2 7 15 1 1.2001e+02 4.0551e+02 ; C2 - C7 - H8 95 | 3 2 7 1 1.1997e+02 5.6216e+02 ; C3 - C2 - C7 96 | 3 4 5 1 1.1997e+02 5.6216e+02 ; C3 - C4 - C5 97 | 3 4 12 1 1.2001e+02 4.0551e+02 ; C3 - C4 - H5 98 | 4 3 11 1 1.2001e+02 4.0551e+02 ; C4 - C3 - H4 99 | 4 5 6 1 1.1997e+02 5.6216e+02 ; C4 - C5 - C6 100 | 4 5 13 1 1.2001e+02 4.0551e+02 ; C4 - C5 - H6 101 | 5 4 12 1 1.2001e+02 4.0551e+02 ; C5 - C4 - H5 102 | 5 6 7 1 1.1997e+02 5.6216e+02 ; C5 - C6 - C7 103 | 5 6 14 1 1.2001e+02 4.0551e+02 ; C5 - C6 - H7 104 | 6 5 13 1 1.2001e+02 4.0551e+02 ; C6 - C5 - H6 105 | 6 7 15 1 1.2001e+02 4.0551e+02 ; C6 - C7 - H8 106 | 7 6 14 1 1.2001e+02 4.0551e+02 ; C7 - C6 - H7 107 | 8 1 9 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H2 108 | 8 1 10 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H3 109 | 9 1 10 1 1.0835e+02 3.2995e+02 ; H2 - C1 - H3 110 | 111 | [ dihedrals ] ; propers 112 | ; for gromacs 4.5 or higher, using funct 9 113 | ; i j k l func phase kd pn 114 | 1 2 3 4 9 180.00 15.16700 2 ; C1- C2- C3- C4 115 | 1 2 3 11 9 180.00 15.16700 2 ; C1- C2- C3- H4 116 | 1 2 7 6 9 180.00 15.16700 2 ; C1- C2- C7- C6 117 | 1 2 7 15 9 180.00 15.16700 2 ; C1- C2- C7- H8 118 | 2 3 4 5 9 180.00 15.16700 2 ; C2- C3- C4- C5 119 | 2 3 4 12 9 180.00 15.16700 2 ; C2- C3- C4- H5 120 | 2 7 6 5 9 180.00 15.16700 2 ; C2- C7- C6- C5 121 | 2 7 6 14 9 180.00 15.16700 2 ; C2- C7- C6- H7 122 | 3 2 7 6 9 180.00 15.16700 2 ; C3- C2- C7- C6 123 | 3 2 7 15 9 180.00 15.16700 2 ; C3- C2- C7- H8 124 | 3 4 5 6 9 180.00 15.16700 2 ; C3- C4- C5- C6 125 | 3 4 5 13 9 180.00 15.16700 2 ; C3- C4- C5- H6 126 | 4 3 2 7 9 180.00 15.16700 2 ; C4- C3- C2- C7 127 | 4 5 6 7 9 180.00 15.16700 2 ; C4- C5- C6- C7 128 | 4 5 6 14 9 180.00 15.16700 2 ; C4- C5- C6- H7 129 | 5 4 3 11 9 180.00 15.16700 2 ; C5- C4- C3- H4 130 | 5 6 7 15 9 180.00 15.16700 2 ; C5- C6- C7- H8 131 | 6 5 4 12 9 180.00 15.16700 2 ; C6- C5- C4- H5 132 | 7 2 3 11 9 180.00 15.16700 2 ; C7- C2- C3- H4 133 | 7 6 5 13 9 180.00 15.16700 2 ; C7- C6- C5- H6 134 | 8 1 2 3 9 0.00 0.00000 0 ; H1- C1- C2- C3 135 | 8 1 2 7 9 0.00 0.00000 0 ; H1- C1- C2- C7 136 | 9 1 2 3 9 0.00 0.00000 0 ; H2- C1- C2- C3 137 | 9 1 2 7 9 0.00 0.00000 0 ; H2- C1- C2- C7 138 | 10 1 2 3 9 0.00 0.00000 0 ; H3- C1- C2- C3 139 | 10 1 2 7 9 0.00 0.00000 0 ; H3- C1- C2- C7 140 | 11 3 4 12 9 180.00 15.16700 2 ; H4- C3- C4- H5 141 | 12 4 5 13 9 180.00 15.16700 2 ; H5- C4- C5- H6 142 | 13 5 6 14 9 180.00 15.16700 2 ; H6- C5- C6- H7 143 | 14 6 7 15 9 180.00 15.16700 2 ; H7- C6- C7- H8 144 | 145 | [ dihedrals ] ; impropers 146 | ; treated as propers in GROMACS to use correct AMBER analytical function 147 | ; i j k l func phase kd pn 148 | 1 2 7 3 4 180.00 4.60240 2 ; C1- C2- C7- C3 149 | 2 4 3 11 4 180.00 4.60240 2 ; C2- C4- C3- H4 150 | 2 6 7 15 4 180.00 4.60240 2 ; C2- C6- C7- H8 151 | 3 5 4 12 4 180.00 4.60240 2 ; C3- C5- C4- H5 152 | 4 6 5 13 4 180.00 4.60240 2 ; C4- C6- C5- H6 153 | 5 7 6 14 4 180.00 4.60240 2 ; C5- C7- C6- H7 154 | 155 | [ system ] 156 | toluene 157 | 158 | [ molecules ] 159 | ; Compound nmols 160 | toluene 1 161 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/gromacs/toluene_benzene_cyclohexane_ethane_3_1_80_7.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 yes 0.5 0.8333 4 | 5 | [ atomtypes ] 6 | ;name bond_type mass charge ptype sigma epsilon Amb 7 | c3 c3 0.00000 0.00000 A 3.39967e-01 4.57730e-01 ; 1.91 0.1094 8 | ca ca 0.00000 0.00000 A 3.39967e-01 3.59824e-01 ; 1.91 0.0860 9 | hc hc 0.00000 0.00000 A 2.64953e-01 6.56888e-02 ; 1.49 0.0157 10 | ha ha 0.00000 0.00000 A 2.59964e-01 6.27600e-02 ; 1.46 0.0150 11 | 12 | [ moleculetype ] 13 | toluene 3 14 | [ atoms ] 15 | 1 c3 1 MOL C1 1 -0.054000 12.01000 ; qtot -0.054 16 | 2 ca 1 MOL C2 2 -0.077000 12.01000 ; qtot -0.131 17 | 3 ca 1 MOL C3 3 -0.130500 12.01000 ; qtot -0.262 18 | 4 ca 1 MOL C4 4 -0.126800 12.01000 ; qtot -0.388 19 | 5 ca 1 MOL C5 5 -0.135000 12.01000 ; qtot -0.523 20 | 6 ca 1 MOL C6 6 -0.126800 12.01000 ; qtot -0.650 21 | 7 ca 1 MOL C7 7 -0.130500 12.01000 ; qtot -0.781 22 | 8 hc 1 MOL H1 8 0.043600 1.00800 ; qtot -0.737 23 | 9 hc 1 MOL H2 9 0.043600 1.00800 ; qtot -0.693 24 | 10 hc 1 MOL H3 10 0.043600 1.00800 ; qtot -0.650 25 | 11 ha 1 MOL H4 11 0.130200 1.00800 ; qtot -0.520 26 | 12 ha 1 MOL H5 12 0.129800 1.00800 ; qtot -0.390 27 | 13 ha 1 MOL H6 13 0.129800 1.00800 ; qtot -0.260 28 | 14 ha 1 MOL H7 14 0.129800 1.00800 ; qtot -0.130 29 | 15 ha 1 MOL H8 15 0.130200 1.00800 ; qtot -0.000 30 | [ bonds ] 31 | 1 2 1 1.5130e-01 2.7070e+05 ; C1 - C2 32 | 1 8 1 1.0920e-01 2.8225e+05 ; C1 - H1 33 | 1 9 1 1.0920e-01 2.8225e+05 ; C1 - H2 34 | 1 10 1 1.0920e-01 2.8225e+05 ; C1 - H3 35 | 2 3 1 1.3870e-01 4.0033e+05 ; C2 - C3 36 | 2 7 1 1.3870e-01 4.0033e+05 ; C2 - C7 37 | 3 4 1 1.3870e-01 4.0033e+05 ; C3 - C4 38 | 3 11 1 1.0870e-01 2.8811e+05 ; C3 - H4 39 | 4 5 1 1.3870e-01 4.0033e+05 ; C4 - C5 40 | 4 12 1 1.0870e-01 2.8811e+05 ; C4 - H5 41 | 5 6 1 1.3870e-01 4.0033e+05 ; C5 - C6 42 | 5 13 1 1.0870e-01 2.8811e+05 ; C5 - H6 43 | 6 7 1 1.3870e-01 4.0033e+05 ; C6 - C7 44 | 6 14 1 1.0870e-01 2.8811e+05 ; C6 - H7 45 | 7 15 1 1.0870e-01 2.8811e+05 ; C7 - H8 46 | [ pairs ] 47 | 1 4 1 ; C1 - C4 48 | 1 6 1 ; C1 - C6 49 | 1 11 1 ; C1 - H4 50 | 1 15 1 ; C1 - H8 51 | 2 5 1 ; C2 - C5 52 | 2 12 1 ; C2 - H5 53 | 2 14 1 ; C2 - H7 54 | 3 6 1 ; C3 - C6 55 | 3 13 1 ; C3 - H6 56 | 3 15 1 ; C3 - H8 57 | 4 7 1 ; C4 - C7 58 | 4 14 1 ; C4 - H7 59 | 5 11 1 ; C5 - H4 60 | 5 15 1 ; C5 - H8 61 | 6 12 1 ; C6 - H5 62 | 7 11 1 ; C7 - H4 63 | 7 13 1 ; C7 - H6 64 | 8 3 1 ; H1 - C3 65 | 8 7 1 ; H1 - C7 66 | 9 3 1 ; H2 - C3 67 | 9 7 1 ; H2 - C7 68 | 10 3 1 ; H3 - C3 69 | 10 7 1 ; H3 - C7 70 | 11 12 1 ; H4 - H5 71 | 12 13 1 ; H5 - H6 72 | 13 14 1 ; H6 - H7 73 | 14 15 1 ; H7 - H8 74 | [ angles ] 75 | 1 2 3 1 1.2063e+02 5.3421e+02 ; C1 - C2 - C3 76 | 1 2 7 1 1.2063e+02 5.3421e+02 ; C1 - C2 - C7 77 | 2 1 8 1 1.1015e+02 3.9296e+02 ; C2 - C1 - H1 78 | 2 1 9 1 1.1015e+02 3.9296e+02 ; C2 - C1 - H2 79 | 2 1 10 1 1.1015e+02 3.9296e+02 ; C2 - C1 - H3 80 | 2 3 4 1 1.1997e+02 5.6216e+02 ; C2 - C3 - C4 81 | 2 3 11 1 1.2001e+02 4.0551e+02 ; C2 - C3 - H4 82 | 2 7 6 1 1.1997e+02 5.6216e+02 ; C2 - C7 - C6 83 | 2 7 15 1 1.2001e+02 4.0551e+02 ; C2 - C7 - H8 84 | 3 2 7 1 1.1997e+02 5.6216e+02 ; C3 - C2 - C7 85 | 3 4 5 1 1.1997e+02 5.6216e+02 ; C3 - C4 - C5 86 | 3 4 12 1 1.2001e+02 4.0551e+02 ; C3 - C4 - H5 87 | 4 3 11 1 1.2001e+02 4.0551e+02 ; C4 - C3 - H4 88 | 4 5 6 1 1.1997e+02 5.6216e+02 ; C4 - C5 - C6 89 | 4 5 13 1 1.2001e+02 4.0551e+02 ; C4 - C5 - H6 90 | 5 4 12 1 1.2001e+02 4.0551e+02 ; C5 - C4 - H5 91 | 5 6 7 1 1.1997e+02 5.6216e+02 ; C5 - C6 - C7 92 | 5 6 14 1 1.2001e+02 4.0551e+02 ; C5 - C6 - H7 93 | 6 5 13 1 1.2001e+02 4.0551e+02 ; C6 - C5 - H6 94 | 6 7 15 1 1.2001e+02 4.0551e+02 ; C6 - C7 - H8 95 | 7 6 14 1 1.2001e+02 4.0551e+02 ; C7 - C6 - H7 96 | 8 1 9 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H2 97 | 8 1 10 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H3 98 | 9 1 10 1 1.0835e+02 3.2995e+02 ; H2 - C1 - H3 99 | [ dihedrals ] 100 | ; i j k l func phase kd pn 101 | 1 2 3 4 9 180.00 15.16700 2 ; C1- C2- C3- C4 102 | 1 2 3 11 9 180.00 15.16700 2 ; C1- C2- C3- H4 103 | 1 2 7 6 9 180.00 15.16700 2 ; C1- C2- C7- C6 104 | 1 2 7 15 9 180.00 15.16700 2 ; C1- C2- C7- H8 105 | 2 3 4 5 9 180.00 15.16700 2 ; C2- C3- C4- C5 106 | 2 3 4 12 9 180.00 15.16700 2 ; C2- C3- C4- H5 107 | 2 7 6 5 9 180.00 15.16700 2 ; C2- C7- C6- C5 108 | 2 7 6 14 9 180.00 15.16700 2 ; C2- C7- C6- H7 109 | 3 2 7 6 9 180.00 15.16700 2 ; C3- C2- C7- C6 110 | 3 2 7 15 9 180.00 15.16700 2 ; C3- C2- C7- H8 111 | 3 4 5 6 9 180.00 15.16700 2 ; C3- C4- C5- C6 112 | 3 4 5 13 9 180.00 15.16700 2 ; C3- C4- C5- H6 113 | 4 3 2 7 9 180.00 15.16700 2 ; C4- C3- C2- C7 114 | 4 5 6 7 9 180.00 15.16700 2 ; C4- C5- C6- C7 115 | 4 5 6 14 9 180.00 15.16700 2 ; C4- C5- C6- H7 116 | 5 4 3 11 9 180.00 15.16700 2 ; C5- C4- C3- H4 117 | 5 6 7 15 9 180.00 15.16700 2 ; C5- C6- C7- H8 118 | 6 5 4 12 9 180.00 15.16700 2 ; C6- C5- C4- H5 119 | 7 2 3 11 9 180.00 15.16700 2 ; C7- C2- C3- H4 120 | 7 6 5 13 9 180.00 15.16700 2 ; C7- C6- C5- H6 121 | 8 1 2 3 9 0.00 0.00000 0 ; H1- C1- C2- C3 122 | 8 1 2 7 9 0.00 0.00000 0 ; H1- C1- C2- C7 123 | 9 1 2 3 9 0.00 0.00000 0 ; H2- C1- C2- C3 124 | 9 1 2 7 9 0.00 0.00000 0 ; H2- C1- C2- C7 125 | 10 1 2 3 9 0.00 0.00000 0 ; H3- C1- C2- C3 126 | 10 1 2 7 9 0.00 0.00000 0 ; H3- C1- C2- C7 127 | 11 3 4 12 9 180.00 15.16700 2 ; H4- C3- C4- H5 128 | 12 4 5 13 9 180.00 15.16700 2 ; H5- C4- C5- H6 129 | 13 5 6 14 9 180.00 15.16700 2 ; H6- C5- C6- H7 130 | 14 6 7 15 9 180.00 15.16700 2 ; H7- C6- C7- H8 131 | [ moleculetype ] 132 | solute 3 133 | [ atoms ] 134 | 1 ca 1 MOL C1 1 -0.130100 12.01000 ; qtot -0.130 135 | 2 ca 1 MOL C2 2 -0.130100 12.01000 ; qtot -0.260 136 | 3 ca 1 MOL C3 3 -0.130100 12.01000 ; qtot -0.390 137 | 4 ca 1 MOL C4 4 -0.130100 12.01000 ; qtot -0.520 138 | 5 ca 1 MOL C5 5 -0.130100 12.01000 ; qtot -0.651 139 | 6 ca 1 MOL C6 6 -0.130100 12.01000 ; qtot -0.781 140 | 7 ha 1 MOL H1 7 0.130100 1.00800 ; qtot -0.651 141 | 8 ha 1 MOL H2 8 0.130100 1.00800 ; qtot -0.520 142 | 9 ha 1 MOL H3 9 0.130100 1.00800 ; qtot -0.390 143 | 10 ha 1 MOL H4 10 0.130100 1.00800 ; qtot -0.260 144 | 11 ha 1 MOL H5 11 0.130100 1.00800 ; qtot -0.130 145 | 12 ha 1 MOL H6 12 0.130100 1.00800 ; qtot 0.000 146 | [ bonds ] 147 | 1 2 1 1.3870e-01 4.0033e+05 ; C1 - C2 148 | 1 6 1 1.3870e-01 4.0033e+05 ; C1 - C6 149 | 1 7 1 1.0870e-01 2.8811e+05 ; C1 - H1 150 | 2 3 1 1.3870e-01 4.0033e+05 ; C2 - C3 151 | 2 8 1 1.0870e-01 2.8811e+05 ; C2 - H2 152 | 3 4 1 1.3870e-01 4.0033e+05 ; C3 - C4 153 | 3 9 1 1.0870e-01 2.8811e+05 ; C3 - H3 154 | 4 5 1 1.3870e-01 4.0033e+05 ; C4 - C5 155 | 4 10 1 1.0870e-01 2.8811e+05 ; C4 - H4 156 | 5 6 1 1.3870e-01 4.0033e+05 ; C5 - C6 157 | 5 11 1 1.0870e-01 2.8811e+05 ; C5 - H5 158 | 6 12 1 1.0870e-01 2.8811e+05 ; C6 - H6 159 | [ pairs ] 160 | 1 4 1 ; C1 - C4 161 | 1 9 1 ; C1 - H3 162 | 1 11 1 ; C1 - H5 163 | 2 5 1 ; C2 - C5 164 | 2 10 1 ; C2 - H4 165 | 2 12 1 ; C2 - H6 166 | 3 11 1 ; C3 - H5 167 | 4 8 1 ; C4 - H2 168 | 4 12 1 ; C4 - H6 169 | 5 9 1 ; C5 - H3 170 | 6 3 1 ; C6 - C3 171 | 6 8 1 ; C6 - H2 172 | 6 10 1 ; C6 - H4 173 | 7 3 1 ; H1 - C3 174 | 7 5 1 ; H1 - C5 175 | 7 8 1 ; H1 - H2 176 | 7 12 1 ; H1 - H6 177 | 8 9 1 ; H2 - H3 178 | 9 10 1 ; H3 - H4 179 | 10 11 1 ; H4 - H5 180 | 11 12 1 ; H5 - H6 181 | [ angles ] 182 | 1 2 3 1 1.1997e+02 5.6216e+02 ; C1 - C2 - C3 183 | 1 2 8 1 1.2001e+02 4.0551e+02 ; C1 - C2 - H2 184 | 1 6 5 1 1.1997e+02 5.6216e+02 ; C1 - C6 - C5 185 | 1 6 12 1 1.2001e+02 4.0551e+02 ; C1 - C6 - H6 186 | 2 1 6 1 1.1997e+02 5.6216e+02 ; C2 - C1 - C6 187 | 2 1 7 1 1.2001e+02 4.0551e+02 ; C2 - C1 - H1 188 | 2 3 4 1 1.1997e+02 5.6216e+02 ; C2 - C3 - C4 189 | 2 3 9 1 1.2001e+02 4.0551e+02 ; C2 - C3 - H3 190 | 3 2 8 1 1.2001e+02 4.0551e+02 ; C3 - C2 - H2 191 | 3 4 5 1 1.1997e+02 5.6216e+02 ; C3 - C4 - C5 192 | 3 4 10 1 1.2001e+02 4.0551e+02 ; C3 - C4 - H4 193 | 4 3 9 1 1.2001e+02 4.0551e+02 ; C4 - C3 - H3 194 | 4 5 6 1 1.1997e+02 5.6216e+02 ; C4 - C5 - C6 195 | 4 5 11 1 1.2001e+02 4.0551e+02 ; C4 - C5 - H5 196 | 5 4 10 1 1.2001e+02 4.0551e+02 ; C5 - C4 - H4 197 | 5 6 12 1 1.2001e+02 4.0551e+02 ; C5 - C6 - H6 198 | 6 1 7 1 1.2001e+02 4.0551e+02 ; C6 - C1 - H1 199 | 6 5 11 1 1.2001e+02 4.0551e+02 ; C6 - C5 - H5 200 | [ dihedrals ] 201 | ; i j k l func phase kd pn 202 | 1 2 3 4 9 180.00 15.16700 2 ; C1- C2- C3- C4 203 | 1 2 3 9 9 180.00 15.16700 2 ; C1- C2- C3- H3 204 | 1 6 5 4 9 180.00 15.16700 2 ; C1- C6- C5- C4 205 | 1 6 5 11 9 180.00 15.16700 2 ; C1- C6- C5- H5 206 | 2 1 6 5 9 180.00 15.16700 2 ; C2- C1- C6- C5 207 | 2 1 6 12 9 180.00 15.16700 2 ; C2- C1- C6- H6 208 | 2 3 4 5 9 180.00 15.16700 2 ; C2- C3- C4- C5 209 | 2 3 4 10 9 180.00 15.16700 2 ; C2- C3- C4- H4 210 | 3 4 5 6 9 180.00 15.16700 2 ; C3- C4- C5- C6 211 | 3 4 5 11 9 180.00 15.16700 2 ; C3- C4- C5- H5 212 | 4 3 2 8 9 180.00 15.16700 2 ; C4- C3- C2- H2 213 | 4 5 6 12 9 180.00 15.16700 2 ; C4- C5- C6- H6 214 | 5 4 3 9 9 180.00 15.16700 2 ; C5- C4- C3- H3 215 | 6 1 2 3 9 180.00 15.16700 2 ; C6- C1- C2- C3 216 | 6 1 2 8 9 180.00 15.16700 2 ; C6- C1- C2- H2 217 | 6 5 4 10 9 180.00 15.16700 2 ; C6- C5- C4- H4 218 | 7 1 2 3 9 180.00 15.16700 2 ; H1- C1- C2- C3 219 | 7 1 2 8 9 180.00 15.16700 2 ; H1- C1- C2- H2 220 | 7 1 6 5 9 180.00 15.16700 2 ; H1- C1- C6- C5 221 | 7 1 6 12 9 180.00 15.16700 2 ; H1- C1- C6- H6 222 | 8 2 3 9 9 180.00 15.16700 2 ; H2- C2- C3- H3 223 | 9 3 4 10 9 180.00 15.16700 2 ; H3- C3- C4- H4 224 | 10 4 5 11 9 180.00 15.16700 2 ; H4- C4- C5- H5 225 | 11 5 6 12 9 180.00 15.16700 2 ; H5- C5- C6- H6 226 | [ moleculetype ] 227 | cyclohexane 3 228 | [ atoms ] 229 | 1 c3 1 MOL C1 1 -0.076100 12.01000 ; qtot -0.076 230 | 2 c3 1 MOL C2 2 -0.075500 12.01000 ; qtot -0.152 231 | 3 c3 1 MOL C3 3 -0.075500 12.01000 ; qtot -0.227 232 | 4 c3 1 MOL C4 4 -0.075500 12.01000 ; qtot -0.303 233 | 5 c3 1 MOL C5 5 -0.075500 12.01000 ; qtot -0.378 234 | 6 c3 1 MOL C6 6 -0.075500 12.01000 ; qtot -0.454 235 | 7 hc 1 MOL H1 7 0.037800 1.00800 ; qtot -0.416 236 | 8 hc 1 MOL H2 8 0.037800 1.00800 ; qtot -0.378 237 | 9 hc 1 MOL H3 9 0.037800 1.00800 ; qtot -0.340 238 | 10 hc 1 MOL H4 10 0.037800 1.00800 ; qtot -0.302 239 | 11 hc 1 MOL H5 11 0.037800 1.00800 ; qtot -0.265 240 | 12 hc 1 MOL H6 12 0.037800 1.00800 ; qtot -0.227 241 | 13 hc 1 MOL H7 13 0.037800 1.00800 ; qtot -0.189 242 | 14 hc 1 MOL H8 14 0.037800 1.00800 ; qtot -0.151 243 | 15 hc 1 MOL H9 15 0.037800 1.00800 ; qtot -0.113 244 | 16 hc 1 MOL H10 16 0.037800 1.00800 ; qtot -0.076 245 | 17 hc 1 MOL H11 17 0.037800 1.00800 ; qtot -0.038 246 | 18 hc 1 MOL H12 18 0.037800 1.00800 ; qtot -0.000 247 | [ bonds ] 248 | 1 2 1 1.5350e-01 2.5363e+05 ; C1 - C2 249 | 1 6 1 1.5350e-01 2.5363e+05 ; C1 - C6 250 | 1 7 1 1.0920e-01 2.8225e+05 ; C1 - H1 251 | 1 8 1 1.0920e-01 2.8225e+05 ; C1 - H2 252 | 2 3 1 1.5350e-01 2.5363e+05 ; C2 - C3 253 | 2 9 1 1.0920e-01 2.8225e+05 ; C2 - H3 254 | 2 10 1 1.0920e-01 2.8225e+05 ; C2 - H4 255 | 3 4 1 1.5350e-01 2.5363e+05 ; C3 - C4 256 | 3 11 1 1.0920e-01 2.8225e+05 ; C3 - H5 257 | 3 12 1 1.0920e-01 2.8225e+05 ; C3 - H6 258 | 4 5 1 1.5350e-01 2.5363e+05 ; C4 - C5 259 | 4 13 1 1.0920e-01 2.8225e+05 ; C4 - H7 260 | 4 14 1 1.0920e-01 2.8225e+05 ; C4 - H8 261 | 5 6 1 1.5350e-01 2.5363e+05 ; C5 - C6 262 | 5 15 1 1.0920e-01 2.8225e+05 ; C5 - H9 263 | 5 16 1 1.0920e-01 2.8225e+05 ; C5 - H10 264 | 6 17 1 1.0920e-01 2.8225e+05 ; C6 - H11 265 | 6 18 1 1.0920e-01 2.8225e+05 ; C6 - H12 266 | [ pairs ] 267 | 1 4 1 ; C1 - C4 268 | 1 11 1 ; C1 - H5 269 | 1 12 1 ; C1 - H6 270 | 1 15 1 ; C1 - H9 271 | 1 16 1 ; C1 - H10 272 | 2 5 1 ; C2 - C5 273 | 2 13 1 ; C2 - H7 274 | 2 14 1 ; C2 - H8 275 | 2 17 1 ; C2 - H11 276 | 2 18 1 ; C2 - H12 277 | 3 15 1 ; C3 - H9 278 | 3 16 1 ; C3 - H10 279 | 4 9 1 ; C4 - H3 280 | 4 10 1 ; C4 - H4 281 | 4 17 1 ; C4 - H11 282 | 4 18 1 ; C4 - H12 283 | 5 11 1 ; C5 - H5 284 | 5 12 1 ; C5 - H6 285 | 6 3 1 ; C6 - C3 286 | 6 9 1 ; C6 - H3 287 | 6 10 1 ; C6 - H4 288 | 6 13 1 ; C6 - H7 289 | 6 14 1 ; C6 - H8 290 | 7 3 1 ; H1 - C3 291 | 7 5 1 ; H1 - C5 292 | 7 9 1 ; H1 - H3 293 | 7 10 1 ; H1 - H4 294 | 7 17 1 ; H1 - H11 295 | 7 18 1 ; H1 - H12 296 | 8 3 1 ; H2 - C3 297 | 8 5 1 ; H2 - C5 298 | 8 9 1 ; H2 - H3 299 | 8 10 1 ; H2 - H4 300 | 8 17 1 ; H2 - H11 301 | 8 18 1 ; H2 - H12 302 | 9 11 1 ; H3 - H5 303 | 9 12 1 ; H3 - H6 304 | 10 11 1 ; H4 - H5 305 | 10 12 1 ; H4 - H6 306 | 11 13 1 ; H5 - H7 307 | 11 14 1 ; H5 - H8 308 | 12 13 1 ; H6 - H7 309 | 12 14 1 ; H6 - H8 310 | 13 15 1 ; H7 - H9 311 | 13 16 1 ; H7 - H10 312 | 14 15 1 ; H8 - H9 313 | 14 16 1 ; H8 - H10 314 | 15 17 1 ; H9 - H11 315 | 15 18 1 ; H9 - H12 316 | 16 17 1 ; H10 - H11 317 | 16 18 1 ; H10 - H12 318 | [ angles ] 319 | 1 2 3 1 1.1063e+02 5.2894e+02 ; C1 - C2 - C3 320 | 1 2 9 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H3 321 | 1 2 10 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H4 322 | 1 6 5 1 1.1063e+02 5.2894e+02 ; C1 - C6 - C5 323 | 1 6 17 1 1.1005e+02 3.8802e+02 ; C1 - C6 - H11 324 | 1 6 18 1 1.1005e+02 3.8802e+02 ; C1 - C6 - H12 325 | 2 1 6 1 1.1063e+02 5.2894e+02 ; C2 - C1 - C6 326 | 2 1 7 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H1 327 | 2 1 8 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H2 328 | 2 3 4 1 1.1063e+02 5.2894e+02 ; C2 - C3 - C4 329 | 2 3 11 1 1.1005e+02 3.8802e+02 ; C2 - C3 - H5 330 | 2 3 12 1 1.1005e+02 3.8802e+02 ; C2 - C3 - H6 331 | 3 2 9 1 1.1005e+02 3.8802e+02 ; C3 - C2 - H3 332 | 3 2 10 1 1.1005e+02 3.8802e+02 ; C3 - C2 - H4 333 | 3 4 5 1 1.1063e+02 5.2894e+02 ; C3 - C4 - C5 334 | 3 4 13 1 1.1005e+02 3.8802e+02 ; C3 - C4 - H7 335 | 3 4 14 1 1.1005e+02 3.8802e+02 ; C3 - C4 - H8 336 | 4 3 11 1 1.1005e+02 3.8802e+02 ; C4 - C3 - H5 337 | 4 3 12 1 1.1005e+02 3.8802e+02 ; C4 - C3 - H6 338 | 4 5 6 1 1.1063e+02 5.2894e+02 ; C4 - C5 - C6 339 | 4 5 15 1 1.1005e+02 3.8802e+02 ; C4 - C5 - H9 340 | 4 5 16 1 1.1005e+02 3.8802e+02 ; C4 - C5 - H10 341 | 5 4 13 1 1.1005e+02 3.8802e+02 ; C5 - C4 - H7 342 | 5 4 14 1 1.1005e+02 3.8802e+02 ; C5 - C4 - H8 343 | 5 6 17 1 1.1005e+02 3.8802e+02 ; C5 - C6 - H11 344 | 5 6 18 1 1.1005e+02 3.8802e+02 ; C5 - C6 - H12 345 | 6 1 7 1 1.1005e+02 3.8802e+02 ; C6 - C1 - H1 346 | 6 1 8 1 1.1005e+02 3.8802e+02 ; C6 - C1 - H2 347 | 6 5 15 1 1.1005e+02 3.8802e+02 ; C6 - C5 - H9 348 | 6 5 16 1 1.1005e+02 3.8802e+02 ; C6 - C5 - H10 349 | 7 1 8 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H2 350 | 9 2 10 1 1.0835e+02 3.2995e+02 ; H3 - C2 - H4 351 | 11 3 12 1 1.0835e+02 3.2995e+02 ; H5 - C3 - H6 352 | 13 4 14 1 1.0835e+02 3.2995e+02 ; H7 - C4 - H8 353 | 15 5 16 1 1.0835e+02 3.2995e+02 ; H9 - C5 - H10 354 | 17 6 18 1 1.0835e+02 3.2995e+02 ; H11 - C6 - H12 355 | [ dihedrals ] 356 | ; i j k l func phase kd pn 357 | 1 2 3 4 9 0.00 0.75312 3 ; C1- C2- C3- C4 358 | 1 2 3 4 9 180.00 0.83680 1 ; C1- C2- C3- C4 359 | 1 2 3 4 9 180.00 1.04600 2 ; C1- C2- C3- C4 360 | 1 2 3 11 9 0.00 0.66944 3 ; C1- C2- C3- H5 361 | 1 2 3 12 9 0.00 0.66944 3 ; C1- C2- C3- H6 362 | 1 6 5 4 9 0.00 0.75312 3 ; C1- C6- C5- C4 363 | 1 6 5 4 9 180.00 0.83680 1 ; C1- C6- C5- C4 364 | 1 6 5 4 9 180.00 1.04600 2 ; C1- C6- C5- C4 365 | 1 6 5 15 9 0.00 0.66944 3 ; C1- C6- C5- H9 366 | 1 6 5 16 9 0.00 0.66944 3 ; C1- C6- C5- H10 367 | 2 1 6 5 9 0.00 0.75312 3 ; C2- C1- C6- C5 368 | 2 1 6 5 9 180.00 0.83680 1 ; C2- C1- C6- C5 369 | 2 1 6 5 9 180.00 1.04600 2 ; C2- C1- C6- C5 370 | 2 1 6 17 9 0.00 0.66944 3 ; C2- C1- C6- H11 371 | 2 1 6 18 9 0.00 0.66944 3 ; C2- C1- C6- H12 372 | 2 3 4 5 9 0.00 0.75312 3 ; C2- C3- C4- C5 373 | 2 3 4 5 9 180.00 0.83680 1 ; C2- C3- C4- C5 374 | 2 3 4 5 9 180.00 1.04600 2 ; C2- C3- C4- C5 375 | 2 3 4 13 9 0.00 0.66944 3 ; C2- C3- C4- H7 376 | 2 3 4 14 9 0.00 0.66944 3 ; C2- C3- C4- H8 377 | 3 4 5 6 9 0.00 0.75312 3 ; C3- C4- C5- C6 378 | 3 4 5 6 9 180.00 0.83680 1 ; C3- C4- C5- C6 379 | 3 4 5 6 9 180.00 1.04600 2 ; C3- C4- C5- C6 380 | 3 4 5 15 9 0.00 0.66944 3 ; C3- C4- C5- H9 381 | 3 4 5 16 9 0.00 0.66944 3 ; C3- C4- C5- H10 382 | 4 3 2 9 9 0.00 0.66944 3 ; C4- C3- C2- H3 383 | 4 3 2 10 9 0.00 0.66944 3 ; C4- C3- C2- H4 384 | 4 5 6 17 9 0.00 0.66944 3 ; C4- C5- C6- H11 385 | 4 5 6 18 9 0.00 0.66944 3 ; C4- C5- C6- H12 386 | 5 4 3 11 9 0.00 0.66944 3 ; C5- C4- C3- H5 387 | 5 4 3 12 9 0.00 0.66944 3 ; C5- C4- C3- H6 388 | 6 1 2 3 9 0.00 0.75312 3 ; C6- C1- C2- C3 389 | 6 1 2 3 9 180.00 0.83680 1 ; C6- C1- C2- C3 390 | 6 1 2 3 9 180.00 1.04600 2 ; C6- C1- C2- C3 391 | 6 1 2 9 9 0.00 0.66944 3 ; C6- C1- C2- H3 392 | 6 1 2 10 9 0.00 0.66944 3 ; C6- C1- C2- H4 393 | 6 5 4 13 9 0.00 0.66944 3 ; C6- C5- C4- H7 394 | 6 5 4 14 9 0.00 0.66944 3 ; C6- C5- C4- H8 395 | 7 1 2 3 9 0.00 0.66944 3 ; H1- C1- C2- C3 396 | 7 1 2 9 9 0.00 0.62760 3 ; H1- C1- C2- H3 397 | 7 1 2 10 9 0.00 0.62760 3 ; H1- C1- C2- H4 398 | 7 1 6 5 9 0.00 0.66944 3 ; H1- C1- C6- C5 399 | 7 1 6 17 9 0.00 0.62760 3 ; H1- C1- C6- H11 400 | 7 1 6 18 9 0.00 0.62760 3 ; H1- C1- C6- H12 401 | 8 1 2 3 9 0.00 0.66944 3 ; H2- C1- C2- C3 402 | 8 1 2 9 9 0.00 0.62760 3 ; H2- C1- C2- H3 403 | 8 1 2 10 9 0.00 0.62760 3 ; H2- C1- C2- H4 404 | 8 1 6 5 9 0.00 0.66944 3 ; H2- C1- C6- C5 405 | 8 1 6 17 9 0.00 0.62760 3 ; H2- C1- C6- H11 406 | 8 1 6 18 9 0.00 0.62760 3 ; H2- C1- C6- H12 407 | 9 2 3 11 9 0.00 0.62760 3 ; H3- C2- C3- H5 408 | 9 2 3 12 9 0.00 0.62760 3 ; H3- C2- C3- H6 409 | 10 2 3 11 9 0.00 0.62760 3 ; H4- C2- C3- H5 410 | 10 2 3 12 9 0.00 0.62760 3 ; H4- C2- C3- H6 411 | 11 3 4 13 9 0.00 0.62760 3 ; H5- C3- C4- H7 412 | 11 3 4 14 9 0.00 0.62760 3 ; H5- C3- C4- H8 413 | 12 3 4 13 9 0.00 0.62760 3 ; H6- C3- C4- H7 414 | 12 3 4 14 9 0.00 0.62760 3 ; H6- C3- C4- H8 415 | 13 4 5 15 9 0.00 0.62760 3 ; H7- C4- C5- H9 416 | 13 4 5 16 9 0.00 0.62760 3 ; H7- C4- C5- H10 417 | 14 4 5 15 9 0.00 0.62760 3 ; H8- C4- C5- H9 418 | 14 4 5 16 9 0.00 0.62760 3 ; H8- C4- C5- H10 419 | 15 5 6 17 9 0.00 0.62760 3 ; H9- C5- C6- H11 420 | 15 5 6 18 9 0.00 0.62760 3 ; H9- C5- C6- H12 421 | 16 5 6 17 9 0.00 0.62760 3 ; H10- C5- C6- H11 422 | 16 5 6 18 9 0.00 0.62760 3 ; H10- C5- C6- H12 423 | [ moleculetype ] 424 | ethane 3 425 | [ atoms ] 426 | 1 c3 1 MOL C1 1 -0.093900 12.01000 ; qtot -0.094 427 | 2 c3 1 MOL C2 2 -0.093900 12.01000 ; qtot -0.188 428 | 3 hc 1 MOL H1 3 0.031300 1.00800 ; qtot -0.157 429 | 4 hc 1 MOL H2 4 0.031300 1.00800 ; qtot -0.125 430 | 5 hc 1 MOL H3 5 0.031300 1.00800 ; qtot -0.094 431 | 6 hc 1 MOL H4 6 0.031300 1.00800 ; qtot -0.063 432 | 7 hc 1 MOL H5 7 0.031300 1.00800 ; qtot -0.031 433 | 8 hc 1 MOL H6 8 0.031300 1.00800 ; qtot 0.000 434 | [ bonds ] 435 | 1 2 1 1.5350e-01 2.5363e+05 ; C1 - C2 436 | 1 3 1 1.0920e-01 2.8225e+05 ; C1 - H1 437 | 1 4 1 1.0920e-01 2.8225e+05 ; C1 - H2 438 | 1 5 1 1.0920e-01 2.8225e+05 ; C1 - H3 439 | 2 6 1 1.0920e-01 2.8225e+05 ; C2 - H4 440 | 2 7 1 1.0920e-01 2.8225e+05 ; C2 - H5 441 | 2 8 1 1.0920e-01 2.8225e+05 ; C2 - H6 442 | [ pairs ] 443 | 3 6 1 ; H1 - H4 444 | 3 7 1 ; H1 - H5 445 | 3 8 1 ; H1 - H6 446 | 4 6 1 ; H2 - H4 447 | 4 7 1 ; H2 - H5 448 | 4 8 1 ; H2 - H6 449 | 5 6 1 ; H3 - H4 450 | 5 7 1 ; H3 - H5 451 | 5 8 1 ; H3 - H6 452 | [ angles ] 453 | 1 2 6 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H4 454 | 1 2 7 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H5 455 | 1 2 8 1 1.1005e+02 3.8802e+02 ; C1 - C2 - H6 456 | 2 1 3 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H1 457 | 2 1 4 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H2 458 | 2 1 5 1 1.1005e+02 3.8802e+02 ; C2 - C1 - H3 459 | 3 1 4 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H2 460 | 3 1 5 1 1.0835e+02 3.2995e+02 ; H1 - C1 - H3 461 | 4 1 5 1 1.0835e+02 3.2995e+02 ; H2 - C1 - H3 462 | 6 2 7 1 1.0835e+02 3.2995e+02 ; H4 - C2 - H5 463 | 6 2 8 1 1.0835e+02 3.2995e+02 ; H4 - C2 - H6 464 | 7 2 8 1 1.0835e+02 3.2995e+02 ; H5 - C2 - H6 465 | [ dihedrals ] 466 | ; i j k l func phase kd pn 467 | 3 1 2 6 9 0.00 0.62760 3 ; H1- C1- C2- H4 468 | 3 1 2 7 9 0.00 0.62760 3 ; H1- C1- C2- H5 469 | 3 1 2 8 9 0.00 0.62760 3 ; H1- C1- C2- H6 470 | 4 1 2 6 9 0.00 0.62760 3 ; H2- C1- C2- H4 471 | 4 1 2 7 9 0.00 0.62760 3 ; H2- C1- C2- H5 472 | 4 1 2 8 9 0.00 0.62760 3 ; H2- C1- C2- H6 473 | 5 1 2 6 9 0.00 0.62760 3 ; H3- C1- C2- H4 474 | 5 1 2 7 9 0.00 0.62760 3 ; H3- C1- C2- H5 475 | 5 1 2 8 9 0.00 0.62760 3 ; H3- C1- C2- H6 476 | [ system ] 477 | mixture 478 | 479 | [ molecules ] 480 | toluene 3 481 | solute 1 482 | cyclohexane 80 483 | ethane 7 484 | 485 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/monomers/benzene.frcmod: -------------------------------------------------------------------------------- 1 | Remark line goes here 2 | MASS 3 | 4 | BOND 5 | 6 | ANGLE 7 | 8 | DIHE 9 | 10 | IMPROPER 11 | ca-ca-ca-ha 1.1 180.0 2.0 Using general improper torsional angle X- X-ca-ha, penalty score= 6.0) 12 | 13 | NONBON 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/monomers/benzene.mol2: -------------------------------------------------------------------------------- 1 | @MOLECULE 2 | ZYG 3 | 12 12 1 0 1 4 | SMALL 5 | USER_CHARGES 6 | @ATOM 7 | 1 C1 1.8850 -1.0360 -0.1120 ca 1 ZYG -0.130200 8 | 2 C2 2.9210 -1.6310 0.6080 ca 1 ZYG -0.130100 9 | 3 C3 2.8780 -1.6520 2.0020 ca 1 ZYG -0.130100 10 | 4 C4 1.8000 -1.0790 2.6760 ca 1 ZYG -0.130100 11 | 5 C5 0.7640 -0.4840 1.9550 ca 1 ZYG -0.130100 12 | 6 C6 0.8070 -0.4630 0.5610 ca 1 ZYG -0.130100 13 | 7 H1 1.9170 -1.0200 -1.1980 ha 1 ZYG 0.130100 14 | 8 H2 3.7610 -2.0770 0.0840 ha 1 ZYG 0.130100 15 | 9 H3 3.6850 -2.1150 2.5630 ha 1 ZYG 0.130100 16 | 10 H4 1.7660 -1.0950 3.7610 ha 1 ZYG 0.130100 17 | 11 H5 -0.0760 -0.0380 2.4790 ha 1 ZYG 0.130100 18 | 12 H6 0.0000 0.0000 -0.0000 ha 1 ZYG 0.130100 19 | @BOND 20 | 1 1 6 1 21 | 2 1 2 1 22 | 3 2 3 1 23 | 4 3 4 1 24 | 5 4 5 1 25 | 6 5 6 1 26 | 7 1 7 1 27 | 8 2 8 1 28 | 9 3 9 1 29 | 10 4 10 1 30 | 11 5 11 1 31 | 12 6 12 1 32 | @SUBSTRUCTURE 33 | 1 ZYG 1 RESIDUE 0 **** ROOT 0 34 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/monomers/cyclohexane.frcmod: -------------------------------------------------------------------------------- 1 | Remark line goes here 2 | MASS 3 | 4 | BOND 5 | 6 | ANGLE 7 | 8 | DIHE 9 | 10 | IMPROPER 11 | 12 | NONBON 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/monomers/cyclohexane.mol2: -------------------------------------------------------------------------------- 1 | @MOLECULE 2 | ZBC 3 | 18 18 1 0 1 4 | SMALL 5 | USER_CHARGES 6 | @ATOM 7 | 1 C1 0.3260 0.2270 -1.4210 c3 1 ZBC -0.075600 8 | 2 C2 -1.0120 -0.3780 -1.0040 c3 1 ZBC -0.075500 9 | 3 C3 -1.4190 0.0670 0.3980 c3 1 ZBC -0.075500 10 | 4 C4 -0.3260 -0.2270 1.4210 c3 1 ZBC -0.075500 11 | 5 C5 1.0120 0.3780 1.0050 c3 1 ZBC -0.075500 12 | 6 C6 1.4190 -0.0670 -0.3980 c3 1 ZBC -0.075500 13 | 7 H1 0.2150 1.3130 -1.5340 hc 1 ZBC 0.037800 14 | 8 H2 0.6200 -0.1680 -2.4000 hc 1 ZBC 0.037800 15 | 9 H3 -1.7870 -0.0890 -1.7230 hc 1 ZBC 0.037800 16 | 10 H4 -0.9420 -1.4720 -1.0330 hc 1 ZBC 0.037800 17 | 11 H5 -1.6320 1.1440 0.3910 hc 1 ZBC 0.037800 18 | 12 H6 -2.3450 -0.4390 0.6920 hc 1 ZBC 0.037800 19 | 13 H7 -0.6210 0.1680 2.4000 hc 1 ZBC 0.037800 20 | 14 H8 -0.2150 -1.3130 1.5340 hc 1 ZBC 0.037800 21 | 15 H9 0.9420 1.4720 1.0330 hc 1 ZBC 0.037800 22 | 16 H10 1.7880 0.0880 1.7230 hc 1 ZBC 0.037800 23 | 17 H11 2.3460 0.4400 -0.6910 hc 1 ZBC 0.037800 24 | 18 H12 1.6320 -1.1430 -0.3910 hc 1 ZBC 0.037800 25 | @BOND 26 | 1 1 6 1 27 | 2 1 2 1 28 | 3 2 3 1 29 | 4 3 4 1 30 | 5 4 5 1 31 | 6 5 6 1 32 | 7 1 7 1 33 | 8 1 8 1 34 | 9 2 9 1 35 | 10 2 10 1 36 | 11 3 11 1 37 | 12 3 12 1 38 | 13 4 13 1 39 | 14 4 14 1 40 | 15 5 15 1 41 | 16 5 16 1 42 | 17 6 17 1 43 | 18 6 18 1 44 | @SUBSTRUCTURE 45 | 1 ZBC 1 RESIDUE 0 **** ROOT 0 46 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/monomers/ethane.frcmod: -------------------------------------------------------------------------------- 1 | Remark line goes here 2 | MASS 3 | 4 | BOND 5 | 6 | ANGLE 7 | 8 | DIHE 9 | 10 | IMPROPER 11 | 12 | NONBON 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/monomers/ethane.mol2: -------------------------------------------------------------------------------- 1 | @MOLECULE 2 | ZJP 3 | 8 7 1 0 1 4 | SMALL 5 | USER_CHARGES 6 | @ATOM 7 | 1 C1 0.8150 -0.5380 0.4930 c3 1 ZJP -0.093800 8 | 2 C2 2.1550 -0.0520 -0.0120 c3 1 ZJP -0.093800 9 | 3 H1 0.0000 0.0010 0.0010 hc 1 ZJP 0.031300 10 | 4 H2 0.6930 -1.6070 0.2910 hc 1 ZJP 0.031300 11 | 5 H3 0.7300 -0.3800 1.5720 hc 1 ZJP 0.031300 12 | 6 H4 2.9700 -0.5910 0.4800 hc 1 ZJP 0.031300 13 | 7 H5 2.2770 1.0170 0.1910 hc 1 ZJP 0.031300 14 | 8 H6 2.2400 -0.2100 -1.0910 hc 1 ZJP 0.031300 15 | @BOND 16 | 1 1 2 1 17 | 2 1 3 1 18 | 3 1 4 1 19 | 4 1 5 1 20 | 5 2 6 1 21 | 6 2 7 1 22 | 7 2 8 1 23 | @SUBSTRUCTURE 24 | 1 ZJP 1 RESIDUE 0 **** ROOT 0 25 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/monomers/toluene.frcmod: -------------------------------------------------------------------------------- 1 | Remark line goes here 2 | MASS 3 | 4 | BOND 5 | 6 | ANGLE 7 | 8 | DIHE 9 | 10 | IMPROPER 11 | ca-ca-ca-ha 1.1 180.0 2.0 Using general improper torsional angle X- X-ca-ha, penalty score= 6.0) 12 | 13 | NONBON 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/monomers/toluene.mol2: -------------------------------------------------------------------------------- 1 | @MOLECULE 2 | ZJY 3 | 15 15 1 0 1 4 | SMALL 5 | USER_CHARGES 6 | @ATOM 7 | 1 C1 1.9310 -1.0140 -1.6030 c3 1 ZJY -0.054000 8 | 2 C2 1.8850 -1.0360 -0.1120 ca 1 ZJY -0.077000 9 | 3 C3 2.9210 -1.6310 0.6080 ca 1 ZJY -0.130500 10 | 4 C4 2.8780 -1.6520 2.0020 ca 1 ZJY -0.126800 11 | 5 C5 1.8000 -1.0790 2.6760 ca 1 ZJY -0.135000 12 | 6 C6 0.7640 -0.4840 1.9550 ca 1 ZJY -0.126800 13 | 7 C7 0.8070 -0.4630 0.5610 ca 1 ZJY -0.130500 14 | 8 H1 2.4390 -0.1080 -1.9480 hc 1 ZJY 0.043600 15 | 9 H2 2.4640 -1.8890 -1.9910 hc 1 ZJY 0.043600 16 | 10 H3 0.9210 -1.0370 -2.0250 hc 1 ZJY 0.043600 17 | 11 H4 3.7650 -2.0800 0.0910 ha 1 ZJY 0.130200 18 | 12 H5 3.6850 -2.1150 2.5630 ha 1 ZJY 0.129800 19 | 13 H6 1.7660 -1.0950 3.7610 ha 1 ZJY 0.129800 20 | 14 H7 -0.0760 -0.0380 2.4790 ha 1 ZJY 0.129800 21 | 15 H8 -0.0050 0.0030 0.0080 ha 1 ZJY 0.130200 22 | @BOND 23 | 1 1 2 1 24 | 2 2 7 1 25 | 3 2 3 1 26 | 4 3 4 1 27 | 5 4 5 1 28 | 6 5 6 1 29 | 7 6 7 1 30 | 8 1 8 1 31 | 9 1 9 1 32 | 10 1 10 1 33 | 11 3 11 1 34 | 12 4 12 1 35 | 13 5 13 1 36 | 14 6 14 1 37 | 15 7 15 1 38 | @SUBSTRUCTURE 39 | 1 ZJY 1 RESIDUE 0 **** ROOT 0 40 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/tleap/benzene.inpcrd: -------------------------------------------------------------------------------- 1 | benzene 2 | 12 3 | 1.8850000 -1.0360000 -0.1120000 2.9210000 -1.6310000 0.6080000 4 | 2.8780000 -1.6520000 2.0020000 1.8000000 -1.0790000 2.6760000 5 | 0.7640000 -0.4840000 1.9550000 0.8070000 -0.4630000 0.5610000 6 | 1.9170000 -1.0200000 -1.1980000 3.7610000 -2.0770000 0.0840000 7 | 3.6850000 -2.1150000 2.5630000 1.7660000 -1.0950000 3.7610000 8 | -0.0760000 -0.0380000 2.4790000 0.0000000 0.0000000 -0.0000000 9 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/tleap/benzene.prmtop: -------------------------------------------------------------------------------- 1 | %VERSION VERSION_STAMP = V0001.000 DATE = 05/21/15 09:54:32 2 | %FLAG TITLE 3 | %FORMAT(20a4) 4 | benzene 5 | %FLAG POINTERS 6 | %FORMAT(10I8) 7 | 12 2 6 6 12 6 24 6 0 0 8 | 52 1 6 6 6 2 2 2 2 0 9 | 0 0 0 0 0 0 0 0 12 0 10 | 0 11 | %FLAG ATOM_NAME 12 | %FORMAT(20a4) 13 | C1 C2 C3 C4 C5 C6 H1 H2 H3 H4 H5 H6 14 | %FLAG CHARGE 15 | %FORMAT(5E16.8) 16 | -2.37254346E+00 -2.37072123E+00 -2.37072123E+00 -2.37072123E+00 -2.37072123E+00 17 | -2.37072123E+00 2.37072123E+00 2.37072123E+00 2.37072123E+00 2.37072123E+00 18 | 2.37072123E+00 2.37072123E+00 19 | %FLAG ATOMIC_NUMBER 20 | %FORMAT(10I8) 21 | 6 6 6 6 6 6 1 1 1 1 22 | 1 1 23 | %FLAG MASS 24 | %FORMAT(5E16.8) 25 | 1.20100000E+01 1.20100000E+01 1.20100000E+01 1.20100000E+01 1.20100000E+01 26 | 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.00800000E+00 27 | 1.00800000E+00 1.00800000E+00 28 | %FLAG ATOM_TYPE_INDEX 29 | %FORMAT(10I8) 30 | 1 1 1 1 1 1 2 2 2 2 31 | 2 2 32 | %FLAG NUMBER_EXCLUDED_ATOMS 33 | %FORMAT(10I8) 34 | 10 9 8 7 6 5 2 1 1 1 35 | 1 1 36 | %FLAG NONBONDED_PARM_INDEX 37 | %FORMAT(10I8) 38 | 1 2 2 3 39 | %FLAG RESIDUE_LABEL 40 | %FORMAT(20a4) 41 | MOL 42 | %FLAG RESIDUE_POINTER 43 | %FORMAT(10I8) 44 | 1 45 | %FLAG BOND_FORCE_CONSTANT 46 | %FORMAT(5E16.8) 47 | 4.78400000E+02 3.44300000E+02 48 | %FLAG BOND_EQUIL_VALUE 49 | %FORMAT(5E16.8) 50 | 1.38700000E+00 1.08700000E+00 51 | %FLAG ANGLE_FORCE_CONSTANT 52 | %FORMAT(5E16.8) 53 | 6.71800000E+01 4.84600000E+01 54 | %FLAG ANGLE_EQUIL_VALUE 55 | %FORMAT(5E16.8) 56 | 2.09387240E+00 2.09457053E+00 57 | %FLAG DIHEDRAL_FORCE_CONSTANT 58 | %FORMAT(5E16.8) 59 | 3.62500000E+00 1.10000000E+00 60 | %FLAG DIHEDRAL_PERIODICITY 61 | %FORMAT(5E16.8) 62 | 2.00000000E+00 2.00000000E+00 63 | %FLAG DIHEDRAL_PHASE 64 | %FORMAT(5E16.8) 65 | 3.14159400E+00 3.14159400E+00 66 | %FLAG SCEE_SCALE_FACTOR 67 | %FORMAT(5E16.8) 68 | 1.20000000E+00 0.00000000E+00 69 | %FLAG SCNB_SCALE_FACTOR 70 | %FORMAT(5E16.8) 71 | 2.00000000E+00 0.00000000E+00 72 | %FLAG SOLTY 73 | %FORMAT(5E16.8) 74 | 0.00000000E+00 0.00000000E+00 75 | %FLAG LENNARD_JONES_ACOEF 76 | %FORMAT(5E16.8) 77 | 8.19971662E+05 7.62451550E+04 5.71629601E+03 78 | %FLAG LENNARD_JONES_BCOEF 79 | %FORMAT(5E16.8) 80 | 5.31102864E+02 1.04660679E+02 1.85196588E+01 81 | %FLAG BONDS_INC_HYDROGEN 82 | %FORMAT(10I8) 83 | 0 18 2 3 21 2 6 24 2 9 84 | 27 2 12 30 2 15 33 2 85 | %FLAG BONDS_WITHOUT_HYDROGEN 86 | %FORMAT(10I8) 87 | 0 15 1 0 3 1 3 6 1 6 88 | 9 1 9 12 1 12 15 1 89 | %FLAG ANGLES_INC_HYDROGEN 90 | %FORMAT(10I8) 91 | 0 15 33 2 0 3 21 2 3 0 92 | 18 2 3 6 24 2 6 3 21 2 93 | 6 9 27 2 9 6 24 2 9 12 94 | 30 2 12 9 27 2 12 15 33 2 95 | 15 0 18 2 15 12 30 2 96 | %FLAG ANGLES_WITHOUT_HYDROGEN 97 | %FORMAT(10I8) 98 | 0 15 12 1 0 3 6 1 3 0 99 | 15 1 3 6 9 1 6 9 12 1 100 | 9 12 15 1 101 | %FLAG DIHEDRALS_INC_HYDROGEN 102 | %FORMAT(10I8) 103 | 0 15 12 30 1 0 3 6 24 1 104 | 3 0 15 33 1 3 6 9 27 1 105 | 18 0 3 6 1 6 9 12 30 1 106 | 9 6 3 21 1 9 12 15 33 1 107 | 12 9 6 24 1 18 0 15 12 1 108 | 15 0 3 21 1 15 12 9 27 1 109 | 18 0 15 33 1 18 0 3 21 1 110 | 21 3 6 24 1 24 6 9 27 1 111 | 27 9 12 30 1 30 12 15 33 1 112 | 18 0 -15 -3 2 0 6 -3 -21 2 113 | 3 9 -6 -24 2 6 12 -9 -27 2 114 | 9 15 -12 -30 2 0 12 -15 -33 2 115 | %FLAG DIHEDRALS_WITHOUT_HYDROGEN 116 | %FORMAT(10I8) 117 | 0 15 12 9 1 0 3 -6 9 1 118 | 3 0 15 12 1 3 6 -9 12 1 119 | 15 0 3 6 1 6 9 -12 15 1 120 | %FLAG EXCLUDED_ATOMS_LIST 121 | %FORMAT(10I8) 122 | 2 3 4 5 6 7 8 9 11 12 123 | 3 4 5 6 7 8 9 10 12 4 124 | 5 6 7 8 9 10 11 5 6 8 125 | 9 10 11 12 6 7 9 10 11 12 126 | 7 8 10 11 12 8 12 9 10 11 127 | 12 0 128 | %FLAG HBOND_ACOEF 129 | %FORMAT(5E16.8) 130 | 131 | %FLAG HBOND_BCOEF 132 | %FORMAT(5E16.8) 133 | 134 | %FLAG HBCUT 135 | %FORMAT(5E16.8) 136 | 137 | %FLAG AMBER_ATOM_TYPE 138 | %FORMAT(20a4) 139 | ca ca ca ca ca ca ha ha ha ha ha ha 140 | %FLAG TREE_CHAIN_CLASSIFICATION 141 | %FORMAT(20a4) 142 | BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA 143 | %FLAG JOIN_ARRAY 144 | %FORMAT(10I8) 145 | 0 0 0 0 0 0 0 0 0 0 146 | 0 0 147 | %FLAG IROTAT 148 | %FORMAT(10I8) 149 | 0 0 0 0 0 0 0 0 0 0 150 | 0 0 151 | %FLAG RADIUS_SET 152 | %FORMAT(1a80) 153 | modified Bondi radii (mbondi) 154 | %FLAG RADII 155 | %FORMAT(5E16.8) 156 | 1.70000000E+00 1.70000000E+00 1.70000000E+00 1.70000000E+00 1.70000000E+00 157 | 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 158 | 1.30000000E+00 1.30000000E+00 159 | %FLAG SCREEN 160 | %FORMAT(5E16.8) 161 | 7.20000000E-01 7.20000000E-01 7.20000000E-01 7.20000000E-01 7.20000000E-01 162 | 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 163 | 8.50000000E-01 8.50000000E-01 164 | %FLAG IPOL 165 | %FORMAT(1I8) 166 | 0 167 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/tleap/cyclohexane.inpcrd: -------------------------------------------------------------------------------- 1 | cyclohexane 2 | 18 3 | 0.3260000 0.2270000 -1.4210000 -1.0120000 -0.3780000 -1.0040000 4 | -1.4190000 0.0670000 0.3980000 -0.3260000 -0.2270000 1.4210000 5 | 1.0120000 0.3780000 1.0050000 1.4190000 -0.0670000 -0.3980000 6 | 0.2150000 1.3130000 -1.5340000 0.6200000 -0.1680000 -2.4000000 7 | -1.7870000 -0.0890000 -1.7230000 -0.9420000 -1.4720000 -1.0330000 8 | -1.6320000 1.1440000 0.3910000 -2.3450000 -0.4390000 0.6920000 9 | -0.6210000 0.1680000 2.4000000 -0.2150000 -1.3130000 1.5340000 10 | 0.9420000 1.4720000 1.0330000 1.7880000 0.0880000 1.7230000 11 | 2.3460000 0.4400000 -0.6910000 1.6320000 -1.1430000 -0.3910000 12 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/tleap/cyclohexane.prmtop: -------------------------------------------------------------------------------- 1 | %VERSION VERSION_STAMP = V0001.000 DATE = 05/21/15 09:54:32 2 | %FLAG TITLE 3 | %FORMAT(20a4) 4 | cyclohexane 5 | %FLAG POINTERS 6 | %FORMAT(10I8) 7 | 18 2 12 6 30 6 48 18 0 0 8 | 106 1 6 6 18 2 3 5 2 0 9 | 0 0 0 0 0 0 0 0 18 0 10 | 0 11 | %FLAG ATOM_NAME 12 | %FORMAT(20a4) 13 | C1 C2 C3 C4 C5 C6 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 14 | %FLAG CHARGE 15 | %FORMAT(5E16.8) 16 | -1.37760588E+00 -1.37578365E+00 -1.37578365E+00 -1.37578365E+00 -1.37578365E+00 17 | -1.37578365E+00 6.88802940E-01 6.88802940E-01 6.88802940E-01 6.88802940E-01 18 | 6.88802940E-01 6.88802940E-01 6.88802940E-01 6.88802940E-01 6.88802940E-01 19 | 6.88802940E-01 6.88802940E-01 6.88802940E-01 20 | %FLAG ATOMIC_NUMBER 21 | %FORMAT(10I8) 22 | 6 6 6 6 6 6 1 1 1 1 23 | 1 1 1 1 1 1 1 1 24 | %FLAG MASS 25 | %FORMAT(5E16.8) 26 | 1.20100000E+01 1.20100000E+01 1.20100000E+01 1.20100000E+01 1.20100000E+01 27 | 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.00800000E+00 28 | 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.00800000E+00 29 | 1.00800000E+00 1.00800000E+00 1.00800000E+00 30 | %FLAG ATOM_TYPE_INDEX 31 | %FORMAT(10I8) 32 | 1 1 1 1 1 1 2 2 2 2 33 | 2 2 2 2 2 2 2 2 34 | %FLAG NUMBER_EXCLUDED_ATOMS 35 | %FORMAT(10I8) 36 | 15 14 13 12 11 10 5 4 3 2 37 | 3 2 3 2 3 2 1 1 38 | %FLAG NONBONDED_PARM_INDEX 39 | %FORMAT(10I8) 40 | 1 2 2 3 41 | %FLAG RESIDUE_LABEL 42 | %FORMAT(20a4) 43 | MOL 44 | %FLAG RESIDUE_POINTER 45 | %FORMAT(10I8) 46 | 1 47 | %FLAG BOND_FORCE_CONSTANT 48 | %FORMAT(5E16.8) 49 | 3.03100000E+02 3.37300000E+02 50 | %FLAG BOND_EQUIL_VALUE 51 | %FORMAT(5E16.8) 52 | 1.53500000E+00 1.09200000E+00 53 | %FLAG ANGLE_FORCE_CONSTANT 54 | %FORMAT(5E16.8) 55 | 6.32100000E+01 4.63700000E+01 3.94300000E+01 56 | %FLAG ANGLE_EQUIL_VALUE 57 | %FORMAT(5E16.8) 58 | 1.93085858E+00 1.92073567E+00 1.89106506E+00 59 | %FLAG DIHEDRAL_FORCE_CONSTANT 60 | %FORMAT(5E16.8) 61 | 2.00000000E-01 2.50000000E-01 1.80000000E-01 1.60000000E-01 1.50000000E-01 62 | %FLAG DIHEDRAL_PERIODICITY 63 | %FORMAT(5E16.8) 64 | 1.00000000E+00 2.00000000E+00 3.00000000E+00 3.00000000E+00 3.00000000E+00 65 | %FLAG DIHEDRAL_PHASE 66 | %FORMAT(5E16.8) 67 | 3.14159400E+00 3.14159400E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 68 | %FLAG SCEE_SCALE_FACTOR 69 | %FORMAT(5E16.8) 70 | 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 71 | %FLAG SCNB_SCALE_FACTOR 72 | %FORMAT(5E16.8) 73 | 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 74 | %FLAG SOLTY 75 | %FORMAT(5E16.8) 76 | 0.00000000E+00 0.00000000E+00 77 | %FLAG LENNARD_JONES_ACOEF 78 | %FORMAT(5E16.8) 79 | 1.04308023E+06 9.71708117E+04 7.51607703E+03 80 | %FLAG LENNARD_JONES_BCOEF 81 | %FORMAT(5E16.8) 82 | 6.75612247E+02 1.26919150E+02 2.17257828E+01 83 | %FLAG BONDS_INC_HYDROGEN 84 | %FORMAT(10I8) 85 | 0 18 2 0 21 2 3 24 2 3 86 | 27 2 6 30 2 6 33 2 9 36 87 | 2 9 39 2 12 42 2 12 45 2 88 | 15 48 2 15 51 2 89 | %FLAG BONDS_WITHOUT_HYDROGEN 90 | %FORMAT(10I8) 91 | 0 15 1 0 3 1 3 6 1 6 92 | 9 1 9 12 1 12 15 1 93 | %FLAG ANGLES_INC_HYDROGEN 94 | %FORMAT(10I8) 95 | 0 15 48 2 0 15 51 2 0 3 96 | 24 2 0 3 27 2 3 0 18 2 97 | 3 0 21 2 3 6 30 2 3 6 98 | 33 2 6 3 24 2 6 3 27 2 99 | 6 9 36 2 6 9 39 2 9 6 100 | 30 2 9 6 33 2 9 12 42 2 101 | 9 12 45 2 12 9 36 2 12 9 102 | 39 2 12 15 48 2 12 15 51 2 103 | 15 0 18 2 15 0 21 2 15 12 104 | 42 2 15 12 45 2 18 0 21 3 105 | 24 3 27 3 30 6 33 3 36 9 106 | 39 3 42 12 45 3 48 15 51 3 107 | %FLAG ANGLES_WITHOUT_HYDROGEN 108 | %FORMAT(10I8) 109 | 0 15 12 1 0 3 6 1 3 0 110 | 15 1 3 6 9 1 6 9 12 1 111 | 9 12 15 1 112 | %FLAG DIHEDRALS_INC_HYDROGEN 113 | %FORMAT(10I8) 114 | 0 15 12 42 4 0 15 12 45 4 115 | 0 3 6 30 4 0 3 6 33 4 116 | 3 0 15 48 4 3 0 15 51 4 117 | 3 6 9 36 4 3 6 9 39 4 118 | 18 0 3 6 4 21 0 3 6 4 119 | 6 9 12 42 4 6 9 12 45 4 120 | 9 6 3 24 4 9 6 3 27 4 121 | 9 12 15 48 4 9 12 15 51 4 122 | 12 9 6 30 4 12 9 6 33 4 123 | 18 0 15 12 4 21 0 15 12 4 124 | 15 0 3 24 4 15 0 3 27 4 125 | 15 12 9 36 4 15 12 9 39 4 126 | 18 0 15 48 5 18 0 15 51 5 127 | 18 0 3 24 5 18 0 3 27 5 128 | 21 0 15 48 5 21 0 15 51 5 129 | 21 0 3 24 5 21 0 3 27 5 130 | 24 3 6 30 5 24 3 6 33 5 131 | 27 3 6 30 5 27 3 6 33 5 132 | 30 6 9 36 5 30 6 9 39 5 133 | 33 6 9 36 5 33 6 9 39 5 134 | 36 9 12 42 5 36 9 12 45 5 135 | 39 9 12 42 5 39 9 12 45 5 136 | 42 12 15 48 5 42 12 15 51 5 137 | 45 12 15 48 5 45 12 15 51 5 138 | %FLAG DIHEDRALS_WITHOUT_HYDROGEN 139 | %FORMAT(10I8) 140 | 0 15 12 9 1 0 15 -12 9 2 141 | 0 15 -12 9 3 0 3 -6 9 1 142 | 0 3 -6 9 2 0 3 -6 9 3 143 | 3 0 15 12 1 3 0 -15 12 2 144 | 3 0 -15 12 3 3 6 -9 12 1 145 | 3 6 -9 12 2 3 6 -9 12 3 146 | 15 0 3 6 1 15 0 -3 6 2 147 | 15 0 -3 6 3 6 9 -12 15 1 148 | 6 9 -12 15 2 6 9 -12 15 3 149 | %FLAG EXCLUDED_ATOMS_LIST 150 | %FORMAT(10I8) 151 | 2 3 4 5 6 7 8 9 10 11 152 | 12 15 16 17 18 3 4 5 6 7 153 | 8 9 10 11 12 13 14 17 18 4 154 | 5 6 7 8 9 10 11 12 13 14 155 | 15 16 5 6 9 10 11 12 13 14 156 | 15 16 17 18 6 7 8 11 12 13 157 | 14 15 16 17 18 7 8 9 10 13 158 | 14 15 16 17 18 8 9 10 17 18 159 | 9 10 17 18 10 11 12 11 12 12 160 | 13 14 13 14 14 15 16 15 16 16 161 | 17 18 17 18 18 0 162 | %FLAG HBOND_ACOEF 163 | %FORMAT(5E16.8) 164 | 165 | %FLAG HBOND_BCOEF 166 | %FORMAT(5E16.8) 167 | 168 | %FLAG HBCUT 169 | %FORMAT(5E16.8) 170 | 171 | %FLAG AMBER_ATOM_TYPE 172 | %FORMAT(20a4) 173 | c3 c3 c3 c3 c3 c3 hc hc hc hc hc hc hc hc hc hc hc hc 174 | %FLAG TREE_CHAIN_CLASSIFICATION 175 | %FORMAT(20a4) 176 | BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA 177 | %FLAG JOIN_ARRAY 178 | %FORMAT(10I8) 179 | 0 0 0 0 0 0 0 0 0 0 180 | 0 0 0 0 0 0 0 0 181 | %FLAG IROTAT 182 | %FORMAT(10I8) 183 | 0 0 0 0 0 0 0 0 0 0 184 | 0 0 0 0 0 0 0 0 185 | %FLAG RADIUS_SET 186 | %FORMAT(1a80) 187 | modified Bondi radii (mbondi) 188 | %FLAG RADII 189 | %FORMAT(5E16.8) 190 | 1.70000000E+00 1.70000000E+00 1.70000000E+00 1.70000000E+00 1.70000000E+00 191 | 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 192 | 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 193 | 1.30000000E+00 1.30000000E+00 1.30000000E+00 194 | %FLAG SCREEN 195 | %FORMAT(5E16.8) 196 | 7.20000000E-01 7.20000000E-01 7.20000000E-01 7.20000000E-01 7.20000000E-01 197 | 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 198 | 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 199 | 8.50000000E-01 8.50000000E-01 8.50000000E-01 200 | %FLAG IPOL 201 | %FORMAT(1I8) 202 | 0 203 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/tleap/ethane.inpcrd: -------------------------------------------------------------------------------- 1 | ethane 2 | 8 3 | 0.8150000 -0.5380000 0.4930000 2.1550000 -0.0520000 -0.0120000 4 | 0.0000000 0.0010000 0.0010000 0.6930000 -1.6070000 0.2910000 5 | 0.7300000 -0.3800000 1.5720000 2.9700000 -0.5910000 0.4800000 6 | 2.2770000 1.0170000 0.1910000 2.2400000 -0.2100000 -1.0910000 7 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/tleap/ethane.prmtop: -------------------------------------------------------------------------------- 1 | %VERSION VERSION_STAMP = V0001.000 DATE = 05/21/15 09:54:32 2 | %FLAG TITLE 3 | %FORMAT(20a4) 4 | ethane 5 | %FLAG POINTERS 6 | %FORMAT(10I8) 7 | 8 2 6 1 12 0 9 0 0 0 8 | 29 1 1 0 0 2 2 1 2 0 9 | 0 0 0 0 0 0 0 0 8 0 10 | 0 11 | %FLAG ATOM_NAME 12 | %FORMAT(20a4) 13 | C1 C2 H1 H2 H3 H4 H5 H6 14 | %FLAG CHARGE 15 | %FORMAT(5E16.8) 16 | -1.70925174E+00 -1.70925174E+00 5.70357990E-01 5.70357990E-01 5.70357990E-01 17 | 5.70357990E-01 5.70357990E-01 5.70357990E-01 18 | %FLAG ATOMIC_NUMBER 19 | %FORMAT(10I8) 20 | 6 6 1 1 1 1 1 1 21 | %FLAG MASS 22 | %FORMAT(5E16.8) 23 | 1.20100000E+01 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 24 | 1.00800000E+00 1.00800000E+00 1.00800000E+00 25 | %FLAG ATOM_TYPE_INDEX 26 | %FORMAT(10I8) 27 | 1 1 2 2 2 2 2 2 28 | %FLAG NUMBER_EXCLUDED_ATOMS 29 | %FORMAT(10I8) 30 | 7 6 5 4 3 2 1 1 31 | %FLAG NONBONDED_PARM_INDEX 32 | %FORMAT(10I8) 33 | 1 2 2 3 34 | %FLAG RESIDUE_LABEL 35 | %FORMAT(20a4) 36 | MOL 37 | %FLAG RESIDUE_POINTER 38 | %FORMAT(10I8) 39 | 1 40 | %FLAG BOND_FORCE_CONSTANT 41 | %FORMAT(5E16.8) 42 | 3.03100000E+02 3.37300000E+02 43 | %FLAG BOND_EQUIL_VALUE 44 | %FORMAT(5E16.8) 45 | 1.53500000E+00 1.09200000E+00 46 | %FLAG ANGLE_FORCE_CONSTANT 47 | %FORMAT(5E16.8) 48 | 4.63700000E+01 3.94300000E+01 49 | %FLAG ANGLE_EQUIL_VALUE 50 | %FORMAT(5E16.8) 51 | 1.92073567E+00 1.89106506E+00 52 | %FLAG DIHEDRAL_FORCE_CONSTANT 53 | %FORMAT(5E16.8) 54 | 1.50000000E-01 55 | %FLAG DIHEDRAL_PERIODICITY 56 | %FORMAT(5E16.8) 57 | 3.00000000E+00 58 | %FLAG DIHEDRAL_PHASE 59 | %FORMAT(5E16.8) 60 | 0.00000000E+00 61 | %FLAG SCEE_SCALE_FACTOR 62 | %FORMAT(5E16.8) 63 | 1.20000000E+00 64 | %FLAG SCNB_SCALE_FACTOR 65 | %FORMAT(5E16.8) 66 | 2.00000000E+00 67 | %FLAG SOLTY 68 | %FORMAT(5E16.8) 69 | 0.00000000E+00 0.00000000E+00 70 | %FLAG LENNARD_JONES_ACOEF 71 | %FORMAT(5E16.8) 72 | 1.04308023E+06 9.71708117E+04 7.51607703E+03 73 | %FLAG LENNARD_JONES_BCOEF 74 | %FORMAT(5E16.8) 75 | 6.75612247E+02 1.26919150E+02 2.17257828E+01 76 | %FLAG BONDS_INC_HYDROGEN 77 | %FORMAT(10I8) 78 | 0 6 2 0 9 2 0 12 2 3 79 | 15 2 3 18 2 3 21 2 80 | %FLAG BONDS_WITHOUT_HYDROGEN 81 | %FORMAT(10I8) 82 | 0 3 1 83 | %FLAG ANGLES_INC_HYDROGEN 84 | %FORMAT(10I8) 85 | 0 3 15 1 0 3 18 1 0 3 86 | 21 1 3 0 6 1 3 0 9 1 87 | 3 0 12 1 6 0 9 2 6 0 88 | 12 2 9 0 12 2 15 3 18 2 89 | 15 3 21 2 18 3 21 2 90 | %FLAG ANGLES_WITHOUT_HYDROGEN 91 | %FORMAT(10I8) 92 | 93 | %FLAG DIHEDRALS_INC_HYDROGEN 94 | %FORMAT(10I8) 95 | 6 0 3 15 1 6 0 3 18 1 96 | 6 0 3 21 1 9 0 3 15 1 97 | 9 0 3 18 1 9 0 3 21 1 98 | 12 0 3 15 1 12 0 3 18 1 99 | 12 0 3 21 1 100 | %FLAG DIHEDRALS_WITHOUT_HYDROGEN 101 | %FORMAT(10I8) 102 | 103 | %FLAG EXCLUDED_ATOMS_LIST 104 | %FORMAT(10I8) 105 | 2 3 4 5 6 7 8 3 4 5 106 | 6 7 8 4 5 6 7 8 5 6 107 | 7 8 6 7 8 7 8 8 0 108 | %FLAG HBOND_ACOEF 109 | %FORMAT(5E16.8) 110 | 111 | %FLAG HBOND_BCOEF 112 | %FORMAT(5E16.8) 113 | 114 | %FLAG HBCUT 115 | %FORMAT(5E16.8) 116 | 117 | %FLAG AMBER_ATOM_TYPE 118 | %FORMAT(20a4) 119 | c3 c3 hc hc hc hc hc hc 120 | %FLAG TREE_CHAIN_CLASSIFICATION 121 | %FORMAT(20a4) 122 | BLA BLA BLA BLA BLA BLA BLA BLA 123 | %FLAG JOIN_ARRAY 124 | %FORMAT(10I8) 125 | 0 0 0 0 0 0 0 0 126 | %FLAG IROTAT 127 | %FORMAT(10I8) 128 | 0 0 0 0 0 0 0 0 129 | %FLAG RADIUS_SET 130 | %FORMAT(1a80) 131 | modified Bondi radii (mbondi) 132 | %FLAG RADII 133 | %FORMAT(5E16.8) 134 | 1.70000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 135 | 1.30000000E+00 1.30000000E+00 1.30000000E+00 136 | %FLAG SCREEN 137 | %FORMAT(5E16.8) 138 | 7.20000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 139 | 8.50000000E-01 8.50000000E-01 8.50000000E-01 140 | %FLAG IPOL 141 | %FORMAT(1I8) 142 | 0 143 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/tleap/toluene.inpcrd: -------------------------------------------------------------------------------- 1 | toluene 2 | 15 3 | 1.9310000 -1.0140000 -1.6030000 1.8850000 -1.0360000 -0.1120000 4 | 2.9210000 -1.6310000 0.6080000 2.8780000 -1.6520000 2.0020000 5 | 1.8000000 -1.0790000 2.6760000 0.7640000 -0.4840000 1.9550000 6 | 0.8070000 -0.4630000 0.5610000 2.4390000 -0.1080000 -1.9480000 7 | 2.4640000 -1.8890000 -1.9910000 0.9210000 -1.0370000 -2.0250000 8 | 3.7650000 -2.0800000 0.0910000 3.6850000 -2.1150000 2.5630000 9 | 1.7660000 -1.0950000 3.7610000 -0.0760000 -0.0380000 2.4790000 10 | -0.0050000 0.0030000 0.0080000 11 | -------------------------------------------------------------------------------- /solvationtoolkit/test/data/tleap/toluene.prmtop: -------------------------------------------------------------------------------- 1 | %VERSION VERSION_STAMP = V0001.000 DATE = 05/21/15 09:54:31 2 | %FLAG TITLE 3 | %FORMAT(20a4) 4 | toluene 5 | %FLAG POINTERS 6 | %FORMAT(10I8) 7 | 15 4 8 7 16 8 27 9 0 0 8 | 68 1 7 8 9 4 5 3 4 0 9 | 0 0 0 0 0 0 0 0 15 0 10 | 0 11 | %FLAG ATOM_NAME 12 | %FORMAT(20a4) 13 | C1 C2 C3 C4 C5 C6 C7 H1 H2 H3 H4 H5 H6 H7 H8 14 | %FLAG CHARGE 15 | %FORMAT(5E16.8) 16 | -9.84004200E-01 -1.40311710E+00 -2.37801015E+00 -2.31058764E+00 -2.46001050E+00 17 | -2.31058764E+00 -2.37801015E+00 7.94492280E-01 7.94492280E-01 7.94492280E-01 18 | 2.37254346E+00 2.36525454E+00 2.36525454E+00 2.36525454E+00 2.37254346E+00 19 | %FLAG ATOMIC_NUMBER 20 | %FORMAT(10I8) 21 | 6 6 6 6 6 6 6 1 1 1 22 | 1 1 1 1 1 23 | %FLAG MASS 24 | %FORMAT(5E16.8) 25 | 1.20100000E+01 1.20100000E+01 1.20100000E+01 1.20100000E+01 1.20100000E+01 26 | 1.20100000E+01 1.20100000E+01 1.00800000E+00 1.00800000E+00 1.00800000E+00 27 | 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.00800000E+00 1.00800000E+00 28 | %FLAG ATOM_TYPE_INDEX 29 | %FORMAT(10I8) 30 | 1 2 2 2 2 2 2 3 3 3 31 | 4 4 4 4 4 32 | %FLAG NUMBER_EXCLUDED_ATOMS 33 | %FORMAT(10I8) 34 | 10 12 11 7 7 5 7 2 1 1 35 | 1 1 1 1 1 36 | %FLAG NONBONDED_PARM_INDEX 37 | %FORMAT(10I8) 38 | 1 2 4 7 2 3 5 8 4 5 39 | 6 9 7 8 9 10 40 | %FLAG RESIDUE_LABEL 41 | %FORMAT(20a4) 42 | MOL 43 | %FLAG RESIDUE_POINTER 44 | %FORMAT(10I8) 45 | 1 46 | %FLAG BOND_FORCE_CONSTANT 47 | %FORMAT(5E16.8) 48 | 3.23500000E+02 3.37300000E+02 4.78400000E+02 3.44300000E+02 49 | %FLAG BOND_EQUIL_VALUE 50 | %FORMAT(5E16.8) 51 | 1.51300000E+00 1.09200000E+00 1.38700000E+00 1.08700000E+00 52 | %FLAG ANGLE_FORCE_CONSTANT 53 | %FORMAT(5E16.8) 54 | 6.38400000E+01 4.69600000E+01 6.71800000E+01 4.84600000E+01 3.94300000E+01 55 | %FLAG ANGLE_EQUIL_VALUE 56 | %FORMAT(5E16.8) 57 | 2.10539158E+00 1.92248100E+00 2.09387240E+00 2.09457053E+00 1.89106506E+00 58 | %FLAG DIHEDRAL_FORCE_CONSTANT 59 | %FORMAT(5E16.8) 60 | 3.62500000E+00 0.00000000E+00 1.10000000E+00 61 | %FLAG DIHEDRAL_PERIODICITY 62 | %FORMAT(5E16.8) 63 | 2.00000000E+00 2.00000000E+00 2.00000000E+00 64 | %FLAG DIHEDRAL_PHASE 65 | %FORMAT(5E16.8) 66 | 3.14159400E+00 0.00000000E+00 3.14159400E+00 67 | %FLAG SCEE_SCALE_FACTOR 68 | %FORMAT(5E16.8) 69 | 1.20000000E+00 1.20000000E+00 0.00000000E+00 70 | %FLAG SCNB_SCALE_FACTOR 71 | %FORMAT(5E16.8) 72 | 2.00000000E+00 2.00000000E+00 0.00000000E+00 73 | %FLAG SOLTY 74 | %FORMAT(5E16.8) 75 | 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 76 | %FLAG LENNARD_JONES_ACOEF 77 | %FORMAT(5E16.8) 78 | 1.04308023E+06 9.24822270E+05 8.19971662E+05 9.71708117E+04 8.61541883E+04 79 | 7.51607703E+03 8.59947003E+04 7.62451550E+04 6.55825601E+03 5.71629601E+03 80 | %FLAG LENNARD_JONES_BCOEF 81 | %FORMAT(5E16.8) 82 | 6.75612247E+02 5.99015525E+02 5.31102864E+02 1.26919150E+02 1.12529845E+02 83 | 2.17257828E+01 1.18043746E+02 1.04660679E+02 2.00642027E+01 1.85196588E+01 84 | %FLAG BONDS_INC_HYDROGEN 85 | %FORMAT(10I8) 86 | 0 21 2 0 24 2 0 27 2 6 87 | 30 4 9 33 4 12 36 4 15 39 88 | 4 18 42 4 89 | %FLAG BONDS_WITHOUT_HYDROGEN 90 | %FORMAT(10I8) 91 | 0 3 1 3 18 3 3 6 3 6 92 | 9 3 9 12 3 12 15 3 15 18 93 | 3 94 | %FLAG ANGLES_INC_HYDROGEN 95 | %FORMAT(10I8) 96 | 3 0 21 2 3 0 24 2 3 0 97 | 27 2 3 18 42 4 3 6 30 4 98 | 6 9 33 4 9 6 30 4 9 12 99 | 36 4 12 9 33 4 12 15 39 4 100 | 15 12 36 4 15 18 42 4 18 15 101 | 39 4 21 0 24 5 21 0 27 5 102 | 24 0 27 5 103 | %FLAG ANGLES_WITHOUT_HYDROGEN 104 | %FORMAT(10I8) 105 | 0 3 18 1 0 3 6 1 3 18 106 | 15 3 3 6 9 3 6 3 18 3 107 | 6 9 12 3 9 12 15 3 12 15 108 | 18 3 109 | %FLAG DIHEDRALS_INC_HYDROGEN 110 | %FORMAT(10I8) 111 | 0 3 18 42 1 0 3 6 30 1 112 | 3 18 15 39 1 3 6 9 33 1 113 | 21 0 3 6 2 24 0 3 6 2 114 | 27 0 3 6 2 6 3 18 42 1 115 | 6 9 12 36 1 9 12 15 39 1 116 | 12 9 6 30 1 12 15 18 42 1 117 | 15 12 9 33 1 21 0 3 18 2 118 | 24 0 3 18 2 27 0 3 18 2 119 | 18 3 6 30 1 18 15 12 36 1 120 | 30 6 9 33 1 33 9 12 36 1 121 | 36 12 15 39 1 39 15 18 42 1 122 | 3 9 -6 -30 3 6 12 -9 -33 3 123 | 9 15 -12 -36 3 12 18 -15 -39 3 124 | 3 15 -18 -42 3 125 | %FLAG DIHEDRALS_WITHOUT_HYDROGEN 126 | %FORMAT(10I8) 127 | 0 3 18 15 1 0 3 6 9 1 128 | 3 18 15 12 1 3 6 -9 12 1 129 | 6 3 18 15 1 6 9 -12 15 1 130 | 9 6 3 18 1 9 12 -15 18 1 131 | 0 3 -18 -6 3 132 | %FLAG EXCLUDED_ATOMS_LIST 133 | %FORMAT(10I8) 134 | 2 3 4 6 7 8 9 10 11 15 135 | 3 4 5 6 7 8 9 10 11 12 136 | 14 15 4 5 6 7 8 9 10 11 137 | 12 13 15 5 6 7 11 12 13 14 138 | 6 7 11 12 13 14 15 7 12 13 139 | 14 15 8 9 10 11 13 14 15 9 140 | 10 10 0 12 13 14 15 0 141 | %FLAG HBOND_ACOEF 142 | %FORMAT(5E16.8) 143 | 144 | %FLAG HBOND_BCOEF 145 | %FORMAT(5E16.8) 146 | 147 | %FLAG HBCUT 148 | %FORMAT(5E16.8) 149 | 150 | %FLAG AMBER_ATOM_TYPE 151 | %FORMAT(20a4) 152 | c3 ca ca ca ca ca ca hc hc hc ha ha ha ha ha 153 | %FLAG TREE_CHAIN_CLASSIFICATION 154 | %FORMAT(20a4) 155 | BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA 156 | %FLAG JOIN_ARRAY 157 | %FORMAT(10I8) 158 | 0 0 0 0 0 0 0 0 0 0 159 | 0 0 0 0 0 160 | %FLAG IROTAT 161 | %FORMAT(10I8) 162 | 0 0 0 0 0 0 0 0 0 0 163 | 0 0 0 0 0 164 | %FLAG RADIUS_SET 165 | %FORMAT(1a80) 166 | modified Bondi radii (mbondi) 167 | %FLAG RADII 168 | %FORMAT(5E16.8) 169 | 1.70000000E+00 1.70000000E+00 1.70000000E+00 1.70000000E+00 1.70000000E+00 170 | 1.70000000E+00 1.70000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 171 | 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 1.30000000E+00 172 | %FLAG SCREEN 173 | %FORMAT(5E16.8) 174 | 7.20000000E-01 7.20000000E-01 7.20000000E-01 7.20000000E-01 7.20000000E-01 175 | 7.20000000E-01 7.20000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 176 | 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 8.50000000E-01 177 | %FLAG IPOL 178 | %FORMAT(1I8) 179 | 0 180 | -------------------------------------------------------------------------------- /solvationtoolkit/test/test_solvated_mixtures.py: -------------------------------------------------------------------------------- 1 | import os.path, sys 2 | sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)) 3 | from openmoltools import utils 4 | import unittest 5 | from unittest import skipIf 6 | from solvationtoolkit.solvated_mixtures import MixtureSystem 7 | 8 | 9 | try: 10 | oechem = utils.import_("openeye.oechem") 11 | if not oechem.OEChemIsLicensed(): raise(ImportError("Need License for OEChem!")) 12 | oequacpac = utils.import_("openeye.oequacpac") 13 | if not oequacpac.OEQuacPacIsLicensed(): raise(ImportError("Need License for oequacpac!")) 14 | oeiupac = utils.import_("openeye.oeiupac") 15 | if not oeiupac.OEIUPACIsLicensed(): raise(ImportError("Need License for OEOmega!")) 16 | oeomega = utils.import_("openeye.oeomega") 17 | if not oeomega.OEOmegaIsLicensed(): raise(ImportError("Need License for OEOmega!")) 18 | HAVE_OE = True 19 | except: 20 | HAVE_OE = False 21 | 22 | 23 | class TestMixtureSystem(unittest.TestCase): 24 | @skipIf(not HAVE_OE, "Cannot test core functionality without OpenEye tools.") 25 | def setUp(self): 26 | with utils.enter_temp_directory(): 27 | self.inst = MixtureSystem() 28 | 29 | #Test class Initialization 30 | #These should be able to run without OpenEye tools at least with suitable re-architecting 31 | @skipIf(not HAVE_OE, "Cannot test core functionality without OpenEye tools.") 32 | def test_InsufficientInit(self): 33 | with utils.enter_temp_directory(): 34 | #Check wrong number of arguments for adding a component - it requires a name or label at least. 35 | self.assertRaises(ValueError, self.inst.addComponent, smiles="CC") 36 | 37 | #Check what happens if we don't actually add components 38 | self.assertRaises(TypeError, self.inst.build ) 39 | 40 | 41 | #Should be able to run without OE tools with suitable re-architecting 42 | @skipIf(not HAVE_OE, "Cannot test core functionality without OpenEye tools.") 43 | def test_TypeArgs(self): 44 | #Check passed input Types 45 | with utils.enter_temp_directory(): 46 | 47 | #Add a component with an integer name to ensure we catch 48 | self.inst = MixtureSystem() 49 | self.assertRaises(ValueError, self.inst.addComponent, name=1 ) 50 | 51 | #Add a non-integer number of molecules to ensure we catch 52 | self.assertRaises(ValueError, self.inst.addComponent, name='phenol', number=3.5) 53 | 54 | #Add an invalid mole fraction 55 | self.assertRaises(ValueError, self.inst.addComponent, name='phenol', mole_fraction=1.2 ) 56 | self.assertRaises(ValueError, self.inst.addComponent, name='phenol', mole_fraction=-0.2 ) 57 | 58 | #Add mole fractions totaling greater than 1, check that we catch 59 | self.inst.addComponent('phenol', mole_fraction = 0.9) 60 | self.inst.addComponent('toluene', mole_fraction = 0.2) 61 | self.assertRaises( ValueError, self.inst.build ) 62 | 63 | @skipIf(not HAVE_OE, "Cannot check smiles or name handling without OpenEye tools.") 64 | def test_ChemParsing(self): 65 | with utils.enter_temp_directory(): 66 | self.inst = MixtureSystem() 67 | #Try passing invalid SMILES 68 | self.assertRaises( ValueError, self.inst.addComponent, name='phenol', smiles='smiles') 69 | #Try building with an invalid solute_index 70 | self.inst = MixtureSystem() 71 | self.inst.addComponent('toluene') 72 | self.assertRaises( AssertionError, self.inst.build, gromacs = True, 73 | solute_index = 2) 74 | 75 | 76 | #Test a bunch of different run cases which actually ought to work and ensure that they do 77 | @skipIf(not HAVE_OE, "Cannot test core functionality without OpenEye tools.") 78 | def test_run(self): 79 | with utils.enter_temp_directory(): 80 | 81 | #Set up some names, labels, components 82 | names = ['toluene','benzene','cyclohexane','water', 'ethane'] 83 | labels = ['toluene','benzene','cyclohexane','water', 'ethane'] 84 | smiles = ['Cc1ccccc1','c1ccccc1','C1CCCCC1','O', 'CC'] 85 | datapath = 'test' #Use non-default 86 | numbers = [3, 5, 80, 11, 7 ] 87 | mole_fractions = [ 0.1, 0.1, 0.1, 0.0, 0.7 ] 88 | n_components = len(names) 89 | 90 | #Build using name 91 | self.inst = MixtureSystem( datapath ) 92 | for n in range(n_components): 93 | self.inst.addComponent( name = names[n], mole_fraction = mole_fractions[n]) 94 | self.inst.build() 95 | 96 | #Build using label 97 | self.inst = MixtureSystem( 'data' ) 98 | for n in range(n_components): 99 | self.inst.addComponent( label = labels[n], mole_fraction = mole_fractions[n]) 100 | self.inst.build() 101 | 102 | #Build using label and name 103 | self.inst = MixtureSystem( 'data2' ) 104 | for n in range(n_components): 105 | self.inst.addComponent( name = names[n], label = labels[n], mole_fraction = mole_fractions[n]) 106 | self.inst.build() 107 | 108 | #Build using label and smiles 109 | self.inst = MixtureSystem( 'data3' ) 110 | for n in range(n_components): 111 | self.inst.addComponent( label = labels[n], smiles = smiles[n], mole_fraction = mole_fractions[n]) 112 | self.inst.build() 113 | 114 | #Build using number rather than mole fraction 115 | self.inst = MixtureSystem( 'data4' ) 116 | for n in range(n_components): 117 | self.inst.addComponent( label = labels[n], smiles = smiles[n], number = numbers[n]) 118 | self.inst.build() 119 | 120 | 121 | #Build using solute_index and GROMACS (implying also AMBER) 122 | self.inst = MixtureSystem( 'data5' ) 123 | for n in range(n_components): 124 | self.inst.addComponent( label = labels[n], smiles = smiles[n], number = numbers[n]) 125 | self.inst.build( gromacs = True, solute_index = 2) 126 | 127 | #Build for AMBER only 128 | self.inst = MixtureSystem( 'data6' ) 129 | for n in range(n_components): 130 | self.inst.addComponent( label = labels[n], smiles = smiles[n], number = numbers[n]) 131 | self.inst.build( amber = True) 132 | 133 | 134 | #Make sure filling compound works 135 | self.inst = MixtureSystem( 'data7' ) 136 | for n in range(n_components)[:-1]: 137 | self.inst.addComponent( label = labels[n], smiles = smiles[n], 138 | mole_fraction = mole_fractions[n]) 139 | self.inst.addComponent('methane') 140 | self.inst.build( gromacs = True ) 141 | 142 | 143 | #We are already testing the infinite dilution case for one of the compounds 144 | 145 | 146 | if __name__ =='__main__': 147 | unittest.main() 148 | 149 | --------------------------------------------------------------------------------