{"action":"created","issue":{"url":"https://api.github.com/repos/igraph/igraph/issues/888","labels_url":"https://api.github.com/repos/igraph/igraph/issues/888/labels{/name}","comments_url":"https://api.github.com/repos/igraph/igraph/issues/888/comments","events_url":"https://api.github.com/repos/igraph/igraph/issues/888/events","html_url":"https://github.com/igraph/igraph/pull/888","id":113156137,"number":888,"title":"Integrate Cliquer library","user":{"login":"szhorvat","id":1212871,"avatar_url":"https://avatars.githubusercontent.com/u/1212871?v=3","gravatar_id":"","url":"https://api.github.com/users/szhorvat","html_url":"https://github.com/szhorvat","followers_url":"https://api.github.com/users/szhorvat/followers","following_url":"https://api.github.com/users/szhorvat/following{/other_user}","gists_url":"https://api.github.com/users/szhorvat/gists{/gist_id}","starred_url":"https://api.github.com/users/szhorvat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/szhorvat/subscriptions","organizations_url":"https://api.github.com/users/szhorvat/orgs","repos_url":"https://api.github.com/users/szhorvat/repos","events_url":"https://api.github.com/users/szhorvat/events{/privacy}","received_events_url":"https://api.github.com/users/szhorvat/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-10-24T12:07:00Z","updated_at":"2015-12-13T23:18:53Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/igraph/igraph/pulls/888","html_url":"https://github.com/igraph/igraph/pull/888","diff_url":"https://github.com/igraph/igraph/pull/888.diff","patch_url":"https://github.com/igraph/igraph/pull/888.patch"},"body":"This patch is not yet complete, but I'm posting early so I can get comments on how to proceed.  In particular, I need comments on the proposed new functions.\r\n\r\nPlan of attack:\r\n\r\n - [x] Add the library files and use in `igraph_cliques`\r\n - [ ] Add Cliquer-specific functionality, namely:\r\n\r\n        igraph_clique_size_hist(igraph_t *, igraph_vector_t *res, igraph_integer_t min_size, ingraph_integer_t max_size); // compute histogram of clique sizes\r\n        igraph_cliques_callback(igraph_t *, igraph_integer_t min_size, igraph_integer_t max_size, igraph_clique_handler_t *handler); // call handler for each clique found\r\n\r\n        igraph_cliques_weighted(igraph_t *, igraph_vector_int_t *vertex_weights, igraph_vector_ptr_t *res, igraph_integer_t min_weight, igraph_integer_t max_weight, igraph_bool_t maximal); // find cliques in given weight range\r\n        igraph_cliques_weighted_callback(igraph_t *, igraph_vector_int_t *vertex_weights, igraph_integer_t min_weight, igraph_integer_t max_weight, igraph_bool_t maximal, igraph_clique_handler_t *handler); // call handler for each clique found, weighted version\r\n        igraph_clique_max_weight(igraph_t *, igraph_vector_int_t *vertex_weights, igraph_integer_t *res); // maximum weight any clique has\r\n\r\n    For the weighted versions, the `maximal` flag controls whether only maximal cliques should be considered. I opted to keep the weighted versions as separate functions, as this functionality is somewhat specialized.  We want the flexibility to swap out the clique finder implementation to something else in the future.  Also note that weights are integers.\r\n\r\n - [x] Make it interruptible, possibly add progress reporting\r\n - [x] Get rid of Unix-specific code in Cliquer\r\n - [ ] Update `igraph_independent_vertex_sets` to use the new implementation\r\n - [ ] Add some tests\r\n\r\nCliquer can find *maximal* cliques, but it is not faster than igraph in that area.  Thus I only exposed maximal clique functionality for the weighted versions."},"comment":{"url":"https://api.github.com/repos/igraph/igraph/issues/comments/164309664","html_url":"https://github.com/igraph/igraph/pull/888#issuecomment-164309664","issue_url":"https://api.github.com/repos/igraph/igraph/issues/888","id":164309664,"user":{"login":"gaborcsardi","id":660288,"avatar_url":"https://avatars.githubusercontent.com/u/660288?v=3","gravatar_id":"","url":"https://api.github.com/users/gaborcsardi","html_url":"https://github.com/gaborcsardi","followers_url":"https://api.github.com/users/gaborcsardi/followers","following_url":"https://api.github.com/users/gaborcsardi/following{/other_user}","gists_url":"https://api.github.com/users/gaborcsardi/gists{/gist_id}","starred_url":"https://api.github.com/users/gaborcsardi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gaborcsardi/subscriptions","organizations_url":"https://api.github.com/users/gaborcsardi/orgs","repos_url":"https://api.github.com/users/gaborcsardi/repos","events_url":"https://api.github.com/users/gaborcsardi/events{/privacy}","received_events_url":"https://api.github.com/users/gaborcsardi/received_events","type":"User","site_admin":false},"created_at":"2015-12-13T23:18:53Z","updated_at":"2015-12-13T23:18:53Z","body":"How about `igraph_largest_weigthed_cliques` and `igraph_weighted_clique_number`? \r\n\r\nAs for functionality, I don't know Cliquer, so I don't know what makes sense.\r\n\r\nIn general it is good to start with sg smaller, and then add stuff in subsequent PRs. I understand that you want to design the API of all functions together, but even then, you don't necessarily need to implement, test, etc. all of them for the first PR. This way you also get feedback earlier."}}