#FUNCTION TO PERFORM THRESHOLDED FAUNAL NETWORK ANALYSES IN R #PARAMETERS REQUIRED - MATRIX, NAME #DEPENDENT ON IGRAPH PACKAGE ##### THIS IS JOHN ALROY'S FUNCTION FOR CALCULATING FORBES SIMILARITY INDICES ###### forbes<-function(x,y,corrected) { if (missing(corrected)) { corrected <- T } if (is.numeric(x) && is.numeric(y) && min(x) == 0 && min(y) == 0 && length(x) == length(y)) { a <- length(which((x * y) > 0)) b <- length(which(x > 0)) - a c <- length(which(y > 0)) - a } else { a <- length(na.omit(match(x,y))) b <- length(x) - a c <- length(y) - a } n <- a + b + c if (corrected == T) { return(a * (n + sqrt(n))/((a + b) * (a + c) + a * sqrt(n) + (b * c)/2)) } else { return(a * n/((a + b) * (a + c))) } } forbesMatrix<-function(x,corrected) { x[is.na(x)] <- 0 m = matrix(nrow=ncol(x),ncol=ncol(x)) for (i in 1:ncol(x)) { for (j in 1:ncol(x)) { m[i,j] = forbes(x[,i],x[,j],corrected) } } return(m) } ############################################ ########### END ALROY CODE ########### ############################################ faunal_network<-function(mat, n) { #READ IN OCCURRENCE MATRIX m<-read.table(mat, header=T, row.names=1) #REMOVE COLUMNS (IE SITES) WITH FEWER THAN THREE TAXA # COMMENT OUT IF YOUR MATRIX IS IN FORMAT COLUMNS=LOCALITIES, ROWS=TAXA m<-t(m) m<-m[,colSums(m>0)>=3] #CONVERT OCCURRENCE MATRIX INTO ADJACENCY MATRIX fm<-forbesMatrix(m) row.names(fm)<-colnames(m) colnames(fm)<-colnames(m) #ESTABLISH THRESHOLD VALUES t<-c(0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95) #FOR EACH THRESHOLD VALUE for(i in 1:length(t)) { #DUMMY MATRIX fm1<-fm #THOSE LOWER THAN THE THRESHOLD TO ZERO fm1[fm1