R/uai.R

Defines functions preamble fct_tables read_uai

preamble <- function(l) {
  titulo <- l[1]
  if(titulo != 'MARKOV') stop('não é markov.')
  n_var <- as.numeric(l[2])
  card <- as.numeric(unlist(strsplit(l[3], ' ')))
  names(card) <- sprintf('X%d', seq_along(card))
  n_cliques <- as.numeric(l[4])
  cliques <- lapply(seq_len(n_cliques), function(i) {
    ind <- as.numeric(unlist(strsplit(l[4 + i], ' |\t')))[-1]
    list(var = names(card)[ind + 1])
  })
  return(list(n_var = n_var, cardinalities = card, cliques = cliques))
}

fct_tables <- function(l, pr) {
  n_cliques <- length(pr$cliques)
  cliques <- lapply(seq_len(n_cliques), function(i) {
    ids <- pr$cliques[[i]]
    ns <- lapply(pr$cardinalities[ids$var], function(n) 0:(n-1))
    d <- dplyr::arrange_(expand.grid(ns), .dots = ids$var)
    fac_id <- 4 + n_cliques + i * 3
    # fac_id <- 4 + n_cliques + i * 2 + 1
    d$factor <- as.numeric(unlist(strsplit(l[fac_id], ' ')))
    ids$cpt <- d
    ids
  })
  names(cliques) <- sprintf('clique%d', seq_along(cliques))
  cliques
}

read_uai <- function(arq) {
  lines <- readLines(arq)
  net <- preamble(lines)
  net$cliques <- fct_tables(lines, net)
  net
}
jtrecenti/ea2 documentation built on May 20, 2019, 3:17 a.m.