Cinetica Enzimatica

Cinetica Enzimatica preview image

2 collaborators

Trendy Cecilia Herbert (Author)
Default-person Roberto Pozner (Advisor)

Tags

chemistry 

Tagged by Cecilia Herbert about 10 years ago

cinética 

Tagged by Cecilia Herbert about 9 years ago

enzimática 

Tagged by Cecilia Herbert about 9 years ago

enzymes 

Tagged by Cecilia Herbert over 10 years ago

kinetics 

Tagged by Cecilia Herbert over 10 years ago

spanish 

Tagged by Cecilia Herbert over 10 years ago

Part of project 'Cinetica' Parent of 1 model: Enzyme Kinetics
Model group CineticaQB | Visible to everyone | Changeable by the author
Model was written in NetLogo 5.1.0 • Viewed 3524 times • Downloaded 214 times • Run 0 times
Download the 'Cinetica Enzimatica' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Info tab cannot be displayed because of an encoding error

Comments and Questions

English version

Hi Cecilia, Thanks for writing this program. I want to use it as a demonstration for my Intro Biochem class. Do you have the time to translate the front end and the Info page into English? I have started a translation using an online text editor. and I will post it when I'm further along. Bye for now, George gDombi@chm.uri.edu

Posted about 10 years ago

English version (reply)

Dear George, Thank you for your interest. This model is based on the Stieff and Wilensky Enzyme Kinetics model in the model library that comes with NetLogo. I put it into Spanish and made some modifications so that it worked as a complement for lab activities. Unfortunately, I don't have the time to put it back into English, nor is it completely finished so it would be double the work to translate it now and keep on working on both the Spanish and English versions. I suggest that you have a look at the original model. It is a very good introduction to enzyme kinetics and might serve your purpose right off the shelf! Kind regards, Cecilia

Posted about 10 years ago

English version 2

Hi Cecilia, Thanks for your reply. I have put up a "child of Cinetica" called Enzyme Kinetics, which is a rough translation of your front page into English. Please look it over and see if you can accept the translations. I have not yet done any work with the Introduction nor have I changed any code. I did manage to loss the Primary screen, which I am hoping you will turn back on for me. I like your introduction, which I think is quite good. I understand that you don't have the time to maintain two different language versions, but could you add a feature to the Spanish version that allows the user to be about to plot all three inhibitor types on the same MM and Lineweaver-Burk plots so as to see the differences in the 1/Vmax and 1/Km intercept points. Bye for now, George

Posted about 10 years ago

Click to Run Model

;; Esta es la versión 1.23 del simulador

breed [ enzimas enzima]           ;; agentes rojos que se unen y catalizan el sustrato
breed [ sustratos sustrato ]      ;; agentes verdes que se unen a la enzima y pueden reaccionar
breed [ inhibidores inhibidor ]   ;; agentes amarillos que se unen a la enzima pero no pueden reaccionar
breed [ productos producto ]      ;; agentes azules que se generan a partir de la interaccion sustrato-enzima


turtles-own [
  companiero  ;;corresponde al nombre del otro agente del complejo o a "nobody" si no esta acomplejado
]

