## ----custom-dev, include=FALSE------------------------------------------------ smallFig <- function(file, width, height) { pdf(file, width = 3.5, height = 3.5) } bigFig <- function(file, width, height) { pdf(file, width, height) } threePanelFig <- function(file, width, height) { pdf(file, 6, 3) } ## ----include=FALSE------------------------------------------------------------ library(knitr) library(raster) library(adegenet) load(system.file("extdata/memgeneTutorial.Rdata", package="memgene")) opts_chunk$set( echo=FALSE, dev='smallFig', fig.ext='pdf' ) ## ----echo=FALSE----------------------------------------------------- library(memgene) options(width=70) ## ----echo=FALSE, results='hide'------------------------------------- radialRas <- raster(system.file("extdata/radial.asc", package="memgene")) plot(radialRas, legend=FALSE) ## ----echo=TRUE------------------------------------------------------ ## Load the radial genetic data radialData <- read.csv(system.file("extdata/radial.csv", package="memgene")) ## ----echo=TRUE------------------------------------------------------ ## Create objects for positional information and genotypes radialXY <- radialData[ ,1:2] radialGen <- radialData[, 3:ncol(radialData)] ## ----echo=TRUE------------------------------------------------------ ## Produce a proportion of shared alleles genetic distance matrix ## using the convenience wrapper function provided with the package radialDM <- codomToPropShared(radialGen) ## ----echo=TRUE------------------------------------------------------ ## Run the MEMGENE analysis ## May take several minutes if (!exists("radialAnalysis")) radialAnalysis <- mgQuick(radialDM, radialXY) ## ----echo=TRUE,results='hide'--------------------------------------- ## Visualize the first two MEMGENE variables ## by providing only the first two columns of the memgene matrix mgMap(radialXY, radialAnalysis$memgene[, 1:2]) ## ----echo=TRUE,results='hide', dev='bigFig', fig.ext='pdf'---------- library(raster) radialRas <- raster(system.file("extdata/radial.asc", package="memgene")) plot(radialRas, legend=FALSE) mgMap(radialXY, radialAnalysis$memgene[, 1], add.plot=TRUE, legend=TRUE) ## ----echo=TRUE------------------------------------------------------ ## Load the caribou genetic data caribouData <- read.csv(system.file("extdata/caribou.csv", package="memgene")) ## ----echo=TRUE------------------------------------------------------ ## Create objects for positional information and genotypes caribouXY <- caribouData[ ,1:2] caribouGen <- caribouData[, 3:ncol(caribouData)] ## ----echo=TRUE------------------------------------------------------ ## Produce a proportion of shared alleles genetic distance matrix ## using the convenience wrapper function provided with the package caribouDM <- codomToPropShared(caribouGen) ## ----echo=TRUE------------------------------------------------------ ## Run the MEMGENE analysis ## May take several minutes if (!exists("caribouAnalysis")) caribouAnalysis <- mgQuick(caribouDM, caribouXY) ## ----echo=TRUE, results='hide', dev='bigFig', fig.ext='pdf'--------- plot(caribouXY, type="n", xlab="", ylab="", axes=FALSE) mgMap(caribouXY, caribouAnalysis$memgene[, 1], add.plot=TRUE, legend=TRUE) box() ## ----echo=TRUE------------------------------------------------------ caribouAnalysis$RsqAdj ## ----echo=TRUE------------------------------------------------------ ## Find the proportional variation explained by each MEMGENE variable caribouMEMGENEProp <- caribouAnalysis$sdev/sum(caribouAnalysis$sdev) ## ----echo=TRUE------------------------------------------------------ ## Neatly print proportions for the first three MEMGENE variables format(signif(caribouMEMGENEProp, 3)[1:3], scientific=FALSE) ## ----echo=FALSE, results='hide', dev='threePanelFig', fig.ext='pdf'---- ## Load the two resistance surfaces distributed with the package radialRas <- raster(system.file("extdata/radial.asc", package="memgene")) riverRas <- raster(system.file("extdata/river.asc", package="memgene")) ## Create a Euclidean resistance surface for comparison ## Note that Euclidean surfaces do not need to be provided ## when using the function mgLandscape() euclideanRas <- radialRas euclideanRas[] <- 1 ## Plot each par(mfrow=c(1,3)) par(mar=c(2,2,10,2)) plot(euclideanRas, axes=FALSE, xlab="", ylab="", box=FALSE, legend=FALSE, col="#F2F2F2FF") mtext("Euclidean\n(Null model)", side=3) plot(radialRas, axes=FALSE, xlab="", ylab="", box=FALSE, legend=FALSE) mtext("radial\n(True model)", side=3) plot(riverRas, axes=FALSE, xlab="", ylab="", box=FALSE, legend=FALSE) mtext("river\n(False model)", side=3) ## ----echo=TRUE------------------------------------------------------ resistanceMaps <- stack( raster(system.file("extdata/radial.asc", package="memgene")), raster(system.file("extdata/river.asc", package="memgene"))) ## ----echo=TRUE------------------------------------------------------ radialData <- read.csv(system.file("extdata/radial.csv", package="memgene")) radialGen <- radialData[, -c(1,2)] radialXY <- radialData[, 1:2] radialDM <- codomToPropShared(radialGen) ## ----echo=TRUE, size='footnotesize'--------------------------------- ## Note permutations are set high for greater accuracy ## Reduce to 100 in each case for a faster run (note ## results may differ slightly because forward selection of ## spatial patterns differs) if (!exists("compareThree")) { compareThree <- mgLandscape(resistanceMaps, radialDM, radialXY, euclid=TRUE, forwardPerm=500, finalPerm=1000) } ## ----echo=TRUE, size='footnotesize', results='asis'----------------- ## Analyzing Euclidean surface (landscape model 1 of 3) ## Extracting Moran's eigenvectors from Euclidean distance matrix ## Forward selections of positive Moran's eigenvectors ## ----Selected: 1, 2, 3, 5, 6, 7, 8, 9, 13, 21 ## Forward selections of negative Moran's eigenvectors ## ----Selected: None ## Partitioning spatial genetic variation ## ## Analyzing resistance surface (landscape model 2 of 3) [radial] ## Calculating least-cost path distance matrix ## Extracting Moran's eigenvectors from least-cost path distance matrix ## Forward selections of positive Moran's eigenvectors ## ----Selected: 1, 2, 3, 4, 6, 10, 13, 14, 44 ## Forward selections of negative Moran's eigenvectors ## ----Selected: None ## Partitioning spatial genetic variation ## ## Analyzing resistance surface (landscape model 3 of 3) [river] ## Calculating least-cost path distance matrix ## Extracting Moran's eigenvectors from least-cost path distance matrix ## Forward selections of positive Moran's eigenvectors ## ----Selected: 3, 4, 5, 6, 9, 11, 13, 23 ## Forward selections of negative Moran's eigenvectors ## ----Selected: None ## Partitioning spatial genetic variation ## ----echo=TRUE------------------------------------------------------ print(compareThree)