Cinetica Enzimatica
Model was written in NetLogo 5.1.0
•
Viewed 3647 times
•
Downloaded 240 times
•
Run 0 times
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
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.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
cc.png | png | copyright | over 11 years ago, by Cecilia Herbert | Download |
Cinetica Enzimatica.png | preview | preview | over 9 years ago, by Cecilia Herbert | Download |
concentraciones.png | png | ejemplo de p vs t | over 11 years ago, by Cecilia Herbert | Download |
inhibidores.png | png | resumen de inhibidores | over 11 years ago, by Cecilia Herbert | Download |
George Dombi
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 over 10 years ago
Cecilia Herbert
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 over 10 years ago
George Dombi
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 over 10 years ago