{"action":"created","issue":{"url":"https://api.github.com/repos/msmbuilder/msmbuilder/issues/704","labels_url":"https://api.github.com/repos/msmbuilder/msmbuilder/issues/704/labels{/name}","comments_url":"https://api.github.com/repos/msmbuilder/msmbuilder/issues/704/comments","events_url":"https://api.github.com/repos/msmbuilder/msmbuilder/issues/704/events","html_url":"https://github.com/msmbuilder/msmbuilder/pull/704","id":126981524,"number":704,"title":"Rewrite SparseTICA using new algorithm","user":{"login":"rmcgibbo","id":641278,"avatar_url":"https://avatars.githubusercontent.com/u/641278?v=3","gravatar_id":"","url":"https://api.github.com/users/rmcgibbo","html_url":"https://github.com/rmcgibbo","followers_url":"https://api.github.com/users/rmcgibbo/followers","following_url":"https://api.github.com/users/rmcgibbo/following{/other_user}","gists_url":"https://api.github.com/users/rmcgibbo/gists{/gist_id}","starred_url":"https://api.github.com/users/rmcgibbo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmcgibbo/subscriptions","organizations_url":"https://api.github.com/users/rmcgibbo/orgs","repos_url":"https://api.github.com/users/rmcgibbo/repos","events_url":"https://api.github.com/users/rmcgibbo/events{/privacy}","received_events_url":"https://api.github.com/users/rmcgibbo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-01-15T23:47:06Z","updated_at":"2016-01-15T23:55:39Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/msmbuilder/msmbuilder/pulls/704","html_url":"https://github.com/msmbuilder/msmbuilder/pull/704","diff_url":"https://github.com/msmbuilder/msmbuilder/pull/704.diff","patch_url":"https://github.com/msmbuilder/msmbuilder/pull/704.patch"},"body":"- This PR adds a new solver for SparseTICA, which used to use cvxpy and didn't really work (it was always very experimental). The new solver uses ADMM and is much much faster and more robust. I have a manuscript in preparation describing this method, so it's probably not going to be clear from just looking at the code how everything works.\r\n- It also changes the keyword arguments a little bit for `SparseTICA` and `tICA`. In particular, I've removed the `gamma` keyword argument and replaced it with a keyword argument called `shrinkage`. It does the same thing but has slightly different semantics -- I've also changed the default value to `None`. This does break the API.\r\n- When the default, `None`, is used, the regularization strength is estimated analytically using the \"Rao-Blackwellized Ledoit-Wolf\" estimator from \"Chen, Wiesel, and Hero III. ICASSP (2009)\". I tried many of the analytic shrinkage covariance estimators from the literature (see library and experiments: https://pythonhosted.org/covar/). The RBLW estimator is the best, in my opinion, because it gives very good results and it is not any more expensive, unlike the LW estimator which is much more expensive to compute for tICA because it requires computing and storing some 4th moments, IIRC."},"comment":{"url":"https://api.github.com/repos/msmbuilder/msmbuilder/issues/comments/172129217","html_url":"https://github.com/msmbuilder/msmbuilder/pull/704#issuecomment-172129217","issue_url":"https://api.github.com/repos/msmbuilder/msmbuilder/issues/704","id":172129217,"user":{"login":"rmcgibbo","id":641278,"avatar_url":"https://avatars.githubusercontent.com/u/641278?v=3","gravatar_id":"","url":"https://api.github.com/users/rmcgibbo","html_url":"https://github.com/rmcgibbo","followers_url":"https://api.github.com/users/rmcgibbo/followers","following_url":"https://api.github.com/users/rmcgibbo/following{/other_user}","gists_url":"https://api.github.com/users/rmcgibbo/gists{/gist_id}","starred_url":"https://api.github.com/users/rmcgibbo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmcgibbo/subscriptions","organizations_url":"https://api.github.com/users/rmcgibbo/orgs","repos_url":"https://api.github.com/users/rmcgibbo/repos","events_url":"https://api.github.com/users/rmcgibbo/events{/privacy}","received_events_url":"https://api.github.com/users/rmcgibbo/received_events","type":"User","site_admin":false},"created_at":"2016-01-15T23:55:39Z","updated_at":"2016-01-15T23:55:39Z","body":"All code review is extremely welcome. I can add more comments and docstrings to describe what each function is doing, etc."}}