parallelFit {ternarynet} | R Documentation

## Fit ternary network models using parallel tempering

### Description

Fit ternary network models using parallel tempering

### Usage

        parallelFit(experiment_set,
            max_parents,
            n_cycles,
            n_write,
            T_lo,
            T_hi,
            target_score,
            n_proc,
            logfile,
            n_thread,
            init_parents,
            init_outcomes,
            exchange_interval,
            adjust_move_size_interval,
            max_states,
            callback)

### Arguments

`experiment_set` | data frame containing five columns: i_exp (experiment index), i_node (node index), outcome (-1/0/1), value (cost for that outcome), is_perturbation (0 or 1)
`max_parents` | maximum number of parents allowed for each node
`n_cycles` | maximum number of Monte Carlo cycles
`n_write` | number of times to write output during the run
`T_lo` | T for lowest-temperature replica
`T_hi` | T for highest-temperature replica
`target_score` | target_score - run will terminate if this is reached
`n_proc` | number of replicas
`logfile` | filename for log file
`n_thread` | number of openMP threads to run per process; default=1
`init_parents` | initial parents; randomized if null
`init_outcomes` | initial outcomes; set to '.' if null
`exchange_interval` | steps between exchanges; default=1000
`adjust_move_size_interval` | steps between move size adjustment; default=7001
`max_states` | max states to propagate when testing for repetition; default=10
`callback` | callback function, should take one integer argument (the replica number), used to call set.seed with different seed for each replica

### Value

The return value is a list with an element for each replica. Each element is itself a list of the best unnormalized score, normalized score (unnormalized score divided by product of number of nodes and number of experiments), list of parents for each node, and array describing the transition rule, giving the outcome of a node for each possible configuration of parent nodes.

### Author(s)

Harry A. Stern and Matthew N. McCall

### Examples

    i_exp <- as.integer(c(0,0,0, 0,0,0, 0,0,0, 0,0,0,
                            1,1,1, 1,1,1, 1,1,1, 1,1,1,
                            2,2,2, 2,2,2, 2,2,2, 2,2,2,
                            3,3,3, 3,3,3, 3,3,3, 3,3,3,
                            4,4,4, 4,4,4, 4,4,4, 4,4,4,
                            5,5,5, 5,5,5, 5,5,5, 5,5,5,
                            6,6,6, 6,6,6, 6,6,6, 6,6,6,
                            7,7,7, 7,7,7, 7,7,7, 7,7,7))

    i_node <- as.integer(c(0,0,0, 1,1,1, 2,2,2, 3,3,3,
                            0,0,0, 1,1,1, 2,2,2, 3,3,3,
                            0,0,0, 1,1,1, 2,2,2, 3,3,3,
                            0,0,0, 1,1,1, 2,2,2, 3,3,3,
                            0,0,0, 1,1,1, 2,2,2, 3,3,3,
                            0,0,0, 1,1,1, 2,2,2, 3,3,3,
                            0,0,0, 1,1,1, 2,2,2, 3,3,3,
                            0,0,0, 1,1,1, 2,2,2, 3,3,3))

    outcome <- as.integer(c(-1,0,1, -1,0,1, -1,0,1, -1,0,1,
                            -1,0,1, -1,0,1, -1,0,1, -1,0,1,
                            -1,0,1, -1,0,1, -1,0,1, -1,0,1,
                            -1,0,1, -1,0,1, -1,0,1, -1,0,1,
                            -1,0,1, -1,0,1, -1,0,1, -1,0,1,
                            -1,0,1, -1,0,1, -1,0,1, -1,0,1,
                            -1,0,1, -1,0,1, -1,0,1, -1,0,1,
                            -1,0,1, -1,0,1, -1,0,1, -1,0,1))

    value <- c(0,1,2, 0,1,2, 0,1,2, 0,1,2,
                2,1,0, 0,1,2, 0,1,2, 0,1,2,
                2,1,0, 2,1,0, 0,1,2, 0,1,2,
                2,1,0, 2,1,0, 2,1,0, 0,1,2,
                2,1,0, 2,1,0, 2,1,0, 2,1,0,
                0,1,2, 2,1,0, 2,1,0, 2,1,0,
                0,1,2, 0,1,2, 2,1,0, 2,1,0,
                0,1,2, 0,1,2, 0,1,2, 2,1,0)

    is_perturbation <-
    c(TRUE,TRUE,TRUE,  FALSE,FALSE,FALSE, FALSE,FALSE,FALSE, FALSE,FALSE,FALSE,
        FALSE,FALSE,FALSE,  TRUE,TRUE,TRUE, FALSE,FALSE,FALSE, FALSE,FALSE,FALSE,
        FALSE,FALSE,FALSE,  FALSE,FALSE,FALSE, TRUE,TRUE,TRUE, FALSE,FALSE,FALSE,
        FALSE,FALSE,FALSE,  FALSE,FALSE,FALSE, FALSE,FALSE,FALSE, TRUE,TRUE,TRUE,
        TRUE,TRUE,TRUE,  FALSE,FALSE,FALSE, FALSE,FALSE,FALSE, FALSE,FALSE,FALSE,
        FALSE,FALSE,FALSE,  TRUE,TRUE,TRUE, FALSE,FALSE,FALSE, FALSE,FALSE,FALSE,
        FALSE,FALSE,FALSE,  FALSE,FALSE,FALSE, TRUE,TRUE,TRUE, FALSE,FALSE,FALSE,
        FALSE,FALSE,FALSE,  FALSE,FALSE,FALSE, FALSE,FALSE,FALSE, TRUE,TRUE,TRUE)

    indata <- data.frame(i_exp,i_node,outcome,value,is_perturbation)

    results <- parallelFit(indata,
                            max_parents=1,
                            n_cycles=100000,
                            n_write=10,
                            T_lo=0.001,
                            T_hi=2.0,
                            target_score=0,
                            n_proc=1,
                            logfile='try.log')

    lowest_temp_results <- results[[1]]

    print('Unnormalized score:')
    print(lowest_temp_results$unnormalized_score)

    print('Normalized score:')
    print(lowest_temp_results$normalized_score)

    print('Parents:')
    print(lowest_temp_results$parents)

    print('Outcomes:')
    print(lowest_temp_results$outcomes)

[Package ternarynet version 1.38.0 Index]