R/group_bymzisotopes.R

Defines functions group_bymzisotopes

group_bymzisotopes <-
function(dataA,max.mz.diff=30,numisotopes=15,mdgnum=""){

dataA<-as.data.frame(dataA)
	 #Step 1 Group features by m/zdim(data_a)[1]
        mz_groups<-lapply(1:dim(dataA)[1],function(j){

                                commat={}
                                commzA=new("list")
                                commzB=new("list")
                                
                                getbind_same<-c(j)
                                
                                
                                
                                for(isotopepattern in c(1:numisotopes)){
                                	
                                	isotopemass=dataA$mz[j]+as.numeric(isotopepattern)
                                	
                                ppmb=(max.mz.diff)*(isotopemass/1000000)

                                getbind_same<-c(getbind_same,which(abs(dataA$mz-isotopemass)<=ppmb))
                              
        					}
        					
        					
        					# gid<-paste("parent",getbind_same,sep="")
        					
        					return(getbind_same)
                           
		     })
		     
		     
	

  del_list<-{}
	   
	   gid<-{}
	   
	   gid<-rep(paste("M",sep=""),dim(dataA)[1])
	   
	   
	   #if(FALSE)
	   {
	   #length(mz_groups)
	   	  for(m in 1:length(mz_groups)){
	  
	   if((m%in%del_list)==FALSE){
		for(n in (m+1):length(mz_groups)){
		
			if(n>length(mz_groups)){
				break;
			}
			com1<-intersect(mz_groups[[m]],mz_groups[[n]])
			if(length(com1)>0){
			
				mz_groups[[m]]<-c(mz_groups[[m]],mz_groups[[n]])
				del_list<-c(del_list,n)
				mz_groups[[n]]<-c(0)
			}
		}
		
		#mz_groups[[m]][[1]]<-unique(mz_groups[[m]][[1]])
		}
		}
		
		#del_list<-{}
		if(length(del_list)>0){
		 mz_groups<-mz_groups[-del_list]
		}
	  
	  }
	  
	  #ignore_list<-{}
	  
	  if(length(mz_groups)>1){
	  for(k in 1:length(mz_groups)){
	  	
	  	for(m in 1:length(mz_groups[[k]]))
	  	{
	  		#mz_groups[[k]]<-unique(mz_groups[[k]])
	  	
	  		#gid[mz_groups[[k]][m]]<-paste("ISgroup_",mdgnum,"_",mz_groups[[k]][1],sep="")
	  		
	  		gid[mz_groups[[k]][m]]<-paste("ISgroup_",mdgnum,"_",mz_groups[[k]][1],sep="")
	  		
	  		}
	  	
	  	}
	  	
	}else{
		
		for(m in 1:length(mz_groups[[1]]))
	  	{
	  		#mz_groups[[1]]<-unique(mz_groups[[1]])
	  	
	  		#gid[mz_groups[[k]][m]]<-paste("ISgroup_",mdgnum,"_",mz_groups[[k]][1],sep="")
	  		
	  		gid[mz_groups[[1]][m]]<-paste("ISgroup_",mdgnum,"_",mz_groups[[1]][1],sep="")
	  		
	  		}
	  		

		}
	  
	  gid<-cbind(gid,dataA[,c(1:2)])
	  
return(gid)

}
jaspershen/MSannotator documentation built on May 18, 2019, 5:55 p.m.