;;definicion de variables, se incluyen las variables globales definidas por interfaz
globals [
  sustrato-inicial ;; guarda la concentracion de sustrato inicial de cada corrida (para grafico de MM)
  v                ;; tasa de formacion de producto  
  K1               ;; constante de asociacion de enzima y sustrato
  K2               ;; constante de disociacion de complejo ES en enzima y sustrato
  K3               ;; constante de disociacion de complejo ES en enzima y producto
  Kia              ;; constante de asociacion del inhibidor
  Ki               ;; constante de disociacion del inhibidor
  n                ;; cantidad de repeticiones de cada corrida para una concentracion de sustrato
  ind              ;; indice para contar la cantidad de iteraciones del ciclo de repeticiones que lleva hechas
  ;Conc-sustrato   ;; concentracion de sustrato para PvsT
  sustrato-conv    ;; concentracion de sustrato para PvsT convertido a cantidad de moleculas
  ;Tipo-inhibidor  ;; Ninguno, Inhibidor A o Inhibidor B (reversibles)

  cantidad-enzimas ;; cantidad de enzimas
  
  Sustrato-inicial-min-conv ;; concentracion de sustrato inicial para MM convertido a cantidad de moleculas
  escalon-orden1            ;; cantidad de concentraciones de sustrato que se toman para la primera parte de MM
  sustrato-inicial-ordenm   ;; cantidad de sustrato a partir de la cual se hace el segundo escalonado
  escalon-ordenm            ;; cantidad de concentraciones de sustrato que se toman para la parte media de MM
  sustrato-inicial-orden0   ;; cantidad de sustrato a partir de la cual se hace el tercer escalonado
  escalon-orden0            ;; cantidad de concentraciones de sustrato que se toman para la ultima parte de MM
  sustrato-inicial-max-conv ;; concentracion de sustrato final para MM convertido de concentracion a cantidad de moleculas

  ;Conc-inhibidor       ;; concentracion de sustrato para MM
  inhibidor-conv        ;; concentracion de sustrato para MM convertida a cantidad de moleculas
  ;Minutos-por-corrida  ;; cantidad maxima de ticks para una corrida de MM
  max-minutos           ;; cantidad maxima de ticks para una corrida de PvsT
]

;;seteo de variables FIJO para una enzima y dos inhibidores determinados

to set-variables
  set cantidad-enzimas 10000
  set K1 40
  set K2 90
  set K3 15
  set Kia 5
  if Tipo-inhibidor = "Inhibidor A"[
    set Ki 90
    set inhibidor-conv Conc-inhibidor * 1E5]
  if Tipo-inhibidor = "Inhibidor B"[
    set Ki 5
    set inhibidor-conv Conc-inhibidor * 1E5]
  set n 1                                 ;; FIJO para hacer solo una repeticion de cada corrida
  set sustrato-conv Conc-sustrato * 1E5
  set Sustrato-inicial-min-conv Sustrato-inicial-min * 1E5
  set escalon-orden1 8                    ;; puntos en el orden 1, antes de Km
  set sustrato-inicial-ordenm 0.2 * 1E5   ;; tomamos orden1 hasta este valor FIJO
  set escalon-ordenm 6                    ;; puntos en el orden mixto
  set sustrato-inicial-orden0 0.6 * 1E5   ;; tomamos orden mixto hasta este valor FIJO
  set escalon-orden0 3                    ;; puntos en el orden 0
  set sustrato-inicial-max-conv 1.5 * 1E5 ;; FIJO asi no son demasiadas moleculas
  set max-minutos 120                     ;; FIJO asi no no dejan correr por demasiado tiempo
end 

;; procedimiento del observador para agregar moleculas a la reaccion

to add [tipo cantidad]
  crt cantidad
    [ set breed tipo
      setxy random-xcor random-ycor
      set companiero nobody
      setshape ]
end 

;; procedimiento para asignar formas, colores y comportamiento (escondido o no) a los agentes,
;; segun corresponde segun su estado.

to setshape
  ifelse breed = enzimas
    [ set color red
      ifelse companiero = nobody
        [ set shape "enzyme" ]
        [ ifelse ([breed] of (companiero) = sustratos)
            [ set shape "complex" ]
            [if Tipo-inhibidor != "Ninguno"
              [set shape "inhib complex rev"] ] ]]
    [ ifelse breed = sustratos
        [ set color green
          set shape "substrate"
          set hidden? (companiero != nobody) ]
        [ ifelse breed = inhibidores
            [ set color yellow
              set shape "inhibitor rev"
              set hidden? (companiero != nobody) ]
            [ if breed = productos
                [ set color pink + 4
                  set shape "substrate"
                  set hidden? false ] ] ] ]
end 

;; procedimiento base del modelo

to go
  ask turtles [ move ]
  ask enzimas [ form-complex ]        ;; las enzimas pueden formar complejo con un sustrato o un inhibidor
  ask sustratos [ react-forward ]     ;; los sustratos acomplejados pueden convertirse en producto
  ask enzimas [ dissociate ]          ;; o los complejos pueden simplementerte desacomplejarse
end 

;; procedimiento del observador para setear PvsT

