the code related to the construction of the neural network model install.packages("neuralnet") install.packages("NeuralNetTools") library(neuralnet) library(NeuralNetTools) set.seed(12345678) inputFile="geneScore.txt" setwd("C:\\biowolf\\neuralDiagnostic\\15.neuralNet") data=read.table(inputFile, header=T, sep="\t", check.names=F, row.names=1) data=as.data.frame(t(data)) group=gsub("(.*)\\_(.*)", "\\2", row.names(data)) data$con=ifelse(group=="con", 1, 0) data$treat=ifelse(group=="treat", 1, 0) fit=neuralnet(con+treat~., data, hidden=5) fit$result.matrix fit$weight plot(fit) pdf(file="neuralnet.pdf", width=9, height=7) plotnet(fit) dev.off() net.predict=compute(fit, data)$net.result net.prediction=c("con", "treat")[apply(net.predict, 1, which.max)] predict.table=table(group, net.prediction) predict.table conAccuracy=predict.table[1,1]/(predict.table[1,1]+predict.table[1,2]) treatAccuracy=predict.table[2,2]/(predict.table[2,1]+predict.table[2,2]) paste0("Con accuracy: ", sprintf("%.3f", conAccuracy)) paste0("Treat accuracy: ", sprintf("%.3f", treatAccuracy)) colnames(net.predict)=c("con", "treat") outTab=rbind(id=colnames(net.predict), net.predict) write.table(outTab, file="neural.predict.txt", sep="\t", quote=F, col.names=F) #install.packages("pROC") library(pROC) inputFile="neural.predict.txt" setwd("C:\\biowolf\\neuralDiagnostic\\16.ROC") rt=read.table(inputFile, header=T, sep="\t", check.names=F, row.names=1) y=gsub("(.*)\\_(.*)", "\\2", row.names(rt)) y=ifelse(y=="con", 0, 1) roc1=roc(y, as.numeric(rt[,2])) ci1=ci.auc(roc1, method="bootstrap") ciVec=as.numeric(ci1) pdf(file="ROC.pdf", width=5, height=5) plot(roc1, print.auc=TRUE, col="red", legacy.axes=T, main="Train group") text(0.39, 0.43, paste0("95% CI: ",sprintf("%.03f",ciVec[1]),"-",sprintf("%.03f",ciVec[3])), col="red") dev.off() install.packages("neuralnet") install.packages("NeuralNetTools") library(neuralnet) library(NeuralNetTools) set.seed(12345678) trainFile="geneScore.txt" testFile="testGeneScore.txt" setwd("C:\\biowolf\\neuralDiagnostic\\18.testNeuralPre") data=read.table(trainFile, header=T, sep="\t", check.names=F, row.names=1) data=as.data.frame(t(data)) group=gsub("(.*)\\_(.*)", "\\2", row.names(data)) data$con=ifelse(group=="con", 1, 0) data$treat=ifelse(group=="treat", 1, 0) fit=neuralnet(con+treat~., data, hidden = 5) data2=read.table(testFile, header=T, sep="\t", check.names=F, row.names=1) data2=t(data2) group2=gsub("(.*)\\_(.*)", "\\2", row.names(data2)) sameGene=intersect(colnames(data), colnames(data2)) data2=data2[,sameGene] net.predict=compute(fit, data2)$net.result net.prediction = c("con", "treat")[apply(net.predict, 1, which.max)] predict.table = table(group2, net.prediction) predict.table conAccuracy=predict.table[1,1]/(predict.table[1,1]+predict.table[1,2]) treatAccuracy=predict.table[2,2]/(predict.table[2,1]+predict.table[2,2]) paste0("Con accuracy: ", sprintf("%.3f", conAccuracy)) paste0("Treat accuracy: ", sprintf("%.3f", treatAccuracy)) colnames(net.predict)=c("con", "treat") outTab=rbind(id=colnames(net.predict), net.predict) write.table(outTab, file="test.neuralPredict.txt", sep="\t", quote=F, col.names=F) install.packages("pROC") library(pROC) inputFile="test.neuralPredict.txt" setwd("C:\\biowolf\\neuralDiagnostic\\19.testROC") rt=read.table(inputFile, header=T, sep="\t", check.names=F, row.names=1) y=gsub("(.*)\\_(.*)", "\\2", row.names(rt)) y=ifelse(y=="con", 0, 1) roc1=roc(y, as.numeric(rt[,2])) ci1=ci.auc(roc1, method="bootstrap") ciVec=as.numeric(ci1) pdf(file="ROC.pdf", width=5, height=5) plot(roc1, print.auc=TRUE, col="red", legacy.axes=T, main="Test group") text(0.39, 0.43, paste0("95% CI: ",sprintf("%.03f",ciVec[1]),"-",sprintf("%.03f",ciVec[3])), col="red") dev.off()