-
Notifications
You must be signed in to change notification settings - Fork 6
CELF is unusable #6
Description
Good day,
I'm trying to use the CELF model for the common arxiv HEP_IC dataset (and even with the sample dataset in test folder) and getting some errors (IC diffusion):
$ ./oim --real /graphs/hep_IC.inf 3 10000 100 1
oim: /usr/include/boost/heap/fibonacci_heap.hpp:333: const value_type& boost::heap::fibonacci_heap<T, A0, A1, A2, A3, A4>::top() const [with T = CELFEvaluator::celf_node_type; A0 = boost::parameter::void_; A1 = boost::parameter::void_; A2 = boost::parameter::void_; A3 = boost::parameter::void_; A4 = boost::parameter::void_; boost::heap::fibonacci_heap<T, A0, A1, A2, A3, A4>::value_type = CELFEvaluator::celf_node_type]: Assertion !empty()' failed.`
Just wondering if the sample() method in SpreadSampler is still being used, due to perform_sample() being depreciated:
/**
[depreciated] Performs `n_samples` samples starting from `seeds`.
*/
double perform_sample(const Graph& graph,
const std::unordered_set<unode_int>& activated,
const std::unordered_set<unode_int>& seeds,
unode_int n_samples, bool trial, bool inv=false)
It also appears that CELF isn't usable in an LT diffusion setting because perform_sample() eventually reaches sample_outgoing_edges() which doesn't accept LT model.
void sample_outgoing_edges(const Graph& graph, unode_int node,
std::queue<unode_int>& queue,
std::unordered_set<unode_int>& visited,
bool trial, bool inv=false) {
if (model_ == 0) { // Linear threshold model, this method isn't implemented for LT
std::cerr << "Error: this part is only run by IC model." << std::endl;
exit(1);
} else if (model_ == 1) { // Independent Cascade model
....
....
}
Thanks in advance.