{"action":"created","issue":{"url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/843","repository_url":"https://api.github.com/repos/MDAnalysis/mdanalysis","labels_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/843/labels{/name}","comments_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/843/comments","events_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/843/events","html_url":"https://github.com/MDAnalysis/mdanalysis/issues/843","id":153227797,"number":843,"title":"Handling umbrella sampling simulations","user":{"login":"fiona-naughton","id":10507372,"avatar_url":"https://avatars.githubusercontent.com/u/10507372?v=3","gravatar_id":"","url":"https://api.github.com/users/fiona-naughton","html_url":"https://github.com/fiona-naughton","followers_url":"https://api.github.com/users/fiona-naughton/followers","following_url":"https://api.github.com/users/fiona-naughton/following{/other_user}","gists_url":"https://api.github.com/users/fiona-naughton/gists{/gist_id}","starred_url":"https://api.github.com/users/fiona-naughton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fiona-naughton/subscriptions","organizations_url":"https://api.github.com/users/fiona-naughton/orgs","repos_url":"https://api.github.com/users/fiona-naughton/repos","events_url":"https://api.github.com/users/fiona-naughton/events{/privacy}","received_events_url":"https://api.github.com/users/fiona-naughton/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/MDAnalysis/mdanalysis/labels/Component-Analysis","name":"Component-Analysis","color":"0088ee"}],"state":"open","locked":false,"assignee":{"login":"fiona-naughton","id":10507372,"avatar_url":"https://avatars.githubusercontent.com/u/10507372?v=3","gravatar_id":"","url":"https://api.github.com/users/fiona-naughton","html_url":"https://github.com/fiona-naughton","followers_url":"https://api.github.com/users/fiona-naughton/followers","following_url":"https://api.github.com/users/fiona-naughton/following{/other_user}","gists_url":"https://api.github.com/users/fiona-naughton/gists{/gist_id}","starred_url":"https://api.github.com/users/fiona-naughton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fiona-naughton/subscriptions","organizations_url":"https://api.github.com/users/fiona-naughton/orgs","repos_url":"https://api.github.com/users/fiona-naughton/repos","events_url":"https://api.github.com/users/fiona-naughton/events{/privacy}","received_events_url":"https://api.github.com/users/fiona-naughton/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/MDAnalysis/mdanalysis/milestones/9","html_url":"https://github.com/MDAnalysis/mdanalysis/milestones/0.16.0","labels_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/milestones/9/labels","id":1716502,"number":9,"title":"0.16.0","description":"","creator":{"login":"richardjgowers","id":9249543,"avatar_url":"https://avatars.githubusercontent.com/u/9249543?v=3","gravatar_id":"","url":"https://api.github.com/users/richardjgowers","html_url":"https://github.com/richardjgowers","followers_url":"https://api.github.com/users/richardjgowers/followers","following_url":"https://api.github.com/users/richardjgowers/following{/other_user}","gists_url":"https://api.github.com/users/richardjgowers/gists{/gist_id}","starred_url":"https://api.github.com/users/richardjgowers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/richardjgowers/subscriptions","organizations_url":"https://api.github.com/users/richardjgowers/orgs","repos_url":"https://api.github.com/users/richardjgowers/repos","events_url":"https://api.github.com/users/richardjgowers/events{/privacy}","received_events_url":"https://api.github.com/users/richardjgowers/received_events","type":"User","site_admin":false},"open_issues":17,"closed_issues":8,"state":"open","created_at":"2016-04-19T08:42:42Z","updated_at":"2016-06-20T05:56:45Z","due_on":null,"closed_at":null},"comments":9,"created_at":"2016-05-05T13:06:49Z","updated_at":"2016-06-22T15:36:54Z","closed_at":null,"body":"As started on the [mailing list](https://groups.google.com/forum/#!topic/mdnalysis-devel/Yw0tJ1njNHs); linked with #785 and #842.\r\n\r\nIt would be nice to have some form of class for dealing with a set of umbrella sampling (or similar) simulations. At the moment this is a very general overview of what I'd like it to do; more specific practicalities (hopefully) to be added!\r\n\r\nIdeally, I'd see an umbrella sampling class as being able to:\r\n\r\n#### Store the trajectory/other relevant data for each window\r\nGiven the list of trajectory and extra pull force/reaction coordinate data files for each window, create a universe for each and add the corresponding extra data using the add_auxiliary method in #785.\r\n\r\nIt’d also need to store temperature and restraining potential (force constant and center, if we assume harmonic potentials) for each window – supplied directly or presumably could parsed in from simulation parameter files. These and the trajectories could be stored in the class as dictionaries, or together in another class, with each window assigned an appropriate name. \r\n\r\n\r\n#### Perform existing analysis across the set of simulations\r\nGiven an existing set of steps to calculate a particular property of interest, it would be nice to be able to pass this to the umbrella class to be run over all the trajectories, then from the resultant time series calculate and return either histograms or averages over each window, along the reaction coordinate, or overall. \r\n\r\nThe umbrella class should also have an ‘equilibration time’ attribute, so the (non-equilibrium) data before this time can be ignored for analysis. \r\n\r\nExample uses of this, taking e.g. the case of investigating binding of two molecules (reaction coordinate is distance between them): \r\n- Obtaining histograms of relative orientation of the two molecules (calculated by measuring appropriate angles) to check sampling along this other degree of freedom\r\n- Taking averages of properties of the environment (e.g. if there's a membrane involved) along the reaction coordinate to see if/how these change with the molecule separation. \r\n- Performing RMSD analysis and pulling out an ‘average’ structure for each window would be less straightforward but also quite useful.\r\n\r\n\r\n#### Run WHAM\r\nCall the WHAM implementation created per #842, passing the auxiliary data/window parameters, and return/store the resultant PMF profile, optionally with estimated error.\r\n\r\nSome related features that would be useful:\r\n- **Check convergence**\r\nThe general practice for deciding the equilibration time and checking convergence of US simulations is to perform WHAM for consecutive blocks of time and check how the free energy profile evolves. \r\nIt would be nice if the umbrella class could simplify this with a method to perform all the WHAM calls on appropriate intervals and plotting, to then manually check convergence and add equilibration time. It would be even nicer if this could be fully automated, though I’m not yet sure how this would work.\r\n\r\n- **Check sampling**\r\nSimilarly, checking for sufficient sampling along the reaction coordinate tends to be a relatively arbitrary check that the histograms from each window look sufficiently overlapped. It’d be nice to have an automated way of doing this, which need only calculate the overlap of reaction-coordinate histograms between adjacent windows and check it’s above a cut-off.\r\n\r\n- **Calculate free energy**\r\nReturn the value of the free energy change along the reaction coordinate (e.g. binding free energy when reaction coordinate is distance between two molecules) from the profile. This might be a bit difficult since there doesn’t seem to be particular agreement on how to get from the PMF profile to a more meaningful e.g. binding free energy – this is sometimes taken as just the well depth of the profile, or sometimes involves integrating the profile with various factors to account for missing degrees of freedom and additional terms to account for restraints, etc.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/comments/227783755","html_url":"https://github.com/MDAnalysis/mdanalysis/issues/843#issuecomment-227783755","issue_url":"https://api.github.com/repos/MDAnalysis/mdanalysis/issues/843","id":227783755,"user":{"login":"fiona-naughton","id":10507372,"avatar_url":"https://avatars.githubusercontent.com/u/10507372?v=3","gravatar_id":"","url":"https://api.github.com/users/fiona-naughton","html_url":"https://github.com/fiona-naughton","followers_url":"https://api.github.com/users/fiona-naughton/followers","following_url":"https://api.github.com/users/fiona-naughton/following{/other_user}","gists_url":"https://api.github.com/users/fiona-naughton/gists{/gist_id}","starred_url":"https://api.github.com/users/fiona-naughton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fiona-naughton/subscriptions","organizations_url":"https://api.github.com/users/fiona-naughton/orgs","repos_url":"https://api.github.com/users/fiona-naughton/repos","events_url":"https://api.github.com/users/fiona-naughton/events{/privacy}","received_events_url":"https://api.github.com/users/fiona-naughton/received_events","type":"User","site_admin":false},"created_at":"2016-06-22T15:36:53Z","updated_at":"2016-06-22T15:36:53Z","body":"> - how do you see the Umbrella object used?\r\n> - does the object brings anything compared to a list of universes?\r\n\r\nI guess I mainly see the Umbrella object allowing to run various analysis without having to pass the list of universes every time, so e.g. `profile = Umbrella.wham([other options])` rather than `wham([list of universes], start_time, [other options]`, and also storing the PMF profile and the 'convergence time' to use for calculating the profile + other analysis.\r\n\r\n> - can I add a window?\r\n\r\nBeing able to add windows later would be a good idea - I guess just something like `us.add_window(name, trajectory, pull_force_file, reaction_coord_value, **kwargs)` with the other parameters (topology, restraint constant, various kwargs, ...) specified if necessary; if they're the same as for other windows, the Umbrella object could also store the default values so we don't need to specify them again.\r\n\r\n> - how do I access a given window?\r\n\r\nIf we give the windows names, or default name them based on e.g. reaction coord value, input order, something like `us.windows['window1']`, etc; though it'd be nice if the windows could be accessed  as e.g. `us.window1`, `us.window2` (similar to the timestep auxiliary values in #868 ).\r\n\r\n> Just to be annoying.. couldn't the windows all have a different number of (solvent) atoms? So instead of topology [trajs] wouldn't a more robust setup be [universes]\r\n\r\nYes - it makes sense to allow setting up from already established universes and/or auxiliary readers (but still allow just passing in the list of files when they're set up the same).\r\n\r\n> a way to build these list from a template would come handy, then.\r\n\r\nI'm not sure what you mean, sorry?"}}
{"actor":{"display_login":"fiona-naughton"}}