Giter Club home page Giter Club logo

molecular-design-toolkit's Introduction

PyPI version github release tag Python versions License Codeship Status for Autodesk/molecular-design-toolkit Coverage Status

Try it now: Binder

Molecular Design Toolkit

Molecular modeling without the pain - a Python library offering integrated simulation, visualization, analysis, and cloud computing.

The toolkit aims to lower the barriers between you and your science by integrating mature, open source simulation packages with a readable abstract API, Jupyter notebook visualization, and native cloud computing.

Get started

MDT requires Docker and Python 2.7. (Python 3.5+ is supported in the development version, and will be available in the stable 0.8 release.)

On the command line, run:

pip install moldesign
python -m moldesign intro

Note: depending on how python is installed on your system, some users may need to install the package as root: sudo pip install moldesign.

The best way to get started is to play with the examples that python -m moldesign intro will pull up. See the documentation for complete API docs, development instructions and other installation scenarios.

Code Example

You'll almost always import the package and its units module:

import moldesign as mdt
from moldesign import units as u

Download a protein from the PDB and visualize it in 3D (in a notebook):

protease = mdt.from_pdb('3AID')
protease.draw()

Create a small molecule and relax its geometry:

mol = mdt.from_name('bipyridine')
mol.set_energy_model(mdt.models.RHF(basis='STO-3G'))
min_trajectory = mol.minimize(nsteps=20)
min_trajectory.draw_orbitals()

For in-depth examples, see the built-in example notebooks (run python -m moldesign intro to launch).

Get help

Contributing

See CONTRIBUTING.md for details. Note that the Notebook Molecular Visualization library and PyCloudComputeCannon are also developed under this project's umbrella.

License

See NOTICES for details about incorporated code.

Copyright 2016 Autodesk Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

molecular-design-toolkit's People

Contributors

avirshup avatar dionjwa avatar justinmc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

molecular-design-toolkit's Issues

Change default compute config

  • Compute config should point to free CCC server by default.
  • point to docker.io, not internal registery!
  • Docker servers should include links to setting up docker

EPIC: Visualization / interaction

Features

Description reference status issues
Topology drawing / editing https://web.chemdoodle.com/demos/sketcher/
3D geometry manipulation moldesign.widgets.GeometryBuilder Preliminary implementation
3D geometry measurement VMD, Chimera, 3D CAD tools

low-level functionality

Description reference status issues
More viewer UI events (right-click, drag, etc.)
Resizable / floating / pop-out / sticky viewers #62
Widgets not blocked by cell execution Threading example, jupyter-widgets/ipywidgets#642 #30
Improve trajectory animation performance

Miscellaneous

API to export movie files (mp4, etc.) from trajectory animations
API to render high-quality ray-traced images
API to export STL files for printing
Clickable graphs linked to widgets - #71

pip crashes after successful update: setuptools-12.0.5-py2.7.egg' not found

Crashed at the end of pip install moldesign:

$ pip install -U moldesign && python -m moldesign intro
Collecting moldesign
  Downloading moldesign-0.7.2.tar.gz (19.1MB)
    100% |████████████████████████████████| 19.1MB 66kB/s 
Collecting biopython (from moldesign)
  Downloading biopython-1.67.tar.gz (14.3MB)
    100% |████████████████████████████████| 14.3MB 86kB/s 
Collecting docker-py (from moldesign)
  Downloading docker_py-1.9.0-py2.py3-none-any.whl (42kB)
    100% |████████████████████████████████| 51kB 7.4MB/s 
Collecting fortranformat (from moldesign)
  Downloading fortranformat-0.2.5.tar.gz
Collecting funcsigs (from moldesign)
  Downloading funcsigs-1.0.2-py2.py3-none-any.whl
Collecting ipywidgets>=5.1 (from moldesign)
  Downloading ipywidgets-5.2.2-py2.py3-none-any.whl (43kB)
    100% |████████████████████████████████| 51kB 10.8MB/s 
