$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
1. Descarga de datos
- Descargue los datos de la adhesión PRJNA386367 de la base de datos ncbi. A partir de los datos de la adhesión PRJNA386367, seleccione los datos del microbioma de rizosfera, rizóplano y endosfera de plantas de arroz cultivadas durante 14 semanas en un campo de arroz sumergido en Arbuckle, California, en 2014.
NOTA: Los datos del microbioma de rizosfera, rizóplano y endosfera fueron presentados por la tabla de OTU en la adhesión PRJNA386367.
2. Determinación óptima del valor de potencia
NOTA: El paquete WGCNA contiene todos los siguientes parámetros funcionales. WGCNA es un paquete R para el análisis de redes de correlación ponderada. Las líneas de comandos clave hacen referencia al Suplemento S1.
- En el entorno del lenguaje R, abra el software Rstudio e instale el paquete WGCNA.
- Cargue los datos y utilice la función goodSamplesGenes para comprobar la exactitud de los datos. Ejecute las líneas de comandos:
"gsg = goodSamplesGenes(datExpr0, verbose = 3)
gsg$allOK "
Haga clic en Ejecutar.
- Compruebe si hay valores atípicos y almacene muestras que cumplan con los requisitos. Cuando el resultado de la comprobación sea TRUE, continúe con el siguiente paso. Guarde el resultado.
- Utilice la función PickSoftThreshold para calcular el índice R2 sin escala de los dos grupos de datos con diferentes valores de potencia. Ejecute la línea de comandos:
"sft = pickSoftThreshold(datExpr0, powerVector = powers, verbose = 5)"
Haga clic en Ejecutar.
- Visualizar los resultados (Figura 1). Ejecute la línea de comandos:
"plot(sft$fitIndices[,1], -sign(sft$fitIndices[,3])*sft$fitIndices[,2],
xlab="Soft Threshold (power)",ylab="Scale Free Topology Model Fit,signed R^2",type="n",
main = paste("ES_Scale independencia"));
text(sft$fitIndices[,1], -sign(sft$fitIndices[,3])*sft$fitIndices[,2],
labels=powers,cex=cex1,col="red");
abline(h=0.9,col="rojo")
plot(sft$fitIndices[,1], sft$fitIndices[,5],
xlab="Umbral suave (potencia)",ylab="Conectividad media", type="n",
main = paste("conectividad ES_Mean"))
text(sft$fitIndices[,1], sft$fitIndices[,5], labels=powers, cex=cex1,col="red")"
Haga clic en Ejecutar.
NOTA: La premisa del algoritmo de red de correlación ponderada es que la estructura de red de coexpresión establecida se ajusta a los estándares del criterio de topología libre de escala, aumentando su robustez. Un índice sin escala más cercano a 1 indica una estructura de red que está más cerca de la red sin escala.
- Seleccione el valor de potencia cuando el índice sin escala R2 cuadreó más de 0,9 y continúe con el siguiente paso del análisis.
NOTA: Cuando el índice sin escala está cerca de 1, la estructura de red está más cerca de la red sin escala. Al analizar dos o más redes, es necesario elegir hacer que cada red se acerque al valor de potencia de la red libre de escala para satisfacer la comparabilidad entre las redes co-expresadas.
3. Construcción de una red de coexpresión e identificación de módulos
NOTA: Sobre la base del valor de potencia calculado anteriormente, se construye la red de co-ocurrencia. Las líneas de comandos clave hacen referencia al Suplemento S2.
- Utilice la función de adyacencia del paquete WGCNA para agregar parámetros firmados para la construcción de una red de co-ocurrencia simbólica. Ejecute la línea de comandos:
"adyacencia = adyacencia(datExpr0, poder = softPower)"
Haga clic en Ejecutar.
- Aplique la función TOM-similarity para desarrollar una red topológica superpuesta y calcule la red de disimilitud. Ejecute la línea de comandos:
"TOM = TOMsimilarity(adyacencia);
dissTOM = 1-TOM"
Haga clic en Ejecutar.
Nota : el parámetro firmado se agregó para establecer el tipo de red de superposición de topología.
- Utilice la función hclust para seleccionar el método de agrupación jerárquica de vinculación media para la agrupación en clústeres jerárquicas. Ejecute la línea de comandos:
"geneTree = hclust(as.dist(dissTOM), method = "average");"
Haga clic en Ejecutar.
- Utilice la función cutreeDynamic para realizar el corte dinámico por rama y establezca el parámetro minClusterSize en 30. Obtener el resultado de reconocimiento del módulo. Ejecute la línea de comandos:
"dynamicMods = cutreeDynamic(dendro = geneTree, distM = dissTOM, deepSplit = 2, pamRespectsDendro = FALSE, minClusterSize = minModuleSize);"
Haga clic en Ejecutar.
NOTA: El tamaño mínimo del módulo no puede ser inferior a 30.
- Calcule el eigen del módulo de cada módulo otus mediante la función moduleEigengenes. Ejecute la línea de comandos:
"MEList = moduleEigengenes(datExpr0, colors = dynamicColors)
MEs = MEList$eigengenes"
Haga clic en Ejecutar.
NOTA: El eigen del módulo representaba el nivel de expresión OTU general en el módulo. No era una OTU específica, sino el primer componente principal de cada clúster obtenido por descomposición de valores de red singulares.
- Realice la función de clúster basada en el coeficiente de correlación del módulo eigen. Utilice la función mergeCloseModules para combinar los módulos con un valor inferior a 0,25. Ejecute la línea de comandos:
"merge = mergeCloseModules(datExpr0, dynamicColors, cutHeight = MEDissThres, verbose = 3)"
Haga clic en Ejecutar.
- Finalmente, utilice la función plotDendroAndColors para la visualización para obtener el diagrama de visualización de asignación de módulos de cada red de coexpresión (Figura 2). Utilice la función de tabla para extraer la atribución del módulo correspondiente de cada OTin la tabla de asignación del módulo. Ejecute la línea de comandos:
"plotDendroAndColors(geneTree, mergedColors, "Merged dynamic",dendroLabels = FALSE,
hang = 0.03,addGuide = TRUE, guideHang = 0.05,
main = "ES_Gene dendrograma y colores de módulo")"
Haga clic en Ejecutar.
NOTA: En el diagrama de asignación de módulos de la red de co-expresión, diferentes colores representan diferentes módulos, y el gris representa OTU que no se pueden clasificar en ningún módulo. Un mayor número de OTU en el módulo gris indica que la calidad de preprocesamiento en etapa inicial de la matriz de expresión es deficiente.
4. Comparación de módulos
NOTA: Este método se puede utilizar para comparar los módulos de red de dos comunidades microbianas ecológicas. En este artículo, compare las diferencias de los módulos de red microbiana entre endosfera y rizóplano, endosfera y rizosfera, rizosfera y rizóplano.
- Prueba de conservación
- Cargue los parámetros y resultados de los dos conjuntos de datos guardados en los pasos anteriores.
- Establezca el resultado de asignación del módulo de red de un grupo de datos microbianos como grupo de referencia, mientras que el otro grupo como grupo de prueba.
- Utilice la función modulePreservation para calcular los valores de los parámetros estadísticos de conservadurismo Z_summary y medianRank. Ejecute la línea de comandos:
"system.time({mp=modulePreservation(multiExpr,
multiColor,referenceNetworks=1,
nPermutation=100, randomSeed=1,quickCor=0,verbose=3)})"
Haga clic en Ejecutar.
NOTA: Este resultado puede cuantificar el conservadismo entre módulos. Z_summary>10 indica que dos módulos están altamente conservados, mientras que Z_summary<2 denota módulos no conservados. medianRank expresa la preservación relativa del módulo evaluado por ranking. Los valores de medianRank más altos denotan módulos no conservados. (Las líneas de comandos clave se refieren al Suplemento S3.)
- Utilice la función de trazado para visualizar los resultados (Figura 3). Obtenga los parámetros Z_summary y medianRank (Tabla 1).
NOTA: Los módulos de red que satisfacen tanto el valor Z_summary inferior a 2 como el valor medio Rank en la parte superior, es el módulo más no conservado en las dos comunidades microbianas ecológicas.
- Basado en los resultados de los dos parámetros estadísticos antes mencionados para identificar el módulo con el módulo más altamente no conservado de las dos redes.
- Análisis de correlación de la pertenencia al módulo
- Establezca los resultados de asignación de módulos de las dos redes que se establecieron como la referencia y el grupo de prueba, respectivamente.
NOTA: La configuración debe ser la misma que la prueba de preservación.
- Utilice la función corPvalueStudent para extraer el valor kME (pertenencia a módulos) de cada OTU en varios módulos candidatos.
Ejecute la línea de comandos:
"Pvalue = as.data.frame(corPvalueStudent(as.matrix)
(ModuleMembership), Samples))"
Haga clic en Ejecutar.
NOTA: kME significa el grado de pertenencia al módulo. ME significa módulo eigen, que representa el nivel general de expresión OTU en el módulo. kME es el coeficiente de correlación entre cada OTU y el ME. Cuantificar la importancia de OTU en la red por el valor kME de OTU. (Las líneas de comandos clave se refieren al Suplemento S4.)
- A continuación, utilice la función verboseScatterplot para calcular el coeficiente de correlación del valor kME de las OTU correspondientes en las dos redes y dibuje el diagrama de análisis de correlación(Figura 4).
Ejecute la línea de comandos:
"verboseScatterplot(abs(TModuleMembership
[TmoduleGenes, Tcolumn]),
abs(NModuleMembership[NmoduleGenes, Ncolumn]),
xlab = paste("kME in", "ES"),
ylab = paste("kME in", "RP"),
main = pasta("lightyellow"),
cex.main = 1.7, cex.lab = 1.6, cex.axis = 1.6, col = modulecolor)"
Haga clic en Ejecutar.
- Seleccione el módulo con el coeficiente de correlación más pequeño del valor kME de la OTU de las dos redes. Considere que este módulo tiene la mayor diferencia de las dos redes.
5. Análisis del módulo de red diferencial microbiana
- Obtener datos de los filos de bacterias dominantes mediante el análisis estadístico del conjunto de secuencias OTU del módulo con mayor diferencia.
NOTA: El conjunto de secuencias OTU del módulo con la mayor diferencia se suma a la taxonomía de phyla. Los filos de bacterias dominantes representaron más del 10%.
- A continuación, utilice la función exportNetworkToCytoscape para obtener el archivo que contiene la información de relación de interacción de la OTU en el módulo diferencial más grande.
Ejecute la línea de comandos:
"cyt = exportNetworkToCytoscape(modTOM,
edgeFile = paste("NEW-ES_CytoscapeInput-edges-", modules , ".txt", sep=""),
nodeFile = paste("NEW-ES_CytoscapeInput-nodes-", modules, ".txt", sep=""),
ponderado = TRUE,umbral = 0,5, nodeNames = modProbes,
altNodeNames = modGenes, nodeAttr = moduleColors[inModule])"
Haga clic en Ejecutar.
- Importe el archivo a Cytoscape. Establezca el umbral en 0,5 y ajuste otros parámetros según sea necesario.
- Construir una red de co-ocurrencia de microorganismos diferenciales (Figura 5).
- Obtuve la información del género núcleo que tiene el rol regulador más importante en la red.
NOTA: De acuerdo con el valor kME de OUT, se puede definir el género central.
- Finalmente, se evaluaron las funciones del género núcleo y se analizó su influencia en toda la red de diferencias.