{"action":"opened","issue":{"url":"https://api.github.com/repos/salilab/imp/issues/959","repository_url":"https://api.github.com/repos/salilab/imp","labels_url":"https://api.github.com/repos/salilab/imp/issues/959/labels{/name}","comments_url":"https://api.github.com/repos/salilab/imp/issues/959/comments","events_url":"https://api.github.com/repos/salilab/imp/issues/959/events","html_url":"https://github.com/salilab/imp/issues/959","id":169500901,"number":959,"title":"Speed up scoring function when used with Monte Carlo","user":{"login":"benmwebb","id":2257210,"avatar_url":"https://avatars.githubusercontent.com/u/2257210?v=3","gravatar_id":"","url":"https://api.github.com/users/benmwebb","html_url":"https://github.com/benmwebb","followers_url":"https://api.github.com/users/benmwebb/followers","following_url":"https://api.github.com/users/benmwebb/following{/other_user}","gists_url":"https://api.github.com/users/benmwebb/gists{/gist_id}","starred_url":"https://api.github.com/users/benmwebb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benmwebb/subscriptions","organizations_url":"https://api.github.com/users/benmwebb/orgs","repos_url":"https://api.github.com/users/benmwebb/repos","events_url":"https://api.github.com/users/benmwebb/events{/privacy}","received_events_url":"https://api.github.com/users/benmwebb/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/salilab/imp/labels/feature%20request","name":"feature request","color":"02e10c"}],"state":"open","locked":false,"assignee":{"login":"benmwebb","id":2257210,"avatar_url":"https://avatars.githubusercontent.com/u/2257210?v=3","gravatar_id":"","url":"https://api.github.com/users/benmwebb","html_url":"https://github.com/benmwebb","followers_url":"https://api.github.com/users/benmwebb/followers","following_url":"https://api.github.com/users/benmwebb/following{/other_user}","gists_url":"https://api.github.com/users/benmwebb/gists{/gist_id}","starred_url":"https://api.github.com/users/benmwebb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benmwebb/subscriptions","organizations_url":"https://api.github.com/users/benmwebb/orgs","repos_url":"https://api.github.com/users/benmwebb/repos","events_url":"https://api.github.com/users/benmwebb/events{/privacy}","received_events_url":"https://api.github.com/users/benmwebb/received_events","type":"User","site_admin":false},"assignees":[{"login":"benmwebb","id":2257210,"avatar_url":"https://avatars.githubusercontent.com/u/2257210?v=3","gravatar_id":"","url":"https://api.github.com/users/benmwebb","html_url":"https://github.com/benmwebb","followers_url":"https://api.github.com/users/benmwebb/followers","following_url":"https://api.github.com/users/benmwebb/following{/other_user}","gists_url":"https://api.github.com/users/benmwebb/gists{/gist_id}","starred_url":"https://api.github.com/users/benmwebb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benmwebb/subscriptions","organizations_url":"https://api.github.com/users/benmwebb/orgs","repos_url":"https://api.github.com/users/benmwebb/repos","events_url":"https://api.github.com/users/benmwebb/events{/privacy}","received_events_url":"https://api.github.com/users/benmwebb/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2016-08-04T23:58:18Z","updated_at":"2016-08-04T23:58:18Z","closed_at":null,"body":"The default IMP scoring function (`RestraintsScoringFunction`) computes the model score by simply evaluating all restraints and returning their sum. This is really inefficient for sampling schemes such as Monte Carlo which rely on making a large number of small perturbations to the system, since many terms in the scoring function are needlessly recomputed at each step.\r\n\r\nThere's an existing mechanism to address this: `IncrementalScoringFunction`. This works by decomposing each Restraint into simpler ones, then building a scoring function for each Particle in the system made up of sums of these simpler restraints. Moving a given Particle then only requires recomputing that Particle's scoring function. However, this approach has drawbacks:\r\n\r\n - Not every restraint can be usefully decomposed.\r\n - `RestraintSet` information is lost.\r\n - The current implementation is designed to function optimally only for moves of a single Particle.\r\n - For a large system, the correspondingly large number of scoring functions may exhaust system memory.\r\n - In @Pellarin's tests with crosslinking restraints, `IncrementalScoringFunction` is actually slower than `RestraintsScoringFunction`.\r\n - The code was never finished and tested, and so is possibly buggy.\r\n\r\nIMP needs a more efficient mechanism for partial scoring function updates in order to make Monte Carlo usable for larger systems."}}
{"actor":{"display_login":"benmwebb"}}