次の問題があります
WGCNA - http://labs.genetics.ucla.edu/horvath/htdocs/CoexpressionNetwork/Rpackages/WGCNA/Tutorials/
セクション 1.6、外部ソフトウェアへのネットワークのエクスポート (Cytoscape) に取り組んでいます。
現在、一連の遺伝子に対して WGCNA を実行しようとしていますが、各モジュールの上位 x ハブ遺伝子を取得するのに問題があります。ネットワークを Cytoscape にエクスポートしようとしていますが、VisANT にエクスポートするために概説したのと同じ方法を使用して、トップ x ハブ遺伝子を取得しました。
# Select modules (only interested in one for now)
modules = c("greenyellow")
# Select module probes
probes = names(datExpr)
inModule = is.finite(match(bwModuleColors, modules))
modProbes = probes[inModule]
modGenes = annot$gene_symbols[match(modProbes, annot$geneID)]
# Select the corresponding Topological Overlap
modTOM = TOM[inModule, inModule]
dimnames(modTOM) = list(modProbes, modProbes)
# Restrict the network to the top 30 genes
nTop = 30
IMConn = softConnectivity(datExpr[, modProbes]
top = (order(-IMConn) <= nTop)
# Export the network into a fomat that Cytoscape can read
cyt = exportNetworkToCytoscape(modTOM[top, top],
edgeFile = paste("CytoscapeInput-edges-", paste(modules, collapse="-"), ".txt", sep = ""),
nodeFile = paste("CytoscapeInput-nodes-", paste(modules, collapse="-"), ".txt", sep = ""),
weight = TRUE,
threshold = 0.02,
nodeNames = modProbes,
altNodeNames = modGenes,
nodeAttr = bwModuleColors[inModule])
各遺伝子への接続数をカウントする短いループを作成しましたが、期待どおりに機能しますが、x 番目の遺伝子には一貫して接続がありません。x が 30 だとしましょう。カットオフを 31 のハブ遺伝子に増やすと、30 番目の遺伝子はネットワーク内の他の遺伝子との接続を示しますが、31 番目の遺伝子は何も示しません。さらに、この変更により、ネットワーク内の他の遺伝子への接続数の一部が増加および減少します。ネットワークは 1 つの遺伝子によって大きくなり、変更は 30 番目の遺伝子によって説明される必要があるため、接続を追加する必要があるため、これは本当に気になりますが、これは出力には当てはまりません。
# Split the cytoscape file into two parts: edge and node
node <- cyt$nodeData
edge <- cyt$edgeData
# The limit covers all of the connections in the edge file by determining the length of the column ‘fromNode’
limit <- length(edge$fromNode)
# Create an empty list to store the counts for each gene
counts = list()
# Loop for the genes going from 1 to the number of genes specified for the network, ‘nTop’
for (i in 1:nTop) {
# Reset the count for each new gene and specify the names of the gene of interest and the matching genes
name = node$nodeName[[i]]
count = 0
# Nested loop that searches for matches to the gene in question in both the ‘fromNode’ and ‘toNode’columns, and adds one to the count for each match.
for (j in 1:limit) {
matchName1 = edge$fromNode[[j]]
matchName2 = edge$toNode[[j]]
if (name == matchName1 || name == matchName2)
{count = count + 1}
}
# Create a string for the attribute in the correct format
attribute <- paste(name, "=", count)
# Adds the count to the list
counts <- c(counts, attribute)
}
# End of loop
ループは想定通りに動いているようですので、ネットワークの構築に問題があるのではないかと考えています。私は現在、線形代数、行列、およびトポロジーについて知っていることを参照して、問題がソートされている方法またはそのようなものであるかどうかを確認しようとしていますが、 exportNetworkToCytoscape() 関数の方法にすぎない可能性があります動作します。