to setearPvsT
  set-patch-size 13.56                       ;; garantiza que se corra siempre con el mismo tamano, sin importar si el usario modifico el mundo
  resize-world -12 12 -12 12                 ;; garantiza que se corra siempre con el mismo tamano, sin importar si el usario modifico el mundo
  clear-all
  set-variables
  set sustrato-inicial sustrato-conv
  set v 0
  add enzimas cantidad-enzimas
  add sustratos sustrato-conv         ;; corre con concentracion de sustrato segun slider
  reset-ticks
  output-print (word "[S] = " (sustrato-inicial * 1E-5) " M")  ;; esta seccion saca por terminal las condiciones experimentales
  output-type "\n"
  output-type "t"                     ;; esta seccion le pone titulos a las columnas de la terminal de salida
  output-type "\t"
  output-type "P"
  output-type "\n"
  output-type "(min)"
  output-type "\t"
  output-type "(µmoles)"
  output-type "\n"
end 

;; procedimiento principal para PvsT

to correrPvst
  if ticks > max-minutos 
  [ user-message ("Terminó de correr P(t). Podés copiar los resultados de la Terminal de salida o exportarlos con el botón \"Exportar datos\". La primera columna corresponde a t (min) y la segunda, a P (µmoles).")
    clear-ticks
    stop ]
  go
  do-Pvst-plot
  output-type ticks                   ;; esta seccion imprime a la terminal de salida
  output-type "\t"
  let numeroSinComa precision ((count productos) * 1E-2) 2   ;; esta seccion cambia numeros con punto decimal a coma decimal
  ifelse numeroSinComa < 5
    [output-type "err"]
  ;; [output-type numeroSinComa]               ;; descomentar esta linea y comentar la linea de abajo para pasar los números a punto decimal
    [output-type (word int(numeroSinComa) "," precision (((numeroSinComa - int(numeroSinComa)) * 100)) 2)]
  output-type "\n"
  tick
end 

;; procedimiento de agentes para moverse

to move
   fd 1
   rt random-float 360
end 

;; procedimiento de enzimas para formar complejos cuando se encuentra en 
;; la misma parcela que un sustrato o un inhibidor. Cuando se encuentra con un 
;; sustrato, se acompleja con porcentaje K1 y, con un inhibidor, con Kia.

to form-complex
  if companiero != nobody [ stop ]
  set companiero one-of (other turtles-here with [companiero = nobody])
  if companiero = nobody [ stop ]
  if [companiero] of companiero != nobody [ set companiero nobody stop ]  ;; por las dudas que dos enzimas elijan el mismo companiero
  ifelse ((([breed] of companiero) = sustratos) and ((random-float 100) < K1))
     or (([breed] of companiero) = inhibidores and (Tipo-inhibidor = "rev-comp") and ((random-float 100) < Kia))
     or (([breed] of companiero) = inhibidores and (Tipo-inhibidor = "irrev"))
    [ ask companiero [ set companiero myself ]
      setshape
      ask companiero [ setshape ] ]
    [ set companiero nobody ]
end 

;; procedimiento de sustratos acomplejados para formar producto
;; y que este sea liberado de la enzima, con porcenaje K3

to react-forward
  if (companiero != nobody) and (random-float 100 < K3)
    [ set breed productos
      ask companiero [ set companiero nobody ]
      let companiero-anterior companiero
      set companiero nobody
      setshape
      ask companiero-anterior [ setshape ] ]
end 

;; procedimiento de enzimas para disociar complejos:
;; ocurre con pocentaje K2 si el companiero es sustrato o con Ki si es inhibidor

to dissociate
  if companiero != nobody
    [ if (([breed] of companiero = sustratos) and (random-float 100 < K2)) or
      (([breed] of companiero) = inhibidores and (Tipo-inhibidor = "rev-comp") and ((random-float 100) < Ki))
      [ ask companiero [ set companiero nobody ]
        let companiero-anterior companiero
        set companiero nobody
        setshape
        ask companiero-anterior [ setshape ] ] ]
end 

;; procedimiento para calcular la velocidad tomando la cantidad de productos desacomplejados
;; (asume que al comienzo de cada corrida la cantidad de productos es cero)

to calculate-velocity
  let current-conc count productos with [companiero = nobody]
  if ticks > 0
    [ set v (current-conc * 1E-5) / ticks ]