Collecting ipython>=4.2 (from moldesign)
  Downloading ipython-5.0.0-py2.py3-none-any.whl (743kB)
    100% |████████████████████████████████| 747kB 1.5MB/s 
Collecting markdown2 (from moldesign)
  Downloading markdown2-2.3.1.zip (147kB)
    100% |████████████████████████████████| 153kB 5.9MB/s 
Collecting matplotlib (from moldesign)
  Downloading matplotlib-1.5.1-cp27-none-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (49.7MB)
    100% |████████████████████████████████| 49.7MB 25kB/s 
Collecting nbmolviz>=0.6.5 (from moldesign)
  Downloading nbmolviz-0.6.6.tar.gz (572kB)
    100% |████████████████████████████████| 573kB 2.1MB/s 
Collecting notebook>=4.2 (from moldesign)
  Downloading notebook-4.2.1-py2.py3-none-any.whl (6.7MB)
    100% |████████████████████████████████| 6.7MB 190kB/s 
Collecting numpy (from moldesign)
  Downloading numpy-1.11.1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.9MB)
    100% |████████████████████████████████| 3.9MB 329kB/s 
Collecting pint>=0.7 (from moldesign)
  Downloading Pint-0.7.2.tar.gz (149kB)
    100% |████████████████████████████████| 153kB 6.1MB/s 
Collecting pyccc>=0.6.4 (from moldesign)
  Downloading pyccc-0.6.5.tar.gz (45kB)
    100% |████████████████████████████████| 51kB 9.1MB/s 
Collecting pytest (from moldesign)
  Downloading pytest-2.9.2-py2.py3-none-any.whl (162kB)
    100% |████████████████████████████████| 163kB 6.8MB/s 
Collecting pyyaml (from moldesign)
  Downloading PyYAML-3.11.zip (371kB)
    100% |████████████████████████████████| 378kB 3.0MB/s 
Collecting requests (from moldesign)
  Downloading requests-2.10.0-py2.py3-none-any.whl (506kB)
    100% |████████████████████████████████| 512kB 2.3MB/s 
Collecting scipy (from moldesign)
  Downloading scipy-0.18.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (21.9MB)
    100% |████████████████████████████████| 21.9MB 58kB/s 
Collecting webcolors (from moldesign)
  Downloading webcolors-1.5.tar.gz
Collecting ipaddress>=1.0.16; python_version < "3.3" (from docker-py->moldesign)
  Downloading ipaddress-1.0.16-py27-none-any.whl
Collecting websocket-client>=0.32.0 (from docker-py->moldesign)
  Downloading websocket_client-0.37.0.tar.gz (194kB)
    100% |████████████████████████████████| 194kB 5.8MB/s 
Requirement already up-to-date: six>=1.4.0 in /usr/local/lib/python2.7/site-packages (from docker-py->moldesign)
Collecting backports.ssl-match-hostname>=3.5; python_version < "3.5" (from docker-py->moldesign)
  Downloading backports.ssl_match_hostname-3.5.0.1.tar.gz
Collecting ipykernel>=4.2.2 (from ipywidgets>=5.1->moldesign)
  Downloading ipykernel-4.3.1-py2.py3-none-any.whl (93kB)
    100% |████████████████████████████████| 102kB 9.6MB/s 
Collecting widgetsnbextension>=1.2.6 (from ipywidgets>=5.1->moldesign)
  Downloading widgetsnbextension-1.2.6-py2.py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 911kB/s 
Collecting traitlets>=4.2.1 (from ipywidgets>=5.1->moldesign)
  Downloading traitlets-4.2.2-py2.py3-none-any.whl (68kB)
    100% |████████████████████████████████| 71kB 7.7MB/s 
Collecting pygments (from ipython>=4.2->moldesign)
  Downloading Pygments-2.1.3-py2.py3-none-any.whl (755kB)
    100% |████████████████████████████████| 757kB 1.6MB/s 
