Question 1

library("ggplot2")
library("reshape2")
library("stringi")
data=data <- read.csv("exp.csv")
data$line = stri_sub(data$Well, 1, 1)
data$column = strtoi(stri_sub(data$Well, 2, -1))
dat = subset(data, line=='A')
dat = subset(dat, column=='12')
p <- ggplot(data = data, aes(x = Cycle)) + geom_line(aes(y=JOE, colour="JOE")) + geom_line(aes(y=FAM,colour="FAM")) + facet_grid(line ~ column) + scale_colour_manual("Entity", values=c("blue", "red"))
p

Question 2

p <- ggplot(data = data, aes(x = FAM)) + geom_point(aes(y=JOE, colour=Cycle), size=0.1) + facet_grid(line ~ column) + scale_colour_gradientn(colours=rainbow(7))
p

Question 3

We can see that on most trajectories, JOE increases at the beginning, then FAM increases while JOE decreases, and finally FAM decreases (then it loops), which means that JOE is the prey and FAM is the predator (the preys are increasing, then the predators increase by eating the preys, and the predators decrease due to a lack of prey).

Question 4 (incomplete)

mapping_exo <- function(n) {
  if (n==1 || n==7) {
    return(0.5)
  } else if (n==2 || n==8) {
    return(1)
  } else if (n==3 || n==9) {
    return(2)
  } else if (n==4 || n==10) {
    return(3)
  } else if (n==5 || n==11) {
    return(4)
  } else if (n==6 || n==12) {
    return(0.5)
  } else
    return(-1)
}
data$exo = lapply(data$column, mapping_exo)
data

Question 5

Theoretical analysis with \(g=1\) and \(exo=1\):

library(deSolve)
prey_predator <- function(Time, State, Pars) {
    with(as.list(c(State, Pars)), {
        dx = g*x/(1+g/2*x) - x*y - 0.3*exo*x/(1+y)
        dy = x*y - exo*y/(1+y)
        return(list(c(dx, dy)))
    })
}
Pars <- c(g=1, exo=1)
State <- c(x = 0.1, y = 0.1)
Time <- seq(0, 100, by = 0.1)
out <- as.data.frame(ode(func = prey_predator, y = State, parms = Pars, times = Time))
out$prey = out$x
out$predator = out$y
ggplot(out, aes(x=time)) + geom_line(aes(y=prey, colour="Prey")) + geom_line(aes(y=predator, colour="Predator")) + scale_colour_manual("Entity", values=c("blue", "red"))

ggplot(out, aes(x=prey)) + geom_point(aes(y=predator, colour=time), size=0.5) + scale_colour_gradientn(colours=rainbow(7))

Question 6

Question 7

