diff --git a/07_final_assignment/.RData b/07_final_assignment/.RData new file mode 100644 index 0000000..e08dca5 --- /dev/null +++ b/07_final_assignment/.RData Binary files differ diff --git a/07_final_assignment/baboonSimulation.R b/07_final_assignment/baboonSimulation.R index 5cc73f4..2741a1c 100644 --- a/07_final_assignment/baboonSimulation.R +++ b/07_final_assignment/baboonSimulation.R @@ -1,9 +1,10 @@ -# install.packages("fields") library(testthat) library(ndl) library(compiler) library(fields) library(parallel) +library(doParallel) +library(foreach) enableJIT(3) monkeydat <- data.frame(Monkey=c("DAN", "ART", "CAU", "DOR", "VIO", "ARI"), @@ -100,43 +101,91 @@ # TODO: Decide what should be expected for empty vectors? }) + +########## DELETE + +st.stimulus = character(trialCount) +st.stimulustype = character(trialCount) +st.block = numeric(trialCount) +st.trialinblock = numeric(trialCount) +st.trial = numeric(trialCount) +st.response = character(trialCount) + +#View(block[curTrialNumInBlock, ]) +#asdfasdf = block[curTrialNumInBlock, ] +#stop("try") +st.stimulus[curTrialNum] = block[curTrialNumInBlock, ][1] +lev = unclass(block[curTrialNumInBlock, ][2]) +st.stimulustype[curTrialNum] = ifelse(lev==1, "LearnedWord", ifelse(lev==2, "NewWord", "Nonword")) +st.block[curTrialNum] = block[curTrialNumInBlock, ][3] +st.trialinblock[curTrialNum] = block[curTrialNumInBlock, ][4] +st.trial[curTrialNum] = block[curTrialNumInBlock, ][5] +st.response[curTrialNum] = block[curTrialNumInBlock, ][6] + +#trials[curTrialNum, ] <- block[curTrialNumInBlock, ] + + +trialsResult = data.frame(cbind(st.stimulus, st.stimulustype, st.block, + st.trialinblock, st.trial, + st.response)) + + +colnames(trialsResult) <- c("Stimulus", "StimulusType", "Block", + "TrialInBlock", "Trial", "Response") + + +#trials <- data.frame(Stimulus=character(trialCount), +# StimulusType=character(trialCount), +# Block=numeric(trialCount), +# TrialInBlock=numeric(trialCount), +# Trial=numeric(trialCount), +# Response=character(trialCount)) + + +###### + + PresentTrials <- function(trialCount, present, data){ - trials <- data.frame() - for ( curTrialNum in 1:trialCount ) { - curBlock <- ( (curTrialNum - 1) %/% BLOCK_SIZE) + 1 - curTrialNumInBlock <- ( (curTrialNum - 1) %% BLOCK_SIZE ) + 1 - isNewBlock <- curTrialNumInBlock == 1 - - if ( isNewBlock ){ - isNotFirstBlock <- curBlock > 1 - if ( isNotFirstBlock ){ - newWordTrials <- block[block$StimulusType == "NewWord",] - if( length(unique(newWordTrials$Stimulus)) == 1 ){ - newWordTrials <- newWordTrials[1,] - wordResponses <- newWordTrials[newWordTrials$Response == "Word",] - wordResponseRate <- nrow(wordResponses) / nrow(newWordTrials) - if ( wordResponseRate >= 0.8 ){ - data$StimulusType[data$Stimulus == newWordTrials$Stimulus] <- "LearnedWord" - } - } - } - block <- CreateBlock(data) - block$Block <- curBlock - block$TrialInBlock <- 1:nrow(block) + + trials = data.frame() + + for ( curTrialNum in 1:trialCount ) { + curBlock <- ( (curTrialNum - 1) %/% BLOCK_SIZE) + 1 + curTrialNumInBlock <- ( (curTrialNum - 1) %% BLOCK_SIZE ) + 1 + isNewBlock <- curTrialNumInBlock == 1 + + if ( isNewBlock ) { + if ( curBlock > 1 ){ + newWordTrials <- block[block$StimulusType == "NewWord", ] + if( length(unique(newWordTrials$Stimulus)) == 1 ){ + newWordTrials <- newWordTrials[1, ] + wordResponses <- newWordTrials[newWordTrials$Response == "Word", ] + wordResponseRate <- nrow(wordResponses) / nrow(newWordTrials) + if ( wordResponseRate >= 0.8 ){ + data$StimulusType[data$Stimulus == newWordTrials$Stimulus] <- "LearnedWord" + } } - - curTrial <- block[curTrialNumInBlock,] - curStim <- curTrial$Stimulus - curStimIsWord <- present(curStim, ifelse(curTrial$StimulusType == "Nonword", "Nonword", "Word")) - - block$Trial[curTrialNumInBlock] <- curTrialNum - block$Response[curTrialNumInBlock] <- curStimIsWord - - trials <- rbind(trials, block[curTrialNumInBlock,]) + } + block <- CreateBlock(data) + block$Block <- curBlock + block$TrialInBlock <- 1:nrow(block) } - rownames(trials) <- 1:trialCount - result <- list(Trials=trials,Stimuli=data) - result + + curTrial <- block[curTrialNumInBlock,] + curStim <- curTrial$Stimulus + curStimIsWord <- present(curStim, ifelse(curTrial$StimulusType == "Nonword", "Nonword", "Word")) + + block$Trial[curTrialNumInBlock] <- curTrialNum + block$Response[curTrialNumInBlock] <- curStimIsWord + + trials <- rbind(trials, block[curTrialNumInBlock, ]) + } + + rownames(trials) <- 1:trialCount + + result <- list(Trials=trials, Stimuli=data) + + return(result) } test_that("PresentTrials", { @@ -258,7 +307,7 @@ pres <- PresentTrials( trialNum, monkey$Learner,data$dat) - pres + return(pres) } analyseSim <- function(pres){ @@ -288,44 +337,102 @@ data <- prepareDat() -n <- 10 -trialCount <- 1000 -for( a in 0:n) { +testfunc = function() { + n <- 10 + trialCount <- 300 + for( a in 0:n) { k <- 1.0 / n * a print(k) s <- simulateAndAnalyse(data, trialCount, alpha=1, beta=k) s[1] <- as.character(k) monkeydat <- rbind(monkeydat, s) + } + return(monkeydat) } -monkeydat -resultdat <- data.frame(alpha=numeric(1), beta=numeric(1), NumTrials=numeric(1), NumWordsLearned=numeric(1), - NumNonwordsPresented=numeric(1), GeneralAccuracy=numeric(1), - WordAccuracy=numeric(1), NonwordAccuracy=numeric(1)) -write.table(resultdat, file="resultdat.txt", col.names=names(resultdat)) +testfunc() -trialCount <- 50000 +first.result = c() +system.time(first.result <- testfunc()) -a.seq = seq(from=0, to=0.25, length.out=10) -b.seq = seq(from=0, to=0.25, length.out=10) -for( a in a.seq) { - for (b in b.seq) { +first.result +# user system elapsed +# 10.05 0.00 10.06 + +# user system elapsed +# 17.39 0.03 17.87 + + +############################################################################################### + +x = matrix(nrow=2, ncol=0) + +for(a in seq(from=0.01, to=0.20, by=0.025)) { + for(b in seq(from=0.01, to=a, by=0.025)) { + x = cbind(x, c(a, b)) + } +} + +l = 12 +st.1 = x[, 1:l] +st.2 = x[, (l+1):(2*l)] +st.3 = x[, (2*l+1):(3*l)] + +get.a = function(i, index) { + if(i==1) return(st.1[1, index]) + if(i==2) return(st.2[1, index]) + if(i==3) return(st.3[1, index]) +} + +get.b = function(i, index) { + if(i==1) return(st.1[2, index]) + if(i==2) return(st.2[2, index]) + if(i==3) return(st.3[2, index]) +} + +do.experiment = function(i) { + filename = paste("resultdat", i, ".txt", sep="") + resultdat <- data.frame(alpha=numeric(1), beta=numeric(1), NumTrials=numeric(1), NumWordsLearned=numeric(1), + NumNonwordsPresented=numeric(1), GeneralAccuracy=numeric(1), + WordAccuracy=numeric(1), NonwordAccuracy=numeric(1)) + write.table(resultdat, file=filename, col.names=names(resultdat)) + + trialCount <- 50000 + + for(index in 1:l) { + a = get.a(i, index) + b = get.b(i, index) + resultdat = read.table(filename) - resultdat = read.table("resultdat.txt") - - print(cat(a, b)) + print(paste("i: ", i, " a: ", a, " b: ", b, sep="" )) s <- simulateAndAnalyse(data, trialCount, alpha=a, beta=b) s[1] <- as.character(trialCount) resultdat <- rbind(resultdat, c(a, b, s[2:length(s)])) - write.table(resultdat, file="resultdat.txt", col.names=names(resultdat)) + write.table(resultdat, file=filename, col.names=names(resultdat)) + } + + resultdat = resultdat[-1, ] #remove 1st row which is just always 0 + + write.table(resultdat, file=filename, col.names=names(resultdat)) + + return(resultdat) } -resultdat = resultdat[-1, ] #remove 1st row which is just always 0 + +num.cores = detectCores() - 1 #don't use all if you want to do anything else +cl <- makeCluster(num.cores) +registerDoParallel(cl) + +foreach(i=1:num.cores) %dopar% do.experiment(i) + + + +########################### View(resultdat) res.matrix = matrix(nrow=length(a.seq), ncol=length(b.seq)) @@ -356,6 +463,16 @@ View(m1) +dat03 = data.frame() +for(i in 0:3) { + d = read.table(paste("resultdat", i, ".txt", sep="")) + d = d[-1, ] + dat03 = rbind(dat03, d) +} +View(dat03) + +write.table(dat03, file="preliminary_results.txt", col.names=names(dat03)) + # EOF \ No newline at end of file diff --git a/07_final_assignment/monkey01.txt b/07_final_assignment/monkey01.txt new file mode 100644 index 0000000..ed50d78 --- /dev/null +++ b/07_final_assignment/monkey01.txt @@ -0,0 +1,18 @@ +"Monkey" "NumTrials" "NumWordsLearned" "NumNonwordsPresented" "GeneralAccuracy" "WordAccuracy" "NonwordAccuracy" +"1" "DAN" "56689" "308" "7832" "79.81" "80.01" "79.61" +"2" "ART" "50985" "125" "7832" "73.41" "74.83" "72" +"3" "CAU" "61142" "112" "7832" "72.43" "73.15" "71.72" +"4" "DOR" "49608" "121" "7832" "73.15" "79.26" "67.06" +"5" "VIO" "43041" "81" "7832" "71.55" "76.75" "66.33" +"6" "ARI" "55407" "87" "7832" "71.14" "75.38" "66.9" +"7" "0" "1000" "2" "484" "0.484" "0.448" "0.52" +"8" "0.1" "1000" "8" "482" "0.999" "0.998" "1" +"9" "0.2" "1000" "9" "483" "1" "1" "1" +"10" "0.3" "1000" "9" "486" "1" "1" "1" +"11" "0.4" "1000" "9" "488" "0.867" "0.794" "0.94" +"12" "0.5" "1000" "6" "478" "0.508" "0.512" "0.504" +"13" "0.6" "1000" "5" "483" "0.52" "0.502" "0.538" +"14" "0.7" "1000" "6" "489" "0.515" "0.504" "0.526" +"15" "0.8" "1000" "6" "478" "0.51" "0.492" "0.528" +"16" "0.9" "1000" "5" "487" "0.506" "0.5" "0.512" +"17" "1" "1000" "4" "486" "0.504" "0.496" "0.512" diff --git a/07_final_assignment/preliminary_results.txt b/07_final_assignment/preliminary_results.txt new file mode 100644 index 0000000..1a19773 --- /dev/null +++ b/07_final_assignment/preliminary_results.txt @@ -0,0 +1,37 @@ +"alpha" "beta" "NumTrials" "NumWordsLearned" "NumNonwordsPresented" "GeneralAccuracy" "WordAccuracy" "NonwordAccuracy" +"2" 0 0 50000 246 7539 0.49816 0.49788 0.49844 +"3" 0 0.0277777777777778 50000 249 7507 0.50252 0.50348 0.50156 +"4" 0 0.0555555555555556 50000 254 7513 0.49934 0.49992 0.49876 +"5" 0 0.0833333333333333 50000 257 7561 0.49952 0.5002 0.49884 +"6" 0 0.111111111111111 50000 238 7481 0.4976 0.49928 0.49592 +"7" 0 0.138888888888889 50000 247 7511 0.49922 0.49828 0.50016 +"8" 0 0.166666666666667 50000 245 7529 0.49584 0.49892 0.49276 +"9" 0 0.194444444444444 50000 258 7495 0.49718 0.50036 0.494 +"10" 0 0.222222222222222 50000 237 7516 0.49704 0.49556 0.49852 +"11" 0 0.25 50000 252 7533 0.5003 0.50024 0.50036 +"12" 0.0277777777777778 0 50000 258 7512 0.50084 0.49832 0.50336 +"13" 0.0277777777777778 0.0277777777777778 50000 307 7507 0.89304 0.91932 0.86676 +"14" 0.0277777777777778 0.0555555555555556 50000 307 7504 0.92238 0.93996 0.9048 +"15" 0.0277777777777778 0.0833333333333333 50000 307 7474 0.94464 0.959 0.93028 +"16" 0.0277777777777778 0.111111111111111 50000 307 7509 0.94342 0.9586 0.92824 +"17" 0.0277777777777778 0.138888888888889 50000 307 7492 0.95592 0.96752 0.94432 +"18" 0.0277777777777778 0.166666666666667 50000 307 7525 0.95826 0.97004 0.94648 +"19" 0.0277777777777778 0.194444444444444 50000 307 7524 0.96136 0.97356 0.94916 +"20" 0.0277777777777778 0.222222222222222 50000 307 7519 0.96428 0.975 0.95356 +"21" 0.0277777777777778 0.25 50000 307 7491 0.96798 0.9796 0.95636 +"22" 0.0555555555555556 0 50000 250 7485 0.50116 0.50108 0.50124 +"23" 0.01 0.01 50000 307 7529 0.8255 0.92116 0.72984 +"31" 0.035 0.01 50000 307 7518 0.85618 0.9088 0.80356 +"41" 0.035 0.035 50000 307 7500 0.91126 0.93668 0.88584 +"51" 0.06 0.01 50000 307 7448 0.88458 0.9022 0.86696 +"61" 0.06 0.035 50000 307 7489 0.9405 0.95708 0.92392 +"24" 0.11 0.06 50000 307 7504 0.9655 0.97776 0.95324 +"32" 0.11 0.085 50000 307 7511 0.97114 0.98244 0.95984 +"42" 0.11 0.11 50000 307 7508 0.97604 0.98584 0.96624 +"52" 0.135 0.01 50000 307 7520 0.92474 0.94632 0.90316 +"62" 0.135 0.035 50000 307 7522 0.96084 0.976 0.94568 +"25" 0.16 0.085 50000 307 7525 0.97652 0.98644 0.9666 +"33" 0.16 0.11 50000 307 7498 0.98204 0.98928 0.9748 +"43" 0.16 0.135 50000 307 7518 0.9832 0.99012 0.97628 +"53" 0.16 0.16 50000 307 7511 0.98534 0.99096 0.97972 +"63" 0.185 0.01 50000 307 7515 0.9304 0.93784 0.92296 diff --git a/07_final_assignment/resultdat0.txt b/07_final_assignment/resultdat0.txt new file mode 100644 index 0000000..b8bbd6c --- /dev/null +++ b/07_final_assignment/resultdat0.txt @@ -0,0 +1,23 @@ +"alpha" "beta" "NumTrials" "NumWordsLearned" "NumNonwordsPresented" "GeneralAccuracy" "WordAccuracy" "NonwordAccuracy" +"1" "0" "0" "0" "0" "0" "0" "0" "0" +"2" "0" "0" "50000" "246" "7539" "0.49816" "0.49788" "0.49844" +"3" "0" "0.0277777777777778" "50000" "249" "7507" "0.50252" "0.50348" "0.50156" +"4" "0" "0.0555555555555556" "50000" "254" "7513" "0.49934" "0.49992" "0.49876" +"5" "0" "0.0833333333333333" "50000" "257" "7561" "0.49952" "0.5002" "0.49884" +"6" "0" "0.111111111111111" "50000" "238" "7481" "0.4976" "0.49928" "0.49592" +"7" "0" "0.138888888888889" "50000" "247" "7511" "0.49922" "0.49828" "0.50016" +"8" "0" "0.166666666666667" "50000" "245" "7529" "0.49584" "0.49892" "0.49276" +"9" "0" "0.194444444444444" "50000" "258" "7495" "0.49718" "0.50036" "0.494" +"10" "0" "0.222222222222222" "50000" "237" "7516" "0.49704" "0.49556" "0.49852" +"11" "0" "0.25" "50000" "252" "7533" "0.5003" "0.50024" "0.50036" +"12" "0.0277777777777778" "0" "50000" "258" "7512" "0.50084" "0.49832" "0.50336" +"13" "0.0277777777777778" "0.0277777777777778" "50000" "307" "7507" "0.89304" "0.91932" "0.86676" +"14" "0.0277777777777778" "0.0555555555555556" "50000" "307" "7504" "0.92238" "0.93996" "0.9048" +"15" "0.0277777777777778" "0.0833333333333333" "50000" "307" "7474" "0.94464" "0.959" "0.93028" +"16" "0.0277777777777778" "0.111111111111111" "50000" "307" "7509" "0.94342" "0.9586" "0.92824" +"17" "0.0277777777777778" "0.138888888888889" "50000" "307" "7492" "0.95592" "0.96752" "0.94432" +"18" "0.0277777777777778" "0.166666666666667" "50000" "307" "7525" "0.95826" "0.97004" "0.94648" +"19" "0.0277777777777778" "0.194444444444444" "50000" "307" "7524" "0.96136" "0.97356" "0.94916" +"20" "0.0277777777777778" "0.222222222222222" "50000" "307" "7519" "0.96428" "0.975" "0.95356" +"21" "0.0277777777777778" "0.25" "50000" "307" "7491" "0.96798" "0.9796" "0.95636" +"22" "0.0555555555555556" "0" "50000" "250" "7485" "0.50116" "0.50108" "0.50124" diff --git a/07_final_assignment/resultdat1.txt b/07_final_assignment/resultdat1.txt new file mode 100644 index 0000000..b4341e9 --- /dev/null +++ b/07_final_assignment/resultdat1.txt @@ -0,0 +1,7 @@ +"alpha" "beta" "NumTrials" "NumWordsLearned" "NumNonwordsPresented" "GeneralAccuracy" "WordAccuracy" "NonwordAccuracy" +"1" "0" "0" "0" "0" "0" "0" "0" "0" +"2" "0.01" "0.01" "50000" "307" "7529" "0.8255" "0.92116" "0.72984" +"3" "0.035" "0.01" "50000" "307" "7518" "0.85618" "0.9088" "0.80356" +"4" "0.035" "0.035" "50000" "307" "7500" "0.91126" "0.93668" "0.88584" +"5" "0.06" "0.01" "50000" "307" "7448" "0.88458" "0.9022" "0.86696" +"6" "0.06" "0.035" "50000" "307" "7489" "0.9405" "0.95708" "0.92392" diff --git a/07_final_assignment/resultdat2.txt b/07_final_assignment/resultdat2.txt new file mode 100644 index 0000000..23c9be5 --- /dev/null +++ b/07_final_assignment/resultdat2.txt @@ -0,0 +1,7 @@ +"alpha" "beta" "NumTrials" "NumWordsLearned" "NumNonwordsPresented" "GeneralAccuracy" "WordAccuracy" "NonwordAccuracy" +"1" "0" "0" "0" "0" "0" "0" "0" "0" +"2" "0.11" "0.06" "50000" "307" "7504" "0.9655" "0.97776" "0.95324" +"3" "0.11" "0.085" "50000" "307" "7511" "0.97114" "0.98244" "0.95984" +"4" "0.11" "0.11" "50000" "307" "7508" "0.97604" "0.98584" "0.96624" +"5" "0.135" "0.01" "50000" "307" "7520" "0.92474" "0.94632" "0.90316" +"6" "0.135" "0.035" "50000" "307" "7522" "0.96084" "0.976" "0.94568" diff --git a/07_final_assignment/resultdat3.txt b/07_final_assignment/resultdat3.txt new file mode 100644 index 0000000..1346a87 --- /dev/null +++ b/07_final_assignment/resultdat3.txt @@ -0,0 +1,7 @@ +"alpha" "beta" "NumTrials" "NumWordsLearned" "NumNonwordsPresented" "GeneralAccuracy" "WordAccuracy" "NonwordAccuracy" +"1" "0" "0" "0" "0" "0" "0" "0" "0" +"2" "0.16" "0.085" "50000" "307" "7525" "0.97652" "0.98644" "0.9666" +"3" "0.16" "0.11" "50000" "307" "7498" "0.98204" "0.98928" "0.9748" +"4" "0.16" "0.135" "50000" "307" "7518" "0.9832" "0.99012" "0.97628" +"5" "0.16" "0.16" "50000" "307" "7511" "0.98534" "0.99096" "0.97972" +"6" "0.185" "0.01" "50000" "307" "7515" "0.9304" "0.93784" "0.92296" diff --git a/07_final_assignment/resultz/0 0NULL.docx b/07_final_assignment/resultz/0 0NULL.docx new file mode 100644 index 0000000..c4cb17a --- /dev/null +++ b/07_final_assignment/resultz/0 0NULL.docx Binary files differ diff --git a/07_final_assignment/resultz/resultdat.txt b/07_final_assignment/resultz/resultdat.txt new file mode 100644 index 0000000..b8bbd6c --- /dev/null +++ b/07_final_assignment/resultz/resultdat.txt @@ -0,0 +1,23 @@ +"alpha" "beta" "NumTrials" "NumWordsLearned" "NumNonwordsPresented" "GeneralAccuracy" "WordAccuracy" "NonwordAccuracy" +"1" "0" "0" "0" "0" "0" "0" "0" "0" +"2" "0" "0" "50000" "246" "7539" "0.49816" "0.49788" "0.49844" +"3" "0" "0.0277777777777778" "50000" "249" "7507" "0.50252" "0.50348" "0.50156" +"4" "0" "0.0555555555555556" "50000" "254" "7513" "0.49934" "0.49992" "0.49876" +"5" "0" "0.0833333333333333" "50000" "257" "7561" "0.49952" "0.5002" "0.49884" +"6" "0" "0.111111111111111" "50000" "238" "7481" "0.4976" "0.49928" "0.49592" +"7" "0" "0.138888888888889" "50000" "247" "7511" "0.49922" "0.49828" "0.50016" +"8" "0" "0.166666666666667" "50000" "245" "7529" "0.49584" "0.49892" "0.49276" +"9" "0" "0.194444444444444" "50000" "258" "7495" "0.49718" "0.50036" "0.494" +"10" "0" "0.222222222222222" "50000" "237" "7516" "0.49704" "0.49556" "0.49852" +"11" "0" "0.25" "50000" "252" "7533" "0.5003" "0.50024" "0.50036" +"12" "0.0277777777777778" "0" "50000" "258" "7512" "0.50084" "0.49832" "0.50336" +"13" "0.0277777777777778" "0.0277777777777778" "50000" "307" "7507" "0.89304" "0.91932" "0.86676" +"14" "0.0277777777777778" "0.0555555555555556" "50000" "307" "7504" "0.92238" "0.93996" "0.9048" +"15" "0.0277777777777778" "0.0833333333333333" "50000" "307" "7474" "0.94464" "0.959" "0.93028" +"16" "0.0277777777777778" "0.111111111111111" "50000" "307" "7509" "0.94342" "0.9586" "0.92824" +"17" "0.0277777777777778" "0.138888888888889" "50000" "307" "7492" "0.95592" "0.96752" "0.94432" +"18" "0.0277777777777778" "0.166666666666667" "50000" "307" "7525" "0.95826" "0.97004" "0.94648" +"19" "0.0277777777777778" "0.194444444444444" "50000" "307" "7524" "0.96136" "0.97356" "0.94916" +"20" "0.0277777777777778" "0.222222222222222" "50000" "307" "7519" "0.96428" "0.975" "0.95356" +"21" "0.0277777777777778" "0.25" "50000" "307" "7491" "0.96798" "0.9796" "0.95636" +"22" "0.0555555555555556" "0" "50000" "250" "7485" "0.50116" "0.50108" "0.50124"