Collecting setuptools>=18.5 (from ipython>=4.2->moldesign)
  Downloading setuptools-25.1.1-py2.py3-none-any.whl (442kB)
    100% |████████████████████████████████| 450kB 2.5MB/s 
Collecting backports.shutil-get-terminal-size; python_version == "2.7" (from ipython>=4.2->moldesign)
  Downloading backports.shutil_get_terminal_size-1.0.0-py2.py3-none-any.whl
Collecting pickleshare (from ipython>=4.2->moldesign)
  Downloading pickleshare-0.7.3-py2.py3-none-any.whl
Collecting decorator (from ipython>=4.2->moldesign)
  Downloading decorator-4.0.10-py2.py3-none-any.whl
Collecting simplegeneric>0.8 (from ipython>=4.2->moldesign)
  Downloading simplegeneric-0.8.1.zip
Collecting pexpect; sys_platform != "win32" (from ipython>=4.2->moldesign)
  Downloading pexpect-4.2.0-py2.py3-none-any.whl (56kB)
    100% |████████████████████████████████| 61kB 9.3MB/s 
Collecting pathlib2; python_version == "2.7" or python_version == "3.3" (from ipython>=4.2->moldesign)
  Downloading pathlib2-2.1.0-py2.py3-none-any.whl
Collecting prompt-toolkit<2.0.0,>=1.0.3 (from ipython>=4.2->moldesign)
  Downloading prompt_toolkit-1.0.3-py2-none-any.whl (249kB)
    100% |████████████████████████████████| 256kB 4.5MB/s 
Collecting appnope; sys_platform == "darwin" (from ipython>=4.2->moldesign)
  Downloading appnope-0.1.0-py2.py3-none-any.whl
Collecting pytz (from matplotlib->moldesign)
  Downloading pytz-2016.6.1-py2.py3-none-any.whl (481kB)
    100% |████████████████████████████████| 481kB 2.6MB/s 
Collecting cycler (from matplotlib->moldesign)
  Downloading cycler-0.10.0-py2.py3-none-any.whl
Collecting pyparsing!=2.0.0,!=2.0.4,>=1.5.6 (from matplotlib->moldesign)
  Downloading pyparsing-2.1.5-py2.py3-none-any.whl (42kB)
    100% |████████████████████████████████| 51kB 7.5MB/s 
Collecting python-dateutil (from matplotlib->moldesign)
  Downloading python_dateutil-2.5.3-py2.py3-none-any.whl (201kB)
    100% |████████████████████████████████| 204kB 5.5MB/s 
Collecting uuid (from nbmolviz>=0.6.5->moldesign)
  Downloading uuid-1.30.tar.gz
Requirement already up-to-date: jinja2 in /usr/local/lib/python2.7/site-packages (from notebook>=4.2->moldesign)
Collecting terminado>=0.3.3; sys_platform != "win32" (from notebook>=4.2->moldesign)
  Downloading terminado-0.6.tar.gz
Collecting tornado>=4 (from notebook>=4.2->moldesign)
  Downloading tornado-4.4.1.tar.gz (456kB)
    100% |████████████████████████████████| 460kB 2.5MB/s 
Collecting nbconvert (from notebook>=4.2->moldesign)
  Downloading nbconvert-4.2.0-py2.py3-none-any.whl (319kB)
    100% |████████████████████████████████| 327kB 3.6MB/s 
Collecting jupyter-client (from notebook>=4.2->moldesign)
  Downloading jupyter_client-4.3.0-py2.py3-none-any.whl (76kB)
    100% |████████████████████████████████| 81kB 7.5MB/s 
Collecting nbformat (from notebook>=4.2->moldesign)
  Downloading nbformat-4.0.1-py2.py3-none-any.whl (138kB)
    100% |████████████████████████████████| 143kB 8.0MB/s 
Collecting ipython-genutils (from notebook>=4.2->moldesign)
  Downloading ipython_genutils-0.1.0-py2.py3-none-any.whl