We could not conclude since we did not manage to do Question 4. All we can say is that, although there is a lot of noise in the experimental measures, many of them are similar to the theoretical ones.

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyBRdWVzdGlvbiAxCmBgYHtyfQpsaWJyYXJ5KCJnZ3Bsb3QyIikKbGlicmFyeSgicmVzaGFwZTIiKQpsaWJyYXJ5KCJzdHJpbmdpIikKZGF0YT1kYXRhIDwtIHJlYWQuY3N2KCJleHAuY3N2IikKZGF0YSRsaW5lID0gc3RyaV9zdWIoZGF0YSRXZWxsLCAxLCAxKQpkYXRhJGNvbHVtbiA9IHN0cnRvaShzdHJpX3N1YihkYXRhJFdlbGwsIDIsIC0xKSkKZGF0ID0gc3Vic2V0KGRhdGEsIGxpbmU9PSdBJykKZGF0ID0gc3Vic2V0KGRhdCwgY29sdW1uPT0nMTInKQpwIDwtIGdncGxvdChkYXRhID0gZGF0YSwgYWVzKHggPSBDeWNsZSkpICsgZ2VvbV9saW5lKGFlcyh5PUpPRSwgY29sb3VyPSJKT0UiKSkgKyBnZW9tX2xpbmUoYWVzKHk9RkFNLGNvbG91cj0iRkFNIikpICsgZmFjZXRfZ3JpZChsaW5lIH4gY29sdW1uKSArIHNjYWxlX2NvbG91cl9tYW51YWwoIkVudGl0eSIsIHZhbHVlcz1jKCJibHVlIiwgInJlZCIpKQpwCmBgYAoKIyBRdWVzdGlvbiAyCmBgYHtyfQpwIDwtIGdncGxvdChkYXRhID0gZGF0YSwgYWVzKHggPSBGQU0pKSArIGdlb21fcG9pbnQoYWVzKHk9Sk9FLCBjb2xvdXI9Q3ljbGUpLCBzaXplPTAuMSkgKyBmYWNldF9ncmlkKGxpbmUgfiBjb2x1bW4pICsgc2NhbGVfY29sb3VyX2dyYWRpZW50bihjb2xvdXJzPXJhaW5ib3coNykpCnAKYGBgCgojIFF1ZXN0aW9uIDMKV2UgY2FuIHNlZSB0aGF0IG9uIG1vc3QgdHJhamVjdG9yaWVzLCBKT0UgaW5jcmVhc2VzIGF0IHRoZSBiZWdpbm5pbmcsIHRoZW4gRkFNIGluY3JlYXNlcyB3aGlsZSBKT0UgZGVjcmVhc2VzLCBhbmQgZmluYWxseSBGQU0gZGVjcmVhc2VzICh0aGVuIGl0IGxvb3BzKSwgd2hpY2ggbWVhbnMgdGhhdCBKT0UgaXMgdGhlIHByZXkgYW5kIEZBTSBpcyB0aGUgcHJlZGF0b3IgKHRoZSBwcmV5cyBhcmUgaW5jcmVhc2luZywgdGhlbiB0aGUgcHJlZGF0b3JzIGluY3JlYXNlIGJ5IGVhdGluZyB0aGUgcHJleXMsIGFuZCB0aGUgcHJlZGF0b3JzIGRlY3JlYXNlIGR1ZSB0byBhIGxhY2sgb2YgcHJleSkuCgojIFF1ZXN0aW9uIDQgKGluY29tcGxldGUpCmBgYHtyfQptYXBwaW5nX2V4byA8LSBmdW5jdGlvbihuKSB7CiAgaWYgKG49PTEgfHwgbj09NykgewogICAgcmV0dXJuKDAuNSkKICB9IGVsc2UgaWYgKG49PTIgfHwgbj09OCkgewogICAgcmV0dXJuKDEpCiAgfSBlbHNlIGlmIChuPT0zIHx8IG49PTkpIHsKICAgIHJldHVybigyKQogIH0gZWxzZSBpZiAobj09NCB8fCBuPT0xMCkgewogICAgcmV0dXJuKDMpCiAgfSBlbHNlIGlmIChuPT01IHx8IG49PTExKSB7CiAgICByZXR1cm4oNCkKICB9IGVsc2UgaWYgKG49PTYgfHwgbj09MTIpIHsKICAgIHJldHVybigwLjUpCiAgfSBlbHNlCiAgICByZXR1cm4oLTEpCn0KZGF0YSRleG8gPSBsYXBwbHkoZGF0YSRjb2x1bW4sIG1hcHBpbmdfZXhvKQpkYXRhCmBgYAoKIyBRdWVzdGlvbiA1ClRoZW9yZXRpY2FsIGFuYWx5c2lzIHdpdGggJGc9MSQgYW5kICRleG89MSQ6CmBgYHtyfQpsaWJyYXJ5KGRlU29sdmUpCgpwcmV5X3ByZWRhdG9yIDwtIGZ1bmN0aW9uKFRpbWUsIFN0YXRlLCBQYXJzKSB7Cgl3aXRoKGFzLmxpc3QoYyhTdGF0ZSwgUGFycykpLCB7CgkJZHggPSBnKngvKDErZy8yKngpIC0geCp5IC0gMC4zKmV4byp4LygxK3kpCgkJZHkgPSB4KnkgLSBleG8qeS8oMSt5KQoJCXJldHVybihsaXN0KGMoZHgsIGR5KSkpCgl9KQp9CgpQYXJzIDwtIGMoZz0xLCBleG89MSkKU3RhdGUgPC0gYyh4ID0gMC4xLCB5ID0gMC4xKQpUaW1lIDwtIHNlcSgwLCAxMDAsIGJ5ID0gMC4xKQoKb3V0IDwtIGFzLmRhdGEuZnJhbWUob2RlKGZ1bmMgPSBwcmV5X3ByZWRhdG9yLCB5ID0gU3RhdGUsIHBhcm1zID0gUGFycywgdGltZXMgPSBUaW1lKSkKb3V0JHByZXkgPSBvdXQkeApvdXQkcHJlZGF0b3IgPSBvdXQkeQoKZ2dwbG90KG91dCwgYWVzKHg9dGltZSkpICsgZ2VvbV9saW5lKGFlcyh5PXByZXksIGNvbG91cj0iUHJleSIpKSArIGdlb21fbGluZShhZXMoeT1wcmVkYXRvciwgY29sb3VyPSJQcmVkYXRvciIpKSArIHNjYWxlX2NvbG91cl9tYW51YWwoIkVudGl0eSIsIHZhbHVlcz1jKCJibHVlIiwgInJlZCIpKQpgYGAKYGBge3J9CmdncGxvdChvdXQsIGFlcyh4PXByZXkpKSArIGdlb21fcG9pbnQoYWVzKHk9cHJlZGF0b3IsIGNvbG91cj10aW1lKSwgc2l6ZT0wLjUpICsgc2NhbGVfY29sb3VyX2dyYWRpZW50bihjb2xvdXJzPXJhaW5ib3coNykpCmBgYAoKCiMgUXVlc3Rpb24gNgpgYGB7cn0KZ3Jhc3MgPSBjKDMuNSwgMywgMi41LCAyLCAxLjUsIDEsIDAuNSwgMCkKZXhvID0gYygwLjUsIDEsIDIsIDMsIDQsIDUpClN0YXRlIDwtIGMoeCA9IDAuMSwgeSA9IDAuMSkKVGltZSA8LSBzZXEoMCwgMTAwLCBieSA9IDAuMSkKR3Jhc3MgPC0gbnVtZXJpYygpCkV4byA8LSBudW1lcmljKCkKdCA8LSBudW1lcmljKCkKUHJleSA8LSBudW1lcmljKCkKUHJlZGF0b3IgPC0gbnVtZXJpYygpCmZpbmFsIDwtIGRhdGEuZnJhbWUoYyhHcmFzcywgRXhvLCB0LCBQcmV5LCBQcmVkYXRvcikpCmZvciAoZyBpbiBncmFzcykgewogIGZvciAoZSBpbiBleG8pIHsKICAgIFBhcnMgPC0gYyhnPWcsIGV4bz1lKQogICAgb3V0IDwtIGFzLmRhdGEuZnJhbWUob2RlKGZ1bmMgPSBwcmV5X3ByZWRhdG9yLCB5ID0gU3RhdGUsIHBhcm1zID0gUGFycywgdGltZXMgPSBUaW1lKSkKICAgIGZvcihpIGluIDE6bnJvdyhvdXQpKSB7CiAgICAgIHJvdyA8LSBjKGcsIGUsIG91dFtpLDFdLCBvdXRbaSwyXSwgb3V0W2ksM10pCiAgICAgIGZpbmFsIDwtIHJiaW5kKGZpbmFsLCByb3cpCiAgICB9CiAgfQp9CmNvbG5hbWVzKGZpbmFsKSA8LSBjKCJHcmFzcyIsICJFeG8iLCAidCIsICJQcmV5IiwgIlByZWRhdG9yIikKZ2dwbG90KGRhdGEgPSBmaW5hbCwgYWVzKHggPSB0KSkgKyBnZW9tX2xpbmUoYWVzKHk9UHJleSwgY29sb3VyPSJQcmV5IikpICsgZ2VvbV9saW5lKGFlcyh5PVByZWRhdG9yLGNvbG91cj0iUHJlZGF0b3IiKSkgKyBmYWNldF9ncmlkKEdyYXNzIH4gRXhvKSArIHNjYWxlX2NvbG91cl9tYW51YWwoIkVudGl0eSIsIHZhbHVlcz1jKCJibHVlIiwgInJlZCIpKQpgYGAKYGBge3J9CmdncGxvdChkYXRhID0gZmluYWwsIGFlcyh4ID0gUHJlZGF0b3IpKSArIGdlb21fcG9pbnQoYWVzKHk9UHJleSwgY29sb3VyPXQpLCBzaXplPTAuMSkgKyBmYWNldF9ncmlkKEdyYXNzIH4gRXhvKSArIHNjYWxlX2NvbG91cl9ncmFkaWVudG4oY29sb3Vycz1yYWluYm93KDcpKQpgYGAKCiMgUXVlc3Rpb24gNwpXZSBjb3VsZCBub3QgY29uY2x1ZGUgc2luY2Ugd2UgZGlkIG5vdCBtYW5hZ2UgdG8gZG8gUXVlc3Rpb24gNC4gQWxsIHdlIGNhbiBzYXkgaXMgdGhhdCwgYWx0aG91Z2ggdGhlcmUgaXMgYSBsb3Qgb2Ygbm9pc2UgaW4gdGhlIGV4cGVyaW1lbnRhbCBtZWFzdXJlcywgbWFueSBvZiB0aGVtIGFyZSBzaW1pbGFyIHRvIHRoZSB0aGVvcmV0aWNhbCBvbmVzLg==