23.3: Análisis de Flujo Metabólico
- Page ID
- 54660
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)El análisis de flujo metabólico (MFA) es una forma de calcular la distribución de los flujos de reacción que es posible en una red metabólica dada en estado estacionario. Podemos imponer restricciones a ciertos flujos con el fin de limitar el espacio descrito por la distribución de posibles flujos. En esta sección, desarrollaremos una formulación matemática para MFA. Una vez más, este análisis es independiente de la biología particular del sistema; más bien, sólo dependerá de las estequiometrías (universales) de las reacciones en cuestión.
Representación matemática
Considerar un sistema con m metabolitos y n reacciones. Sea xi la concentración de sustrato i, de manera que la velocidad de cambio de la concentración de sustrato esté dada por la derivada temporal de xi. Sea x el vector de columna (con m componentes) con elementos xi. Por simplicidad, consideramos un sistema con m = 4 metabolitos A, B, C y D. Este sistema consistirá en muchas reacciones entre estos metabolitos, resultando en un complicado equilibrio entre estos compuestos.
Una vez más, considere la simple reacción A + 2B\(\rightarrow\) 3C. Podemos representar esta reacción en forma de vector como (-1 -2 3 0). Obsérvese que los dos primeros metabolitos (A y B) tienen signos negativos, ya que se consumen en la reacción. Además, los elementos del vector están determinados por la estequiometría de la reacción, como en la Sección 2.1. Repetimos este procedimiento para cada reacción en el sistema. Estos vectores se convierten en las columnas de la matriz estequiométrica S. Si el sistema tiene m metabolitos y n reacciones, S será una matriz m n. Por lo tanto, si definimos v como el vector de columna de n-componentes de flujos en cada reacción, el vector S v describe la velocidad de cambio de la concentración de cada metabolito. Matemáticamente, esto se puede representar como la ecuación fundamental del análisis del flujo metabólico:
\[\frac{d x}{d t}=S v\nonumber\]
La matriz S es una estructura de datos extraordinariamente poderosa que puede representar una variedad de escenarios posibles en sistemas biológicos. Por ejemplo, si dos columnas c y d de S tienen la propiedad de que c = d, las columnas representan una reacción reversible. Además, si una columna tiene la propiedad de que solo un componente es distinto de cero, representa en reacción de intercambio, en la que hay un flujo hacia (o desde) un sumidero (o fuente) supuestamente infinito, dependiendo del signo del componente distinto de cero.
Ahora imponemos la suposición de estado estacionario, que dice que el tamaño izquierdo de la ecuación anterior es idénticamente cero. Por lo tanto, necesitamos encontrar vectores v que satisfagan el criterio S v = 0. Las soluciones a esta ecuación determinarán flujos factibles para este sistema.
Espacio nulo de S
El espacio de flujo factible de las reacciones en el sistema modelo se define por el espacio nulo de S, como se vio anteriormente. Recordemos del álgebra lineal elemental que el espacio nulo de una matriz es un espacio vectorial; es decir, dados dos vectores y y z en el espacio nulo, el vector ay + bz (para los números reales a, b) también está en el espacio nulo. Dado que el espacio nulo es un espacio vectorial, existe una base bi, un conjunto de vectores que es linealmente independiente y abarca el espacio nulo. La base tiene la propiedad de que para cualquier flujo v en el espacio nulo de S, existen números reales\(\alpha\) i tales que
\[v=\Sigma_{i} \alpha_{i} b_{i}\nonumber\]
¿Cómo encontramos una base para el espacio nulo de una matriz? Una herramienta útil es la descomposición de valores singulares (SVD) [4]. La descomposición del valor singular de una matriz S se define como una representación S = UEV*, donde U es una matriz unitaria de tamaño m, V es una matriz unitaria de tamaño n, y E es una matriz diagonal mxn, con los valores singulares (necesariamente positivos) de S en orden descendente. (Recordemos que una matriz unitaria es una matriz con columnas y filas ortonormales, es decir, U * U = U U * = I la matriz de identidad). Se puede demostrar que cualquier matriz tiene una SVD. Tenga en cuenta que el SVD se puede reorganizar en la ecuación\(S v=\sigma u\), donde u y v son columnas de las matrices U y V y es un valor singular. Por lo tanto, si\(\sigma\) = 0, v pertenece al espacio nulo de S. Efectivamente, las columnas de V que corresponden a los valores singulares cero forman una base ortonormal para el espacio nulo de S. De esta manera, la SVD nos permite caracterizar completamente los posibles flujos para el sistema.
Restricción del espacio de flujo
La primera restricción mencionada anteriormente es que todos los vectores de flujo de estado estacionario deben estar en el espacio nulo. También los flujos negativos no son termodinámicamente posibles. Por lo tanto, una restricción fundamental es que todos los flujos deben ser positivos. (Dentro de este marco representamos reacciones reversibles como reacciones separadas en la matriz estequiométrica S que tienen dos flujos unidireccionales).
Estas dos restricciones clave forman un sistema que puede resolverse mediante análisis convexo. La región de solución puede describirse mediante un conjunto único de Caminos Extremos. En esta región, los vectores de flujo en estado estacionario v pueden describirse como una combinación lineal positiva de estas vías extremas. Los Caminos Extremos, representados en la diapositiva 25 como vectores bi, circunscriben un cono de flujo convexo. Cada dimensión es una velocidad para alguna reacción. En el portaobjetos 25, la dimensión z representa la velocidad de reacción para v3. Podemos reconocer que en cualquier momento, el organismo está viviendo en un punto en el cono de flujo, es decir, está demostrando una distribución de flujo particular. Cada punto en el cono de flujo puede ser descrito por un posible vector de flujo de estado estacionario, mientras que los puntos fuera del cono no pueden.
Un problema es que el cono de flujo sale al infinito, mientras que los flujos infinitos no son físicamente posibles. Por lo tanto, una restricción adicional es tapar el cono de flujo al determinar los flujos máximos de cualquiera de nuestras reacciones (estos valores corresponden a nuestros parámetros Vmax). Dado que muchas reacciones metabólicas son interiores a la célula, no hay necesidad de establecer un límite para cada flujo. Estos topes se pueden determinar experimentalmente midiendo flujos máximos, o calculados usando herramientas matemáticas como reglas de difusividad.
También podemos agregar flujos de entrada y salida que representan el transporte dentro y fuera de nuestras celdas (Vin y Vout). Estos suelen ser mucho más fáciles de medir que los flujos internos y, por lo tanto, pueden servir para ayudarnos a generar un espacio de flujo más relevante biológicamente. Un ejemplo de algoritmo para resolver este problema es el algoritmo simplex [1]. Las diapositivas 24-27 demuestran cómo las restricciones en los flujos cambian la geometría del cono de flujo. En realidad, estamos lidiando con problemas en espacios de dimensiones superiores.

Programación Lineal
La programación lineal es una solución genérica que es capaz de resolver problemas de optimización dadas las restricciones lineales. Estos se pueden representar en algunas formas diferentes.
Forma canónica:
• Maximizar:\(c^{T} x\)
• Sujeto a:\(A x \leq b\)
Forma estándar:
• Maximizar\(\Sigma c_{i} * x_{i}\)
• Sujeto a\(a_{i j} X_{i} \leq b_{i} \text { foralli, } j\)
• Restricción no negatividad:\(X_{i} \geq 0\)
Una introducción concisa y clara a la Programación Lineal está disponible aquí: www.purplemath. com/modules/linprog.htm Las restricciones descritas a lo largo de la sección 3 nos dan el problema de programación lineal descrito en la conferencia. La programación lineal puede considerarse una primera aproximación y es un problema clásico en la optimización. Para tratar de reducir nuestro flujo factible, asumimos que existe una función de aptitud que es una combinación lineal de cualquier número de flujos en el sistema. La programación lineal (u optimización lineal) implica maximizar o minimizar una función lineal sobre un poliedro convexo especificado por restricciones lineales y de no negatividad.

Resolvemos este problema identificando la distribución de flujo que maximiza una función objetiva:
El punto clave en la programación lineal es que nuestras soluciones se encuentran en los límites del espacio de flujo permisible y pueden estar en puntos, bordes o ambos. Sin embargo, por definición, una solución óptima (si existe) estará en un punto del espacio de flujo permisible. Este concepto se demuestra en la diapositiva 30. En ese portaobjetos, A es la matriz estequiométrica, x es el vector de flujos y b es un vector de flujos máximos permisibles.
Los programas lineales, cuando se resuelven a mano, generalmente se realizan por el método Simplex. El método simplex configura el problema en una matriz y realiza una serie de pivotes, basados en las variables básicas de la declaración del problema. En el peor de los casos, sin embargo, esto puede correr en tiempo exponencial. Por suerte, si hay una computadora disponible, otros dos algoritmos están disponibles. El algoritmo elipsoide y los métodos de Punto Interior son capaces de resolver cualquier programa lineal en tiempo polinomial. Es interesante señalar, que muchos problemas aparentemente dicult pueden modelarse como programas lineales y resolverse ecientemente (o tan ecientemente como una solución genérica puede resolver un problema específico).
En microbios como E. coli, esta función objetiva suele ser una combinación de flujos que contribuyen a la biomasa, como se ve en el portaobjetos 31. Sin embargo, esta función no necesita ser completamente biológicamente significativa.
Por ejemplo, podríamos simular la maximización de micolatos en M. tuberculosis, aunque esto no ocurra biológicamente. Nos daría predicciones significativas sobre qué perturbaciones podrían realizarse in vitro que perturbarían la síntesis de micolados incluso en ausencia de la maximización de la producción de esos metabolitos.El análisis de balance de flujo (FBA) fue pionero por el grupo Palssons en la UCSD y desde entonces se ha aplicado a E. coli, M. tuberculosis, y el glóbulo rojo humano [? ].