mosdef-hub / mbuild Goto Github PK
View Code? Open in Web Editor NEWA hierarchical, component based molecule builder
Home Page: https://mbuild.mosdef.org
License: Other
A hierarchical, component based molecule builder
Home Page: https://mbuild.mosdef.org
License: Other
For example, this topology is not the subclassed version from mbuild.
from mbuild.trajectory import Trajectory
system = Trajectory.load('methyl.pdb')
>>> dir(system.topology)
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_atoms', '_bonds', '_chains', '_numAtoms', '_numResidues', '_residues', '_standardBonds', '_string_summary_basic', 'add_atom', 'add_bond', 'add_chain', 'add_residue', 'atom', 'atoms', 'atoms_by_name', 'bonds', 'chain', 'chains', 'copy', 'create_disulfide_bonds', 'create_standard_bonds', 'from_dataframe', 'from_openmm', 'join', 'n_atoms', 'n_chains', 'n_residues', 'residue', 'residues', 'subset', 'to_bondgraph', 'to_dataframe', 'to_openmm']
Things to investigate:
Currently using py.test
Generate a Compound object based on a SMILES string using pybel.
Tricky part appears to be easily installing pybel...
Something we may or may not want to implement is the ability to label a certain compound as a residue. Generally this would be a compound one or two levels below the top level.
For example in a monolayer, the chains could be tagged as individual residues for easier indexing/grouping/slicing later down the road.
Also 'residue' may not be the most appropriate name since it typically refers to portions of proteins but something along those lines...
https://www.python.org/dev/peps/pep-0440/
Not important right now at all but we should switch at some point. I think for our purposes a simple x.y.0 increment is fine and in between releases, the version is x.y.0.dev0
I.e. from mbuild.tools import sphere_mask, apply_mask
And in there anyone can great whatever nifty thing they come up with such as solvate
The mayavi import and plotting just takes too long and currently doesn't provide any features that VMD doesn't have and/or do much better.
The whole gitflow concept seems really nice but in practice it seems a bit more cumbersome than it is useful. It might just be easier to have a single master branch and periodic tags for release?
Once we have a stable core (perhaps now?), I also think it would make sense to move towards only contributing code via pull requests so we get at least one set of extra eyes on it before merging.
@sallai, thoughts?
Simple convenience functions called revolve_around_x/y/z. Right now the rotate_around_x/y/z functions rotate around the respective axes.
It should be possible to say NeighborsExactly([141, 142, 143], 1)
which is evaluated as "neighbors exactly one atom of type 141, 142 or 143."
Similarly for NeighborsAtLeast
and NeighborsAtMost
.
There may also be a cleaner, more natural syntax to express this but some function like these should exist.
Could be done using a bondgraph search for unconnected parts.
This will let us then read multiple chains into and from Trajectory objects.
Might be achievable via OpenBabel/pybel.
Alternative are hooking up with HOOMD, OpenMM or LAMMPS built as a library (requires quite a bit of set up on the user's end - might be interesting to see if it's possible to get LAMMPS as a library working with conda...)
Generate usable amorphous silica substrate with realistic attachment sites.
Exposing only the functionality we want to end users
http://manual.gromacs.org/online/g_x2top.html provides a functionality similar to our current rule engine although I've never used it and am not sure how well it will work for unequilibrated structures.
For some simple cases, where we've got pretty good initial configurations such as alkane chains, we could run some test cases to compare.
There should be a way to handle LJ units (i.e., not 'real' units).
This needs to be added to the load_hoomdxml, save_hoomdxml, save_lammpsdata, and load_lammpsdata functions.
Look into hooking up with MDTraj
It may not make sense to implement all of these. Will update as I try each of them. Please add any other potentially useful programs to this list (I've ignored programs like pdb2gmx and antechamber since they don't seem to be very generic but if this is of interest we can certainly look into it).
Input parameters:
Multiple ways to specify composition
Multiple arrangements
Orientation and placement of lipids
Spread of lipids
Multiple ways to add solvent
Performance issues:
Solvation (see #19)
Local energy minimization
Input parameters:
Performance issues:
Removing by following references
vs.
Removing by traversing top down
Users should be able to attach molecules to surfaces in easily specifiable patterns.
Basic patterns of interest would be:
See TravisCI issue.
Most of these came from checking out coveralls
Trajectory
Masks
Solvate
Atom
Compound
Bond
Polymer
Tiled Compound
Would be nice to be able to supply one atom in a compound as a reference instead of having to first translate to zero and then moving it to where you want it.
Low priority but a nice thing to have.
This probably makes more sense as an mdtraj file format.
While documenting it's becoming clear that we're mostly but not 100% consistent with how we refer to certain types of objects. I think we should discuss and rigorously define what we mean by each term here and then write it up as part of the intro in the documentation.
Edit this list as you please:
Atom:
Bond:
Compound:
Port:
Part/Component:
It seems like our orderedset implementation might not be fully compatible with Python 3. Running py.test gives a wall of these messages:
Exception ignored in: <bound method OrderedSet.__del__ of OrderedSet()>
Traceback (most recent call last):
File "/Users/CTK/science/python-modules/mbuild/mbuild/orderedset.py", line 45, in __del__
File "/anaconda/envs/mbuild3/lib/python3.4/collections/__init__.py", line 104, in clear
ReferenceError: weakly-referenced object no longer exists
Seems like this is semi-intended behavior but I'm not sure how to fix it yet
http://stackoverflow.com/a/16620987/2597468
It may make sense to host the library in a separate repo, especially if it begins to grow in size.
This shouldn't be too hard to do.
Here's an example project:
https://github.com/ogrisel/python-appveyor-demo
and we can probably borrow a few things from MDTraj:
https://github.com/mdtraj/mdtraj/tree/master/devtools/appveyor-ci
https://github.com/mdtraj/mdtraj/blob/master/appveyor.yml
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.