Collecting jupyter-core (from notebook>=4.2->moldesign)
  Downloading jupyter_core-4.1.0-py2.py3-none-any.whl (76kB)
    100% |████████████████████████████████| 81kB 10.2MB/s 
Collecting tblib (from pyccc>=0.6.4->moldesign)
  Downloading tblib-1.3.0-py2.py3-none-any.whl
Collecting py>=1.4.29 (from pytest->moldesign)
  Downloading py-1.4.31-py2.py3-none-any.whl (81kB)
    100% |████████████████████████████████| 92kB 9.9MB/s 
Collecting ptyprocess>=0.5 (from pexpect; sys_platform != "win32"->ipython>=4.2->moldesign)
  Downloading ptyprocess-0.5.1-py2.py3-none-any.whl
Collecting wcwidth (from prompt-toolkit<2.0.0,>=1.0.3->ipython>=4.2->moldesign)
  Downloading wcwidth-0.1.7-py2.py3-none-any.whl
Requirement already up-to-date: MarkupSafe in /usr/local/lib/python2.7/site-packages (from jinja2->notebook>=4.2->moldesign)
Collecting singledispatch (from tornado>=4->notebook>=4.2->moldesign)
  Downloading singledispatch-3.4.0.3-py2.py3-none-any.whl
Collecting certifi (from tornado>=4->notebook>=4.2->moldesign)
  Downloading certifi-2016.2.28-py2.py3-none-any.whl (366kB)
    100% |████████████████████████████████| 368kB 3.3MB/s 
Collecting backports_abc>=0.4 (from tornado>=4->notebook>=4.2->moldesign)
  Downloading backports_abc-0.4-py2.py3-none-any.whl
Collecting entrypoints (from nbconvert->notebook>=4.2->moldesign)
  Downloading entrypoints-0.2.2-py2.py3-none-any.whl
Collecting mistune!=0.6 (from nbconvert->notebook>=4.2->moldesign)
  Downloading mistune-0.7.3-py2.py3-none-any.whl
Collecting pyzmq>=13 (from jupyter-client->notebook>=4.2->moldesign)
  Downloading pyzmq-15.3.0-cp27-cp27m-macosx_10_6_intel.whl (1.0MB)
    100% |████████████████████████████████| 1.0MB 1.3MB/s 
Collecting jsonschema!=2.5.0,>=2.0 (from nbformat->notebook>=4.2->moldesign)
  Downloading jsonschema-2.5.1-py2.py3-none-any.whl
Collecting configparser>=3.5; python_version == "2.7" (from entrypoints->nbconvert->notebook>=4.2->moldesign)
  Downloading configparser-3.5.0.tar.gz
Collecting functools32; python_version == "2.7" (from jsonschema!=2.5.0,>=2.0->nbformat->notebook>=4.2->moldesign)
  Downloading functools32-3.2.3-2.zip