end 

;; procedimientos para graficar
;; grafica concentracion de productos en funcion del tiempo para curva de PvsT

to do-Pvst-plot
  set-current-plot "P(t)"
  ifelse (count productos) * 1E-2 < 5
    [plot-pen-up
      plotxy ticks 0]
    [plot-pen-down
      plotxy ticks (count productos) * 1E-2]
end 

;; grafica concentracion de sustrato inicial en funcion de velocidad para curva de MM

to do-mm-plot
  set-current-plot "Curva Michaelis-Menten"
  plotxy (sustrato-inicial * 1E-5) (v * 1E3)
end 

;; grafica las inversas de MM

to do-imm-plot
  set-current-plot "Lineweaver-Burk"
  if (sustrato-inicial > 0 and v > 0)
  [ plotxy (1 / (sustrato-inicial * 1E-5)) (1 / (v * 1E3)) ]
end 

;; procedimiento del observador para setear MM

to setearExperimento
  no-display                               ;; logra que corra mas rapido el modelo
  set-patch-size 13.56                     ;; garantiza que se corra siempre con el mismo tamano, sin importar si el usario modifico el mundo
  resize-world -12 12 -12 12               ;; garantiza que se corra siempre con el mismo tamano, sin importar si el usario modifico el mundo
  clear-all
  set-variables
  if (Sustrato-inicial-min <= 0.0 or Sustrato-inicial-min > 1.6 or Minutos-por-corrida <= 0.0 or Minutos-por-corrida > 20)[
    user-message ("Verificá la concentración de sustrato inicial mínima y los minutos por corrida: no pueden ser cero y, además, deben estar en un rango aceptable (para las concentraciones, hasta 1.6 M y para el tiempo, 20 minutos).")
    stop]
  set sustrato-inicial Sustrato-inicial-min-conv
  reset-ticks
  output-print (word "Mínima conc. de sustrato inicial = " sustrato-inicial-min " M") ;; esta seccion saca por terminal las condiciones experimentales
  output-print (word "Tiempo de cada corrida = " minutos-por-corrida " min")
  output-print word "Tipo de inhibidor: " tipo-inhibidor
  if tipo-inhibidor != "Ninguno" [
    output-print (word "Conc. de inhibidor = " conc-inhibidor " M")]
  output-type "\n"
  output-type "1/[S]"                      ;; esta seccion le pone titulos a las columnas de la terminal de salida
  output-type "\t"
  output-type "1/V"
  output-type "\n"
  output-type "(1/M)"
  output-type "\t"
  output-type "(min/nmoles)"
  output-type "\n"
end 

;; procedimiento principal para MM

