{"action":"reopened","issue":{"url":"https://api.github.com/repos/ParmEd/ParmEd/issues/305","labels_url":"https://api.github.com/repos/ParmEd/ParmEd/issues/305/labels{/name}","comments_url":"https://api.github.com/repos/ParmEd/ParmEd/issues/305/comments","events_url":"https://api.github.com/repos/ParmEd/ParmEd/issues/305/events","html_url":"https://github.com/ParmEd/ParmEd/issues/305","id":97285567,"number":305,"title":"Write CHARMM parameter files and PSFs","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":[{"url":"https://api.github.com/repos/ParmEd/ParmEd/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/ParmEd/ParmEd/labels/Major","name":"Major","color":"e11d21"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-07-26T04:36:26Z","updated_at":"2015-08-13T18:06:55Z","closed_at":null,"body":"This would officially allow ParmEd to interoperate between Amber, Gromacs, and CHARMM (leaving only a few programs completely unsupported, like LAMMPS).\r\n\r\nWhat needs to be done for this:\r\n\r\n- [x] `CharmmParameterSet.from_parameterset` to automatically convert atom type names into upper-case and ensure type name uniqueness\r\n- [x] `CharmmParameterSet.write` to write a parameter file (probably just a stream file)\r\n- [x] ~~IC table processing (? probably doesn't need to be done for this feature) in the residue templates~~\r\n- [x] `CharmmPsfFile.from_structure` to augment the bond, angle, and torsion list from the bond graph to make sure the exclusions and exceptions are correct (same as is done for `AmberParm`), and do the type naming changes described above for `CharmmParameterSet`\r\n- [ ] validate\r\n\r\nEDIT 1:\r\n- [x] `CharmmParameterSet.from_structure` should behave correctly"}}