tests/reconcile.activityTests.R

#  Part of the statnet package, http://statnetproject.org
#
#  This software is distributed under the GPL-3 license.  It is free,
#  open source, and has the attribution requirements (GPL Section 7) in
#    http://statnetproject.org/attribution
#
#  Copyright 2013 the statnet development team
######################################################################
# tests for the reconcile activity functions
require(networkDynamic)
require(testthat)

# ---- reconcile.vertex.activity tests ------------
# test when called with wrong object
expect_error(reconcile.vertex.activity("net"), 'only be applied to networkDynamic objects')

# test with isolate and inactive edge
nd<-network.initialize(6)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
nd2<-reconcile.vertex.activity(nd,mode='match')
spls<-get.vertex.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(-Inf, 1,1,1,5,-Inf),info='test reconcile.vertex.activity w isolate and inactive')
expect_equal(spls$terminus,c(Inf,3,3,3,7,Inf))
expect_equal(spls$vertex.id,c(1,2,3,4,4,5))

# test modifiy in place
nd<-network.initialize(6)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
reconcile.vertex.activity(nd,mode='match')
spls<-get.vertex.activity(nd,as.spellList=TRUE)
expect_equal(spls$onset,c(-Inf, 1,1,1,5,-Inf),info='reconcile.vertex.activity modify in place')
expect_equal(spls$terminus,c(Inf,3,3,3,7,Inf),info='reconcile.vertex.activity modify in place')
expect_equal(spls$vertex.id,c(1,2,3,4,4,5),info='reconcile.vertex.activity modify in place')

# test with edge active default FALSE
nd<-network.initialize(6)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
nd2<-reconcile.vertex.activity(nd, mode='match',edge.active.default=FALSE)
spls<-get.vertex.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(1, 5, 1, 1, 1, 5))
expect_equal(spls$terminus,c(3, 7, 3, 3, 3, 7))
expect_equal(spls$vertex.id,c(1, 1, 2, 3, 4, 4))

# test with bad mode
expect_error(reconcile.vertex.activity(nd,mode='foobar'),"'arg' should be one of")

# ---- reconcile.vertex.activity tests (expand.to.edges mode) ------------

nd<-network.initialize(6)
deactivate.vertices(nd, onset=-Inf, terminus=Inf)
activate.vertices(nd, v=2, onset=2, terminus=5)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
nd2<-reconcile.vertex.activity(nd, mode='expand.to.edges')
spls<-get.vertex.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(-Inf, 1,1,1,5,-Inf))
expect_equal(spls$terminus,c(Inf,5,3,3,7,Inf))
expect_equal(spls$vertex.id,c(1,2,3,4,4,5))

nd<-network.initialize(6)
deactivate.vertices(nd, onset=-Inf, terminus=Inf)
activate.vertices(nd, v=2, onset=5, terminus=7)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
nd2<-reconcile.vertex.activity(nd, mode='expand.to.edges')
spls<-get.vertex.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(-Inf, 1,5,1,1,5,-Inf))
expect_equal(spls$terminus,c(Inf,3,7,3,3,7,Inf))
expect_equal(spls$vertex.id,c(1,2,2,3,4,4,5))

# test active default

nd<-network.initialize(3,directed=FALSE)
activate.vertices(nd,at=0)
nd[,]<-1
reconcile.vertex.activity(nd,mode='expand',edge.active.default=TRUE)
spls<-get.vertex.activity(nd,as.spellList=TRUE)
expect_equal(spls$onset,c(-Inf,-Inf,-Inf))
expect_equal(spls$terminus,c(Inf,Inf,Inf))

nd<-network.initialize(3,directed=FALSE)
activate.vertices(nd,at=0)
nd[,]<-1
reconcile.vertex.activity(nd,mode='expand',edge.active.default=FALSE)
spls<-get.vertex.activity(nd,as.spellList=TRUE)
expect_equal(spls$onset,c(0,0,0))
expect_equal(spls$terminus,c(0,0,0))


# ---- reconcile.vertex.activity tests (encompass.edges mode) ------------

nd<-network.initialize(3)
activate.vertices(nd,v=1,onset=0,terminus=2)
activate.vertices(nd,v=1,onset=3,terminus=4)
add.edges.active(nd,tail=1,head=2,onset=-1,terminus=5)
reconcile.vertex.activity(nd, mode='encompass.edges')


nd<-network.initialize(6)
deactivate.vertices(nd, onset=-Inf, terminus=Inf)
activate.vertices(nd, v=2, onset=2, terminus=5)
activate.vertices(nd, v=2, onset=8, terminus=10)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
nd2<-reconcile.vertex.activity(nd, mode='encompass.edges')
spls<-get.vertex.activity(nd2,as.spellList=TRUE)
# combines the spells for vertex 4
expect_equal(spls$onset,c(-Inf, 1,1,1,-Inf))
expect_equal(spls$terminus,c(Inf,3,3,7,Inf))
expect_equal(spls$vertex.id,c(1,2,3,4,5))