to correrExperimento                                   
  if (Sustrato-inicial-min <= 0.0 or Sustrato-inicial-min > 1.6 or Minutos-por-corrida <= 0.0 or Minutos-por-corrida > 20)[
    user-message ("Verificá la concentración de sustrato inicial mínima y los minutos por corrida y volvé a armar MM.")
    clear-ticks
    stop]
  if sustrato-inicial > sustrato-inicial-max-conv [
    user-message ("Terminó de correr el experimento de MM. Podés copiar los resultados de la Terminal de salida o exportarlos con el botón \"Exportar datos\". La primera columna corresponde a 1/[S] (1/M) y la segunda, a 1/V (min/nmoles).")
    clear-ticks
    stop]
  
  clear-turtles                          ;; borra la vista pero mantiene los graficos de MM
  set-current-plot "P(t)"                ;; reinicia grafico de Pvst para cada corrida
  clear-plot
  set v 0
  add enzimas cantidad-enzimas
  add sustratos sustrato-inicial         ;; agrega sustrato segun "sustrato-inicial" (la primera vez vale "Sustrato-inicial-min-conv")
  add inhibidores inhibidor-conv         ;; agrega una concentracion constante de inhibidor
   while [ticks < Minutos-por-corrida] [  ;; corrida de P(t) tal como el procedimiento go
    go
    calculate-velocity
    do-Pvst-plot                         ;; grafica Pvst en cada tick de cada corrida de MM
    tick]
  do-mm-plot                             ;; grafica MM en cada corrida
  do-imm-plot                            ;; grafica inversas de MM en cada corrida
      
  ;; a partir de aca, esta seccion imprime a la terminal de salida 
  let xSinComa precision (1 / (sustrato-inicial * 1E-5)) 2  ;; esta seccion cambia numeros con punto decimal a coma decimal
  ;; output-type xSinComa               ;; descomentar esta linea y comentar la linea de abajo para pasar los números a punto decimal
  output-type (word int(xSinComa) "," precision (((xSinComa - int(xSinComa)) * 100)) 2)
  output-type "\t"
  let ySinComa precision (1 / (v * 1E3)) 2  ;;esta sección cambia numeros con punto decimal a coma decimal
  ;; output-type ySinComa               ;; descomentar esta linea y comentar la linea de abajo para pasar los números a punto decimal
  output-type (word int(ySinComa) "," precision (((ySinComa - int(ySinComa)) * 100)) 2)
  output-type "\n"
  reset-ticks

  ;; incremento escalonado de concentracion inicial de sustrato
  ;; para orden1, primera parte de la curva (hasta el inicio de ordenm), tomamos escalon-orden1 escalones
  ifelse sustrato-inicial < sustrato-inicial-ordenm
    [set sustrato-inicial sustrato-inicial + ((sustrato-inicial-ordenm - Sustrato-inicial-min-conv) / escalon-orden1)]
    [ifelse sustrato-inicial > sustrato-inicial-orden0 [
        ;; para orden0, ultima parte de la curva (a partir de sustrato-inicial-max), tomamos escalon-orden0 escalones
        set sustrato-inicial sustrato-inicial + ((sustrato-inicial-max-conv - sustrato-inicial-orden0) / escalon-orden0)][
        ;; para orden mixto, parte media de la curva (hasta el inicio de orden0), tomamos escalon-ordenm escalones
        set sustrato-inicial sustrato-inicial + ((sustrato-inicial-orden0 - sustrato-inicial-ordenm) / escalon-ordenm)]]
end 

to export-data
   user-message ("Elegí una ubicación y un nombre de archivo. Si en el directorio ya existe un archivo con ese nombre, se sobrescribirá.")
   let direccion user-new-file
   if is-string? direccion     ;; verifica que se obtuvo un string, en caso de que el usuario haya cancelado
   [if file-exists? direccion
     [ file-delete direccion ] ;; elimina el archivo si este ya existe en la ubicación elegida
     export-output word direccion ".xls"
     user-message (word "Se generó el archivo en " direccion ".xls. Podés abrirlo con una hoja de cálculo.\nLos datos de la primera columna corresponden a las x y los de la segunda, a las y.")
   ]
end 

; Copyright 2001 Uri Wilensky.
; See Info tab for full copyright and license.

There are 12 versions of this model.

Uploaded by When Description Download
Cecilia Herbert about 9 years ago Ver 1.23 - Con límite de detección mejorado conceptualmente Download this version
Cecilia Herbert about 10 years ago botones, shape size, command center comment, units for MM Download this version
Cecilia Herbert over 10 years ago Version final Download this version
Cecilia Herbert over 10 years ago bug fix 1.20 Download this version
Cecilia Herbert over 10 years ago Info tab update Download this version
Cecilia Herbert over 10 years ago 1.18 cambios de layout Download this version
Cecilia Herbert over 10 years ago 1.17 Download this version
Cecilia Herbert over 10 years ago Correcciones a la info tab Download this version
Cecilia Herbert over 10 years ago Version 1.15 con info Download this version
Cecilia Herbert over 10 years ago Pasado al castellano y limpiado Download this version
Cecilia Herbert over 10 years ago Variables revisadas por idioma Download this version
Cecilia Herbert over 10 years ago Initial upload Download this version

Attached files

File Type Description Last updated
cc.png png copyright over 10 years ago, by Cecilia Herbert Download
Cinetica Enzimatica.png preview preview about 9 years ago, by Cecilia Herbert Download
concentraciones.png png ejemplo de p vs t over 10 years ago, by Cecilia Herbert Download
inhibidores.png png resumen de inhibidores over 10 years ago, by Cecilia Herbert Download

This model does not have any ancestors.

Children:

Graph of models related to 'Cinetica Enzimatica'