{"action":"created","issue":{"url":"https://api.github.com/repos/Temigo/whisper/issues/3","labels_url":"https://api.github.com/repos/Temigo/whisper/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/Temigo/whisper/issues/3/comments","events_url":"https://api.github.com/repos/Temigo/whisper/issues/3/events","html_url":"https://github.com/Temigo/whisper/pull/3","id":116590740,"number":3,"title":"Implementation Netsleuth algorithm","user":{"login":"Retzoh","id":14980338,"avatar_url":"https://avatars.githubusercontent.com/u/14980338?v=3","gravatar_id":"","url":"https://api.github.com/users/Retzoh","html_url":"https://github.com/Retzoh","followers_url":"https://api.github.com/users/Retzoh/followers","following_url":"https://api.github.com/users/Retzoh/following{/other_user}","gists_url":"https://api.github.com/users/Retzoh/gists{/gist_id}","starred_url":"https://api.github.com/users/Retzoh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Retzoh/subscriptions","organizations_url":"https://api.github.com/users/Retzoh/orgs","repos_url":"https://api.github.com/users/Retzoh/repos","events_url":"https://api.github.com/users/Retzoh/events{/privacy}","received_events_url":"https://api.github.com/users/Retzoh/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":18,"created_at":"2015-11-12T16:51:14Z","updated_at":"2015-11-13T21:42:28Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Temigo/whisper/pulls/3","html_url":"https://github.com/Temigo/whisper/pull/3","diff_url":"https://github.com/Temigo/whisper/pull/3.diff","patch_url":"https://github.com/Temigo/whisper/pull/3.patch"},"body":"The Netsleuth implementation as presented in the article \"Spotting Culprits in Epidemics, How many and Which ones ?\".\r\n There are 2 troubling things :\r\n\r\nThe first concerns the method to select the number of newly infected nodes among the frontier in the ripple-simulation (line 150) : with the proposed method (n = floor( probability_getting_infected * ( 1 + | frontier | / transmission_probability ) ) ) based on a supposedly scale-invariance through 1 / transmission_probability, the total frontier is systematically selected, so the actual calculation is pointless.\r\n\r\nThe second concerns the heart of the algorithm : the method for the selection of the optimal sources (line 83) seems more than doubtful to me : you should take the node with the highest coordinate in the eigenvector associated to the smallest eigenvalue of the laplacian matrix of the graph. But the eigenvalues are all positive, and 0 is an obvious eigenvalue with [1, ..., 1] for eigenvector so the highest coordinate makes no sense. On the other hand, each eigenvector for the 0 value corresponds to a connected component of the graph. In the article, the method is resumed in a sentence 3 times (IV C), each time differently. I took the second one, the one that seemed most clearly expressed to me. Perhaps there is something I did not understand in the 2 others.\r\n\r\nA technical problem I had is by computing the eigenvectors : the numpy and scipy.linalg methods to compute them make it through numerical approximation and give completely incoherent values for the vector considering the 0-eigenvalue. I found a method from Matrix, with analytical calculation and exact values but the complexity is to check."},"comment":{"url":"https://api.github.com/repos/Temigo/whisper/issues/comments/156565374","html_url":"https://github.com/Temigo/whisper/pull/3#issuecomment-156565374","issue_url":"https://api.github.com/repos/Temigo/whisper/issues/3","id":156565374,"user":{"login":"Retzoh","id":14980338,"avatar_url":"https://avatars.githubusercontent.com/u/14980338?v=3","gravatar_id":"","url":"https://api.github.com/users/Retzoh","html_url":"https://github.com/Retzoh","followers_url":"https://api.github.com/users/Retzoh/followers","following_url":"https://api.github.com/users/Retzoh/following{/other_user}","gists_url":"https://api.github.com/users/Retzoh/gists{/gist_id}","starred_url":"https://api.github.com/users/Retzoh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Retzoh/subscriptions","organizations_url":"https://api.github.com/users/Retzoh/orgs","repos_url":"https://api.github.com/users/Retzoh/repos","events_url":"https://api.github.com/users/Retzoh/events{/privacy}","received_events_url":"https://api.github.com/users/Retzoh/received_events","type":"User","site_admin":false},"created_at":"2015-11-13T21:42:28Z","updated_at":"2015-11-13T21:42:28Z","body":"You also have to consider the fact that my plotting function is taking quite some time. When I am saying that the Matrix method takes too long time, it means that I abort the calculations after some 20 minutes to get back to work."}}