### This file is mostly to test connections to the database and make ### sure we can read and write objects. library(jsonlite) library(mongolite) pwds <- do.call(rbind,read_json("~/.Proc4.json")) cred <- pwds[pwds[,"user"]=="EAP",] ear.es <- mongo("EvidenceSets","EARecords", url=paste("mongodb://", cred$user,":", cred$pwd, "@127.0.0.1:27017/EARecords",sep=""), verbose=TRUE) es1 <- EvidenceSet("Phred","Task1",obs=list(isCorrect=TRUE,selection="B")) es1@seqno <- 1L es2 <- EvidenceSet("Phred","Task2",obs=list(isCorrect=FALSE,selection="D")) es2@seqno <- 2L es3 <- EvidenceSet("Fred","Task1",obs=list(isCorrect=FALSE,selection="C")) es3@seqno <- 1L ## Saving it back recovers the _id es1 <- saveES(es1,ear.es) es2 <- saveES(es2,ear.es) es3 <- saveES(es3,ear.es) ## Test of retrieve by ID es1a <- getESbyID(es1@"_id",ear.es) stopifnot(all.equal(details(es1a),details(es1))) ## query string examples cat(buildESquery("Phred"),"\n") cat(buildESquery("Phred","Task1"),"\n") cat(buildESquery("Phred",c("Task1","Task2")),"\n") cat(buildESquery(c("Phred","Fred"),c("Task1","Task2")),"\n") cat(buildESquery("Phred",mess="Accumulate"),"\n") cat(buildESquery("Phred",mess=c("Accumulate","Retract")),"\n") cat(buildESquery("Phred",timestamp=Sys.time()),"\n") cat(buildESquery("Phred",after=Sys.time()),"\n") cat(buildESquery("Phred",before=Sys.time()),"\n") cat(buildESquery("Phred",after=Sys.time()-as.difftime(1,units="hours"), before=Sys.time()),"\n") cat(buildESquery("Phred",seqno=2),"\n") cat(buildESquery("Phred",seqno=2:3),"\n") cat(buildESquery("Phred",before=3),"\n") cat(buildESquery("Phred",after=2),"\n") cat(buildESquery("Phred",before=3,after=2),"\n") es2c <- getESone(buildESquery("Phred"),ear.es) es3c <- getESone(buildESquery("Fred"),ear.es) Phred.es <- getESmany(buildESquery("Phred"),col=ear.es) Fred.es <- getESmany(buildESquery("Fred"),col=ear.es) Phred.esr <- getESmany(buildESquery("Phred"),col=ear.es,sort=1) ### Need test of save/replace mode. ################ ## Student Records ear.sr <- mongo("StudentRecords","EARecords", url=paste("mongodb://", cred$user,":", cred$pwd, "@127.0.0.1:27017/EARecords",sep=""), verbose=TRUE) MySession <- NeticaSession(SessionName="MySession") startSession(MySession) emsmMotif <-ReadNetworks(file.path(library(help="RNetica")$path, "sampleNets","EMSMMotif.dne"), session=MySession) NetworkAllNodes(emsmMotif) CompileNetwork(emsmMotif) Bobby_sm <- CopyNetworks(emsmMotif,"Bobby_sm","no_visual") sr0 <- StudentRecord(app="emsm",uid="Bobby",context="*baseline*", sm = Bobby_sm) NetworkAllNodes(Bobby_sm) CompileNetwork(Bobby_sm) sr0@stats <- list(Skill1=NodeBeliefs(Bobby_sm$nodes$Skill1), Skill2=NodeBeliefs(Bobby_sm$nodes$Skill2), Skill3=NodeBeliefs(Bobby_sm$nodes$Skill3)) sr0 <- saveSR(sr0,ear.sr) sr0a <- getSRbyID(sr0@"_id",ear.sr) sr0@seqno <- 0L sr0 <- saveSR(sr0,ear.sr) sr0a <- getSRbyID(sr0@"_id",ear.sr) stopifnot(sr0a@seqno==0L) eb1 <- EvidenceSet(app="emsm",uid="Bobby",context="Task1a", mess="New Observables", obs=list(Obs1a1="Right",Obs1a2="Wrong")) eb1@seqno <- 1L eb1 <- saveES(eb1,ear.es) sr1 <- StudentRecord(app="emsm",uid="Bobby",context="Task1", sm = sr1@sm,evidence=list(eb1)) sr1@prev <- sr0 sr1@seqno <- 1L NetworkAllNodes(sr1@sm) CompileNetwork(sr1@sm) NodeFinding(sr1@sm$nodes$Obs1a1) <- "Right" NodeFinding(sr1@sm$nodes$Obs1a2) <- "Wrong" sr1@stats <- list(Skill1=NodeBeliefs(Bobby_sm$nodes$Skill1), Skill2=NodeBeliefs(Bobby_sm$nodes$Skill2), Skill3=NodeBeliefs(Bobby_sm$nodes$Skill3)) sr1 <- saveSR(sr1,ear.sr) sr1a <- getSRbyID(sr1@"_id",ear.sr) NetworkAllNodes(sr1a@sm) CompileNetwork(sr1a@sm) stopifnot(all(abs(NodeBeliefs(sm(sr1a)$nodes$Skill1) - stats(sr1a)$Skill1) < .0001)) ## Check to make sure we can go backwards. sr0b <- getSRbyID(sr0@"_id",ear.sr) NetworkAllNodes(sm(sr0b)) CompileNetwork(sm(sr0b)) stopifnot(all(abs(NodeBeliefs(sm(sr0b)$nodes$Skill1) - stats(sr0b)$Skill1) < .0001)) ## Check to make sure we can go forwards. sr1b <- getSRbyID(sr1@"_id",ear.sr) NetworkAllNodes(sm(sr1b)) CompileNetwork(sm(sr1b)) stopifnot(all(abs(NodeBeliefs(sm(sr1b)$nodes$Skill1) - stats(sr1b)$Skill1) < .0001))