{"action":"created","issue":{"url":"https://api.github.com/repos/ParmEd/ParmEd/issues/152","labels_url":"https://api.github.com/repos/ParmEd/ParmEd/issues/152/labels{/name}","comments_url":"https://api.github.com/repos/ParmEd/ParmEd/issues/152/comments","events_url":"https://api.github.com/repos/ParmEd/ParmEd/issues/152/events","html_url":"https://github.com/ParmEd/ParmEd/pull/152","id":78818340,"number":152,"title":"Gromacs support","user":{"login":"swails","id":779022,"avatar_url":"https://avatars.githubusercontent.com/u/779022?v=3","gravatar_id":"","url":"https://api.github.com/users/swails","html_url":"https://github.com/swails","followers_url":"https://api.github.com/users/swails/followers","following_url":"https://api.github.com/users/swails/following{/other_user}","gists_url":"https://api.github.com/users/swails/gists{/gist_id}","starred_url":"https://api.github.com/users/swails/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swails/subscriptions","organizations_url":"https://api.github.com/users/swails/orgs","repos_url":"https://api.github.com/users/swails/repos","events_url":"https://api.github.com/users/swails/events{/privacy}","received_events_url":"https://api.github.com/users/swails/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":89,"created_at":"2015-05-21T04:09:59Z","updated_at":"2015-05-23T18:13:14Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ParmEd/ParmEd/pulls/152","html_url":"https://github.com/ParmEd/ParmEd/pull/152","diff_url":"https://github.com/ParmEd/ParmEd/pull/152.diff","patch_url":"https://github.com/ParmEd/ParmEd/pull/152.patch"},"body":"This PR adds full support for Gromacs topology files and GRO coordinate files to ParmEd.  It also adds a *lot* of other features designed during the process of supporting Gromacs and bug fixes for issues found while supporting Gromacs.  A most likely incomplete list:\r\n\r\n- Parse fully parametrized Gromacs topology files\r\n- Parse GRO files\r\n- Fix issue in which distance-based Amber masks would only work on AmberParm instances (now it works for all Structure instances)\r\n- Fix a buggy `update_dihedral_exclusions` method which is often useful when converting between formats\r\n- Fix some issues in `Structure` copying when splitting dihedrals\r\n- Assign parameters in CHARMM PSF files from a *copy* of the parameter set rather than the parameter set itself. This prevents multiple CHARMM PSF instances from claiming the same parameter type instances, which will cause problems (since they can only be \"bound\" to one list at a time).\r\n- Drastically improves slice performance for `Structure` (about 10x faster)\r\n- Implements split, `+`, and `*` for `Structure` complete with documentation\r\n- Adds Gromacs examples and updates existing examples to make sure it works correctly\r\n- Updates README with contributors\r\n- Update all OpenMM tests to work with the CPU platform, and update tolerances to reduce the occurrence of false failures\r\n\r\nAnything else I forgot?"},"comment":{"url":"https://api.github.com/repos/ParmEd/ParmEd/issues/comments/104933900","html_url":"https://github.com/ParmEd/ParmEd/pull/152#issuecomment-104933900","issue_url":"https://api.github.com/repos/ParmEd/ParmEd/issues/152","id":104933900,"user":{"login":"leeping","id":1441560,"avatar_url":"https://avatars.githubusercontent.com/u/1441560?v=3","gravatar_id":"","url":"https://api.github.com/users/leeping","html_url":"https://github.com/leeping","followers_url":"https://api.github.com/users/leeping/followers","following_url":"https://api.github.com/users/leeping/following{/other_user}","gists_url":"https://api.github.com/users/leeping/gists{/gist_id}","starred_url":"https://api.github.com/users/leeping/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leeping/subscriptions","organizations_url":"https://api.github.com/users/leeping/orgs","repos_url":"https://api.github.com/users/leeping/repos","events_url":"https://api.github.com/users/leeping/events{/privacy}","received_events_url":"https://api.github.com/users/leeping/received_events","type":"User","site_admin":false},"created_at":"2015-05-23T18:13:14Z","updated_at":"2015-05-23T18:13:14Z","body":"Sorry for the flurry of messages, here's the last one.  I propose that we do the following:\r\n\r\n1) In `gromacstop.py` after we read in the bonds, we generate the 1-4 list by walking the bonds.\r\n2) We throw an error if the explicit `[ pairs ]` does not exactly match the 1-4 list that we generate.\r\n3) We create trivial zero parameters for each angle / torsion where there are no parameters provided. \r\n\r\nFrom a design point of view, I don't know where we should do this - either when creating the AMBER / CHARMM Structure object, or when parsing the Gromacs topology.  I would be included to do the latter, because then the rest of ParmEd could safely assume that `Structure` objects have all the torsions defined.\r\n\r\nWhen parsing the Gromacs topology, we could flag the trivial parameters that we create - so that we still write out the same file that we read in."}}