Installing collected packages: biopython, ipaddress, websocket-client, requests, backports.ssl-match-hostname, docker-py, fortranformat, funcsigs, ipython-genutils, decorator, traitlets, pygments, setuptools, backports.shutil-get-terminal-size, pathlib2, pickleshare, simplegeneric, ptyprocess, pexpect, wcwidth, prompt-toolkit, appnope, ipython, pyzmq, jupyter-core, jupyter-client, singledispatch, certifi, backports-abc, tornado, ipykernel, terminado, functools32, jsonschema, nbformat, configparser, entrypoints, mistune, nbconvert, notebook, widgetsnbextension, ipywidgets, markdown2, pytz, cycler, pyparsing, python-dateutil, numpy, matplotlib, uuid, webcolors, nbmolviz, pint, tblib, pyccc, py, pytest, pyyaml, scipy, moldesign
  Found existing installation: biopython 1.62
    Uninstalling biopython-1.62:
      Successfully uninstalled biopython-1.62
  Running setup.py install for biopython ... done
  Running setup.py install for websocket-client ... done
  Found existing installation: requests 2.3.0
    Uninstalling requests-2.3.0:
      Successfully uninstalled requests-2.3.0
  Found existing installation: backports.ssl-match-hostname 3.4.0.2
    Uninstalling backports.ssl-match-hostname-3.4.0.2:
      Successfully uninstalled backports.ssl-match-hostname-3.4.0.2
  Running setup.py install for backports.ssl-match-hostname ... done
  Running setup.py install for fortranformat ... done
  Found existing installation: Pygments 2.1.1
    Uninstalling Pygments-2.1.1:
      Successfully uninstalled Pygments-2.1.1
  Found existing installation: setuptools 12.0.5
    Uninstalling setuptools-12.0.5:
      Successfully uninstalled setuptools-12.0.5
  Running setup.py install for simplegeneric ... done
  Found existing installation: ptyprocess 0.4
    Uninstalling ptyprocess-0.4:
      Successfully uninstalled ptyprocess-0.4
  Found existing installation: ipython 3.1.0
    Uninstalling ipython-3.1.0:
      Successfully uninstalled ipython-3.1.0
  Found existing installation: pyzmq 14.6.0
    Uninstalling pyzmq-14.6.0:
      Successfully uninstalled pyzmq-14.6.0
  Found existing installation: certifi 2015.4.28
    Uninstalling certifi-2015.4.28:
      Successfully uninstalled certifi-2015.4.28
  Found existing installation: tornado 4.1
    Uninstalling tornado-4.1:
      Successfully uninstalled tornado-4.1
  Running setup.py install for tornado ... done
  Found existing installation: terminado 0.5
    Uninstalling terminado-0.5:
      Successfully uninstalled terminado-0.5
  Running setup.py install for terminado ... done
  Running setup.py install for functools32 ... done
  Found existing installation: jsonschema 2.4.0
    Uninstalling jsonschema-2.4.0:
      Successfully uninstalled jsonschema-2.4.0
  Running setup.py install for configparser ... done
  Found existing installation: mistune 0.5.1
    Uninstalling mistune-0.5.1:
      Successfully uninstalled mistune-0.5.1
  Running setup.py install for markdown2 ... done
  Found existing installation: pytz 2015.7
    Uninstalling pytz-2015.7:
      Successfully uninstalled pytz-2015.7
  Found existing installation: pyparsing 2.0.3
    Uninstalling pyparsing-2.0.3:
      Successfully uninstalled pyparsing-2.0.3
  Found existing installation: python-dateutil 2.4.2
    Uninstalling python-dateutil-2.4.2:
      Successfully uninstalled python-dateutil-2.4.2
  Found existing installation: numpy 1.9.2
    Uninstalling numpy-1.9.2:
      Successfully uninstalled numpy-1.9.2
  Found existing installation: matplotlib 1.4.3
    Uninstalling matplotlib-1.4.3:
      Successfully uninstalled matplotlib-1.4.3
  Running setup.py install for uuid ... done
  Running setup.py install for webcolors ... done
  Running setup.py install for nbmolviz ... done
  Running setup.py install for pint ... done
  Running setup.py install for pyccc ... done
  Running setup.py install for pyyaml ... done
  Running setup.py install for moldesign ... done
Successfully installed appnope backports-abc backports.shutil-get-terminal-size backports.ssl-match-hostname biopython certifi configparser cycler decorator docker-py entrypoints fortranformat funcsigs functools32 ipaddress ipykernel ipython ipython-genutils ipywidgets jsonschema jupyter-client jupyter-core markdown2 matplotlib mistune moldesign nbconvert nbformat nbmolviz notebook numpy pathlib2 pexpect pickleshare pint prompt-toolkit ptyprocess py pyccc pygments pyparsing pytest python-dateutil pytz pyyaml pyzmq requests scipy setuptools simplegeneric singledispatch tblib terminado tornado traitlets uuid wcwidth webcolors websocket-client widgetsnbextension
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/site-packages/pip/__init__.py", line 221, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python2.7/site-packages/pip/basecommand.py", line 252, in main
    pip_version_check(session)
  File "/usr/local/lib/python2.7/site-packages/pip/utils/outdated.py", line 102, in pip_version_check
    installed_version = get_installed_version("pip")
  File "/usr/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 848, in get_installed_version
    working_set = pkg_resources.WorkingSet()
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 619, in __init__
    self.add_entry(entry)
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 675, in add_entry
    for dist in find_distributions(entry, True):
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1942, in find_eggs_in_zip
    if metadata.has_metadata('PKG-INFO'):
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1463, in has_metadata
    return self.egg_info and self._has(self._fn(self.egg_info, name))
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1824, in _has
    return zip_path in self.zipinfo or zip_path in self._index()
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1704, in zipinfo
    return self._zip_manifests.load(self.loader.archive)
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1644, in load
    mtime = os.stat(path).st_mtime
