group_metabs_prev <-
function(dataA, max.rt.diff=10, alignment.tool="apLCMS", clust.method="correlation",cor.method="pearson",corthresh=0.7,corpvaluethresh=0.05,mult.test.cor=FALSE)
{
diff_mz_num=1
unique_mz={}
ppm_v={}
rt_v={}
cnames=colnames(dataA)
dataA<-as.data.frame(dataA)
#dataA<-as.data.frame(dataA,2,as.numeric)
if(alignment.tool=="apLCMS")
{
sample.col.start=6
}
else
{
if(alignment.tool=="XCMS")
{
sample.col.start=9
cnames[1]="mz"
cnames[4]="time"
colnames(dataA)=cnames
}
else
{
sample.col.start=3
cnames[1]="mz"
cnames[2]="time"
colnames(dataA)=cnames
#stop(paste("Invalid value for alignment.tool. Please use either \"apLCMS\" or \"XCMS\"", sep=""))
}
}
if(clust.method=="correlation"){
cl<-makeCluster(10)
#clusterExport(cl, "getCorchild")
#goodfeats[mnum,-c(1:2)]),data_mt
#system.time(pearson_res<-parRapply(cl,dataA[,-c(1:sample.col.start)],getCorchild,t(dataA[,-c(1:sample.col.start)]),cor.method))
#stopCluster(cl)
pearson_resmat<-{}
#return(list(cormat=cormat,complete_pearsonpvalue_mat=complete_pearsonpvalue_mat,complete_pearsonqvalue_mat=complete_pearsonqvalue_mat))
pearson_Res_all<-{}
cormat<-WGCNA::cor(t(dataA[,-c(1:sample.col.start)]), use = 'p')
cormat<-as.data.frame(cormat)
cormat<-as.matrix(cormat)
cor_list<-{}
#p1<-cor2pcor(cormat)
cor_groups<-new("list")
#for(cm in 1:dim(cormat)[1]){
cor_groups<-lapply(1:dim(cormat)[1],function(cm){
corind_list=new("list")
cor_ind<-which(cormat[,cm]>=corthresh)
corind_list[[diff_mz_num]]=cor_ind #dataA[getbind_same,]
diff_mz_num=diff_mz_num+1
return(corind_list)
})
cor_group_list<-{}
#
for(m in 1:length(cor_groups)){
if((m%in%cor_group_list)==FALSE){
for(n in (m+1):length(cor_groups)){
if(n>length(cor_groups)){
break;
}
com1<-intersect(cor_groups[[m]][[1]],cor_groups[[n]][[1]])
if(length(com1)>0){
cor_groups[[m]][[1]]<-c(cor_groups[[m]][[1]],cor_groups[[n]][[1]])
cor_groups[[m]][[1]]<-unique(cor_groups[[m]][[1]])
cor_group_list<-c(cor_group_list,n)
cor_groups[[n]][[1]]<-c(0)
}
}
cor_groups[[m]][[1]]<-unique(cor_groups[[m]][[1]])
}
}
if(length(cor_group_list)>0){
cor_groups<-cor_groups[-cor_group_list]
}
diffmat<-{}
cor_groups<-unique(cor_groups)
levelAnum<-1
for(m in 1:length(cor_groups)){
if((m%in%cor_group_list)==FALSE){
cur_group_ind<-unique(cor_groups[[m]][[1]])
cur_group<-dataA[cur_group_ind,]
cur_group<-cbind(levelAnum,cur_group)
diffmat<-rbind(diffmat,cur_group)
levelAnum<-levelAnum+1
}
}
#cor.test(as.numeric(cur_group[1,-c(1:10)]),as.numeric(cur_group[10,-c(1:10)]))
}else{
if(clust.method=="wgcna"){
levelAnum<-mlabels$colors
diffmat<-cbind(levelAnum,dataA)
diffmat<-diffmat[order(diffmat$levelAnum),]
for(m1 in mlabels){
subdata<-diffmat[which(mlabels==m1),]
}
}
}
#b1<-hist(diffmat$time,breaks=seq(0,max(diffmat$time),max.rt.diff))
diffmat<-as.data.frame(diffmat)
diffmat<-diffmat[order(diffmat$time),]
group_labels_level1<-levels(as.factor(diffmat$levelAnum))
mz_groups<-new("list")
#group_labels_level1<-names()
#Step 1 Group features by m/z
mz_groups<-lapply(1:length(group_labels_level1),function(j){
commat={}
diffmz=new("list")
cur_group<-diffmat[which(diffmat$levelAnum==group_labels_level1[j]),]
#b1<-hist(cur_group$time,breaks=seq(min(cur_group$time)-max.rt.diff,max(cur_group$time)+max.rt.diff,2*max.rt.diff))
for(i in 1:dim(cur_group)[1]){
getbind_same<-which(abs(diffmat$time-cur_group$time[i])<=max.rt.diff & diffmat$levelAnum==group_labels_level1[j])
diffmz[[diff_mz_num]]=getbind_same #dataA[getbind_same,]
diff_mz_num=diff_mz_num+1
}
return(diffmz)
})
del_list<-{}
#length(mz_groups)
for(k in 1:length(mz_groups)){
for(m in 1:length(mz_groups[[k]])){
if((m%in%del_list)==FALSE){
for(n in (m+1):length(mz_groups[[k]])){
if(n>length(mz_groups[[k]])){
break;
}
com1<-intersect(mz_groups[[k]][[m]],mz_groups[[k]][[n]])
if(length(com1)>0){
mz_groups[[k]][[m]]<-c(mz_groups[[k]][[m]],mz_groups[[k]][[n]])
del_list<-c(del_list,n)
mz_groups[[k]][[n]]<-c(0)
}
}
#mz_groups[[m]][[1]]<-unique(mz_groups[[m]][[1]])
}
}
if(length(del_list)>0){
mz_groups[[k]]<-mz_groups[[k]][-del_list]
}
}
diffmatB<-{}
groupnum<-1
time_cor_groups<-unique(mz_groups)
for(m in 1:length(time_cor_groups)){
for(n in 1:length(time_cor_groups[[m]])){
levelBnum<-groupnum
cur_group_ind<-unique(time_cor_groups[[m]][[n]])
cur_group<-diffmat[cur_group_ind,]
cur_group<-cbind(levelBnum,cur_group)
if(length(cur_group)>0){
diffmatB<-rbind(diffmatB,cur_group)
groupnum<-groupnum+1
}
}
}
diff_mz_num=1
mz_groups<-lapply(1:length(mz_groups),function(j){
commat={}
diffmz=new("list")
getbind_same=mz_groups[[j]][[1]]
#curdata<-cbind(j,dataA[getbind_same,])
diffmz[[diff_mz_num]]=dataA[getbind_same,]
diff_mz_num=diff_mz_num+1
return(diffmz)
})
if(mult.test.cor==TRUE){
mz_group_size<-lapply(1:length(mz_groups),function(j){
num_rows<-dim(mz_groups[[j]][[1]])
n=num_rows[[1]][[1]]
num_comp=(n*(n-1))/2
})
num_comparisons<-sum(unlist(mz_group_size))
}else{
num_comparisons=1
}
return(diffmat)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.