## ----message=FALSE, warning=FALSE---------------------------------------------


library(pfwim)
library(dplyr)
library(igraph)

data("traits", package = "pfwim")
data("feeding_rules", package = "pfwim")


## ----message=FALSE, warning=FALSE---------------------------------------------


metaweb_el <- infer_edgelist(
  data = traits,
  cat_combo_list = feeding_rules,
  col_taxon = "species",
  certainty_req = "all",
  hide_printout = TRUE
)


## ----message=FALSE, warning=FALSE---------------------------------------------

realised_webs <- powerlaw_prey(
  el = metaweb_el,
  n_samp = 5,
  y = 2.5
)


## ----message=FALSE, warning=FALSE---------------------------------------------

length(realised_webs)


## -----------------------------------------------------------------------------

realised_webs[[1]]
realised_webs[[2]]


## -----------------------------------------------------------------------------

library(dplyr)

combined_edges <- dplyr::bind_rows(
  lapply(realised_webs, as.data.frame),
  .id = "web_id"
)

head(combined_edges)


## -----------------------------------------------------------------------------

edge_frequency <- combined_edges %>%
  count(resource, consumer, name = "freq")

edge_frequency


## -----------------------------------------------------------------------------

consensus_el <- edge_frequency %>%
  filter(freq >= 3)


## -----------------------------------------------------------------------------

library(igraph)

consensus_graph <- graph_from_data_frame(
  consensus_el,
  directed = TRUE
)

plot(
  consensus_graph,
  vertex.size = 35,
  vertex.label.cex = 0.7,
  edge.arrow.size = 0.3,
  main = "Consensus Realised Web"
)


## -----------------------------------------------------------------------------

weighted_graph <- graph_from_data_frame(
  edge_frequency,
  directed = TRUE
)

plot(
  weighted_graph,
  vertex.size = 35,
  vertex.label.cex = 0.7,
  edge.width = E(weighted_graph)$freq,
  edge.arrow.size = 0.3,
  main = "Weighted Realised Web"
)