OSError: [Errno 2] No such file or directory: '/usr/local/lib/python2.7/site-packages/setuptools-12.0.5-py2.7.egg'

It appears that moldesign has possibly installed successfully even with this error:

$ python -c "import moldesign; moldesign.data.print_environment()"
No config file found at /Users/joseph/.moldesign/moldesign.yml - using defaults
{"env": {"platform": "darwin", "version": "2.7.9 (default, Mar  2 2015, 16:50:16) \n[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.54)]"}, "versions": {"Bio": "1.67", "jupyter": "???", "jupyter_client": "4.3.0", "pyccc": "0.6.5", "jupyter_core": "4.1.0", "openbabel": "FAILED", "matplotlib": "1.5.1", "moldesign": "0.7.2", "pyscf": "FAILED", "simtk": "???", "IPython": "5.0.0", "docker": "1.9.0", "pint": "0.7.2", "numpy": "1.11.1", "ipywidgets": "5.2.2", "nbmolviz": "0.6.6"}}

Setuptools appears to already be installed:

$ pip list | grep setup
setuptools (25.1.1)

Python 2.7.9 is my current installed version, via Homebrew (http://brew.sh).

3D interaction tool planning

One of the biggest "wow" factors from the toolkit is the 3D selection widget - a very simple way to interact with 3D data. I'd like to explore, from a design and software perspective, what other widgets we can offer to help interact with 3D structures

Dev environment guide

Need easy-to-follow instructions for preparing a dev environment.

This would probably include:

  • pull MDT (and possibly nbmolviz and pyccc as well)
  • pip install -e any relevant packages
  • install docker, pull the images.
  • install python dependencies locally?
  • know how to build new docker images

Still a big problem that docker images with MDT code in them will lag behind your dev version. Some sort of solution that lets us mount the code into the containers would be ideal. Possibly need to have a custom "dev" mode in CCC that would let you do this.

We need a better way to do interface development - a JSON interface + sending the code functions every time would probably fix this.

Temperatures too hot for OpenMM langevin

We measure temperatures are 10-20 degrees over the requested value for the OpenMM test cases (see tutorial 2 and example 1). This is likely a problem with our thermometer rather than a problem with the thermostat.

Sander integration

We've already got sander in a docker container with AmberTools - get it running!

DFT with PySCF

mdt.models.PySCF will accept theory='mcscf' or theory='dft'

For DFT, will also need require functional selection.
For MCSCF, will require active space and state averaging selection

This will require:

  • parameter dependencies (only select a functional for DFT; only select an active space for MCSCF)
  • for MCSCF - multistate properties, CI vectors in wavefunction

EDIT: split MCSCF issue into #92

Standardize release process

Create RELEASE.md, which should outline:

  • differences between "dev" branch and "master" branch
  • When to do a point (or point-point) release
  • How to create PR, whether to squash history, etc.
  • How/when to push changes to PyPI and github pages
  • how to push and tag docker images

EPIC: Modeling features

Quantum chemistry

Description Reference implementation Status Issues
DFT PySCF Done - 0.7.3
MP2 PySCF Done - 0.7.3
MCSCF PySCF Done - 0.7.3
density fitting PySCF Need to define semantics
MCSCF Gradients
MP2 Gradients
Coupled cluster
QM/MM NWChem?
Surface hopping ??? have a very old implementation, need to update and merge it

Data structures

Description Reference implementation Status Issues
Forcefields ParmEd and/or InterMol Ready #47 #103
Multistate properties n/a Done - 0.7.3
Method configuration dependencies Done - 0.7.3
Periodic boxes ? needs planning #105

Tools

Description Reference implementation API location Status Issues
Water box PdbFixer add_water_box WIP - possible PdbFixer bugs

PES characterization

Description Reference implementation Status Issues
Intrinsic reaction coordinates NWChem
Nudged elastic band https://bitbucket.org/ebylaska/python-neb
Transition state search NWChem
Constrained minimization scipy / internal Done - 0.7.3
Minimal energy conical intersection search ???
Basin Hopping Wales Group

Free energy

Description Reference implementation Status Issues
MSM PyEMMA
Umbrella sampling / SMD Yank?
WHAM / mBAR pymbar
FEP Yank?
TI / replica exchange

Implementations

Description License Status Issues
ParmEd LGPL WIP #103
NWChem ECL 2.0 Ready
Sander (MD) GPL
Psi4 GPL ready
SQM (GPL) WIP - stalled on getting wfn information #27
TeraChem not free awaiting dev license
GROMACS LGPL

Conda packaging

Need to investigate how many dependencies Conda could take care of.

Add diffusion map example

Notebook should run dynamics and analyze results for a system with interesting collective variables - check literature

No bond order info from prmtop files

interfaces.openmm.amber_to_mol uses prmtop files, which don't contain bond order information, which means we lose bond orders when we use tleap to assign forcefield parameters.

We need to reassign them - currently we use templates to do the best we can, but this will fail for ligands, non-standard residues, etc.

JSON interface

Replace current interface scheme with JSON serialization and deserialization. This should make it much easier to do interface development, especially for python packages, and will make the docker images much more lightweight.

The idea would be that MDT writes a JSON file that describes the molecule and the calculation needed. The "interface routine" then generates an input file (or equivalent) for program being used, and parses its output back into JSON.

This is quite possibly related to the establishment of a new standard, so it does require some thought and consideration, and ideally collaboration with other projects (e.g., MDAnalysis/mdanalysis#643)

image

Streaming job logs

CCC API users can monitor job output as it executes. There is a working API endpoint (or some other mechanism) to an API user to listen for updates.

This would enable, for instance:

  • progress bars during computes
  • simulation status monitoring (total time simulated, simulation temperature, etc.)
  • trajectory streaming (user can monitor 3D trajectory in real time as the simulation progresses)

The actual mechanism for this streaming is up for discussion

EPIC: Python 3 support

This epic collects issues for the transition to single-source python 2/3 support

Issue status issues
migrate pyccc ready #83
document py2/3 dev guidelines
Automated nbmolviz test
migrate nbmolviz
Migrate MDT

Original issue:
Current version of iPython (and therefore jupyter) is the last to support Python 2. Therefore, it's time to start planning to transition to 3.

Big question is whether to use pyfutures, six, two branches, or just a forced migration.

Forced migration is easiest for devs, obviously; probably the best compromise is a python 3 codebase with python 2 support via pyfutures, if possible.

ForceField data structure

Need to store forcefield information in an agnostic format for use with OpenMM, GROMACS, tinker, sander, etc.

Should make it easy to edit forcefields parameters as well. ParmEd/ParmEd will likely play a role - at least using it to parse forcefields, possibly using its data structure internally

Non-covalent QM/MM

Define APIs for QM/MM - need to be able to A) create minimal force field for ligand with only VDW interactions, B) insert point charges in QM calculations, C) configure the QM and MM region boundaries in a sane way.