# testing 0-duration spells
nd<-network.initialize(6)
deactivate.vertices(nd, onset=-Inf, terminus=Inf)
activate.vertices(nd, v=2, onset=2, terminus=5)
add.edges.active(nd,tail=1:2,head=2:3,onset=1,terminus=3)

add.edges.active(nd,tail=4,head=1,onset=9,terminus=9)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
activate.edges(nd, e=2, at=3)
#get.edge.activity(nd, as.spell=T)
#get.vertex.activity(nd, as.spell=T)
nd2<-reconcile.vertex.activity(nd, mode='encompass.edges')
spls<-get.vertex.activity(nd2,as.spellList=TRUE)
# combines the spells for vertex 4
expect_equal(spls$onset,c(-Inf, 1,1,9,-Inf))
expect_equal(spls$terminus,c(Inf,4,4,9,Inf))
expect_equal(spls$vertex.id,c(1,2,3,4,5))


# ---- reconcile.edge.activity tests (reduce.to.vertices mode) ------------
nd<- network.initialize(6)
activate.vertices(nd, onset=1, terminus=2)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
#get.edge.activity(nd, as.spell=T)
#get.vertex.activity(nd, as.spell=T)
nd2<-reconcile.edge.activity(nd, mode='reduce.to.vertices')
spls<-get.edge.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(1,1,1,1))
expect_equal(spls$terminus,c(2,2,2,2))
expect_equal(spls$edge.id,c(1,2,3,6))

# censored spells
nd<- network.initialize(6)
activate.vertices(nd, onset=2, terminus=Inf)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
#get.edge.activity(nd, as.spell=T)
#get.vertex.activity(nd, as.spell=T)
nd2<-reconcile.edge.activity(nd, mode='reduce.to.vertices')
spls<-get.edge.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(2,2,2,5,2))
expect_equal(spls$terminus,c(3,3,3,7,Inf))
expect_equal(spls$edge.id,c(1,2,3,4,6))

# 0-duration spells
nd<- network.initialize(6)
activate.vertices(nd, onset=1, terminus=2)
activate.vertices(nd, at=6)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
#get.edge.activity(nd, as.spell=T)
#get.vertex.activity(nd, as.spell=T)
nd2<-reconcile.edge.activity(nd, mode='reduce.to.vertices')
spls<-get.edge.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(1,1,1,6,1,6))
expect_equal(spls$terminus,c(2,2,2,6,2,6))
expect_equal(spls$edge.id,c(1,2,3,4,6,6))


# ---- reconcile.edge.activity tests (match.to.vertices mode) ------------
nd<- network.initialize(6)
activate.vertices(nd, onset=1, terminus=2)
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
deactivate.edges(nd, onset=-Inf, terminus=Inf, e=get.edgeIDs(nd, v=1, alter=6))
add.edge(nd,tail=1, head=5)  # default activated
get.edge.activity(nd, as.spell=T)
get.vertex.activity(nd, as.spell=T)
nd2<-reconcile.edge.activity(nd, mode='match.to.vertices')
spls<-get.edge.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(1,1,1,1,1,1))
expect_equal(spls$terminus,c(2,2,2,2,2,2))
expect_equal(spls$edge.id,c(1,2,3,4,5,6))

# 0-duration spells
nd<- network.initialize(6)
activate.vertices(nd, onset=1, terminus=2, v=c(1,2,3))
deactivate.vertices(nd, v=4, onset=-Inf, terminus=Inf)
activate.vertices(nd, at=6, v=c(1,6))
add.edges.active(nd,tail=1:3,head=2:4,onset=1,terminus=3)
add.edges.active(nd,tail=4,head=1,onset=5,terminus=7)
add.edge(nd,tail=1,head=6)
add.edge(nd,tail=1, head=5)  # default activated
#get.edge.activity(nd, as.spell=T)
#get.vertex.activity(nd, as.spell=T)
nd2<-reconcile.edge.activity(nd, mode='match.to.vertices')
spls<-get.edge.activity(nd2,as.spellList=TRUE)
expect_equal(spls$onset,c(1,1,6,1,6))
expect_equal(spls$terminus,c(2,2,6,2,6))
expect_equal(spls$edge.id,c(1,2,5,6,6))

# test error from bad mode
expect_error(nd2<-reconcile.edge.activity(nd, mode='destroy.everything!'),"'arg' should be one of")

Try the networkDynamic package in your browser

Any scripts or data that you put into this service are public.

networkDynamic documentation built on Feb. 16, 2023, 10:08 p.m.