install.packages(c("ggplot2", "dplyr", "purrr", "broom"))
#this code allows you to visualize the effects of different Km and Vmax values, which can be useful for questions regarding enzyme kinetics and the effects of different inhibitors.
# Install and load necessary libraries
library(ggplot2)
library(dplyr)
library(purrr)
library(broom)
michaelis_menten <- function(S, Km, Vmax) {
(Vmax * S) / (Km + S)
}
# Define substrate concentrations
S <- seq(from = 0.01, to = 100, by = 0.01)
# Define Km and Vmax values for three different enzymes
Km_values <- c(0.1, 0.2, 1)
Vmax_values <- c(10, 10, 10)
df <- data.frame()
for (i in 1:length(Km_values)){
df <- rbind(df, data.frame(S = S,
V = michaelis_menten(S, Km_values[i], Vmax_values[i]),
Enzyme = paste("Enzyme", i)))
}
# Set the upper limit for substrate concentrations
S_upper_limit <- 10*max(Km_values)
# Filter out any data where S is greater than the upper limit
df <- df[df$S <= S_upper_limit,]
# Then plot
ggplot(df, aes(x = S, y = V, color = Enzyme)) +
geom_line() +
labs(x = "Substrate concentration (S)", y = "Reaction rate (V)", title = "Michaelis-Menten Plot for Three Enzymes") +
theme_minimal() +
geom_hline(yintercept = 0, color = "black", size = 1) +
geom_vline(xintercept = 0, color = "black", size = 1)
#lineweaver-burk
df <- data.frame()
for (i in 1:length(Km_values)){
df <- rbind(df, data.frame(S = 1/S, # take reciprocal of S
V = 1/michaelis_menten(S, Km_values[i], Vmax_values[i]), # take reciprocal of V
Enzyme = paste("Enzyme", i)))
}
intercepts <- vector()
extended_df <- df %>%
split(.$Enzyme) %>%
map_df(~{
model <- lm(V ~ S, data = .)
intercept <- -coef(model)[1] / coef(model)[2]
intercepts <<- c(intercepts, intercept)
data.frame(
S = seq(min(intercepts), 15, length.out = 1000),
V = predict(model, newdata = data.frame(S = seq(min(intercepts), 15, length.out = 1000))),
Enzyme = unique(.$Enzyme)
)
}, .id = "Enzyme")
ggplot(extended_df, aes(x = S, y = V, color = Enzyme)) +
geom_line() +
labs(x = "1/Substrate concentration (1/S)", y = "1/Reaction rate (1/V)", title = "Extended Lineweaver-Burk Plot for Three Enzymes") +
theme_minimal() +
geom_hline(yintercept = 0, color = "black", size = 1) +
geom_vline(xintercept = 0, color = "black", size = 1)
LS0tCnRpdGxlOiAiZW56eW1lX2tpbmV0aWNzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKGMoImdncGxvdDIiLCAiZHBseXIiLCAicHVycnIiLCAiYnJvb20iKSkKYGBgCgpgYGB7cn0KI3RoaXMgY29kZSBhbGxvd3MgeW91IHRvIHZpc3VhbGl6ZSB0aGUgZWZmZWN0cyBvZiBkaWZmZXJlbnQgS20gYW5kIFZtYXggdmFsdWVzLCB3aGljaCBjYW4gYmUgdXNlZnVsIGZvciBxdWVzdGlvbnMgcmVnYXJkaW5nIGVuenltZSBraW5ldGljcyBhbmQgdGhlIGVmZmVjdHMgb2YgZGlmZmVyZW50IGluaGliaXRvcnMuIAoKIyBJbnN0YWxsIGFuZCBsb2FkIG5lY2Vzc2FyeSBsaWJyYXJpZXMKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHB1cnJyKQpsaWJyYXJ5KGJyb29tKQoKbWljaGFlbGlzX21lbnRlbiA8LSBmdW5jdGlvbihTLCBLbSwgVm1heCkgewogIChWbWF4ICogUykgLyAoS20gKyBTKQp9CgojIERlZmluZSBzdWJzdHJhdGUgY29uY2VudHJhdGlvbnMKUyA8LSBzZXEoZnJvbSA9IDAuMDEsIHRvID0gMTAwLCBieSA9IDAuMDEpCgojIERlZmluZSBLbSBhbmQgVm1heCB2YWx1ZXMgZm9yIHRocmVlIGRpZmZlcmVudCBlbnp5bWVzCkttX3ZhbHVlcyA8LSBjKDAuMSwgMC4yLCAxKQpWbWF4X3ZhbHVlcyA8LSBjKDEwLCAxMCwgMTApCgpkZiA8LSBkYXRhLmZyYW1lKCkKCmZvciAoaSBpbiAxOmxlbmd0aChLbV92YWx1ZXMpKXsKICBkZiA8LSByYmluZChkZiwgZGF0YS5mcmFtZShTID0gUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWID0gbWljaGFlbGlzX21lbnRlbihTLCBLbV92YWx1ZXNbaV0sIFZtYXhfdmFsdWVzW2ldKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnp5bWUgPSBwYXN0ZSgiRW56eW1lIiwgaSkpKQp9CgojIFNldCB0aGUgdXBwZXIgbGltaXQgZm9yIHN1YnN0cmF0ZSBjb25jZW50cmF0aW9ucwpTX3VwcGVyX2xpbWl0IDwtIDEwKm1heChLbV92YWx1ZXMpCgojIEZpbHRlciBvdXQgYW55IGRhdGEgd2hlcmUgUyBpcyBncmVhdGVyIHRoYW4gdGhlIHVwcGVyIGxpbWl0CmRmIDwtIGRmW2RmJFMgPD0gU191cHBlcl9saW1pdCxdCgojIFRoZW4gcGxvdApnZ3Bsb3QoZGYsIGFlcyh4ID0gUywgeSA9IFYsIGNvbG9yID0gRW56eW1lKSkgKwogIGdlb21fbGluZSgpICsKICBsYWJzKHggPSAiU3Vic3RyYXRlIGNvbmNlbnRyYXRpb24gKFMpIiwgeSA9ICJSZWFjdGlvbiByYXRlIChWKSIsIHRpdGxlID0gIk1pY2hhZWxpcy1NZW50ZW4gUGxvdCBmb3IgVGhyZWUgRW56eW1lcyIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDEpICsKICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAxKSAgICAKCgojbGluZXdlYXZlci1idXJrCmRmIDwtIGRhdGEuZnJhbWUoKQoKZm9yIChpIGluIDE6bGVuZ3RoKEttX3ZhbHVlcykpewogIGRmIDwtIHJiaW5kKGRmLCBkYXRhLmZyYW1lKFMgPSAxL1MsICAjIHRha2UgcmVjaXByb2NhbCBvZiBTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgViA9IDEvbWljaGFlbGlzX21lbnRlbihTLCBLbV92YWx1ZXNbaV0sIFZtYXhfdmFsdWVzW2ldKSwgICMgdGFrZSByZWNpcHJvY2FsIG9mIFYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnp5bWUgPSBwYXN0ZSgiRW56eW1lIiwgaSkpKQp9CgppbnRlcmNlcHRzIDwtIHZlY3RvcigpCmV4dGVuZGVkX2RmIDwtIGRmICU+JSAKICBzcGxpdCguJEVuenltZSkgJT4lCiAgbWFwX2RmKH57CiAgICBtb2RlbCA8LSBsbShWIH4gUywgZGF0YSA9IC4pCiAgICBpbnRlcmNlcHQgPC0gLWNvZWYobW9kZWwpWzFdIC8gY29lZihtb2RlbClbMl0KICAgIGludGVyY2VwdHMgPDwtIGMoaW50ZXJjZXB0cywgaW50ZXJjZXB0KQogICAgZGF0YS5mcmFtZSgKICAgICAgUyA9IHNlcShtaW4oaW50ZXJjZXB0cyksIDE1LCBsZW5ndGgub3V0ID0gMTAwMCksCiAgICAgIFYgPSBwcmVkaWN0KG1vZGVsLCBuZXdkYXRhID0gZGF0YS5mcmFtZShTID0gc2VxKG1pbihpbnRlcmNlcHRzKSwgMTUsIGxlbmd0aC5vdXQgPSAxMDAwKSkpLAogICAgICBFbnp5bWUgPSB1bmlxdWUoLiRFbnp5bWUpCiAgICApCiAgfSwgLmlkID0gIkVuenltZSIpCgpnZ3Bsb3QoZXh0ZW5kZWRfZGYsIGFlcyh4ID0gUywgeSA9IFYsIGNvbG9yID0gRW56eW1lKSkgKwogIGdlb21fbGluZSgpICsKICBsYWJzKHggPSAiMS9TdWJzdHJhdGUgY29uY2VudHJhdGlvbiAoMS9TKSIsIHkgPSAiMS9SZWFjdGlvbiByYXRlICgxL1YpIiwgdGl0bGUgPSAiRXh0ZW5kZWQgTGluZXdlYXZlci1CdXJrIFBsb3QgZm9yIFRocmVlIEVuenltZXMiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAxKSArIAogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDEpCgpgYGAK