# Matriz de pesos posicionales

Una matriz de pesos posicionales o MPP (en inglés, position weight matrix (PWM), position-specific weight matrix (PSWM) o position-specific scoring matrix (PSSM)) es una forma de representación y predicción de motivos o patrones en secuencias biológicas (compuestas por nucleótidos o aminoácidos) que tiene como objetivo describir las variaciones intrínsecas en sus patrones.
Por este motivo, estas matrices derivan normalmente de un conjunto de secuencias alineadas que se sospecha que se encuentran funcionalmente relacionadas.
Desde su creación, las MPP se han ido adaptando a distintos tipos de secuencias y se han desarrollado múltiples aproximaciones para determinar los parámetros necesarios, con lo que han terminado por constituir una parte muy importante de muchas herramientas de software para el descubrimiento de patrones.

## Contexto

La matriz de pesos posicionales fue introducida por el genetista americano Gary Stormo en colaboración con sus compañeros en el año 1982, como alternativa a las secuencias consenso.
Estas secuencias habían sido empleadas anteriormente para representar patrones en las secuencias biológicas, aunque poseían problemas en la predicción de nuevas ocurrencias de estos patrones.
Las MPP se usan comúnmente para el modelaje de las interacciones específicas entre el ADN y las proteínas. Sin embargo, la primera vez que se emplearon estas matrices fue con secuencias de ARN de E. coli, donde se describieron distintos lugares que funcionan como dominios de iniciación de la traducción.
En su creación, el matemático Andrzej Ehrenfeucht propuso el algoritmo perceptrón para que las matrices fueran capaces de diferenciar entre las regiones reales de unión, de aquellas no funcionales que poseen secuencias similares. Se llevó a cabo un entrenamiento del perceptrón con dos conjuntos de regiones que resultó en una matriz y un límite capaz de distinguir entre ambos conjuntos.
El uso de la matriz para escanear nuevas secuencias que no forman parte del entrenamiento ha demostrado que este método resulta más sensitivo y preciso que la mejor secuencia consenso existente.
Las ventajas del empleo de las matrices de pesos posicionales sobre las secuencias consenso han hecho de ellas un método popular para representar patrones en secuencias biológicas y un componente esencial en los algoritmos modernos en el descubrimiento de motivos.

## Cálculo de la matriz de pesos posicionales (MPP)

Las matrices de pesos posicionales expresan los patrones inherentes a una alineación de secuencias múltiples de un conjunto de secuencias homólogas.
El objetivo es encontrar coincidencias dichas secuencias alineadas y las secuencias de la base de datos, asignando un peso mayor a aquellas posiciones que se encuentran conservadas respecto a aquellas que son variables.

### Obtención de matrices de frecuencias

La matriz de pesos posicionales se calcula a partir del conjunto de secuencias homólogas alineadas y tiene una fila por cada símbolo del alfabeto (4 filas para nucleótidos en secuencias de ADN o 20 filas para aminoácidos en secuencias de proteínas) y una columna para cada posición del patrón.
En el siguiente ejemplo, se observan N=10 secuencias alineadas de ADN, con L=9 nucleótidos cada una, para las cuales queremos describir un patrón:
* GAGGTAAAC
* TCCGTAAGT
* CAGGTTGGA
* ACAGTCAGT
* TAGGTCATT
* TAGGTACTG
* ATGGTAACT
* CAGGTATAC
* TGTGTGAGT
* AAGGTAAGT

#### Matriz de frecuencias absolutas

El primer paso para construir una matriz de pesos posicionales es crear una matriz de frecuencias absolutas (F). Esta matriz se construye contando las ocurrencias observadas de cada nucleótido en cada posición concreta.
Como se puede observar en el ejemplo, en la posición 1 se han encontrado 3A, 2C, 1G y 4T. Si se realiza el mismo contaje para todas las posiciones se obtendrá la siguiente matriz F de un tamaño de 4x9:
$F={\begin{matrix}A\\C\\G\\T\end{matrix}}{\begin{bmatrix}3&6&1&0&0&6&7&2&1\\2&2&1&0&0&2&1&1&2\\1&1&7&10&0&1&1&5&1\\4&1&1&0&10&1&1&2&6\end{bmatrix}}$
$F_{4\times 9}$: El número de filas es 4, porque solo existen 4 nucleótidos posibles (A,G,C,T) para cada posición y el número de columnas es 9 porque la longitud de las secuencias utilizadas es de 9 nucleótidos.

#### Matriz de frecuencias relativas o probabilidades

Para poder interpretar los coeficientes de la matriz como probabilidades, se divide cada frecuencia absoluta entre el número total de secuencias (N) para la obtención de la matriz de frecuencias relativas o probabilidades(P).
Por ejemplo, para calcular la probabilidad de encontrar una A en la posición 1, se divide la cantidad de A observadas en esa posición (3) entre el número de secuencias totales (10): 3/10 = 0,3 . Este cálculo se realiza para todos los valores de la matriz F y se obtiene la siguiente matriz P:
$P={\begin{matrix}A\\C\\G\\T\end{matrix}}{\begin{bmatrix}0.3&0.6&0.1&0.0&0.0&0.6&0.7&0.2&0.1\\0.2&0.2&0.1&0.0&0.0&0.2&0.1&0.1&0.2\\0.1&0.1&0.7&1.0&0.0&0.1&0.1&0.5&0.1\\0.4&0.1&0.1&0.0&1.0&0.1&0.1&0.2&0.6\end{bmatrix}}$
Esta matriz permite calcular, para una secuencia determinada, la probabilidad de encontrar dicha secuencia en la región funcional descrita por la matriz.
Dada la secuencia S = GAGGTAAAC se realiza el siguiente cálculo:
$p(S|P)=0.1\times 0.6\times 0.7\times 1.0\times 1.0\times 0.6\times 0.7\times 0.2\times 0.2=0.0007056$
Se multiplican los coeficientes de la matriz correspondientes a cada nucleótido de cada posición de la secuencia S. El resultado obtenido se interpreta como que existe una probabilidad de un 0.07% de que la secuencia S se encuentre en un lugar funcional real.

##### Definición matemática

Cada elemento de la matriz de probabilidad $P$ es igual a la probabilidad de encontrar una letra $k$ en la posición $j$ del patrón. Dado un conjunto de $N$ secuencias alineadas de longitud $L$, los elementos de la matriz $P$ se calculan como:
$P_{k,j}={\frac {1}{N}}\sum _{i=1}^{N}I(X_{i,j}=k)$
donde:
$N$ es el número total de secuencias alineadas
$i\in (1,...,N)$: $i$ hace referencia a dichas secuencias, y toma valores de 1 hasta $N$
$j\in (1,...,L)$: $j$ hace referencia a las posiciones dentro de las secuencias, y toma valores desde 1 hasta $L$.
$k=(ACTG)$: $k$ es una de las letras del alfabeto, en este caso A, C, T o G
$P_{k,j}$ es la probabilidad de encontrar la letra $k$ en la posición $j$.
$I(X_{i,j}=k)$ es una función indicatriz en la cual $X_{i,j}$ es la letra correspondiente a la posición $j$ en la secuencia $i$, y sigue la fórmula:
$I(X_{i,j}=k)={\begin{cases}1,&X_{i,j}=k\\0,&X_{i,j}\neq k\end{cases}}$, es decir, la función $I$ toma el valor de 1 cuando $X_{i,j}$ es equivalente al valor de $k$, y el valor de 0 cuando $X_{i,j}$ es diferente de $k$.

### Obtención de la matriz de pesos posicionales

En la mayoría de los casos, los valores de la matriz de pesos posicionales M se calculan mediante logaritmo de la razón de verosimilitud.
Una vez obtenida la matriz de frecuencias relativas o probabilidades, los valores se normalizan según las frecuencias esperadas o probabilidad a priori de $k$ ($P_{k}$) y se obtiene la razón de verosimilitud. Finalmente esta razón de verosimilitud se transforma a escala logarítmica.
De este modo, los valores que se obtienen representan cómo de frecuente es cada nucleótido en cada posición respecto al azar. Valores superiores a 0 indican una frecuencia mayor a la esperada por azar, mientras que valores inferiores a 0 indican una frecuencia inferior a la esperada por azar.
Para la conversión del valor de A en la primera posición, se debe dividir el elemento de A en la posición 1 de la matriz de frecuencias relativas (0,3) entre la probabilidad a priori de A (0,25): 0,3/0,25=1,2 y posteriormente se transforma mediante el logaritmo neperiano: ln(1,2)=0.18.
Este cálculo se realiza para todos los valores de la matriz F y se obtiene la siguiente matriz M:
$M={\begin{matrix}A\\C\\G\\T\end{matrix}}{\begin{bmatrix}0.18&0.87&(-1.32)&(-\infty )&(-\infty )&0.87&1.02&(-0.22)&(-0.91)\\(-0.22)&(-0.22)&(-0.91)&(-\infty )&(-\infty )&(-0.22)&(-0.91)&(-0.91)&(-0.22)\\(-0.91)&(-0.91)&1.02&1.38&(-\infty )&(-0.91)&(-0.91)&0.69&(-0.91)\\0.47&(-0.91)&(-0.91)&(-\infty )&1.38&(-0.91)&(-0.91)&(-0.22)&0.87\end{bmatrix}}$
Comentario: los valores entre paréntesis son negativos, aunque es posible que no se observen debido a un error de visualización.
Dado que se trata de una secuencia de nucleótidos, se asume que la probabilidad esperada al azar es de 0,25. Sin embargo, no siempre existe una distribución uniforme en las unidades de k; por ejemplo, cuando se estudian organismos con una alta composición de CG: en este caso, las probabilidades de C y G serán mayores que las de A y T.
Los valores resultantes de esta matriz permiten calcular una puntuación para una secuencia determinada. Esta puntuación será 0 cuando sea igual de probable encontrar dicha secuencia en la región funcional descrita por la matriz que en cualquier región aleatoria del genoma, mayor que 0 cuando sea más probable encontrar la secuencia en la región funcional que en una región aleatoria y menor que 0 cuando sea más probable encontrar la secuencia en una región aleatoria que en la región funcional.
Dada la secuencia S = GAGGTAAAC, su puntuación se calcularía del siguiente modo:
$p=(-0.91)+0.87+1.02+1.38+0.87+1.02+(-0.22)+(-0.22)=5.19$
Se suman los coeficientes de la MPP correspondientes a cada nucleótido de cada posición de la secuencia dada. El resultado obtenido es mayor que 0, por lo que es más probable encontrar la secuencia S en un lugar funcional real que en un lugar aleatorio del genoma.

##### Definición matemática

$M_{kj}=ln{\frac {P_{kj}}{P_{k}}}$
donde $M_{kj}$ es la matriz de pesos posicionales, $P_{kj}$ es la matriz de frecuencias relativas o probabilidades y $P_{k}$ representa la probabilidad a priori o frecuencias esperadas de las unidades de $k$ (0,25 para la secuencia de nucleótidos y 0,05 para la secuencia de aminoácidos si asumimos una distribución uniforme).

### Independencia estadística

Hay que tener en cuenta que todas las matrices asumen una independencia estadística entre las posiciones del patrón, ya que los valores por cada posición se han calculado independientemente del resto de posiciones. Esto puede resultar una limitación en algunos casos y se podría rectificar mediante la construcción de matrices más complejas añadiendo dimensiones adicionales que tengan en cuenta las posiciones adyacentes.

## Pseudocálculos

Si partimos de una muestra muy pequeña de secuencias, es muy común que aparezcan 0 en la matriz de frecuencias absolutas, lo cual nos lleva a 0 en la matriz de probabilidades y a $-\infty$ en la MPP.
Hay dos razones principales por las que podemos querer evitar estos valores. Por un lado, el hecho de que en una muestra pequeña algunos nucleótidos no aparezcan en algunas posiciones puede ser debido al azar, y asignarles una probabilidad de 0 puede resultar demasiado severo. Por otro lado, al usar estas matrices en algoritmos informáticos, los valores $-\infty$ pueden resultar problemáticos.
Un modo de evitar estas situaciones es mediante el uso de pseudocálculos. Estos se añaden en el paso de la matriz de frecuencias absolutas a la matriz de frecuencias relativas. Por cada valor de frecuencia absoluta, se obtiene el valor de frecuencia relativa mediante la aplicación de la siguiente fórmula:
$p_{a,i}={\frac {c_{a,i}+B/4}{m+B}}$
en la cual $p_{a,i}$ corresponde al valor de la matriz de frecuencias relativas o probabilidades, $c_{a,i}$ corresponde al valor de la matriz de frecuencias absolutas, $m$ corresponde al número de secuencias y $B$ corresponde al valor del pseudocálculo.
No hay un consenso sobre cómo escoger el valor de pseudocálculo más adecuado. Algunos de los métodos más empleados son la regla de Laplace, el uso de distribuciones de Dirichlet o el cálculo de la raíz cuadrada del número de secuencias en la muestra. Por otro lado, el estudio de Nishida et al. concluyó que para el estudio de regiones de unión para factores de transcripción, los pseudocálculos óptimos eran aquellos cercanos a 1 o menores que 1.

## Representación gráfica

Las matrices de pesos posicionales pueden representarse en forma de logos de secuencias, los cuales se calculan empleando la fórmula de Shannon. Esta fórmula calcula la informatividad, es decir, la cantidad de información contenida en cada posición.

## Usos

Las MPP se emplean de forma muy amplia para el análisis de secuencias de nucleótidos en ADN y ARN, y de aminoácidos en proteínas.
Estos análisis incluyen el modelaje o predicción de los lugares de unión de las proteínas y factores de transcripción en el ADN, las regiones de iniciación de la transcripción, las regiones de splicing, la identificación de unidades transcripcionales en todo el genoma e incluso la medición de sesgos en el uso de codones.
También se pueden utilizar en la discriminación de proteínas con distintos tipos de plegamiento, identificación de sus distintas regiones funcionales y de los diferentes lugares de unión, entre otros.
Las MPP ofrecen muchas ventajas, como por ejemplo, permiten una mayor precisión a la hora de comparar secuencias lejanas alineadas y gracias a los patrones descritos por estas matrices se pueden identificar otras secuencias homólogas y clasificarlas en subfamilias. Además, muchos métodos predictivos de secuencias resultan más fiables si están basados en un alineamiento múltiple de secuencias (como es el caso de las MPP).

### Algoritmos y bases de datos
#### MATCH$^{TM}$

Match$^{TM}$ es una herramienta basada en matrices de pesos posicionales para la búsqueda de posibles regiones de unión para factores de transcripción en secuencias de DNA. Esta herramienta emplea la librería de matrices coleccionada en la base de datos TRANSFAC$^®$, de forma que permite la búsqueda de una variedad elevada de diferentes regiones de unión de factores de transcripción.
Adicionalmente, se han implementado diversos conjuntos con valores límites optimizados en el sistema para proveer una variedad ampliada en la rigurosidad de los modos de búsqueda.

#### ModuleMaster

ModuleMaster es un programa avanzado para encontrar patrones cis-regulatorios en conjuntos de genes co-expresados. Es capaz de recuperar secuencias, realizar escaneos matriciales de estas secuencias y finalmente, buscar dichos patrones de regulación cis.
Este programa es capaz de analizar secuencias regulatorias empleando bases de datos como Ensembl.
En este programa se ha implementado, además, el algoritmo de escaneo Match$^{TM}$.

#### JASPAR

JASPAR es una base de datos que posee perfiles de unión de factores de transcripción (FT) no redundantes guardados en matrices de frecuencias relativas de múltiples especies eucariotas en 6 grupos taxonómicos. Se encuentra en su octava actualización donde se ha expandido el número de datos en un 18%.

#### PROSITE

PROSITE es una base de datos que contiene entradas donde se describen dominios, familias y regiones funcionales de las proteínas, junto con patrones y perfiles asociados para su identificación. Esta base se complementa con ProRule, que contiene una colección de reglas que permite incrementar el poder discriminatorio mediante la aportación de información adicional de la funcionalidad y estructura de distintos aminoácidos.
Ambas bases de datos se emplean para la anotación de dominios y características de las entradas de UniProtKB/Swiss-Prot.

#### MEME Suite

MEME Suite no es una base de datos, sino que se trata de un conjunto de herramientas de software para realizar análisis de secuencias basadas en motivos en proteínas, ADN y ARN. El centro de este conjunto de herramientas es el algoritmo MEME que permite encontrar motivos en colecciones de secuencias no alineadas. Desde su descubrimiento en 1994, ha ido creciendo hasta ser empleado en más de 9800 estudios publicados.