Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Psi 4 integration #170

Open
wants to merge 158 commits into
base: psi4
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
2bbbe2c
Fix nwchem parameter serialization
avirshup Feb 8, 2017
d0add2e
Deal with missing properties in nwchem
avirshup Feb 8, 2017
0d12510
Build MDT with working version, not repo version
avirshup Feb 8, 2017
ce7d67d
Handle .smiles and .inchi files; always use direct integrals in NWCHem
avirshup Feb 10, 2017
7344bfb
Correct NWChem image path; better handling of PDB files w/ missing ch…
avirshup Feb 10, 2017
24239af
Correctly update positions after NWChem minimization
avirshup Feb 14, 2017
b40f669
Expand QM tests, write a ridiculous number of digits for XYZ files
avirshup Feb 17, 2017
2c406e5
Begin adding QM/MM interface for NWChem
avirshup Feb 17, 2017
d8f75b3
Add forcefield formatting interface
avirshup Feb 17, 2017
5e63c6c
Switch forcefield storage to ParmEd, wrap it for easier manipulation
avirshup Feb 21, 2017
be931df
Update OpenMM interface with support from ParmEd
avirshup Feb 21, 2017
de72f13
Add abstract QM/MM classes
avirshup Feb 21, 2017
c6e19cd
Get mechanical embedding QM/MM working (with orbital visualization!)
avirshup Feb 22, 2017
a842890
Fix various typos
avirshup Feb 22, 2017
6c41b59
Get electronic embedding working
avirshup Feb 22, 2017
86b966d
Add integrated NWChem/sander build
avirshup Feb 26, 2017
520c458
Merge commit '3ea85bff941355ecf50d4aef6a1cbdf2de51d3f9' into nwchem_qmmm
avirshup Apr 4, 2017
8709122
Parse orbitals in movecs file
avirshup Apr 5, 2017
3476cd3
Start getting AO basis functions from NWChem
avirshup Apr 10, 2017
86e230b
More orbital work
avirshup Apr 11, 2017
c475de8
Merge branch 'widgetcleanup' into nwchem_qmmm
avirshup May 18, 2017
b923aaa
Merge branch 'master' into nwchem_qmmm
avirshup May 23, 2017
2bc5ce9
Fix merge
avirshup Jun 6, 2017
e123651
Merge branch 'dev' into nwchem_qmmm
avirshup Jun 8, 2017
75185b4
NWChem in Python 3, with orbitals
avirshup Jun 8, 2017
e08e652
Fix XYZ writer
avirshup Jun 8, 2017
eca3ac0
Add mp2 bindings (although dockerfile doesn't have that?)
avirshup Jun 9, 2017
a6d8a1e
New-style supers don't appear to work in classes with metaclasses
avirshup Jun 9, 2017
88ab304
Merge pull request #156 from Autodesk/fix_energy_model_instantiation
avirshup Jun 9, 2017
d30e517
--testall
avirshup Jun 9, 2017
68506cd
Fixes openmm RPC
avirshup Jun 9, 2017
e53384a
Merge pull request #158 from Autodesk/pickleissues
avirshup Jun 9, 2017
9a6fa3e
pytest-xdist rollback, possibly see pytest-dev/pytest-xdist#157
avirshup Jun 10, 2017
d395439
Merge pull request #152 from Autodesk/dev
avirshup Jun 10, 2017
701d46c
Docker registry tokens
avirshup Jun 10, 2017
3d40029
Prep for beta deployment
avirshup Jun 10, 2017
aa4aecf
Option to skip test environments
avirshup Jun 10, 2017
5566994
Test example directory deployment
avirshup Jun 10, 2017
7352033
Merge pull request #160 from Autodesk/deploy0.8beta
avirshup Jun 10, 2017
499a5f8
Gets moldesign intro working in python 3
avirshup Jun 10, 2017
effa0cd
Restore molecule markdown (was accidentally moved to nbmolviz)
avirshup Jun 10, 2017
16a8570
Update final deployment steps
avirshup Jun 10, 2017
e82db7c
Merge branch 'master' into intro_experience
avirshup Jun 10, 2017
42ca25e
More deployment work
avirshup Jun 12, 2017
936d3cc
Fix publish environment
avirshup Jun 12, 2017
a06d948
Fix filename
avirshup Jun 12, 2017
16498cf
Correct version string
avirshup Jun 12, 2017
93a2a3b
more version string
avirshup Jun 12, 2017
7053a6e
fun with versions (note: not really all that fun)
avirshup Jun 12, 2017
ffac26d
Use PEP440 versions, not semver
avirshup Jun 13, 2017
6407854
Add push to docker-make
avirshup Jun 13, 2017
1868e7c
Fix yml
avirshup Jun 13, 2017
2a53bd7
Trying again to make publishing work
avirshup Jun 13, 2017
fd4d8e2
oops
avirshup Jun 13, 2017
18b751a
docker auth key
avirshup Jun 13, 2017
ce9d6ae
Login to registry thru docker-make
avirshup Jun 13, 2017
f03040a
Merge pull request #162 from Autodesk/deploy
avirshup Jun 13, 2017
ebe2a28
Merge master (commit 'f03040a0a321e9f1a36928bb3922fc2987f4e92a') into…
avirshup Jun 13, 2017
c964d5c
Test coverage related to notebooks
avirshup Jun 13, 2017
67d8353
Handle more symmetry cases
avirshup Jun 13, 2017
5569d2a
Symmetry tests passing
avirshup Jun 13, 2017
2d622a2
Cleanup and a little bug filing help
avirshup Jun 13, 2017
bbbc7f3
Get first tutorial running
avirshup Jun 13, 2017
6dc522f
Get tutorial 2 working
avirshup Jun 13, 2017
311bfd0
Run tests from repo root (fixes weird coverage issues)
avirshup Jun 14, 2017
e0d7b63
Attempt fix for CI docker problems
avirshup Jun 14, 2017
cf156c6
Basic test coverage for minimizers
avirshup Jun 14, 2017
41cd546
Shameless improve test coverage by remove unused code
avirshup Jun 14, 2017
dd2cf5d
Speed up a few easy bottlenecks
avirshup Jun 14, 2017
657215d
Move unused functions out of scope
avirshup Jun 14, 2017
e591fc0
Adds test coverage for some neglected code paths
avirshup Jun 14, 2017
c0deeac
Test compressed file i/o
avirshup Jun 14, 2017
9942777
update i/o to accept pathlib objects;
avirshup Jun 15, 2017
9802eb3
mo tests mo problems
avirshup Jun 15, 2017
a6cfcd7
Quick fixes for new tests
avirshup Jun 15, 2017
861422d
Keep persistent references in result objects, even if generated remotely
avirshup Jun 15, 2017
0bf6eb7
py2 compat fixes
avirshup Jun 15, 2017
8dbdce6
Add test coverage for GTO math
avirshup Jun 15, 2017
48374ef
Scale energy conservation test with system size
avirshup Jun 15, 2017
d50c6e4
Get ERI calcs working again + better interface + tests
avirshup Jun 15, 2017
1fc320d
Tests for ao basis, stream io, PDB queries
avirshup Jun 15, 2017
7bcbbbd
Final test coverage push for 0.8
avirshup Jun 15, 2017
adb7f40
Fix test typos
avirshup Jun 15, 2017
424d061
Create README.md
avirshup Jun 15, 2017
c64d3dc
Merge pull request #161 from Autodesk/intro_experience
avirshup Jun 15, 2017
5a2f2a1
Strip notebook output from repo
avirshup Jun 15, 2017
b15a84e
Bump pyccc to fix a race condition
avirshup Jun 16, 2017
fa3ea27
Test SHAKE through minimizers, rather than the previous hacky solution
avirshup Jun 16, 2017
7ac42b9
Give minimizers a `runremotely` method
avirshup Jun 16, 2017
6cade4c
Add test for pdbfixer mutation
avirshup Jun 17, 2017
4d33955
Add residue queries to chains and molecules
avirshup Jun 17, 2017
97cac04
Gets mutate_residue running
avirshup Jun 17, 2017
e4badeb
Test docstring examples for mutation
avirshup Jun 17, 2017
fb5ea58
Get waterbox working
avirshup Jun 17, 2017
26b4b12
Clean up solvent box code
avirshup Jun 17, 2017
55370f4
Fix get_atoms keywords, ion queries
avirshup Jun 17, 2017
ff6f00e
Get minimizers up to snuff
avirshup Jun 17, 2017
4e7ca55
Missing test helper
avirshup Jun 17, 2017
d926ebb
Add symmetrizer test
avirshup Jun 17, 2017
ce16ce3
Prune unused code
avirshup Jun 18, 2017
4939b93
Minimizations run in the same environment as the model, if possible
avirshup Jun 18, 2017
b83faa3
Update pyccc req to fix unicode bug, test tweaks
avirshup Jun 19, 2017
65ba58f
Tell py2 to use uniocde for xyz files
avirshup Jun 19, 2017
939ed29
Merge pull request #165 from Autodesk/deploy
avirshup Jun 19, 2017
0eab030
Merge master commit '939ed29769f971374982a0663dcd3ab22d5f74a4' into n…
avirshup Jun 19, 2017
7ef3bfa
More tests passing after merge
avirshup Jun 20, 2017
ae9b680
Remove artifacts from merge
avirshup Jun 20, 2017
c4cb75f
Add "io", "internal" pytest marks for easier test selection
avirshup Jun 21, 2017
07e7424
Return a Unit object from units.get_units
avirshup Jun 21, 2017
0aee891
Fix some units corner cases
avirshup Jun 21, 2017
00da737
Add prinicipal moment of inertia calc
avirshup Jun 22, 2017
7a989d1
Handle assigning to quantity from a quantities
avirshup Jun 22, 2017
f093934
Clean up coords, add a better angle calculation
avirshup Jun 23, 2017
1a0afe5
Add `Bond.align` method
avirshup Jun 23, 2017
2bb7292
Fix vectorized angle calc
avirshup Jun 23, 2017
31d95f9
Mechanical embedding works
avirshup Jun 24, 2017
8ea2308
Clean up bond alignment
avirshup Jun 24, 2017
b0ffd4d
Clean up mathutils and tests
avirshup Jun 25, 2017
767d3f5
fixes pmi calculation, tests it
avirshup Jun 25, 2017
835b8de
Return correct types from constraint gradients
avirshup Jun 25, 2017
3f952f5
Assigning units to a string always raises TypeError
avirshup Jun 25, 2017
f0c96df
Fix quantity exception handling
avirshup Jun 25, 2017
5da7d2d
Adds constraint type for h-bonds + holonomic decomposition machinery
avirshup Jun 26, 2017
62a8491
Gets constrained optimization running again
avirshup Jun 26, 2017
8d74152
Fixes #79
avirshup Jun 26, 2017
f94834c
Constraints starting to respect the requested tolerances
avirshup Jun 26, 2017
e591d46
H-bond constraint values taken from forcefield equilibrium lengths
avirshup Jun 26, 2017
55236ac
Improved OpenMM constraint handling
avirshup Jun 27, 2017
6ff0a3a
fix py2-only circular import
avirshup Jun 27, 2017
ceb3f31
Set constraints earlier, don't assume parmed list orderings
avirshup Jun 27, 2017
55fe9d9
Calculate OpenMM energies even when constraints supported
avirshup Jun 27, 2017
09408d0
Move alignments to `geom` subpkg
avirshup Jun 27, 2017
855f10d
Cleanup CI and docker image docs
avirshup Jun 27, 2017
7385b19
Remove dead code
avirshup Jun 27, 2017
7bcc4f6
Add OpenMM parameters for platform and CPU thread count.
avirshup Jun 27, 2017
68fec25
Output and style tweaks
avirshup Jun 27, 2017
2255ed3
Correct OpenMM API call
avirshup Jun 28, 2017
68e8885
Native string types for OpenMM C++ calls
avirshup Jun 28, 2017
8085b8a
Mark subset of tests for faster screening
avirshup Jun 28, 2017
8c63e57
Stash changes
avirshup Jun 28, 2017
efaa71b
Add spherical harmonics up to f functions
avirshup Jun 28, 2017
54f29c8
Hook up SphericalGaussians, fix real harmonics signs
avirshup Jun 28, 2017
84ed89c
Initial Psi4 interface calculates energies
avirshup Jun 5, 2017
0bffcd4
Fix some random bugs
avirshup Jun 6, 2017
d4596e8
Add cleanup, fix property access
avirshup Jun 8, 2017
16fbdc8
Actually return the calculated properties
avirshup Jun 9, 2017
10831a1
Allows psi4 energy calculations to be run and "potential_energy" and …
Jun 16, 2017
3b3bd27
In the ElectronicWfn object, a gradient attribute was added to help w…
Jun 28, 2017
4be81a4
The psi4_interface mdt_to_psi4 function now returns a psi4 molecule i…
Jun 28, 2017
7791426
One electron property management was added for psi4. A minimize funct…
Jul 17, 2017
61958da
Fix pickling for minimizer objects in py2
avirshup Jun 28, 2017
fcc0686
Pin some versions
avirshup Jun 28, 2017
575e047
Add features to one electron properties for molecules following psi4 …
obrien951 Jul 27, 2017
a33cf80
Add handling of normal mode displacements for vizualization and put i…
obrien951 Jul 27, 2017
938d2f1
adds features for advanced psi4 users whose calculations will create …
obrien951 Jul 27, 2017
2512d96
clean psi4 model.
obrien951 Jul 27, 2017
13671ad
adds proper handling of psi4 calculations that return matrices.
obrien951 Jul 27, 2017
e928a2b
adds testing of the MDT Psi4 Interface.
obrien951 Jul 27, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
[paths]
source =
moldesign
*/site-packages/moldesign
*/dist-packages/moldesign


[run]
source = moldesign
omit =
moldesign/_notebooks/*
moldesign/_tests/*
moldesign/_static_data/*
moldesign/_version.py
moldesign/external/*
moldesign/widgets.py
moldesign/interfaces/nbo_interface.py
moldesign/utils/_deadfunctions.py
moldesign/utils/docparsers/google.py

[report]
exclude_lines =
pragma: no cover
def __repr__
def __str__
def _repr_markdown_
raise AssertionError
raise NotImplementedError
if PY2
if future.utils.PY2
def show
def unshow

16 changes: 16 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!-- Delete the text below if you're not filing a bug report -->
## Bug report
#### Description
<!-- A quick description of what's going wrong -->

#### Steps to reproduce
<!-- If possible, show us how to reproduce the bug, INCLUDING any error messages you receive -->

```python
### code to reproduce the bug goes here ###
```

#### Environment
- Operating system: <!-- e.g., "MacOS 10.12.3" or "Debian 8.8"-->
- `python --version` output: <!-- e.g., "2.7.13" or "Python 3.5.2 :: Continuum Analytics, Inc."-->
- `pip show moldesign nbmolviz | grep -B1 Version` output:
34 changes: 22 additions & 12 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
# DEVELOPING MDT

### Setting up a dev environment
(WIP)
(still under construction)

### Install prerequisites (first time only)
To make these instructions reasonably cross-platform, we'll use pyenv as the python environment manager.
### Install prequisites (first time only)
You need to install docker, and an environment manager for Python 3 (Miniconda 3). Here's one way to do that:
1. Install docker: [link]
2. Install pyenv and pyenv-venv: [link]
3. Install miniconda2 by running: `pyenv install miniconda2-latest`
4. Switch to miniconda environment by running: `pyenv shell miniconda2-latest`
3. Install miniconda3 by running: `pyenv install miniconda3-latest`
4. Switch to miniconda environment by running: `pyenv shell miniconda3-latest`

### Set up your environment (first time only)
1. Change directory to the base of the `molecular-design-toolkit` repository
1. Get MDT: `git clone http://github.com/Autodesk/molecular-design-toolkit`
1. `cd molecular-design-toolkit`
1. Create conda environment (optional but recommended) by running: [command to create conda env]
2. Activate the environment: `pyenv shell [environment name???]`
1. Install dev dependencies: `pip install -r requirements.txt DockerMakefiles/requirements.txt moldesign/_tests/requirements.txt`
2. Activate the environment: `pyenv activate [environment name???]`
1. Install dev dependencies: `pip install -r requirements.txt DockerMakefiles/requirements.txt deployment/requirements.txt`
2. Set up for local dev mode (this tells MDT to use your local docker containers):
```bash
mkdir ~/.moldesign
echo "devmode: true" > ~/.moldesign/moldesign.yml
```
8. Link your installation within your environment
8. Install MDT in "development mode":
```
pip install -e molecular-design-toolkit
```

### To activate environment (in any new shell)
1. Run `pyenv shell [environment name???]`
1. Run `pyenv activate [environment name???]`

### To rebuild docker images (first time and after changes that affect dockerized code)
5. Build development versions of all docker images:
Expand Down Expand Up @@ -87,9 +88,18 @@ are considered "stable".

### Releases

1. Decide on the new version number (using [semantic versioning](http://semver.org/)). For our purposes here, we'll pretend it's `0.9.3`.
1. Decide on the new version number (see below). For our purposes here, we'll pretend it's `0.9.3`.
1. Tag the relevant commit (the build must be passing) with a release candidate version number, e.g., `0.9.3rc1`.
1. Codeship will automatically deploy the updated release to PyPI and DockerHub (still WIP 5/17)
1. Codeship will automatically deploy the updated release to PyPI and DockerHub
1. Manually test the example notebooks against this pre-release version.
1. If succesful, tag the relevant commit with the official release version `0.9.3`

### Versioning
For now, we're using a subset [PEP 440](https://www.python.org/dev/peps/pep-0440/):
1. Every release should be of the form MAJOR.MINOR.PATCH, e.g. `0.1.2`
2. Pre-releases should be numbered consecutively, and may be alpha, beta, or "release candidate", e.g. `1.0.1rc3` or `0.5.3a1`
3. Our deployment infrastructure uses this regular expression to accept version strings:
`^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)((a|rc|b)(0|[1-9]\d*))?$`

### Maintainers: updating the documentation

Expand Down
4 changes: 2 additions & 2 deletions DockerMakefiles/DockerMake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,11 @@ deploy_requirements:

python_deploy_base_py2:
requires:
- miniconda
- miniconda_py2
- deploy_requirements

python_deploy_base:
requires:
- miniconda_py2
- miniconda
- deploy_requirements

3 changes: 2 additions & 1 deletion DockerMakefiles/Moldesign.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ moldesign_minimal_requirements:
&& apt-get install -y gcc \
&& pip install -r /tmp/mdtreqs.txt
COPY . /opt/molecular-design-toolkit
RUN pip install -e /opt/molecular-design-toolkit
WORKDIR /opt/molecular-design-toolkit
RUN python setup.py sdist && pip install `ls -t dist/*.tar.gz | head -n1`

moldesign_minimal:
requires:
Expand Down
84 changes: 67 additions & 17 deletions DockerMakefiles/NWChem.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ nwchem_build:
build: |
RUN apt-get install -y patch curl perl
WORKDIR /opt
ENV NWCHEM_MODULES="nwdft driver stepper" \
ENV NWCHEM_MODULES="nwdft driver stepper mm qmmm nwmd esp " \
PYTHONVERSION=2.7 \
PYTHONHOME="/usr" \
USE_PYTHONCONFIG=Y \
Expand All @@ -45,25 +45,32 @@ nwchem_build:
&& cd nwchem \
&& svn co --depth empty https://svn.pnl.gov/svn/nwchem/trunk/src \
&& cd src \
&& svn update GNUmakefile nwchem.F config \
tools include basis geom inp input \
&& svn update GNUmakefile nwchem.F config mm qmmm nwmd \
tools include basis geom inp input qhop fft cafe \
pstat rtdb task symmetry util peigs perfm bq cons blas lapack \
NWints atomscf cphf ddscf driver gradients hessian nwdft optim property stepper symmetry vib \
NWints atomscf cphf ddscf driver gradients hessian nwdft \
optim property stepper symmetry vib space esp \
&& rm -rf /opt/nwchem/.svn \
&& cd tools \
&& svn export --non-interactive --username nwchem --password nwchem \
https://svn.pnl.gov/svn/hpctools/branches/ga-5-5 \
&& cd .. \
#strip native compiler options as Fedora does
&& sed -i 's|-march=native||' config/makefile.h \
&& sed -i 's|-mtune=native|-mtune=generic|' config/makefile.h \
&& sed -i 's|-mfpmath=sse||' config/makefile.h \
&& sed -i 's|-msse3||' config/makefile.h \
&& make nwchem_config && make -j3 \
#clean unnecessary source to reduce docker size
&& rm -rf tce tools nwdft NWints geom symmetry util nwxc ddscf lapack blas rism \
argos peigs rmdft gradients symmetry property smd lucia dplot propery \
hessian ccsd mp2_grad moints cafe analyz dimqm /opt/nwchem/lib
&& sed -i 's|-msse3||' config/makefile.h

RUN cd /opt/nwchem/src \
&& make nwchem_config \
&& make -j 8

RUN mkdir nwchem/contrib \
&& cd nwchem/contrib \
&& svn co https://svn.pnl.gov/svn/nwchem/trunk/contrib/mov2asc \
&& cd mov2asc \
&& FC=gfortran make \
&& mv mov2asc asc2mov /opt/nwchem/bin/LINUX64

RUN git clone https://github.com/NWChem-Python/nwapi \
&& cd nwapi \
&& make -f makefile.linux \
Expand All @@ -76,19 +83,62 @@ nwchem:
description: Deployable NWChem image
build_directory: buildfiles/nwchem/
requires:
- python_deploy_base
- python_deploy_base_py2
- nwchem_requirements
build: |
COPY run.sh run.py getresults.py /usr/bin/
RUN chmod +x /usr/bin/getresults.py /usr/bin/run.py /usr/bin/run.sh
RUN pip install pint
RUN pip install pint cclib
ENV NWCHEMFILE="From https://svn.pnl.gov/svn/nwchem/trunk/src"
ENV PYTHONPATH=$PYTHONPATH:/opt
ENV PYTHONPATH=$PYTHONPATH:/opt/nwapi
COPY run.py runqmmm.py getresults.py /usr/local/bin/
RUN chmod +x /usr/local/bin/getresults.py \
/usr/local/bin/run.py \
/usr/local/bin/runqmmm.py
copy_from:
nwchem_build:
/usr/local/lib/python2.7/dist-packages: /usr/local/lib/python2.7/
/opt/nwchem: /opt
/opt/lib: /opt
copy_from:
/opt/nwapi: /opt
openblas:
/opt/lib: /opt

#################################
# Experimental QM/MM images below
nwchem_amber_qmmmm:
description: Image with Amber and NWChem for QM/MM
requires:
- nwchem
build: |
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
gcc \
gfortran \
&& cleanapt
copy_from:
amber_dev_branch_build:
/opt/amber16: /opt
/root/.bash_profile: /root


amber_dev_branch_build:
build_directory: buildfiles/nwchem
requires:
- buildbase
- ambertools_requirements
build: |
ADD amber-dev.tgz /opt
RUN apt-get install -y \
flex \
bison \
csh \
gfortran \
g++ \
make \
patch \
python-dev
WORKDIR /opt/amber16
RUN echo N | ./configure -noX11 --with-python /usr/bin/python --with-netcdf /usr/ gnu \
&& make -j6 install \
&& rm -rf test AmberTools doc # reduce image size for copying to deployment image
RUN echo "test -f /opt/amber16/amber.sh && source /opt/amber16/amber.sh" >> /root/.bash_profile

11 changes: 9 additions & 2 deletions DockerMakefiles/PythonTools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ notebook:
&& pip install backports.ssl_match_hostname backports.shutil_get_terminal_size


psi4:
build: conda install -c psi4 psi4

pyquante2:
requires:
- python_deploy_base
Expand All @@ -27,13 +30,17 @@ chem_python_conda:
description: All of the external python chemistry libraries in one place
build: |
RUN conda install -qy -c openbabel openbabel=2.4.1
RUN conda install -qy -c omnia biopython openmm parmed pdbfixer

RUN conda install -qy -c omnia \
biopython=1.68 \
openmm=7.1.1 \
parmed=2.7.3 \
pdbfixer=1.4

chem_python_requirements:
requires:
- pyscf
- chem_python_conda
- psi4

chem_python:
requires:
Expand Down
48 changes: 39 additions & 9 deletions DockerMakefiles/README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,51 @@
# Docker images for MDT

The Molecular Design Toolkit uses a lot of functionality from other open source chemistry packages, such as molecular dynamics from OpenMM, Quantum chemistry from OpenMM, etc., etc.
The Molecular Design Toolkit does NOT implement molecular modeling algorithms - it instead provides an intuitive, general interface for running calculations with other open source chemistry packages, such as molecular dynamics from OpenMM, Quantum chemistry from PySCF, etc., etc.

To make these calculations 1) easy, 2) portable, and 3) reproducible, users don't need to compile any of these by themselves. Instead, they're provided as docker images, which (as of this writing) are freely available from a Dockerhub repository (see https://hub.docker.com/r/autodesk/moldesign/). Users probably won't need to pull the images manually - they'll be automatically pulled whenever they're needed.
To make these calculations 1) easy, 2) portable, and 3) reproducible, users don't need to compile any other software. Instead, external open source packages are provided as docker images, which MDT automatically downloads from a public [DockerHub repository](https://hub.docker.com/r/autodesk/moldesign/).

These images are built from definitions contained in the DockerMakefiles in this directory (everythign with a `.yml` extension).

# About the images
MDT relies on two types of dependencies:

`docker-make` is used to build and push the images to the public repositories. The Dockerfiles for all images are defined in the `DockerMake.yml` and its associates YAML sources in this directory.
1. CLI executables (e.g., NWChem, AmberTools utilities, etc.). CLI executables come in their own lightweight images. These images let you run the executables without compiling or installing them yourself.
2. Python libraries (OpenMM, PySCF, etc.). To interact with these, we build a rather large docker image named `moldesign_complete` that includes MDT _and_ all interfaced Python libraries. When MDT needs to use a Python library that isn't installed on your machine, it will run the necessary code in a `moldesign_complete` docker container instead.

If you're just *using* MDT, you'll be relying on the prebuilt MDT images hosted on [DockerHub](https://hub.docker.com/r/autodesk/moldesign/). However, if you are developing MDT, you may need to install docker-make by running `pip install dockermake>=0.5`.

# Development and building images

MDT relies on two types of dependencies:
**NOTE**: If you're just *using* MDT, you don't need to do this - MDT will automatically download the images hosted on [DockerHub](https://hub.docker.com/r/autodesk/moldesign/).

##### Install DockerMake:
We use the `docker-make` command line utility to build and manage MDT's docker images. To install it:
```bash
pip install "DockerMake>=0.5.6"
```

##### Activate MDT "devmode":
To tell MDT to use your own, locally built docker images, run:
```bash
echo "devmode:true" >> ~/.moldesign/moldesign.yml
```

Use the following commands to build and manage the docker images. They should be run in this directory (`[...]/molecular-design-toolkit/DockerMakefiles`)

##### List docker images:
```bash
docker-make --list
```

1. CLI executables (e.g., ambertools utilities like antechamber, tleap). CLI executables come in their own lightweight images.
2. Python libraries (openmm, pyscf, etc.). To interact with these, we build a rather large docker image named "moldesign_complete" that includes both moldesign and all of its dependencies. This allows MDT to call functions from libraries that aren't installed on your machine! Instead, those function calls will be evaluated in the moldesign_complete docker image, and the results will be returned.
##### Build all docker images:
```bash
docker-make --tag dev --all
```

In the future, we plan to isolate the python dependencies into smaller, lightweight installations that don't include MDT. This will require a common data format with translation layers for each dependency.
##### Build the MDT docker image for python 3:
```bash
docker-make --tag dev moldesign_complete
```

##### Build the MDT docker image for python 2:
```bash
docker-make --tag dev moldesign_complete_py2
```
Loading