Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CELF is unusable #6

Open
jtejido opened this issue May 25, 2020 · 0 comments
Open

CELF is unusable #6

jtejido opened this issue May 25, 2020 · 0 comments

Comments

@jtejido
Copy link

jtejido commented May 25, 2020

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant