Tengo una lista de proteínas con sus valores característicos. Una tabla de muestra se ve así:
...............Feature1...Feature2...Feature3...Feature4
Protein1
Protein2
Protein3
Protein4
Las filas son proteínas y las columnas son características.
También tengo una lista de proteínas que también interactúan; por ejemplo
Protein3, Protein4
Protein1, Protein2
Protein4, Protein1
Problema : para un análisis preliminar, quiero saber qué características contribuyen más para las interacciones proteicas.
Entiendo que normalmente los árboles de decisión podrían usarse para obtener la característica más importante basada en la entropía, pero no estoy seguro de cómo extenderla a pares de proteínas (es decir, interacciones). ¿Hay algún método para tal propósito?
Respuestas:
Receta real para resolver el problema presentado (una posible solución)
Es sencillo resolver este problema utilizando mi herramienta de aprendizaje automático favorita, votepal wabbit que admite funciones cuadráticas (cruzadas) a través de su opción -q .
fondo de wapal vocal
Antes de saltar a los detalles de uso. Vowardpal Wabbit es un software de aprendizaje automático en línea rápido y escalable para clasificación y regresión. Obtengo tasas de aprendizaje (capacitación) de aproximadamente 5 millones de funciones por segundo en mi escritorio sin límite de tamaño de datos (número de ejemplos) ya que como herramienta de aprendizaje en línea no requiere cargar todos los datos en la memoria. Tiene muchas otras características atractivas: soporte para diferentes algoritmos de aprendizaje, múltiples funciones de pérdida, características dispersas, tipos de características mixtas y más, que están más allá del alcance de esta pregunta.
Estos son los 3 pasos para resolver el problema con comentarios:
Paso 0: Descargue y construya Widgetpal Wabbit desde Github (vea la nota al final de los entornos compatibles)
Paso 1: Prepare un conjunto de entrenamiento donde cada línea se vea así:
explicación del formato del conjunto de entrenamiento:
El número más a la izquierda, 1.0 , es la etiqueta (intensidad de interacción, que puede ser cualquier valor numérico), la segunda cadena ' protein1 / protein2 ' es una etiqueta para dar identidad a la línea, IOW: "esta línea representa la interacción entre protein1 y proteína2 "; Es opcional y puede considerarlo como un comentario. Esta cadena de etiquetas también se repite en las predicciones de los modelos para identificar qué predicción pertenece a qué ejemplo, pero no estamos prediciendo aquí, solo estamos modelando y estudiando nuestro modelo. Luego viene el espacio de nombre de la característica de entrada para protein1
|A
(necesitamos definir un espacio de nombre para poder cruzar entre diferentes espacios de nombre, no tiene que serA
, puede ser cualquier palabra, de hecho, pero la primera letra tiene que diferir entre los espacios de nombres para que podamos cruzarlos en la llamada de comando) seguido de la lista de características de entrada para protein1p1_...
. Por último viene el espacio de nombres para protein2:|B
seguido de los nombres de características de protein2p2_...
.Una de las bellezas de votepal wabbit es que puedes usar cadenas arbitrarias para los nombres de las funciones (las hash internamente, pero no te importa). Los únicos caracteres especiales en el conjunto de entrenamiento son:
|
, para prefijar características de entrada y espacios de nombres, y:
para separar nombres de características de sus valoresEl
:
no se utiliza aquí, porque asumimos cada nombre de la función de proteínas representa un valor lógico (existencia) por lo que sus valores por defecto1
y no necesitan valores explícitos.Ahora puede ejecutar votepal_wabbit (el nombre del ejecutable es
vw
)-q AB
para crear automáticamente características cruzadas (también conocidos como términos de interacción) entre todos los pares de características posibles donde una característica se selecciona de protein1 (el espacio de nombre comienza conA
) y la otra de protein2 ( nombre-espacio que comienza conB
). votepal_wabbit leerá los datos, aprenderá y creará un modelo con pesos para cada combinación de características que resulte en alguna interacción entre el par de proteínas. Aquí, en lugar de ejecutarlovw
directamente, lo ejecutaremos a través de lavw-varinfo
utilidad de envoltura, que viene con votepal wabbit, como nuestro último paso.vw-varinfo
se ejecutavw
para crear el modelo y vuelca el modelo en forma legible para humanos.Paso 3: llame a vw-varinfo de esta manera:
vw-varinfo pasará todas las opciones (
-q ... -c --passes ...
) tal cual avw
. Solo-q AB
es esencial para cruzar los dos espacios de nombres de características. Agregué una opción más arriba (ejecutar múltiples pases), que creo que daría mejores resultados.Este comando llamará a votepal wabbit (
vw
) para entrenar en el conjunto de datos e imprimir la salida que creo que está buscando: todas las interacciones de características en orden de fuerza y sus pesos relativos.Ejemplo de entrada y salida
Suponga que su entrada
prot.dat
incluye una interacción de 3 vías entre 3 proteínas:Este es deliberadamente un ejemplo muy minimalista.
vw
no debería tener ningún problema con conjuntos de datos mucho más grandes (por ejemplo, millones de filas, cientos de características), además, varié las etiquetas de fuerza de interacción en los ejemplos. Si en su caso la interacción es un "sí" o "no" booleano, simplemente use0
(sin interacción) o1
(la interacción existe) como el primer campo en cada línea.Corriendo:
Produciría todas las interacciones posibles (ignorar los espacios de nombres
A
yB
en la salida) y sus pesos:Demostrando que en estos datos, los contribuyentes más fuertes a cualquier interacción en general son 1) la mera presencia de la
k
característica, 2) lak
característica que interactúa consigo misma (suponiendo que ambas proteínas la tengan) y 3) quek
interactúam
. mientras que los más débiles (contribución negativa a la interacción de proteínas) son lab
característica combinada con lam
característica.Aquí hay una página de COMO en vw-varinfo
VOBPAL Wabbit se construye a partir de la fuente (ver enlace anterior) y se ejecuta en Linux (y posiblemente otros Unixes), Mac OS-X y Windows.
HTH
fuente
Las redes de interacción de proteínas pueden representarse mediante gráficos no dirigidos, con proteínas que forman los nodos y sus interacciones en los bordes. Si la interacción de proteínas es un fenómeno binario, los bordes también son binarios (cero o uno), de lo contrario, puede usar un número real. Puede representar numéricamente este gráfico como una matriz cuadrada y una simétrica en particular. Para encontrar las características más importantes, puede conservar las que tienen la mayor proyección a lo largo de los vectores propios de la matriz de interacción.
fuente