KEGG.annotationvold <-
function(dataA,max.mz.diff=10, queryadductlist=c("M+H"), xMSannotator.outloc, numnodes=1,syssleep=1,adduct_table)
{
data_a<-as.data.frame(dataA)
#print("Using the 1st column as \"mz\" for annotation.")
mzlist<-data_a[,1]
dir.create(xMSannotator.outloc,showWarnings=FALSE)
setwd(xMSannotator.outloc)
#adduct_table<-read.table("/Users/karanuppal/Documents/Emory/JonesLab/Projects/xMSannotator/adduct_table.txt",sep="\t",header=TRUE)
#adduct_table<-adduct_table[c(which(adduct_table[,6]=="S"),which(adduct_table[,6]=="Acetonitrile")),]
adduct_names<-as.character(adduct_table[,1])
adductlist<-adduct_table[,4]
mult_charge<-adduct_table[,3]
num_mol<-adduct_table[,2]
names(adductlist)<-as.character(adduct_names)
names(mult_charge)<-as.character(adduct_names)
names(num_mol)<-as.character(adduct_names)
alladducts<-adduct_names
if(queryadductlist[1]=="positive")
{
queryadductlist<-adduct_names[which(adduct_table[,5]=="positive")]
}else{
if(queryadductlist[1]=="negative")
{
queryadductlist<-adduct_names[which(adduct_table[,5]=="negative")]
}else{
if(queryadductlist[1]=="all"){
queryadductlist<-alladducts
}else{
if(length(which(queryadductlist%in%alladducts==FALSE))>0){
errormsg<-paste("Adduct should be one of:",sep="")
for(i in alladducts){errormsg<-paste(errormsg, i,sep=" ; ")}
stop(errormsg, "\n\nUsage: feat.batch.annotation.KEGG(dataA,max.mz.diff=10, queryadductlist=c(\"M+H\", \"M+Na\"), xMSannotator.outloc, numnodes=1)",
"\n\n OR feat.batch.annotation.KEGG(dataA,max.mz.diff=10, queryadductlist=c(\"positive\"), xMSannotator.outloc, numnodes=1)",
"\n\n OR feat.batch.annotation.KEGG(dataA,max.mz.diff=10, queryadductlist=c(\"negative\"), xMSannotator.outloc, numnodes=1)",
"\n\n OR feat.batch.annotation.KEGG(dataA,max.mz.diff=10, queryadductlist=c(\"all\"), xMSannotator.outloc, numnodes=1)"
)
}
}
}
}
parentres={}
#cnames<-c("","Adduct","Query.m/z", "Search mass \n tolerance range (+/-)", "Metlin", "Compound.Name", "CASID", "KEGG.Compound.ID", "KEGG.Pathway.name", "KEGG.Pathway.ID", "HMDB.ID", "PubChem.Substance.ID", "PubChem.Compound.ID", "ChEBI.ID", "LIPID.MAPS.ID")
cnames<-c("","Adduct","Query.m/z", "Search mass \n tolerance range (+/-)", "Metlin", "Compound.Name", "Chemical.Formula", "Exact Mass", "CASID", "KEGG.Compound.ID",
"KEGG.Pathway.ID", "KEGG.Pathway.name","HMDB.ID", "PubChem.Substance.ID", "ChEBI.ID", "LIPID.MAPS.ID","KEGG.Brite.Category",
"KEGG.Disease.ID","KEGG.Drug.ID","KEGG.Environ.ID")
for(adnum in 1:length(queryadductlist))
{
adductname=queryadductlist[adnum]
adductmass=adductlist[as.character(adductname)]
cl<-makeSOCKcluster(numnodes)
clusterEvalQ(cl, library(XML))
clusterEvalQ(cl, library(RCurl))
clusterEvalQ(cl, "feat.batch.annotation.child")
#print(paste("Query adduct: ",adductname,sep=""))
mz.annot.res<-new("list")
min_mz<-min(mzlist)
max_mz<-max(mzlist)
mz_group<-ceiling(max_mz/min_mz)
#mz_group<-round(max_mz/10)
#length(mzlist)
num_mz<-1
for(mind in seq(1,length(mzlist),mz_group)){
stopind<-mind+mz_group
if(stopind>length(mzlist)){
stopind<-length(mzlist)
}
s1<-mzlist[mind:stopind]
s1<-unique(s1)
num_mz<-num_mz+length(s1)
if(num_mz%%50>0){
Sys.sleep((syssleep/2))
}else{
Sys.sleep(syssleep)
}
if(length(s1)>1){
mz.annot.res<-c(mz.annot.res,parLapply(cl,s1,feat.batch.annotation.child,max.mz.diff=max.mz.diff,adductname=adductname,adduct_table=adduct_table,syssleep=syssleep))
}else{
for(i in 1:length(s1)){
rescur<-feat.batch.annotation.child(mz.val=s1[i],max.mz.diff=max.mz.diff,adductname=adductname,adduct_table=adduct_table,syssleep=syssleep)
#print(length(rescur))
if(length(rescur)>0){
rescur<-as.matrix(rescur)
#print(dim(rescur))
if(dim(rescur)[2]==1){
rescur<-t(rescur)
rescur<-as.data.frame(rescur)
}
rescur<-as.data.frame(rescur)
#print(dim(rescur))
mz.annot.res<-c(mz.annot.res,rescur)
}
}
}
if(mind%%10>0){
Sys.sleep((syssleep/10))
}else{
Sys.sleep(syssleep)
stopCluster(cl)
cl<-makeSOCKcluster(numnodes)
clusterEvalQ(cl, library(XML))
clusterEvalQ(cl, library(RCurl))
clusterEvalQ(cl, "feat.batch.annotation.child")
}
}
stopCluster(cl)
res={}
#print(adductname)
if(length(mz.annot.res)>0){
for(mzl in 1:length(mz.annot.res))
{
res=rbind(res,mz.annot.res[[mzl]])
}
}
res<-unique(res)
text_res<-{}
if(length(res)>0){
adductname=c(rep(adductname,dim(res)[1]))
temp_res<-cbind(adductname,res)
temp_res<-as.matrix(temp_res)
if(dim(temp_res)[2]==1){
temp_res<-t(temp_res)
temp_res<-as.data.frame(temp_res)
}
bad_rows<-which(temp_res[,2]=="1")
if(length(bad_rows)>0){
temp_res<-temp_res[-bad_rows,]
temp_res<-as.matrix(temp_res)
#temp_res<-t(temp_res)
if(dim(temp_res)[2]==1){
temp_res<-t(temp_res)
}
}
#temp_res<-as.data.frame(temp_res)
colnames(temp_res)=NULL
#text_resindex<-c(1,2,5,6,7,8,11,10,13,15,17,19,21)
#text_resindex<-c(1,2,5,6,7,8,9,12,11,14,16,18,20,22)
#text_resindex<-c(1,2,5,6:8,9,11,13,14,16,18,20,21)
#text_resindex<-c(1,2,5,6:7,4,8,10,12,13,17,19,21)
text_resindex<-c(1,2,5,6:7,4,8,9,11,13,14,16,18,20,22,26:28)
text_resindex<-text_resindex+1
#print(dim(temp_res))
text_res<-temp_res[,c(1,text_resindex)]
text_res<-as.matrix(text_res)
if(dim(text_res)[2]==1){
text_res<-t(text_res)
}
text_res<-as.data.frame(text_res)
bad_rows<-which(text_res[,2]=="1")
if(length(bad_rows)>0){
text_res<-text_res[-bad_rows,]
text_res<-as.matrix(text_res)
text_res<-t(text_res)
}
text_res<-as.data.frame(text_res)
sernum=seq(1,dim(text_res)[1])
text_res<-cbind(sernum,text_res)
colnames(text_res)=cnames
text_res<-text_res[,-c(5)]
parentres=rbind(parentres,temp_res)
rm(temp_res)
colnames(parentres)=NULL
}
#num_cols<-dim(text_res)[2]
#text_res<-cbind(text_res[,c(1:10)],text_res[,c(num_cols)],text_res[,c(11:(num_cols-1))])
fname=paste(xMSannotator.outloc,"/KEGG_annotation_results_",queryadductlist[adnum],".txt",sep="")
write.table(text_res,file=fname,sep="\t",row.names=FALSE)
Sys.sleep(syssleep)
}
html_res<-{}
text_res<-{}
if(length(parentres)>0){
res<-parentres[order(parentres[,2]),]
#html_resindex<-c(1,2,5,4,6:7,9,11:12,14,16,18,20,22)
res<-as.matrix(res)
if(dim(res)[2]==1){res<-t(res)}
#html_resindex<-c(1,2,5,6:7,9,11:12,14,16,18,20,22)
#html_resindex<-c(1,2,5,6:7,4,8,10,12,13,15,17,19,21)
html_resindex<-c(1,2,5,6:7,4,8,10,12,13,15,17,19,21,22,23:25)
html_resindex<-html_resindex+1
html_res<-res[,c(1,html_resindex)]
html_res<-as.matrix(html_res)
if(dim(html_res)[2]==1){html_res<-t(html_res)}
sernum=seq(1,dim(html_res)[1])
#html_res<-cbind(sernum,html_res)
html_res<-as.data.frame(html_res)
cnames<-c("Adduct","Query.m/z", "Search mass \n tolerance range (+/-)","Metlin", "Compound.Name", "Chemical.Formula", "Exact Mass", "CASID", "KEGG.Compound.ID",
"KEGG.Pathway.ID", "KEGG.Pathway.Name", "HMDB.ID", "PubChem.Substance.ID", "ChEBI.ID", "LIPID.MAPS.ID","KEGG.Brite.Category",
"KEGG.Disease.ID","KEGG.Drug.ID","KEGG.Environ.ID")
#"KEGG.Gene.ID",
colnames(html_res)<-cnames
html_res<-html_res[,-c(4)]
#fname=paste("Annotation_results",sep="")
#num_cols<-dim(html_res)[2]
#text_res<-cbind(html_res[,c(1:10)],html_res[,c(num_cols)],html_res[,c(11:(num_cols-1))])
fname=paste("KEGG_annotation_results",sep="")
unlink(fname)
#fname=paste(xMSannotator.outloc,"/KEGG_annotation_results.html",sep="")
HTMLInitFile(filename=fname,Title="KEGG annotation results", outdir=xMSannotator.outloc)
fname=paste(xMSannotator.outloc,"/KEGG_annotation_results.html",sep="")
HTML(html_res,file=fname,Border=1,innerBorder=1,useCSS=TRUE)
HTMLEndFile(file=fname)
cnames<-c("","Adduct","Query.m/z", "Search mass \n tolerance range (+/-)","Metlin", "Compound.Name", "Chemical.Formula", "Exact Mass", "CASID", "KEGG.Compound.ID",
"KEGG.Pathway.ID", "KEGG.Pathway.Name", "HMDB.ID", "PubChem.Substance.ID", "ChEBI.ID", "LIPID.MAPS.ID","KEGG.Brite.Category",
"KEGG.Disease.ID","KEGG.Drug.ID","KEGG.Environ.ID")
#text_resindex<-c(1,2,5,6:7,4,8,9,11,13,14,16,18,20,22) #c(1,2,5,6,7,8,9,12,11,14,16,18,20,22)
#text_resindex<-c(1,2,5,6:7,4,8,10,12,13,17,19,21)
#text_resindex<-c(1,2,5,6:7,4,8,9,11,13,14,16,18,20,22,29:33)
text_resindex<-c(1,2,5,6:7,4,8,9,11,13,14,16,18,20,22,26:28)
text_resindex<-text_resindex+1
text_res<-res[,c(1,text_resindex)]
text_res<-as.matrix(text_res)
if(dim(text_res)[2]==1){text_res<-t(text_res)}
if(length(text_res)>0){
sernum=seq(1,dim(text_res)[1])
}else{
sernum={}
}
text_res<-cbind(sernum,text_res)
text_res<-as.data.frame(text_res)
colnames(text_res)=cnames
text_res<-text_res[,-c(5)]
#num_cols<-dim(text_res)[2]
#text_res<-cbind(text_res[,c(1:10)],text_res[,c(num_cols)],text_res[,c(11:(num_cols-1))])
fname=paste(xMSannotator.outloc,"/KEGG_annotation_results_alladducts.txt",sep="")
write.table(text_res,file=fname,sep="\t",row.names=FALSE)
}
return(list("text.res"=text_res,"html.res"=html_res))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.