#r #bioinformatics #modeling #ode
#r #биоинформатика #моделирование #ode
Вопрос:
Я совершенно новичок в R, решении уравнений и тому подобном, но у меня есть университетская задача, которая включает дифференциальные уравнения и R, и я вообще не могу выполнить ее должным образом…
```{r}
library(deSolve)
```
```{r}
model9 <- function(t, y, parms) {
with(as.list(y, parms), {
Ptbs1 <- 1/(1 (TALe/Kd1))
#Ptbs8 <- 1/(1 (TALe/Kd8))
dy <- numeric(6)
dy[1] <- a.tale*Pbad - gamma.mRNA*RiboTALe.mRNA
dy[2] <- kon*RiboTALe.mRNA*theo-koff*RiboTALe.mRNAw
dy[3] <- b.tale*RiboTALe.mRNAw - gamma.protein*TALe
dy[4] <- a.gfp*Ptet*Ptbs1-gamma.mRNA*GFP.mRNA # CONSIDERAR PTBS8 LUEGO
# dy[4] <- a.gfp*Ptet*Ptbs8-gamma.mRNA*GFP.mRNA
dy[5] <- b.gfp*GFP.mRNA-gamma.protein*GFP.int-beta*GFP.int
dy[6] <- beta*GFP.int-gamma.lvatag*GFP
list(dy)})
}
```
# Incognitas
```{r}
y <- c(RiboTALe.mRNA = 0,
RiboTALe.mRNAw = 0,
GFP.mRNA = 0,
GFP.int = 0,
GFP = 0,
TALe = 0)
```
# Parametros
```{r}
parms <- c(Cobad <- (10*10^{-6}),
Cotet <- (10*10^{-6}),
nbad <- 2.8,
ntet <- 1,
Kdbad <- (9*10^{-5}),
Kdtet <- (3.83*10^{-9}),
K1bad <- 9*10^{-3},
K1tet <- 350,
Kd1 <- 240*10^{-9},
Kd8 <- 1.3*10^{-9},
K2bad <- 37.5/(10*10^{-6}),
K3bad <- 3.4/(10*10^{-6}),
K2tet <- 160/(10*10^{-6}),
koff <- 0.3*10^{-9},
kon <- 1*10^{-3},
gamma.lvatag <- 2*10^{-4},
gamma.mRNA <- 1.7*10^{-3},
gamma.protein <- 5.6*10^{-5},
a.gfp <- 0.03,
a.tale <- 0.01,
b.gfp <- 0.06,
b.tale <- 0.02,
beta <- 6.7*10^{-4},
Lbad <- 0.01,
Ltet <- 25,
theo <- 0,
C1 <- (Cobad*(Lbad^nbad))/((Kdbad^nbad) (Lbad^nbad)),
C2 <- (Cotet*(Ltet^ntet))/((Kdtet^ntet) (Ltet^ntet)),
Cf1 <- Cobad - C1,
Cf2 <- Cotet - C2,
Pbad <- (K1bad K2bad*C1)/(1 K1bad K2bad*C1 K3bad*Cf1),
Ptet <- K1tet/(1 K1tet 2*K2tet*Cf2 (K2tet^2)*(Cf2^2)) )
```
```{r}
times <- seq(from = 0, to = 3600, by = 1)
```
```{r}
out <- ode(y = y, times = times, func = model9, parms = parms)
```
```{r}
plot(out)
```
Это моделирование биологической системы, включающей различные молекулы, РНК и т.д.
Идея заключается в том, что, когда параметр «тео» равен нулю, не должно быть никаких изменений в TALe, но если вы нанесете все это на график, TALe увеличится.
С другой стороны, если «тео» больше 0, я получаю сообщение об ошибке:
Ошибка в lsoda (y, times, func, parms, …): обнаружен недопустимый ввод до выполнения каких-либо шагов интеграции — см. письменное сообщение
Идея состоит в том, чтобы получить результаты, как здесь: http://2013.igem.org/Team:UC_Davis/Modeling , но я не понимаю, что я делаю неправильно.
Пожалуйста, помогите.
Спасибо.
Комментарии:
1. При определении именованного списка или вектора используйте
=
, а не<-
. В дополнение к созданию именованного вектора с именемparms
, вы также делаете каждый элемент отдельной переменной в глобальной среде. Это повышает вероятность всевозможных конфликтов пространств имен с непредсказуемыми последствиями. Попробуйте исправить это и убедитесь, что проблема та же