Skip to content
slphyxPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

32 Commits

Folders and files

Repository files navigation

Cartoon chef presenting a box of shrimp

Kung - พ่อฉันต้องได้กินกุ้ง แม่ฉันต้องได้กินกุ้ง ผัวหนูต้องได้กินกุ้ง

turn your compartmental model to a Shiny app

Installation

devtools::install_github("slphyx/Kung")

Usage

library(deSolve)

init <- c(S = 1-1e-6, I = 1e-6, R= 0.0)
times <- seq(0, 70, by = 1)

sir <-function(time, state, parameters) {
  with(as.list(c(state, parameters)), {
    dS <- -beta*S*I
    dI <- beta*S*I - gamma*I
    dR <- gamma*I
    
    return(list(c(dS, dI, dR)))
  })
}

parameters <- c(
  gamma = 0.14286, 
  beta = 0.6
)

out <- as.data.frame(ode(y = init, times = times, func = sir, parms = parameters))

matplot(times, out[,c("S","I","R")], type = "l", xlab = "Time", ylab = "Susceptibles and Recovereds", main = "SIR Model", lwd = 1, lty = 1, bty = "l", col = 2:4)
legend(40, 0.7, c("Susceptibles", "Infecteds", "Recovereds"), pch = 1, col = 2:4)

from the code above, you can use Kung package to create a simple Shiny app easily to see what happen to the shape of the graphs when you change the value of your model parameters, i.e., beta and gamma by adding these commented keywords into your code and save it as a new file: # !Start, # !Parameters, # !Solve, # !PostProcess, # !Plots, # !Controls, # !End. See the example below.

The # !Solve section runs the model solver and creates out. The legacy marker # !ODECMD remains supported for existing model files.

# !Start

library(deSolve)

init <- c(S = 1-1e-6, I = 1e-6, R= 0.0)
times <- seq(0, 70, by = 1)

sir <-function(time, state, parameters) {
  with(as.list(c(state, parameters)), {
    dS <- -beta*S*I
    dI <- beta*S*I - gamma*I
    dR <- gamma*I

    return(list(c(dS, dI, dR)))
  })
}

# !Parameters
parameters <- c(
  gamma = 0.14286,
  beta = 0.6
)

# !Solve
out <- as.data.frame(ode(y = init, times = times, func = sir, parms = parameters))

# !PostProcess

# !Plots
matplot(times, out[,c("S","I","R")], type = "l", xlab = "Time", ylab = "Susceptibles and Recovereds", main = "SIR Model", lwd = 1, lty = 1, bty = "l", col = 2:4)
legend(40, 0.7, c("Susceptibles", "Infecteds", "Recovereds"), pch = 1, col = 2:4)

# !Controls
sliderInput("beta","beta", min = 0,max = 10,step = 0.001,value = 1.4),
sliderInput("gamma","gamma", min = 0,max = 1,step = 0.001,value = 0.14)

# !End

To create the Shiny app, just type

library(Kung)
runSystem('yournewfile').

Examples

runSystem( paste0(path.package("Kung"),"/examples/sir_kung.R"))

runSystem( paste0(path.package("Kung"),"/examples/Lotka-Volterra_kung.R"))

runSystem( paste0(path.package("Kung"),"/examples/heart_kung.R"))

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages