R/set.filter.R

setGeneric("set.filter", function(object, missing.freqs=TRUE, minor.freqs=FALSE, maf.lower.bound=0, maf.upper.bound=1, miss.lower.bound=0, miss.upper.bound=1) standardGeneric("set.filter"))
 setMethod("set.filter", "GENOME",
 function(object, missing.freqs, minor.freqs, maf.lower.bound, maf.upper.bound, miss.lower.bound, miss.upper.bound){


if((missing.freqs==TRUE) & (minor.freqs==FALSE)){

	print("Using missing frequencies")
	object   <- count.unknowns(object)
	change   <- object@region.data

	MISS      <- object@region.stats@missing.freqs

	included <- vector("list",length(object@region.names))

	## PROGRESS #########################
	progr <- progressBar()
	#####################################

	# Iterate over the genomic regions
	for ( xx in 1:length(object@region.names) ){
		
		if(length(object@region.data@biallelic.sites[[xx]])==0){next}

		truefalse <- apply(MISS[[xx]],2,function(y){
			  check <- (y >= miss.lower.bound) & (y <= miss.upper.bound)
			  if(all(check, na.rm=TRUE)){return(TRUE)}else{return(FALSE)}	
		})

	included[[xx]] <- truefalse

	# PROGRESS #######################################################
        progr <- progressBar(xx,length(object@region.names), progr)
  	##################################################################

	}

change@included    <- included 
object@region.data <- change

return(object)
}

if((minor.freqs==TRUE) & (missing.freqs==FALSE) ){

	print("Using minor allele frequencies")
	object   <- detail.stats(object)
	change   <- object@region.data

	MAF      <- object@region.stats@minor.allele.freqs

	included <- vector("list",length(object@region.names))

	## PROGRESS #########################
	progr <- progressBar()
	#####################################

	# Iterate over the genomic regions
	for ( xx in 1:length(object@region.names) ){
		
		if(length(object@region.data@biallelic.sites[[xx]])==0){next}

		truefalse <- apply(MAF[[xx]],2,function(y){
			  check <- (y >= maf.lower.bound) & (y <= maf.upper.bound)
			  if(all(check, na.rm=TRUE)){return(TRUE)}else{return(FALSE)}	
		})

	included[[xx]] <- truefalse

	# PROGRESS #######################################################
        progr <- progressBar(xx,length(object@region.names), progr)
  	##################################################################

	}

change@included    <- included 
object@region.data <- change

return(object)
}

if((minor.freqs==TRUE) & (missing.freqs==TRUE) ){

	print("Using minor & missing allele frequencies")
	object   <- detail.stats(object)
	object   <- count.unknowns(object)

	change   <- object@region.data

	MAF      <- object@region.stats@minor.allele.freqs
	MISS     <- object@region.stats@missing.freqs

	included <- vector("list",length(object@region.names))

	## PROGRESS #########################
	progr <- progressBar()
	#####################################

	# Iterate over the genomic regions
	for ( xx in 1:length(object@region.names) ){
		
		if(length(object@region.data@biallelic.sites[[xx]])==0){next}

		truefalse1 <- apply(MAF[[xx]],2,function(y){
			  check <- (y >= maf.lower.bound) & (y <= maf.upper.bound) 
			  if(all(check, na.rm=TRUE)){return(TRUE)}else{return(FALSE)}	
		})

		truefalse2 <- apply(MISS[[xx]],2,function(y){
			  check <- (y >= miss.lower.bound) & (y <= miss.upper.bound)
			  if(all(check, na.rm=TRUE)){return(TRUE)}else{return(FALSE)}	
		})

	included[[xx]] <- truefalse1 & truefalse2

	# PROGRESS #######################################################
        progr <- progressBar(xx,length(object@region.names), progr)
  	##################################################################

	}

change@included    <- included 
object@region.data <- change

return(object)
}

print("Nothing filtered")

return(object)

})
pievos101/PopGenome documentation built on Feb. 24, 2023, 7:11 a.m.