Tracebacks not printing during remote execution

Traceback (most recent call last):
  File "run_job.py", line 86, in <module>
    cp.dump(exc, excfile)
  File "/usr/lib/python2.7/copy_reg.py", line 70, in _reduce_ex
    raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle StringO objects

EPIC: GPU/Multithread/MPI jobs

This epic collects the tasks for running bigger computes. Three specific targets:

  • Multithreaded execution
  • single-machine MPI (we won't support cross-communication for now)
  • GPU / CUDA computes

Running without Docker

How do we run in a cluster environment where all the dependencies are available? Or users unwilling or unable to use Docker and/or cloud computing?

Conda packaging (#8) is probably a big component of this.

Integrate GROMACS

We should provide additional MD engines - GROMACS is the most obvious choice. May want to wait until it offers an API (which should theoretically be soon). Need to figure out how much of its ecosystem needs to be integrated, and how much can be supported now by AmberTools.

PyCCC jobs not showing output

The display otherwise looks normal, but the output files tab never shows up.

To test/reproduce: use example 2 notebook

Parallelized / long running job example

Come up with a reasonable workflow for parallelizing jobs, saving the job objects, then reloading them later to check/analyze the results.

Leaning towards surface hopping as the use case here.

Installation fails with default mac python distro - need to install with sudo

End of the installation output:

Collecting jsonschema!=2.5.0,>=2.0 (from nbformat->notebook>=4.2->moldesign)
  Downloading jsonschema-2.5.1-py2.py3-none-any.whl
Collecting mistune!=0.6 (from nbconvert->notebook>=4.2->moldesign)
  Downloading mistune-0.7.3-py2.py3-none-any.whl
Collecting entrypoints (from nbconvert->notebook>=4.2->moldesign)
  Downloading entrypoints-0.2.2-py2.py3-none-any.whl
Requirement already up-to-date: MarkupSafe in /Library/Python/2.7/site-packages (from jinja2->notebook>=4.2->moldesign)
Collecting functools32 (from jsonschema!=2.5.0,>=2.0->nbformat->notebook>=4.2->moldesign)
  Downloading functools32-3.2.3-2.zip
Collecting configparser>=3.5 (from entrypoints->nbconvert->notebook>=4.2->moldesign)
  Downloading configparser-3.5.0.tar.gz
Installing collected packages: biopython, backports.ssl-match-hostname, ipaddress, requests, websocket-client, docker-py, fortranformat, funcsigs, pygments, pathlib2, pickleshare, simplegeneric, appnope, backports.shutil-get-terminal-size, decorator, ipython-genutils, traitlets, setuptools, ptyprocess, pexpect, wcwidth, prompt-toolkit, ipython, singledispatch, certifi, backports-abc, tornado, jupyter-core, pyzmq, jupyter-client, ipykernel, functools32, jsonschema, nbformat, mistune, jinja2, configparser, entrypoints, nbconvert, terminado, notebook, widgetsnbextension, ipywidgets, markdown2, numpy, pytz, python-dateutil, cycler, pyparsing, matplotlib, uuid, webcolors, nbmolviz, pint, tblib, pyccc, py, pytest, pyyaml, scipy, moldesign
  Found existing installation: biopython 1.63
    Uninstalling biopython-1.63:
Exception:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/commands/install.py", line 311, in run
    root=options.root_path,
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/req/req_set.py", line 640, in install
    requirement.uninstall(auto_confirm=True)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/req/req_install.py", line 716, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/req/req_uninstall.py", line 125, in remove
    renames(path, new_path)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/utils/__init__.py", line 315, in renames
    shutil.move(old, new)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 300, in move
    rmtree(src)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 247, in rmtree
    rmtree(fullname, ignore_errors, onerror)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 252, in rmtree
    onerror(os.remove, fullname, sys.exc_info())
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 250, in rmtree
    os.remove(fullname)
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/biopython-1.63-py2.7-macosx-10.9-intel.egg/Bio/__init__.py'
You are using pip version 7.1.2, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

This is using the default mac osx python 2.7. It looks like everything in /Library/Python/2.7/site-packages is owned by root.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.