The purpose of this code is to Run NMDS ordinations for each metabarcoding marker to determine which species are influential and may be interesting to include in mock community analysis. This file is for the vertical tows. There is another file for the oblique tows. I decided to remove stations that were not strictly WOAC stations. Replicates were also combined so that any species that was found in either of the replicates was counted. NMDS plots are made using presence-absence data due to concerns about amplification bias. For taxon-specific markers, I decided to subset the data to that specific taxon.

load packages

library(stringr)
library(vegan)
library(EcolUtils)
library(ggplot2)
library(ggrepel)
library(dplyr)
library(reshape2)

Import Data

Import ASV count tables - I downloaded the tsv and csv files from google drive into the data directory

files_to_read <- list.files(path = "/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/data/",
                            pattern = "\\.tsv$", full.names = TRUE)

# Read each file and assign to a variable named after the file
for (file in files_to_read) {
  # Read the file into a data frame
  df <- read.table(file = file, sep = '\t', header = TRUE)
  
  # Rename the column "x" to "ASV" if it exists
  if ("x" %in% colnames(df)) {
    colnames(df)[colnames(df) == "x"] <- "ASV"
  }
  
  # Create a variable name from the filename
  # Remove the directory path and file extension, replace spaces with underscores
  var_name <- gsub("\\.tsv$", "", basename(file))
  var_name <- gsub(" ", "_", var_name)
  
  # Assign the data frame to a variable with the created name
  assign(var_name, df)
}

Import ASV to taxonomy tables

files_to_read <- list.files(path = "/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/data/",
                            pattern = "\\.txt$", full.names = TRUE)

# Read each file and assign to a variable named after the file
for (file in files_to_read) {
  # Read the file into a data frame
  df <- read.table(file = file, sep = '\t', header = TRUE)
  
  # Create a variable name from the filename
  # Remove the directory path and file extension, replace spaces with underscores
  var_name <- gsub("\\.txt$", "", basename(file))
  var_name <- gsub(" ", "_", var_name)
  
  # Assign the data frame to a variable with the created name
  assign(var_name, df)
}

add taxa ids to count data

M28S_counts <- merge(RV_28S_asvTaxonomyTable, marker_28S_ASVs_counts, by = "ASV", all = TRUE)

COI_counts <- merge(RV_COI_asvTaxonomyTable, COI_ASVs_counts, by = "ASV", all = TRUE)

Cop16S_counts <- merge(RV_Cop16S_asvTaxonomyTable, Cop16S_ASVs_counts, by = "ASV", all = TRUE)

Fishcytb_counts <- merge(RV_Fishcytb_asvTaxonomyTable, Fishcytb_ASVs_counts, by = "ASV", all = TRUE)

Machida18S_counts <- merge(RV_Machida18S_asvTaxonomyTable, Machida18S_ASVs_counts, by = "ASV", all = TRUE)

Mol16S_counts <- merge(RV_Mol16S_asvTaxonomyTable, Mol16S_ASVs_counts, by = "ASV", all = TRUE)

COI

Data Setup

Remove non-zooplanton phyla

unique(COI_counts$Phylum)
##  [1] "Arthropoda"                 "Bacillariophyta"           
##  [3] "Bryozoa"                    "Mollusca"                  
##  [5] "Rhodophyta"                 NA                          
##  [7] "Echinodermata"              "Annelida"                  
##  [9] "Cnidaria"                   "Platyhelminthes"           
## [11] "Oomycota"                   "Chordata"                  
## [13] "Chaetognatha"               "Nemertea"                  
## [15] "Ctenophora"                 "Ascomycota"                
## [17] "Onychophora"                "Cryptophyceae__p"          
## [19] "Zoopagomycota"              "Rotifera"                  
## [21] "Phaeophyceae__p"            "Haptophyta"                
## [23] "Basidiomycota"              "Chlorophyta"               
## [25] "Dinophyceae__p"             "Phoronida"                 
## [27] "Discosea"                   "Porifera"                  
## [29] "Tubulinea"                  "Dictyochophyceae__p"       
## [31] "Bacteroidota"               "Blastocladiomycota"        
## [33] "Pseudomonadota"             "Chrysophyceae__p"          
## [35] "Nematoda"                   "Malawimonadida__c__p"      
## [37] "Prasinodermophyta"          "Chrysoparadoxa__f__o__c__p"
## [39] "Apusomonadida__c__p"        "Streptophyta"              
## [41] "Pelagophyceae__p"           "Eustigmatophyceae__p"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p')

# Remove those levels and drop them from the factor
COI_counts <- droplevels(COI_counts[!COI_counts$Phylum %in% levels_to_remove,])

remove non-species rows

COI_comp<- COI_counts[complete.cases(COI_counts), ]

convert to presence-absence

COI_comp_pa<-COI_comp %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

remove excess columns

COI_comp_pa <- COI_comp_pa[ -c(1:7) ]

wide to long format

COI_long<-melt(COI_comp_pa, id.vars=c("Species"))

add up multiple lines per station and convert back to presence-absence

COI_long_sum <- COI_long %>%
  group_by(Species,variable) %>%
  summarise(
    value = sum(value))

COI_long_sum<-COI_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

split code string up to extract metadata

COI_long_sum$variable<-str_split_fixed(COI_long_sum$variable,"_",4)

remove samples of non-interest

unique(COI_long_sum$variable[,3])
##  [1] "P12"   "P22"   "P28"   "P38"   "P402"  "P4"    "P8"    "CA042" "P105" 
## [10] "P123"  "P132"  "P136"  "P381"  "P7"    ""
unique(COI_long_sum$variable[,2])
##  [1] "1804"     "1806"     "1807"     "1809"     "1904"     "1907"    
##  [7] "1909"     "2007"     "2009"     "2010"     "Control1" "Control2"

remove excess stations

levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
COI_long_sum <- droplevels(COI_long_sum[!COI_long_sum$variable[,3] %in% levels_to_remove,])

split up replicate columns

unique(COI_long_sum$variable[,4])
## [1] "VeA" "Ve"  "ObB" "ObA" "Ob"  "VeB"
COI_long_sum <- COI_long_sum %>%
  mutate(
    tow_type = substr(variable[,4], 1, 2),
    replicate = substr(variable[,4], 3, nchar(variable[,4]))
  )

split up year and month columns

COI_long_sum <- COI_long_sum %>%
  mutate(
    Year = substr(variable[,2], 1, 2),
    Month = substr(variable[,2], 3, 4)
  )

make station column

COI_long_sum$station<-COI_long_sum$variable[,3]

remove oblique samples

COI_long_sum<-subset(COI_long_sum,tow_type=="Ve")

merge replicates

colnames(COI_long_sum)
## [1] "Species"   "variable"  "value"     "tow_type"  "replicate" "Year"     
## [7] "Month"     "station"
COI_long_sum$sample<-paste(COI_long_sum$Year,COI_long_sum$Month,COI_long_sum$station,COI_long_sum$tow_type,sep="")

COI_long_sum <- COI_long_sum %>%
  group_by(Year,Month,station,sample,Species) %>%
  summarise(
    value = sum(value))
#convert back to presence-absence
COI_long_sum<-COI_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

back to wide format

COI_wide<-dcast(COI_long_sum, sample+Year+Month+station ~ Species )

remove any columns with all zeroes

target_cols <- 6:ncol(COI_wide)

non_zero_cols <- target_cols[colSums(COI_wide[, target_cols]) != 0]

COI_wide <- COI_wide[, c(1:5, non_zero_cols)]

remove environmental data

COI_wide_simple<-COI_wide[ , 5:231]

Make environmental columns categorical

# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")

# Convert the specified columns to factors
COI_wide <- COI_wide %>%
  mutate_at(vars(one_of(cols_to_factor)), as.factor)

PERMANOVA

dist<-vegdist(COI_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=COI_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist ~ station * Month, data = COI_wide, permutations = 999, method = "bray")
##               Df SumOfSqs      R2      F Pr(>F)    
## station        6   3.4039 0.36352 6.5875  0.001 ***
## Month          3   1.1864 0.12671 4.5922  0.001 ***
## station:Month 13   1.8453 0.19707 1.6482  0.001 ***
## Residual      34   2.9281 0.31271                  
## Total         56   9.3636 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

station comparisons

adonis.pair(vegdist(COI_wide_simple),COI_wide$station)
##     combination SumsOfSqs   MeanSqs  F.Model         R2     P.value
## 1   P12 <-> P22 0.8514436 0.8514436 6.989626 0.31786015 0.000999001
## 2   P12 <-> P28 0.5132586 0.5132586 4.346908 0.22468229 0.000999001
## 3   P12 <-> P38 0.3347530 0.3347530 2.600489 0.15665133 0.011988012
## 4    P12 <-> P4 0.5237424 0.5237424 4.174794 0.22970241 0.000999001
## 5  P12 <-> P402 0.4388448 0.4388448 3.219377 0.18696244 0.005994006
## 6    P12 <-> P8 0.5850319 0.5850319 4.712679 0.26606245 0.000999001
## 7   P22 <-> P28 0.5972459 0.5972459 5.586253 0.25878752 0.000999001
## 8   P22 <-> P38 0.6258227 0.6258227 5.389828 0.26433907 0.000999001
## 9    P22 <-> P4 0.7427737 0.7427737 6.569929 0.30458741 0.000999001
## 10 P22 <-> P402 0.9995103 0.9995103 8.113390 0.35102552 0.000999001
## 11   P22 <-> P8 0.1585177 0.1585177 1.428713 0.09260091 0.125874126
## 12  P28 <-> P38 0.2742498 0.2742498 2.440577 0.13993670 0.011988012
## 13   P28 <-> P4 0.6554607 0.6554607 5.996037 0.28557946 0.000999001
## 14 P28 <-> P402 0.8303377 0.8303377 6.951239 0.31666727 0.000999001
## 15   P28 <-> P8 0.4544121 0.4544121 4.249094 0.23283862 0.001998002
## 16   P38 <-> P4 0.4886476 0.4886476 4.094496 0.22628405 0.000999001
## 17 P38 <-> P402 0.6404996 0.6404996 4.919250 0.26001297 0.000999001
## 18   P38 <-> P8 0.4005043 0.4005043 3.406837 0.20764737 0.001998002
## 19  P4 <-> P402 0.4895482 0.4895482 3.856860 0.21598757 0.000999001
## 20    P4 <-> P8 0.5424880 0.5424880 4.757259 0.26790504 0.001998002
## 21  P402 <-> P8 0.7004905 0.7004905 5.571420 0.29999969 0.000999001
##    P.value.corrected
## 1        0.001498501
## 2        0.001498501
## 3        0.012587413
## 4        0.001498501
## 5        0.006993007
## 6        0.001498501
## 7        0.001498501
## 8        0.001498501
## 9        0.001498501
## 10       0.001498501
## 11       0.125874126
## 12       0.012587413
## 13       0.001498501
## 14       0.001498501
## 15       0.002468120
## 16       0.001498501
## 17       0.001498501
## 18       0.002468120
## 19       0.001498501
## 20       0.002468120
## 21       0.001498501

month comparisons

adonis.pair(vegdist(COI_wide_simple),COI_wide$Month)
##   combination SumsOfSqs   MeanSqs   F.Model         R2     P.value
## 1   04 <-> 07 0.5004131 0.5004131 3.3722456 0.09271480 0.000999001
## 2   04 <-> 09 0.8577564 0.8577564 5.3035647 0.14217313 0.000999001
## 3   04 <-> 10 0.2728710 0.2728710 1.6277785 0.10415930 0.075924076
## 4   07 <-> 09 0.3295915 0.3295915 2.2333001 0.05416254 0.017982018
## 5   07 <-> 10 0.1954991 0.1954991 1.4025823 0.06260806 0.144855145
## 6   09 <-> 10 0.1285995 0.1285995 0.8023453 0.03856994 0.637362637
##   P.value.corrected
## 1       0.002997003
## 2       0.002997003
## 3       0.113886114
## 4       0.035964036
## 5       0.173826174
## 6       0.637362637

run NMDS

COI_NMDSmodel <- metaMDS(COI_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.2086798 
## Run 1 stress 0.2136233 
## Run 2 stress 0.2086798 
## ... Procrustes: rmse 6.672573e-05  max resid 0.0003693697 
## ... Similar to previous best
## Run 3 stress 0.2812641 
## Run 4 stress 0.2086798 
## ... Procrustes: rmse 1.833055e-05  max resid 0.0001008649 
## ... Similar to previous best
## Run 5 stress 0.2086798 
## ... Procrustes: rmse 1.322603e-05  max resid 6.422964e-05 
## ... Similar to previous best
## Run 6 stress 0.2371512 
## Run 7 stress 0.2329433 
## Run 8 stress 0.291843 
## Run 9 stress 0.2135708 
## Run 10 stress 0.2632098 
## Run 11 stress 0.2649501 
## Run 12 stress 0.2086799 
## ... Procrustes: rmse 0.0001501565  max resid 0.0008328826 
## ... Similar to previous best
## Run 13 stress 0.2574746 
## Run 14 stress 0.2586504 
## Run 15 stress 0.2136233 
## Run 16 stress 0.2086798 
## ... Procrustes: rmse 1.433252e-05  max resid 5.638743e-05 
## ... Similar to previous best
## Run 17 stress 0.2136234 
## Run 18 stress 0.2086798 
## ... Procrustes: rmse 4.876089e-05  max resid 0.0002630983 
## ... Similar to previous best
## Run 19 stress 0.2086798 
## ... Procrustes: rmse 4.394956e-05  max resid 0.0002066043 
## ... Similar to previous best
## Run 20 stress 0.2086798 
## ... Procrustes: rmse 1.573043e-05  max resid 8.352934e-05 
## ... Similar to previous best
## *** Best solution repeated 8 times
COI_NMDSmodel
## 
## Call:
## metaMDS(comm = COI_wide_simple, distance = "bray", trymax = 999) 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     COI_wide_simple 
## Distance: bray 
## 
## Dimensions: 2 
## Stress:     0.2086798 
## Stress type 1, weak ties
## Best solution was repeated 8 times in 20 tries
## The best solution was from try 0 (metric scaling or null solution)
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'COI_wide_simple'

get datascores

COI.data.scores<-scores(COI_NMDSmodel,display="sites")
COI.data.scores<- as.data.frame(COI.data.scores)

add environmental variables back in

# Extract the first 5 columns from df1
first_5_columns <- COI_wide[, 1:4]

# Combine the first 5 columns from df1 with df2
COI.data.scores <- cbind(first_5_columns, COI.data.scores)

plot NMDS

plot datascores

xx <- ggplot(COI.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx

extract hulls

unique(COI.data.scores$station)
## [1] P12  P22  P28  P38  P402 P4   P8  
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- COI.data.scores[COI.data.scores$station == "P12", ][chull(COI.data.scores[COI.data.scores$station ==                                                           "P12", c("NMDS1", "NMDS2")]), ]  
P22 <- COI.data.scores[COI.data.scores$station == "P22", ][chull(COI.data.scores[COI.data.scores$station ==                                                           "P22", c("NMDS1", "NMDS2")]), ]  
P28 <- COI.data.scores[COI.data.scores$station == "P28", ][chull(COI.data.scores[COI.data.scores$station ==                                                           "P28", c("NMDS1", "NMDS2")]), ]
P38 <- COI.data.scores[COI.data.scores$station == "P38", ][chull(COI.data.scores[COI.data.scores$station ==                                                           "P38", c("NMDS1", "NMDS2")]), ]  
P4 <- COI.data.scores[COI.data.scores$station == "P4", ][chull(COI.data.scores[COI.data.scores$station ==                                                           "P4", c("NMDS1", "NMDS2")]), ]  
P402 <- COI.data.scores[COI.data.scores$station == "P402", ][chull(COI.data.scores[COI.data.scores$station ==                                                           "P402", c("NMDS1", "NMDS2")]), ]  
P8 <- COI.data.scores[COI.data.scores$station == "P8", ][chull(COI.data.scores[COI.data.scores$station ==                                                           "P8", c("NMDS1", "NMDS2")]), ]  

get hull data

hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8)  #combine grp.a and grp.b
hull.data
##        sample Year Month station       NMDS1       NMDS2
## 15  1809P12Ve   18    09     P12  0.71414654 -0.26439066
## 49  2009P12Ve   20    09     P12  0.44968104 -0.31025034
## 1   1804P12Ve   18    04     P12 -0.27872157  0.55496316
## 21  1904P12Ve   19    04     P12 -0.09006101  0.49702359
## 8   1807P12Ve   18    07     P12  0.38076090  0.14882530
## 36  1909P22Ve   19    09     P22 -0.17337924 -0.35251660
## 2   1804P22Ve   18    04     P22 -0.70042395 -0.35602025
## 50  2009P22Ve   20    09     P22 -0.61772743  0.06757416
## 16  1809P22Ve   18    09     P22 -0.10024805 -0.07969401
## 57  2010P28Ve   20    10     P28  0.37173899 -0.33504845
## 37  1909P28Ve   19    09     P28  0.19865030 -0.44150025
## 23  1904P28Ve   19    04     P28 -0.35954323 -0.47055504
## 3   1804P28Ve   18    04     P28 -0.26003603 -0.27661728
## 44  2007P28Ve   20    07     P28  0.00892815 -0.18156600
## 51  2009P28Ve   20    09     P28  0.16278986 -0.15841233
## 17  1809P28Ve   18    09     P28  0.28648947 -0.23075895
## 18  1809P38Ve   18    09     P38  0.60017194 -0.47771963
## 4   1804P38Ve   18    04     P38  0.06745979 -0.43565937
## 24  1904P38Ve   19    04     P38 -0.02677226 -0.28338728
## 52  2009P38Ve   20    09     P38 -0.11633706  0.25090955
## 19 1809P402Ve   18    09    P402  0.70781904  0.04817124
## 53 2009P402Ve   20    09    P402  0.27715821  0.23057306
## 32 1907P402Ve   19    07    P402  0.22894335  0.25627122
## 5  1804P402Ve   18    04    P402 -0.28894561  0.78225605
## 12 1807P402Ve   18    07    P402  0.37094108  0.51939384
## 39 1909P402Ve   19    09    P402  0.43037448  0.48255716
## 20   1809P4Ve   18    09      P4  0.52728338  0.04686876
## 40   1909P4Ve   19    09      P4  0.13563071  0.09580324
## 6    1804P4Ve   18    04      P4 -0.38949384  0.23412560
## 47   2007P4Ve   20    07      P4 -0.23373933  0.40208605
## 13   1807P4Ve   18    07      P4  0.15962741  0.48271626
## 34   1907P8Ve   19    07      P8 -0.15643578 -0.20448930
## 7    1804P8Ve   18    04      P8 -0.42385599 -0.32060246
## 27   1904P8Ve   19    04      P8 -0.43703833 -0.05139096
## 48   2007P8Ve   20    07      P8 -0.42205328  0.03858691
## 14   1807P8Ve   18    07      P8 -0.21396920  0.14509020

Species fitting

vf <- envfit(COI_NMDSmodel, COI_wide, perm = 999)

spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)

# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
##                                 NMDS1       NMDS2                   Species
## Balanus crenatus          -0.50827890  0.27368939          Balanus crenatus
## Balanus glandula          -0.60729674  0.28365373          Balanus glandula
## Balanus rostratus         -0.46182659 -0.34750774         Balanus rostratus
## Calanus marshallae        -0.42349781 -0.45990307        Calanus marshallae
## Clytia gregaria           -0.76274808  0.14975629           Clytia gregaria
## Evadne nordmanni          -0.11418206  0.55069976          Evadne nordmanni
## Fabia subquadrata         -0.66438218 -0.28723938         Fabia subquadrata
## Glebocarcinus oregonensis -0.55299598 -0.05862999 Glebocarcinus oregonensis
## Glycinde armigera          0.05061572  0.67325798         Glycinde armigera
## Lepidasthenia berkeleyae   0.03003786  0.75000000  Lepidasthenia berkeleyae
## Littorina plena            0.06057087  0.55486642           Littorina plena
## Mesochaetopterus taylori  -0.15420520  0.58831226  Mesochaetopterus taylori
## Orthione mesoamericana     0.42397353  0.40960087    Orthione mesoamericana
## Pectinaria californiensis  0.27159658  0.55854802 Pectinaria californiensis
## Phoronopsis harmeri       -0.12667266  0.56282010       Phoronopsis harmeri
## Placida dendritica         0.57894420  0.10991445        Placida dendritica
## Pseudocalanus mimus       -0.40993805 -0.36884831       Pseudocalanus mimus
## Pseudocalanus moultoni    -0.55814262 -0.51455855    Pseudocalanus moultoni
## Rathkea octopunctata      -0.08248292  0.55103039      Rathkea octopunctata
## Scyra acutifrons          -0.50647969 -0.26720700          Scyra acutifrons
##                           Pvalues R_squared
## Balanus crenatus            0.001 0.3401421
## Balanus glandula            0.001 0.4585557
## Balanus rostratus           0.001 0.3409506
## Calanus marshallae          0.001 0.3989408
## Clytia gregaria             0.001 0.6167014
## Evadne nordmanni            0.001 0.3228463
## Fabia subquadrata           0.001 0.5347400
## Glebocarcinus oregonensis   0.001 0.3156345
## Glycinde armigera           0.001 0.4652610
## Lepidasthenia berkeleyae    0.001 0.5750485
## Littorina plena             0.001 0.3179856
## Mesochaetopterus taylori    0.001 0.3775367
## Orthione mesoamericana      0.001 0.3547102
## Pectinaria californiensis   0.001 0.3937143
## Phoronopsis harmeri         0.001 0.3396921
## Placida dendritica          0.001 0.3544358
## Pseudocalanus mimus         0.001 0.3103844
## Pseudocalanus moultoni      0.001 0.5882064
## Rathkea octopunctata        0.001 0.3168551
## Scyra acutifrons            0.001 0.3346998
COI_Species_plot <- ggplot(COI.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour =  station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
  geom_segment(data = spp.scrs,size=0.4,
               aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
               arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+ 
  geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
  annotate("text", label = "2D Stress: 0.209", x = 0.55, y = 0.8, size = 5, colour = "black")+
  geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
                  size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
COI_Species_plot

save plot

setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "COI_NMDS_vert.png", plot = COI_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)

Cop16S

Data Setup

Remove non-zooplanton phyla

unique(Cop16S_counts$Phylum)
##  [1] "Arthropoda"      NA                "Mollusca"        "Phoronida"      
##  [5] "Annelida"        "Nemertea"        "Cnidaria"        "Chaetognatha"   
##  [9] "Echinodermata"   "Nematoda"        "Bryozoa"         "Acanthocephala" 
## [13] "Platyhelminthes"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p')

# Remove those levels and drop them from the factor
Cop16S_counts <- droplevels(Cop16S_counts[!Cop16S_counts$Phylum %in% levels_to_remove,])

subset to copepods only

Cop16S_counts<-subset(Cop16S_counts,Class=="Hexanauplia")

remove non-species rows

Cop16S_comp<- Cop16S_counts[complete.cases(Cop16S_counts), ]

convert to presence-absence

Cop16S_comp_pa<-Cop16S_comp %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

remove excess columns

Cop16S_comp_pa <- Cop16S_comp_pa[ -c(1:7) ]

wide to long format

Cop16S_long<-melt(Cop16S_comp_pa, id.vars=c("Species"))

add up multiple lines per station and convert back to presence-absence

Cop16S_long_sum <- Cop16S_long %>%
  group_by(Species,variable) %>%
  summarise(
    value = sum(value))

Cop16S_long_sum<-Cop16S_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

split code string up to extract metadata

Cop16S_long_sum$variable<-str_split_fixed(Cop16S_long_sum$variable,"_",4)

remove samples of non-interest

unique(Cop16S_long_sum$variable[,3])
##  [1] "P12"   "P22"   "P28"   "P38"   "P402"  "P4"    "P8"    "CA042" "P105" 
## [10] "P123"  "P132"  "P136"  "P381"  "P7"    ""
unique(Cop16S_long_sum$variable[,2])
##  [1] "1804"     "1806"     "1807"     "1809"     "1904"     "1907"    
##  [7] "1909"     "2007"     "2009"     "2010"     "Control1" "Control2"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
Cop16S_long_sum <- droplevels(Cop16S_long_sum[!Cop16S_long_sum$variable[,3] %in% levels_to_remove,])

split up replicate columns

unique(Cop16S_long_sum$variable[,4])
## [1] "Ob"  "Ve"  "ObB" "VeA" "ObA" "VeB"
Cop16S_long_sum <- Cop16S_long_sum %>%
  mutate(
    tow_type = substr(variable[,4], 1, 2),
    replicate = substr(variable[,4], 3, nchar(variable[,4]))
  )

split up year and month columns

Cop16S_long_sum <- Cop16S_long_sum %>%
  mutate(
    Year = substr(variable[,2], 1, 2),
    Month = substr(variable[,2], 3, 4)
  )

make station column

Cop16S_long_sum$station<-Cop16S_long_sum$variable[,3]

remove oblique samples

Cop16S_long_sum<-subset(Cop16S_long_sum,tow_type=="Ve")

merge replicates (and oblique and vertical tows)

colnames(Cop16S_long_sum)
## [1] "Species"   "variable"  "value"     "tow_type"  "replicate" "Year"     
## [7] "Month"     "station"
Cop16S_long_sum$sample<-paste(Cop16S_long_sum$Year,Cop16S_long_sum$Month,Cop16S_long_sum$station,Cop16S_long_sum$tow_type,sep="")

Cop16S_long_sum <- Cop16S_long_sum %>%
  group_by(Year,Month,station,sample,Species) %>%
  summarise(
    value = sum(value))
#convert back to presence-absence
Cop16S_long_sum<-Cop16S_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

back to wide format

Cop16S_wide<-dcast(Cop16S_long_sum, sample+Year+Month+station ~ Species )

remove any columns with all zeroes

target_cols <- 6:ncol(Cop16S_wide)

non_zero_cols <- target_cols[colSums(Cop16S_wide[, target_cols]) != 0]

Cop16S_wide <- Cop16S_wide[, c(1:5, non_zero_cols)]

remove environmental data

Cop16S_wide_simple<-Cop16S_wide[ , 5:17]

Make environmental columns categorical

# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")

# Convert the specified columns to factors
Cop16S_wide <- Cop16S_wide %>%
  mutate_at(vars(one_of(cols_to_factor)), as.factor)

PERMANOVA

dist<-vegdist(Cop16S_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=Cop16S_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist ~ station * Month, data = Cop16S_wide, permutations = 999, method = "bray")
##               Df SumOfSqs      R2      F Pr(>F)    
## station        6  1.13125 0.39052 5.1580  0.001 ***
## Month          3  0.08324 0.02873 0.7591  0.639    
## station:Month 13  0.58570 0.20219 1.2326  0.250    
## Residual      30  1.09659 0.37856                  
## Total         52  2.89677 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

station comparisons

adonis.pair(vegdist(Cop16S_wide_simple),Cop16S_wide$station)
##     combination    SumsOfSqs      MeanSqs    F.Model          R2     P.value
## 1   P12 <-> P22  0.538335929  0.538335929 17.5340328  0.55603522 0.000999001
## 2   P12 <-> P28  0.141285628  0.141285628  3.1565032  0.17384973 0.035964036
## 3   P12 <-> P38  0.118992076  0.118992076  2.9962973  0.18731193 0.071928072
## 4    P12 <-> P4 -0.006391537 -0.006391537 -0.1374440 -0.01158637 0.899100899
## 5  P12 <-> P402  0.111137212  0.111137212  3.7792507  0.21256524 0.041958042
## 6    P12 <-> P8  0.197097286  0.197097286  4.1277471  0.24099767 0.025974026
## 7   P22 <-> P28  0.152439967  0.152439967  4.3616517  0.22527271 0.014985015
## 8   P22 <-> P38  0.227501809  0.227501809  8.0124118  0.38131804 0.001998002
## 9    P22 <-> P4  0.324773608  0.324773608  9.4851552  0.44147483 0.000999001
## 10 P22 <-> P402  0.694613242  0.694613242 36.7590873  0.72418732 0.000999001
## 11   P22 <-> P8  0.117233227  0.117233227  3.2180413  0.19842355 0.045954046
## 12  P28 <-> P38  0.025918189  0.025918189  0.5941740  0.04071309 0.629370629
## 13   P28 <-> P4  0.088654455  0.088654455  1.7664252  0.11962443 0.201798202
## 14 P28 <-> P402  0.209140676  0.209140676  6.1983658  0.29239829 0.010989011
## 15   P28 <-> P8  0.036712341  0.036712341  0.7186825  0.04882791 0.572427572
## 16   P38 <-> P4  0.070983462  0.070983462  1.5700545  0.12490435 0.264735265
## 17 P38 <-> P402  0.109840051  0.109840051  4.0683141  0.23835477 0.076923077
## 18   P38 <-> P8  0.112343479  0.112343479  2.4072458  0.16708577 0.092907093
## 19  P4 <-> P402  0.160283255  0.160283255  4.8972545  0.28982546 0.018981019
## 20    P4 <-> P8  0.121364351  0.121364351  2.2183903  0.16782605 0.150849151
## 21  P402 <-> P8  0.349030149  0.349030149  9.9622618  0.43385368 0.000999001
##    P.value.corrected
## 1        0.005244755
## 2        0.075524476
## 3        0.115384615
## 4        0.899100899
## 5        0.080101716
## 6        0.060606061
## 7        0.044955045
## 8        0.008391608
## 9        0.005244755
## 10       0.005244755
## 11       0.080419580
## 12       0.660839161
## 13       0.249280132
## 14       0.038461538
## 15       0.632683106
## 16       0.308857809
## 17       0.115384615
## 18       0.130069930
## 19       0.049825175
## 20       0.197989510
## 21       0.005244755

month comparisons

adonis.pair(vegdist(Cop16S_wide_simple),Cop16S_wide$Month)
##   combination   SumsOfSqs     MeanSqs   F.Model         R2   P.value
## 1   04 <-> 07 0.046222070 0.046222070 0.7727720 0.02357970 0.5124875
## 2   04 <-> 09 0.037550255 0.037550255 0.6104254 0.02061522 0.5794206
## 3   04 <-> 10 0.047496660 0.047496660 0.6289373 0.04299268 0.5734266
## 4   07 <-> 09 0.006663864 0.006663864 0.1337796 0.00380772 0.8441558
## 5   07 <-> 10 0.038451029 0.038451029 0.7563428 0.03643912 0.4185814
## 6   09 <-> 10 0.026517774 0.026517774 0.5084233 0.02903878 0.7012987
##   P.value.corrected
## 1         0.8415584
## 2         0.8415584
## 3         0.8415584
## 4         0.8441558
## 5         0.8415584
## 6         0.8415584

run NMDS

Cop16S_NMDSmodel <- metaMDS(Cop16S_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.1199203 
## Run 1 stress 0.1199203 
## ... Procrustes: rmse 9.019748e-06  max resid 3.607527e-05 
## ... Similar to previous best
## Run 2 stress 0.1199203 
## ... New best solution
## ... Procrustes: rmse 1.382083e-05  max resid 6.032683e-05 
## ... Similar to previous best
## Run 3 stress 0.1674734 
## Run 4 stress 0.120238 
## ... Procrustes: rmse 0.006288509  max resid 0.03412902 
## Run 5 stress 0.1199203 
## ... Procrustes: rmse 2.001655e-05  max resid 7.344373e-05 
## ... Similar to previous best
## Run 6 stress 0.1204568 
## Run 7 stress 0.1335715 
## Run 8 stress 0.1652751 
## Run 9 stress 0.1296745 
## Run 10 stress 0.1296745 
## Run 11 stress 0.1204998 
## Run 12 stress 0.1199203 
## ... New best solution
## ... Procrustes: rmse 1.386062e-05  max resid 6.831871e-05 
## ... Similar to previous best
## Run 13 stress 0.1632008 
## Run 14 stress 0.120457 
## Run 15 stress 0.1625208 
## Run 16 stress 0.1204997 
## Run 17 stress 0.1204569 
## Run 18 stress 0.1832634 
## Run 19 stress 0.120457 
## Run 20 stress 0.1199203 
## ... Procrustes: rmse 4.092937e-05  max resid 0.0001950439 
## ... Similar to previous best
## *** Best solution repeated 2 times
Cop16S_NMDSmodel
## 
## Call:
## metaMDS(comm = Cop16S_wide_simple, distance = "bray", trymax = 999) 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     Cop16S_wide_simple 
## Distance: bray 
## 
## Dimensions: 2 
## Stress:     0.1199203 
## Stress type 1, weak ties
## Best solution was repeated 2 times in 20 tries
## The best solution was from try 12 (random start)
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'Cop16S_wide_simple'

get datascores

Cop16S.data.scores<-scores(Cop16S_NMDSmodel,display="sites")
Cop16S.data.scores<- as.data.frame(Cop16S.data.scores)

add environmental variables back in

# Extract the first 5 columns from df1
first_5_columns <- Cop16S_wide[, 1:4]

# Combine the first 5 columns from df1 with df2
Cop16S.data.scores <- cbind(first_5_columns, Cop16S.data.scores)

plot NMDS

plot datascores

xx <- ggplot(Cop16S.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx

extract hulls

unique(Cop16S.data.scores$station)
## [1] P12  P22  P28  P38  P402 P4   P8  
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- Cop16S.data.scores[Cop16S.data.scores$station == "P12", ][chull(Cop16S.data.scores[Cop16S.data.scores$station ==                                                           "P12", c("NMDS1", "NMDS2")]), ]  
P22 <- Cop16S.data.scores[Cop16S.data.scores$station == "P22", ][chull(Cop16S.data.scores[Cop16S.data.scores$station ==                                                           "P22", c("NMDS1", "NMDS2")]), ]  
P28 <- Cop16S.data.scores[Cop16S.data.scores$station == "P28", ][chull(Cop16S.data.scores[Cop16S.data.scores$station ==                                                           "P28", c("NMDS1", "NMDS2")]), ]
P38 <- Cop16S.data.scores[Cop16S.data.scores$station == "P38", ][chull(Cop16S.data.scores[Cop16S.data.scores$station ==                                                           "P38", c("NMDS1", "NMDS2")]), ]  
P4 <- Cop16S.data.scores[Cop16S.data.scores$station == "P4", ][chull(Cop16S.data.scores[Cop16S.data.scores$station ==                                                           "P4", c("NMDS1", "NMDS2")]), ]  
P402 <- Cop16S.data.scores[Cop16S.data.scores$station == "P402", ][chull(Cop16S.data.scores[Cop16S.data.scores$station ==                                                           "P402", c("NMDS1", "NMDS2")]), ]  
P8 <- Cop16S.data.scores[Cop16S.data.scores$station == "P8", ][chull(Cop16S.data.scores[Cop16S.data.scores$station ==                                                           "P8", c("NMDS1", "NMDS2")]), ]  

get hull data

hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8)  #combine grp.a and grp.b
hull.data
##        sample Year Month station       NMDS1       NMDS2
## 39  2007P12Ve   20    07     P12  0.04971215 -0.18608338
## 45  2009P12Ve   20    09     P12 -0.07289592 -0.34000143
## 1   1804P12Ve   18    04     P12 -0.28624816 -0.55408526
## 18  1904P12Ve   19    04     P12 -0.59459396 -0.27292947
## 8   1807P12Ve   18    07     P12 -0.55469273  0.13250484
## 25  1907P12Ve   19    07     P12 -0.12800216  0.11946044
## 15  1809P12Ve   18    09     P12  0.06703442  0.08579329
## 19  1904P22Ve   19    04     P22  0.48450682 -0.12812982
## 40  2007P22Ve   20    07     P22  0.35890107 -0.29764932
## 33  1909P22Ve   19    09     P22  0.33100057 -0.04567245
## 26  1907P22Ve   19    07     P22  0.30977544  0.35655185
## 52  2010P22Ve   20    10     P22  0.58781768  0.20018146
## 3   1804P28Ve   18    04     P28  0.60413885 -0.17121253
## 41  2007P28Ve   20    07     P28  0.35890107 -0.29764932
## 20  1904P28Ve   19    04     P28  0.04971215 -0.18608338
## 47  2009P28Ve   20    09     P28 -0.12800216  0.11946044
## 16  1809P28Ve   18    09     P28 -0.13563631  0.47990797
## 34  1909P28Ve   19    09     P28  0.28146479  0.14676281
## 28  1907P38Ve   19    07     P38  0.27732822 -0.38781027
## 48  2009P38Ve   20    09     P38 -0.55469239  0.13250468
## 4   1804P38Ve   18    04     P38  0.28146479  0.14676281
## 29 1907P402Ve   19    07    P402 -0.12800216  0.11946044
## 49 2009P402Ve   20    09    P402 -0.12800216  0.11946044
## 36 1909P402Ve   19    09    P402 -0.55469239  0.13250468
## 17 1809P402Ve   18    09    P402 -0.55469239  0.13250468
## 22 1904P402Ve   19    04    P402 -0.55469239  0.13250468
## 5  1804P402Ve   18    04    P402 -0.55469273  0.13250484
## 43 2007P402Ve   20    07    P402 -0.22561857  0.26527896
## 50   2009P4Ve   20    09      P4  0.11575897 -0.35840105
## 13   1807P4Ve   18    07      P4 -0.40246722 -0.41803649
## 23   1904P4Ve   19    04      P4 -0.55469239  0.13250468
## 37   1909P4Ve   19    09      P4  0.23964431 -0.05757636
## 24   1904P8Ve   19    04      P8  0.48450682 -0.12812982
## 14   1807P8Ve   18    07      P8 -0.28624816 -0.55408526
## 38   1909P8Ve   19    09      P8  0.17190683  0.43726863
## 7    1804P8Ve   18    04      P8  0.63424515  0.01508721

Species fitting

vf <- envfit(Cop16S_NMDSmodel, Cop16S_wide, perm = 999)

spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)

# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
##                         NMDS1       NMDS2            Species Pvalues R_squared
## Acartia longiremis  0.6746035  0.51226790 Acartia longiremis   0.001 0.6535278
## Calanus glacialis   0.5166403 -0.32274783  Calanus glacialis   0.001 0.3379937
## Calanus marshallae  0.7500000  0.11618120 Calanus marshallae   0.001 0.5246361
## Candacia columbiae -0.2209984 -0.62950015 Candacia columbiae   0.001 0.4054201
## Eucalanus bungii    0.3591065 -0.81006118   Eucalanus bungii   0.001 0.7151439
## Metridia lucens     0.6711172 -0.09825249    Metridia lucens   0.001 0.4190289
Cop16S_Species_plot <- ggplot(Cop16S.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour =  station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
  geom_segment(data = spp.scrs,size=0.4,
               aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
               arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+ 
  geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
  annotate("text", label = "2D Stress: 0.12", x = 0.55, y = 0.8, size = 5, colour = "black")+
  geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
                  size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
Cop16S_Species_plot

save plot

setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "Cop16S_NMDS_vert.png", plot = Cop16S_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)

Mol16S

Data Setup

Remove non-zooplanton phyla

unique(Mol16S_counts$Phylum)
##  [1] "Arthropoda"          "Nemertea"            "Mollusca"           
##  [4] "Chordata"            "Annelida"            "Cnidaria"           
##  [7] "Echinodermata"       NA                    "Rotifera"           
## [10] "Chlorophyta"         "Bacillariophyta"     "Bryozoa"            
## [13] "Gastrotricha"        "Phoronida"           "Entoprocta"         
## [16] "Hemichordata"        "Bacteroidota"        "Platyhelminthes"    
## [19] "Choanoflagellata__p"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p')

# Remove those levels and drop them from the factor
Mol16S_counts <- droplevels(Mol16S_counts[!Mol16S_counts$Phylum %in% levels_to_remove,])

subset to copepods only

Mol16S_counts<-subset(Mol16S_counts,Phylum=="Mollusca")

remove non-species rows

Mol16S_comp<- Mol16S_counts[complete.cases(Mol16S_counts), ]

convert to presence-absence

Mol16S_comp_pa<-Mol16S_comp %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

remove excess columns

Mol16S_comp_pa <- Mol16S_comp_pa[ -c(1:7) ]

wide to long format

Mol16S_long<-melt(Mol16S_comp_pa, id.vars=c("Species"))

add up multiple lines per station and convert back to presence-absence

Mol16S_long_sum <- Mol16S_long %>%
  group_by(Species,variable) %>%
  summarise(
    value = sum(value))

Mol16S_long_sum<-Mol16S_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

split code string up to extract metadata

Mol16S_long_sum$variable<-str_split_fixed(Mol16S_long_sum$variable,"_",4)

remove samples of non-interest

unique(Mol16S_long_sum$variable[,3])
##  [1] "P12"   "P22"   "P28"   "P38"   "P402"  "P4"    "P8"    "CA042" "P105" 
## [10] "P123"  "P132"  "P136"  "P381"  "P7"    ""
unique(Mol16S_long_sum$variable[,2])
##  [1] "1804"     "1806"     "1807"     "1809"     "1904"     "1907"    
##  [7] "1909"     "2007"     "2009"     "2010"     "Control2"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
Mol16S_long_sum <- droplevels(Mol16S_long_sum[!Mol16S_long_sum$variable[,3] %in% levels_to_remove,])

split up replicate columns

unique(Mol16S_long_sum$variable[,4])
## [1] "Ob"  "VeA" "Ve"  "ObB" "ObA" "VeB"
Mol16S_long_sum <- Mol16S_long_sum %>%
  mutate(
    tow_type = substr(variable[,4], 1, 2),
    replicate = substr(variable[,4], 3, nchar(variable[,4]))
  )

split up year and month columns

Mol16S_long_sum <- Mol16S_long_sum %>%
  mutate(
    Year = substr(variable[,2], 1, 2),
    Month = substr(variable[,2], 3, 4)
  )

make station column

Mol16S_long_sum$station<-Mol16S_long_sum$variable[,3]

remove oblique samples

Mol16S_long_sum<-subset(Mol16S_long_sum,tow_type=="Ve")

merge replicates

colnames(Mol16S_long_sum)
## [1] "Species"   "variable"  "value"     "tow_type"  "replicate" "Year"     
## [7] "Month"     "station"
Mol16S_long_sum$sample<-paste(Mol16S_long_sum$Year,Mol16S_long_sum$Month,Mol16S_long_sum$station,Mol16S_long_sum$tow_type,sep="")

Mol16S_long_sum <- Mol16S_long_sum %>%
  group_by(Year,Month,station,sample,Species) %>%
  summarise(
    value = sum(value))
#convert back to presence-absence
Mol16S_long_sum<-Mol16S_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

back to wide format

Mol16S_wide<-dcast(Mol16S_long_sum, sample+Year+Month+station ~ Species )

remove any columns with all zeroes

target_cols <- 6:ncol(Mol16S_wide)

non_zero_cols <- target_cols[colSums(Mol16S_wide[, target_cols]) != 0]

Mol16S_wide <- Mol16S_wide[, c(1:5, non_zero_cols)]

remove environmental data

Mol16S_wide_simple<-Mol16S_wide[ , 5:44]

Make environmental columns categorical

# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")

# Convert the specified columns to factors
Mol16S_wide <- Mol16S_wide %>%
  mutate_at(vars(one_of(cols_to_factor)), as.factor)

PERMANOVA

dist<-vegdist(Mol16S_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=Mol16S_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist ~ station * Month, data = Mol16S_wide, permutations = 999, method = "bray")
##               Df SumOfSqs      R2      F Pr(>F)    
## station        6   3.0124 0.22524 3.0094  0.001 ***
## Month          3   1.9787 0.14795 3.9534  0.001 ***
## station:Month 13   2.5439 0.19021 1.1729  0.182    
## Residual      35   5.8392 0.43660                  
## Total         57  13.3742 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

station comparisons

adonis.pair(vegdist(Mol16S_wide_simple),Mol16S_wide$station)
##     combination SumsOfSqs   MeanSqs   F.Model         R2     P.value
## 1   P12 <-> P22 0.9127341 0.9127341 3.9254348 0.20741583 0.005994006
## 2   P12 <-> P28 0.6181994 0.6181994 3.1385120 0.17303029 0.021978022
## 3   P12 <-> P38 0.3291027 0.3291027 1.3796029 0.08970341 0.235764236
## 4    P12 <-> P4 0.9157360 0.9157360 3.4738704 0.19880372 0.006993007
## 5  P12 <-> P402 0.1928326 0.1928326 0.7679469 0.05200093 0.570429570
## 6    P12 <-> P8 0.3747440 0.3747440 1.6818022 0.10724547 0.076923077
## 7   P22 <-> P28 0.3390156 0.3390156 2.1321250 0.11758826 0.047952048
## 8   P22 <-> P38 0.4312227 0.4312227 2.2082574 0.12832545 0.049950050
## 9    P22 <-> P4 0.7534688 0.7534688 3.4457706 0.18680546 0.003996004
## 10 P22 <-> P402 0.7438819 0.7438819 3.5937518 0.19327739 0.011988012
## 11   P22 <-> P8 0.5059327 0.5059327 2.8014027 0.15736977 0.012987013
## 12  P28 <-> P38 0.3734112 0.3734112 2.3377428 0.13483548 0.061938062
## 13   P28 <-> P4 0.6429326 0.6429326 3.5110104 0.18967146 0.007992008
## 14 P28 <-> P402 0.4806031 0.4806031 2.8032117 0.15745539 0.027972028
## 15   P28 <-> P8 0.2495594 0.2495594 1.7204594 0.10289546 0.103896104
## 16   P38 <-> P4 0.8554226 0.8554226 3.8238661 0.21453629 0.001998002
## 17 P38 <-> P402 0.2076131 0.2076131 0.9830124 0.06560846 0.438561439
## 18   P38 <-> P8 0.3155158 0.3155158 1.7248630 0.10969018 0.114885115
## 19  P4 <-> P402 0.6522328 0.6522328 2.7606706 0.16471122 0.019980020
## 20    P4 <-> P8 0.3937107 0.3937107 1.8930196 0.11911013 0.053946054
## 21  P402 <-> P8 0.2327987 0.2327987 1.1909391 0.07839799 0.303696304
##    P.value.corrected
## 1         0.03356643
## 2         0.05128205
## 3         0.27505828
## 4         0.03356643
## 5         0.57042957
## 6         0.10769231
## 7         0.08714363
## 8         0.08714363
## 9         0.03356643
## 10        0.03896104
## 11        0.03896104
## 12        0.09290709
## 13        0.03356643
## 14        0.05874126
## 15        0.13636364
## 16        0.03356643
## 17        0.46048951
## 18        0.14191691
## 19        0.05128205
## 20        0.08714363
## 21        0.33566434

month comparisons

adonis.pair(vegdist(Mol16S_wide_simple),Mol16S_wide$Month)
##   combination SumsOfSqs   MeanSqs  F.Model         R2     P.value
## 1   04 <-> 07 0.9086773 0.9086773 4.871109 0.12862335 0.000999001
## 2   04 <-> 09 0.8670457 0.8670457 3.951357 0.10693401 0.000999001
## 3   04 <-> 10 0.4136049 0.4136049 2.500098 0.15152021 0.015984016
## 4   07 <-> 09 0.7584481 0.7584481 3.336961 0.07700034 0.002997003
## 5   07 <-> 10 0.3030749 0.3030749 1.527597 0.06781004 0.189810190
## 6   09 <-> 10 0.2812382 0.2812382 1.124606 0.05083055 0.312687313
##   P.value.corrected
## 1       0.002997003
## 2       0.002997003
## 3       0.023976024
## 4       0.005994006
## 5       0.227772228
## 6       0.312687313

run NMDS

Mol16S_NMDSmodel <- metaMDS(Mol16S_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.1907707 
## Run 1 stress 0.2026659 
## Run 2 stress 0.2085577 
## Run 3 stress 0.1931091 
## Run 4 stress 0.1903017 
## ... New best solution
## ... Procrustes: rmse 0.01036142  max resid 0.06077119 
## Run 5 stress 0.1946583 
## Run 6 stress 0.2014332 
## Run 7 stress 0.1933827 
## Run 8 stress 0.209636 
## Run 9 stress 0.1950175 
## Run 10 stress 0.1903021 
## ... Procrustes: rmse 0.0003483263  max resid 0.002075324 
## ... Similar to previous best
## Run 11 stress 0.2052475 
## Run 12 stress 0.2047116 
## Run 13 stress 0.2066229 
## Run 14 stress 0.1938868 
## Run 15 stress 0.1959781 
## Run 16 stress 0.193872 
## Run 17 stress 0.1904242 
## ... Procrustes: rmse 0.003925854  max resid 0.02248426 
## Run 18 stress 0.1979184 
## Run 19 stress 0.1905763 
## ... Procrustes: rmse 0.01210107  max resid 0.08235916 
## Run 20 stress 0.1934097 
## *** Best solution repeated 1 times
Mol16S_NMDSmodel
## 
## Call:
## metaMDS(comm = Mol16S_wide_simple, distance = "bray", trymax = 999) 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     Mol16S_wide_simple 
## Distance: bray 
## 
## Dimensions: 2 
## Stress:     0.1903017 
## Stress type 1, weak ties
## Best solution was repeated 1 time in 20 tries
## The best solution was from try 4 (random start)
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'Mol16S_wide_simple'

get datascores

Mol16S.data.scores<-scores(Mol16S_NMDSmodel,display="sites")
Mol16S.data.scores<- as.data.frame(Mol16S.data.scores)

add environmental variables back in

# Extract the first 5 columns from df1
first_5_columns <- Mol16S_wide[, 1:4]

# Combine the first 5 columns from df1 with df2
Mol16S.data.scores <- cbind(first_5_columns, Mol16S.data.scores)

plot NMDS

plot datascores

xx <- ggplot(Mol16S.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx

extract hulls

unique(Mol16S.data.scores$station)
## [1] P12  P22  P28  P38  P402 P4   P8  
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- Mol16S.data.scores[Mol16S.data.scores$station == "P12", ][chull(Mol16S.data.scores[Mol16S.data.scores$station ==                                                           "P12", c("NMDS1", "NMDS2")]), ]  
P22 <- Mol16S.data.scores[Mol16S.data.scores$station == "P22", ][chull(Mol16S.data.scores[Mol16S.data.scores$station ==                                                           "P22", c("NMDS1", "NMDS2")]), ]  
P28 <- Mol16S.data.scores[Mol16S.data.scores$station == "P28", ][chull(Mol16S.data.scores[Mol16S.data.scores$station ==                                                           "P28", c("NMDS1", "NMDS2")]), ]
P38 <- Mol16S.data.scores[Mol16S.data.scores$station == "P38", ][chull(Mol16S.data.scores[Mol16S.data.scores$station ==                                                           "P38", c("NMDS1", "NMDS2")]), ]  
P4 <- Mol16S.data.scores[Mol16S.data.scores$station == "P4", ][chull(Mol16S.data.scores[Mol16S.data.scores$station ==                                                           "P4", c("NMDS1", "NMDS2")]), ]  
P402 <- Mol16S.data.scores[Mol16S.data.scores$station == "P402", ][chull(Mol16S.data.scores[Mol16S.data.scores$station ==                                                           "P402", c("NMDS1", "NMDS2")]), ]  
P8 <- Mol16S.data.scores[Mol16S.data.scores$station == "P8", ][chull(Mol16S.data.scores[Mol16S.data.scores$station ==                                                           "P8", c("NMDS1", "NMDS2")]), ]  

get hull data

hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8)  #combine grp.a and grp.b
hull.data
##        sample Year Month station         NMDS1        NMDS2
## 15  1809P12Ve   18    09     P12  0.8869696338 -0.009059184
## 1   1804P12Ve   18    04     P12 -0.1015761368 -0.049928461
## 29  1907P12Ve   19    07     P12 -1.7474330671  0.213565877
## 50  2009P12Ve   20    09     P12 -0.4207546361  0.546882995
## 2   1804P22Ve   18    04     P22  0.9131823060 -0.555700738
## 57  2010P22Ve   20    10     P22 -0.2157024321 -0.602882528
## 51  2009P22Ve   20    09     P22 -0.5589272005 -0.397855519
## 9   1807P22Ve   18    07     P22  0.4796764640  0.383143497
## 23  1904P22Ve   19    04     P22  0.8233778583 -0.226441762
## 3   1804P28Ve   18    04     P28  0.6594245319 -0.243991447
## 45  2007P28Ve   20    07     P28  0.2303106271 -0.204647915
## 58  2010P28Ve   20    10     P28 -0.2067690957 -0.124748597
## 31  1907P28Ve   19    07     P28 -0.0866650527  0.070354547
## 10  1807P28Ve   18    07     P28  0.4431095588  0.273594744
## 18  1809P38Ve   18    09     P38  1.0109704349  0.076094869
## 39  1909P38Ve   19    09     P38  0.4141064497  0.085944690
## 11  1807P38Ve   18    07     P38 -0.1834928053  0.162767768
## 46  2007P38Ve   20    07     P38 -0.4437529153  0.199989466
## 32  1907P38Ve   19    07     P38  0.0301794527  0.813212245
## 19 1809P402Ve   18    09    P402  0.8373239097  0.019536433
## 33 1907P402Ve   19    07    P402 -0.5239615111 -0.014675702
## 54 2009P402Ve   20    09    P402 -0.5678334804  0.405379184
## 40 1909P402Ve   19    09    P402 -0.5522985851  0.545740211
## 26 1904P402Ve   19    04    P402  0.1487360678  0.515145684
## 20   1809P4Ve   18    09      P4 -0.6374371719 -1.703606477
## 41   1909P4Ve   19    09      P4 -1.1244775293 -0.600108637
## 27   1904P4Ve   19    04      P4 -0.0511490462 -0.130688490
## 6    1804P4Ve   18    04      P4  0.6347199515 -0.202262938
## 28   1904P8Ve   19    04      P8  0.0113308913 -0.452013625
## 21   1809P8Ve   18    09      P8 -0.6655688596 -0.292424160
## 35   1907P8Ve   19    07      P8 -0.0001597884  0.284281929
## 49   2007P8Ve   20    07      P8  0.2472504357  0.482700638

Species fitting

vf <- envfit(Mol16S_NMDSmodel, Mol16S_wide, perm = 999)

spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)

# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
##                             NMDS1      NMDS2                Species Pvalues
## Clinocardium nuttallii -0.2038409 -0.6953735 Clinocardium nuttallii   0.001
## Lacuna vincta           0.7500000 -0.1715897          Lacuna vincta   0.001
## Littorina plena        -0.2254875  0.6591345        Littorina plena   0.001
## Olea hansineensis      -0.5979556  0.1074788      Olea hansineensis   0.001
##                        R_squared
## Clinocardium nuttallii 0.4884096
## Lacuna vincta          0.5505869
## Littorina plena        0.4513971
## Olea hansineensis      0.3433152
Mol16S_Species_plot <- ggplot(Mol16S.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour =  station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
  geom_segment(data = spp.scrs,size=0.4,
               aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
               arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+ 
  geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
  annotate("text", label = "2D Stress: 0.19", x = -0.55, y = 0.8, size = 5, colour = "black")+
  geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
                  size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
Mol16S_Species_plot

save plot

setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "Mol16S_NMDS_vert.png", plot = Mol16S_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)

M28S

Data Setup

Remove non-zooplanton phyla

unique(M28S_counts$Phylum)
##  [1] "Arthropoda"        NA                  "Cnidaria"         
##  [4] "Dinophyceae__p"    "Raphidophyceae__p" "Bacillariophyta"  
##  [7] "Chordata"          "Ctenophora"        "Chytridiomycota"  
## [10] "Annelida"          "Streptophyta"      "Acantharea__p"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p','Raphidophyceae__p','Chytridiomycota','Acantharea__p')

# Remove those levels and drop them from the factor
M28S_counts <- droplevels(M28S_counts[!M28S_counts$Phylum %in% levels_to_remove,])

remove non-species rows

M28S_comp<- M28S_counts[complete.cases(M28S_counts), ]

convert to presence-absence

M28S_comp_pa<-M28S_comp %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

remove excess columns

M28S_comp_pa <- M28S_comp_pa[ -c(1:7) ]

wide to long format

M28S_long<-melt(M28S_comp_pa, id.vars=c("Species"))

add up multiple lines per station and convert back to presence-absence

M28S_long_sum <- M28S_long %>%
  group_by(Species,variable) %>%
  summarise(
    value = sum(value))

M28S_long_sum<-M28S_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

split code string up to extract metadata

M28S_long_sum$variable<-str_split_fixed(M28S_long_sum$variable,"_",4)

remove samples of non-interest

unique(M28S_long_sum$variable[,3])
##  [1] "P12"   "P22"   "P28"   "P38"   "P402"  "P4"    "P8"    "CA042" "P105" 
## [10] "P123"  "P132"  "P136"  "P381"  "P7"    ""
unique(M28S_long_sum$variable[,2])
##  [1] "1804"     "1806"     "1807"     "1809"     "1904"     "1907"    
##  [7] "1909"     "2007"     "2009"     "2010"     "Control1" "Control2"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
M28S_long_sum <- droplevels(M28S_long_sum[!M28S_long_sum$variable[,3] %in% levels_to_remove,])

split up replicate columns

unique(M28S_long_sum$variable[,4])
## [1] "Ob"  "Ve"  "ObB" "VeA" "ObA" "VeB"
M28S_long_sum <- M28S_long_sum %>%
  mutate(
    tow_type = substr(variable[,4], 1, 2),
    replicate = substr(variable[,4], 3, nchar(variable[,4]))
  )

split up year and month columns

M28S_long_sum <- M28S_long_sum %>%
  mutate(
    Year = substr(variable[,2], 1, 2),
    Month = substr(variable[,2], 3, 4)
  )

make station column

M28S_long_sum$station<-M28S_long_sum$variable[,3]

remove oblique samples

M28S_long_sum<-subset(M28S_long_sum,tow_type=="Ve")

merge replicates (and oblique and vertical tows)

colnames(M28S_long_sum)
## [1] "Species"   "variable"  "value"     "tow_type"  "replicate" "Year"     
## [7] "Month"     "station"
M28S_long_sum$sample<-paste(M28S_long_sum$Year,M28S_long_sum$Month,M28S_long_sum$station,M28S_long_sum$tow_type,sep="")

M28S_long_sum <- M28S_long_sum %>%
  group_by(Year,Month,station,sample,Species) %>%
  summarise(
    value = sum(value))
#convert back to presence-absence
M28S_long_sum<-M28S_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

back to wide format

M28S_wide<-dcast(M28S_long_sum, sample+Year+Month+station ~ Species )

remove any columns with all zeroes

target_cols <- 6:ncol(M28S_wide)

non_zero_cols <- target_cols[colSums(M28S_wide[, target_cols]) != 0]

M28S_wide <- M28S_wide[, c(1:5, non_zero_cols)]

remove environmental data

M28S_wide_simple<-M28S_wide[ , 5:31]

Make environmental columns categorical

# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")

# Convert the specified columns to factors
M28S_wide <- M28S_wide %>%
  mutate_at(vars(one_of(cols_to_factor)), as.factor)

PERMANOVA

dist<-vegdist(M28S_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=M28S_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist ~ station * Month, data = M28S_wide, permutations = 999, method = "bray")
##               Df SumOfSqs      R2      F Pr(>F)    
## station        6   2.0558 0.38585 6.7331  0.001 ***
## Month          3   0.3721 0.06984 2.4375  0.012 *  
## station:Month 13   1.1189 0.21001 1.6914  0.007 ** 
## Residual      35   1.7811 0.33429                  
## Total         57   5.3280 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

station comparisons

adonis.pair(vegdist(M28S_wide_simple),M28S_wide$station)
##     combination  SumsOfSqs    MeanSqs    F.Model         R2     P.value
## 1   P12 <-> P22 0.65919123 0.65919123 11.9272965 0.44294445 0.000999001
## 2   P12 <-> P28 0.35693732 0.35693732  9.9172241 0.39800678 0.000999001
## 3   P12 <-> P38 0.19821347 0.19821347  3.3179437 0.19158993 0.019980020
## 4    P12 <-> P4 0.16112868 0.16112868  2.6487358 0.15909531 0.032967033
## 5  P12 <-> P402 0.21653871 0.21653871  4.2195211 0.23159341 0.004995005
## 6    P12 <-> P8 0.44181325 0.44181325  5.9746725 0.29911241 0.000999001
## 7   P22 <-> P28 0.49852694 0.49852694 10.5856321 0.39817117 0.000999001
## 8   P22 <-> P38 0.44398844 0.44398844  6.3427042 0.29718372 0.000999001
## 9    P22 <-> P4 0.55468753 0.55468753  7.8103577 0.34240400 0.000999001
## 10 P22 <-> P402 0.84600075 0.84600075 13.6144834 0.47578994 0.000999001
## 11   P22 <-> P8 0.16359089 0.16359089  1.9648076 0.11581667 0.113886114
## 12  P28 <-> P38 0.04697845 0.04697845  0.9261569 0.05815319 0.448551449
## 13   P28 <-> P4 0.20662937 0.20662937  3.9933253 0.21024887 0.003996004
## 14 P28 <-> P402 0.38121330 0.38121330  8.8935604 0.37221579 0.001998002
## 15   P28 <-> P8 0.17272475 0.17272475  2.6994685 0.15251693 0.044955045
## 16   P38 <-> P4 0.19407334 0.19407334  2.5330313 0.15321034 0.045954046
## 17 P38 <-> P402 0.31652900 0.31652900  4.7170584 0.25201922 0.000999001
## 18   P38 <-> P8 0.20728848 0.20728848  2.3100733 0.14163476 0.064935065
## 19  P4 <-> P402 0.21557087 0.21557087  3.1610723 0.18420016 0.018981019
## 20    P4 <-> P8 0.20314164 0.20314164  2.2366301 0.13775211 0.097902098
## 21  P402 <-> P8 0.66584034 0.66584034  8.1888215 0.36905166 0.000999001
##    P.value.corrected
## 1        0.002331002
## 2        0.002331002
## 3        0.029970030
## 4        0.046153846
## 5        0.008741259
## 6        0.002331002
## 7        0.002331002
## 8        0.002331002
## 9        0.002331002
## 10       0.002331002
## 11       0.119580420
## 12       0.448551449
## 13       0.007628735
## 14       0.004195804
## 15       0.056766763
## 16       0.056766763
## 17       0.002331002
## 18       0.075757576
## 19       0.029970030
## 20       0.108207582
## 21       0.002331002

month comparisons

adonis.pair(vegdist(M28S_wide_simple),M28S_wide$Month)
##   combination  SumsOfSqs    MeanSqs   F.Model          R2    P.value
## 1   04 <-> 07 0.24487359 0.24487359 2.9794605 0.082810039 0.04095904
## 2   04 <-> 09 0.26545398 0.26545398 2.7811955 0.077727853 0.03196803
## 3   04 <-> 10 0.08921457 0.08921457 1.1485010 0.075816149 0.28271728
## 4   07 <-> 09 0.03595778 0.03595778 0.3757829 0.009307136 0.83816184
## 5   07 <-> 10 0.08535235 0.08535235 1.0153537 0.046120255 0.40059940
## 6   09 <-> 10 0.05186136 0.05186136 0.4944032 0.023001485 0.81318681
##   P.value.corrected
## 1         0.1228771
## 2         0.1228771
## 3         0.5654346
## 4         0.8381618
## 5         0.6008991
## 6         0.8381618

run NMDS

M28S_NMDSmodel <- metaMDS(M28S_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.1893752 
## Run 1 stress 0.1891942 
## ... New best solution
## ... Procrustes: rmse 0.007595203  max resid 0.03154682 
## Run 2 stress 0.2156529 
## Run 3 stress 0.1986823 
## Run 4 stress 0.1885547 
## ... New best solution
## ... Procrustes: rmse 0.03319748  max resid 0.2165163 
## Run 5 stress 0.188067 
## ... New best solution
## ... Procrustes: rmse 0.01412458  max resid 0.09721519 
## Run 6 stress 0.2050817 
## Run 7 stress 0.2315544 
## Run 8 stress 0.196449 
## Run 9 stress 0.2020022 
## Run 10 stress 0.2252864 
## Run 11 stress 0.188067 
## ... Procrustes: rmse 3.580427e-05  max resid 0.0002310747 
## ... Similar to previous best
## Run 12 stress 0.1964484 
## Run 13 stress 0.2274157 
## Run 14 stress 0.2202868 
## Run 15 stress 0.188556 
## ... Procrustes: rmse 0.01353188  max resid 0.09393867 
## Run 16 stress 0.1893752 
## Run 17 stress 0.1986823 
## Run 18 stress 0.1986822 
## Run 19 stress 0.1987499 
## Run 20 stress 0.188067 
## ... Procrustes: rmse 2.967986e-05  max resid 0.000143822 
## ... Similar to previous best
## *** Best solution repeated 2 times
M28S_NMDSmodel
## 
## Call:
## metaMDS(comm = M28S_wide_simple, distance = "bray", trymax = 999) 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     M28S_wide_simple 
## Distance: bray 
## 
## Dimensions: 2 
## Stress:     0.188067 
## Stress type 1, weak ties
## Best solution was repeated 2 times in 20 tries
## The best solution was from try 5 (random start)
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'M28S_wide_simple'

get datascores

M28S.data.scores<-scores(M28S_NMDSmodel,display="sites")
M28S.data.scores<- as.data.frame(M28S.data.scores)

add environmental variables back in

# Extract the first 5 columns from df1
first_5_columns <- M28S_wide[, 1:4]

# Combine the first 5 columns from df1 with df2
M28S.data.scores <- cbind(first_5_columns, M28S.data.scores)

plot NMDS

plot datascores

xx <- ggplot(M28S.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx

extract hulls

unique(M28S.data.scores$station)
## [1] P12  P22  P28  P38  P402 P4   P8  
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- M28S.data.scores[M28S.data.scores$station == "P12", ][chull(M28S.data.scores[M28S.data.scores$station ==                                                           "P12", c("NMDS1", "NMDS2")]), ]  
P22 <- M28S.data.scores[M28S.data.scores$station == "P22", ][chull(M28S.data.scores[M28S.data.scores$station ==                                                           "P22", c("NMDS1", "NMDS2")]), ]  
P28 <- M28S.data.scores[M28S.data.scores$station == "P28", ][chull(M28S.data.scores[M28S.data.scores$station ==                                                           "P28", c("NMDS1", "NMDS2")]), ]
P38 <- M28S.data.scores[M28S.data.scores$station == "P38", ][chull(M28S.data.scores[M28S.data.scores$station ==                                                           "P38", c("NMDS1", "NMDS2")]), ]  
P4 <- M28S.data.scores[M28S.data.scores$station == "P4", ][chull(M28S.data.scores[M28S.data.scores$station ==                                                           "P4", c("NMDS1", "NMDS2")]), ]  
P402 <- M28S.data.scores[M28S.data.scores$station == "P402", ][chull(M28S.data.scores[M28S.data.scores$station ==                                                           "P402", c("NMDS1", "NMDS2")]), ]  
P8 <- M28S.data.scores[M28S.data.scores$station == "P8", ][chull(M28S.data.scores[M28S.data.scores$station ==                                                           "P8", c("NMDS1", "NMDS2")]), ]  

get hull data

hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8)  #combine grp.a and grp.b
hull.data
##        sample Year Month station        NMDS1        NMDS2
## 50  2009P12Ve   20    09     P12  0.361869723 -0.578347287
## 15  1809P12Ve   18    09     P12 -0.279037503 -0.364952535
## 29  1907P12Ve   19    07     P12 -0.300360957 -0.281683343
## 1   1804P12Ve   18    04     P12 -0.366710561  0.033582169
## 22  1904P12Ve   19    04     P12 -0.245045209 -0.027770940
## 36  1909P12Ve   19    09     P12 -0.051293262 -0.183489561
## 44  2007P22Ve   20    07     P22  0.707362765 -0.062854025
## 2   1804P22Ve   18    04     P22  0.770906567 -0.339996178
## 51  2009P22Ve   20    09     P22 -0.050424088  0.356400036
## 16  1809P22Ve   18    09     P22  0.254921799  0.542145113
## 30  1907P22Ve   19    07     P22  0.514404633  0.247898969
## 24  1904P28Ve   19    04     P28  0.191115185 -0.108946556
## 3   1804P28Ve   18    04     P28  0.175215184 -0.229067100
## 17  1809P28Ve   18    09     P28 -0.365930613  0.277294512
## 58  2010P28Ve   20    10     P28  0.059688334  0.216249830
## 18  1809P38Ve   18    09     P38  0.127527774 -0.752404155
## 11  1807P38Ve   18    07     P38 -0.205863700 -0.007823704
## 53  2009P38Ve   20    09     P38 -0.274931151  0.392347802
## 46  2007P38Ve   20    07     P38  0.145707767  0.602043380
## 4   1804P38Ve   18    04     P38  0.255169592  0.070496694
## 47 2007P402Ve   20    07    P402 -0.159147727 -0.092021552
## 40 1909P402Ve   19    09    P402 -0.893323703  0.042065001
## 54 2009P402Ve   20    09    P402 -0.123534004  0.326303996
## 20   1809P4Ve   18    09      P4 -0.009008168 -0.620577537
## 34   1907P4Ve   19    07      P4 -0.544717691 -0.338433223
## 13   1807P4Ve   18    07      P4 -0.545346413 -0.188624455
## 27   1904P4Ve   19    04      P4  0.052268186  0.161409765
## 41   1909P4Ve   19    09      P4  0.126493315 -0.103829414
## 7    1804P8Ve   18    04      P8  0.549383970 -0.194627463
## 28   1904P8Ve   19    04      P8  0.510547017 -0.241520622
## 14   1807P8Ve   18    07      P8 -0.245973479 -0.529259296
## 21   1809P8Ve   18    09      P8 -0.491140124  0.386320052
## 42   1909P8Ve   19    09      P8  0.399063617  0.464139369
## 56   2009P8Ve   20    09      P8  0.477811810  0.453402241

Species fitting

vf <- envfit(M28S_NMDSmodel, M28S_wide, perm = 999)

spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)

# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
##                             NMDS1       NMDS2                Species Pvalues
## Calanus finmarchicus    0.7041827 -0.21822741   Calanus finmarchicus   0.001
## Calanus glacialis       0.7500000 -0.25666998      Calanus glacialis   0.001
## Chiridius poppei       -0.1061340 -0.67991633       Chiridius poppei   0.001
## Eucalanus bungii        0.3354639 -0.63435100       Eucalanus bungii   0.001
## Eucalanus californicus  0.5469875 -0.27069661 Eucalanus californicus   0.001
## Microcalanus pygmaeus  -0.4468494 -0.47811202  Microcalanus pygmaeus   0.001
## Neocalanus plumchrus    0.4776263 -0.37219518   Neocalanus plumchrus   0.001
## Oithona atlantica      -0.3709758 -0.51036144      Oithona atlantica   0.001
## Paracalanus parvus     -0.5415864  0.31883240     Paracalanus parvus   0.001
## Pseudocalanus minutus   0.6966303 -0.05885922  Pseudocalanus minutus   0.001
## Scolecithricella minor  0.4380372  0.48114255 Scolecithricella minor   0.001
##                        R_squared
## Calanus finmarchicus   0.4462258
## Calanus glacialis      0.5159170
## Chiridius poppei       0.3887982
## Eucalanus bungii       0.4227777
## Eucalanus californicus 0.3058098
## Microcalanus pygmaeus  0.3516179
## Neocalanus plumchrus   0.3010349
## Oithona atlantica      0.3268444
## Paracalanus parvus     0.3242812
## Pseudocalanus minutus  0.4012841
## Scolecithricella minor 0.3476025
M28S_Species_plot <- ggplot(M28S.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour =  station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
  geom_segment(data = spp.scrs,size=0.4,
               aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
               arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+ 
  geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
  annotate("text", label = "2D Stress: 0.19", x = 0.6, y = 0.8, size = 5, colour = "black")+
  geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
                  size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
M28S_Species_plot

save plot

setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "M28S_NMDS_vert.png", plot = M28S_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)

Machida18S

Data Setup

Remove non-zooplanton phyla

unique(Machida18S_counts$Phylum)
##  [1] "Arthropoda"          "Cnidaria"            "Bacillariophyta"    
##  [4] "Mollusca"            "Ctenophora"          "Chaetognatha"       
##  [7] NA                    "Annelida"            "Dinophyceae__p"     
## [10] "Nemertea"            "Chordata"            "Ciliophora"         
## [13] "Oomycota"            "Acantharea__p"       "Bryozoa"            
## [16] "Echinodermata"       "Apicomplexa"         "Platyhelminthes"    
## [19] "Chlorophyta"         "Synurophyceae__p"    "Endomyxa"           
## [22] "Cercozoa"            "Streptophyta"        "Ascomycota"         
## [25] "Blastocladiomycota"  "Bigyra__p"           "Chytridiomycota"    
## [28] "Nematoda"            "Rotifera"            "Phoronida"          
## [31] "Polycystinea__p"     "Choanoflagellata__p" "Cryptophyceae__p"   
## [34] "Phaeophyceae__p"     "Rhodophyta"          "Raphidophyceae__p"  
## [37] "Basidiomycota"       "Pirsoniales__c__p"   "Porifera"           
## [40] "Ichthyosporea__p"    "Colponemida__c__p"   "Dictyochophyceae__p"
## [43] "Entoprocta"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p','Ciliophora','Acantharea__p','Apicomplexa','Synurophyceae__p','Endomyxa','Cercozoa','Bigyra__p','Chytridiomycota','Polycystinea__p','Choanoflagellata__p','Raphidophyceae__p','Pirsoniales__c__p','Colponemida__c__p','Ichthyosporea__p')

# Remove those levels and drop them from the factor
Machida18S_counts <- droplevels(Machida18S_counts[!Machida18S_counts$Phylum %in% levels_to_remove,])

remove non-species rows

Machida18S_comp<- Machida18S_counts[complete.cases(Machida18S_counts), ]

convert to presence-absence

Machida18S_comp_pa<-Machida18S_comp %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

remove excess columns

Machida18S_comp_pa <- Machida18S_comp_pa[ -c(1:7) ]

wide to long format

Machida18S_long<-melt(Machida18S_comp_pa, id.vars=c("Species"))

add up multiple lines per station and convert back to presence-absence

Machida18S_long_sum <- Machida18S_long %>%
  group_by(Species,variable) %>%
  summarise(
    value = sum(value))

Machida18S_long_sum<-Machida18S_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

split code string up to extract metadata

Machida18S_long_sum$variable<-str_split_fixed(Machida18S_long_sum$variable,"_",4)

remove samples of non-interest

unique(Machida18S_long_sum$variable[,3])
##  [1] "P12"   "P22"   "P28"   "P38"   "P402"  "P4"    "P8"    "CA042" "P105" 
## [10] "P123"  "P132"  "P136"  "P381"  "P7"    ""
unique(Machida18S_long_sum$variable[,2])
##  [1] "1804"     "1806"     "1807"     "1809"     "1904"     "1907"    
##  [7] "1909"     "2007"     "2009"     "2010"     "Control1"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
Machida18S_long_sum <- droplevels(Machida18S_long_sum[!Machida18S_long_sum$variable[,3] %in% levels_to_remove,])

split up replicate columns

unique(Machida18S_long_sum$variable[,4])
## [1] "Ob"  "Ve"  "ObB" "VeA" "ObA" "VeB"
Machida18S_long_sum <- Machida18S_long_sum %>%
  mutate(
    tow_type = substr(variable[,4], 1, 2),
    replicate = substr(variable[,4], 3, nchar(variable[,4]))
  )

split up year and month columns

Machida18S_long_sum <- Machida18S_long_sum %>%
  mutate(
    Year = substr(variable[,2], 1, 2),
    Month = substr(variable[,2], 3, 4)
  )

make station column

Machida18S_long_sum$station<-Machida18S_long_sum$variable[,3]

remove oblique samples

Machida18S_long_sum<-subset(Machida18S_long_sum,tow_type=="Ve")

merge replicates (and oblique and vertical tows)

colnames(Machida18S_long_sum)
## [1] "Species"   "variable"  "value"     "tow_type"  "replicate" "Year"     
## [7] "Month"     "station"
Machida18S_long_sum$sample<-paste(Machida18S_long_sum$Year,Machida18S_long_sum$Month,Machida18S_long_sum$station,Machida18S_long_sum$tow_type,sep="")

Machida18S_long_sum <- Machida18S_long_sum %>%
  group_by(Year,Month,station,sample,Species) %>%
  summarise(
    value = sum(value))
#convert back to presence-absence
Machida18S_long_sum<-Machida18S_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

back to wide format

Machida18S_wide<-dcast(Machida18S_long_sum, sample+Year+Month+station ~ Species )

remove any columns with all zeroes

target_cols <- 6:ncol(Machida18S_wide)

non_zero_cols <- target_cols[colSums(Machida18S_wide[, target_cols]) != 0]

Machida18S_wide <- Machida18S_wide[, c(1:5, non_zero_cols)]

remove environmental data

Machida18S_wide_simple<-Machida18S_wide[ , 5:122]

Make environmental columns categorical

# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")

# Convert the specified columns to factors
Machida18S_wide <- Machida18S_wide %>%
  mutate_at(vars(one_of(cols_to_factor)), as.factor)

PERMANOVA

dist<-vegdist(Machida18S_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=Machida18S_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist ~ station * Month, data = Machida18S_wide, permutations = 999, method = "bray")
##               Df SumOfSqs      R2      F Pr(>F)    
## station        6   1.9527 0.28004 4.4887  0.001 ***
## Month          3   1.0313 0.14789 4.7411  0.001 ***
## station:Month 13   1.4515 0.20815 1.5399  0.002 ** 
## Residual      35   2.5377 0.36392                  
## Total         57   6.9732 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

station comparisons

adonis.pair(vegdist(Machida18S_wide_simple),Machida18S_wide$station)
##     combination SumsOfSqs   MeanSqs  F.Model         R2     P.value
## 1   P12 <-> P22 0.3826891 0.3826891 4.467383 0.22948039 0.001998002
## 2   P12 <-> P28 0.2750693 0.2750693 2.997385 0.16654560 0.010989011
## 3   P12 <-> P38 0.2219694 0.2219694 2.433960 0.14810553 0.013986014
## 4    P12 <-> P4 0.4147770 0.4147770 4.811898 0.25579013 0.002997003
## 5  P12 <-> P402 0.2283132 0.2283132 2.243123 0.13809679 0.039960040
## 6    P12 <-> P8 0.2639636 0.2639636 2.475251 0.15024057 0.015984016
## 7   P22 <-> P28 0.3708033 0.3708033 4.107283 0.20426843 0.010989011
## 8   P22 <-> P38 0.2675489 0.2675489 2.984526 0.16594964 0.002997003
## 9    P22 <-> P4 0.5200086 0.5200086 6.119188 0.28974541 0.000999001
## 10 P22 <-> P402 0.4158457 0.4158457 4.178246 0.21786382 0.001998002
## 11   P22 <-> P8 0.1156393 0.1156393 1.111275 0.06897499 0.360639361
## 12  P28 <-> P38 0.1754484 0.1754484 1.832318 0.10885714 0.054945055
## 13   P28 <-> P4 0.6517839 0.6517839 7.155635 0.32297133 0.001998002
## 14 P28 <-> P402 0.3533728 0.3533728 3.345282 0.18235109 0.010989011
## 15   P28 <-> P8 0.3706299 0.3706299 3.364260 0.18319604 0.007992008
## 16   P38 <-> P4 0.4402794 0.4402794 4.866843 0.25795746 0.000999001
## 17 P38 <-> P402 0.2256635 0.2256635 2.127888 0.13193839 0.028971029
## 18   P38 <-> P8 0.2982173 0.2982173 2.688871 0.16111759 0.000999001
## 19  P4 <-> P402 0.3086109 0.3086109 3.053984 0.17907746 0.000999001
## 20    P4 <-> P8 0.2546457 0.2546457 2.404373 0.14656904 0.018981019
## 21  P402 <-> P8 0.2565349 0.2565349 2.111488 0.13105483 0.031968032
##    P.value.corrected
## 1        0.005994006
## 2        0.017751479
## 3        0.020979021
## 4        0.006993007
## 5        0.044166360
## 6        0.022377622
## 7        0.017751479
## 8        0.006993007
## 9        0.005244755
## 10       0.005994006
## 11       0.360639361
## 12       0.057692308
## 13       0.005994006
## 14       0.017751479
## 15       0.016783217
## 16       0.005244755
## 17       0.035787742
## 18       0.005244755
## 19       0.005244755
## 20       0.024912587
## 21       0.037296037

month comparisons

adonis.pair(vegdist(Machida18S_wide_simple),Machida18S_wide$Month)
##   combination SumsOfSqs   MeanSqs  F.Model         R2     P.value
## 1   04 <-> 07 0.6105921 0.6105921 5.566933 0.14434472 0.000999001
## 2   04 <-> 09 0.7056029 0.7056029 6.664692 0.16802582 0.000999001
## 3   04 <-> 10 0.1667650 0.1667650 1.486058 0.09596103 0.113886114
## 4   07 <-> 09 0.1811657 0.1811657 1.673153 0.04014943 0.084915085
## 5   07 <-> 10 0.1285248 0.1285248 1.120657 0.05066111 0.287712288
## 6   09 <-> 10 0.1224121 0.1224121 1.126149 0.05089676 0.337662338
##   P.value.corrected
## 1       0.002997003
## 2       0.002997003
## 3       0.170829171
## 4       0.169830170
## 5       0.337662338
## 6       0.337662338

run NMDS

Machida18S_NMDSmodel <- metaMDS(Machida18S_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 0.216649 
## Run 1 stress 0.2163793 
## ... New best solution
## ... Procrustes: rmse 0.006633881  max resid 0.04100922 
## Run 2 stress 0.2165763 
## ... Procrustes: rmse 0.01358117  max resid 0.09586161 
## Run 3 stress 0.2165763 
## ... Procrustes: rmse 0.01358174  max resid 0.09585753 
## Run 4 stress 0.221458 
## Run 5 stress 0.2199488 
## Run 6 stress 0.2375465 
## Run 7 stress 0.2163793 
## ... Procrustes: rmse 6.744436e-06  max resid 2.708761e-05 
## ... Similar to previous best
## Run 8 stress 0.2163793 
## ... Procrustes: rmse 1.091758e-05  max resid 6.010459e-05 
## ... Similar to previous best
## Run 9 stress 0.219756 
## Run 10 stress 0.2467463 
## Run 11 stress 0.2165763 
## ... Procrustes: rmse 0.01358207  max resid 0.09586317 
## Run 12 stress 0.2454007 
## Run 13 stress 0.216649 
## ... Procrustes: rmse 0.006628819  max resid 0.04091403 
## Run 14 stress 0.221446 
## Run 15 stress 0.2629595 
## Run 16 stress 0.2618729 
## Run 17 stress 0.2613695 
## Run 18 stress 0.2165763 
## ... Procrustes: rmse 0.01357982  max resid 0.09585555 
## Run 19 stress 0.2444657 
## Run 20 stress 0.2166483 
## ... Procrustes: rmse 0.007033385  max resid 0.04152159 
## *** Best solution repeated 2 times
Machida18S_NMDSmodel
## 
## Call:
## metaMDS(comm = Machida18S_wide_simple, distance = "bray", trymax = 999) 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     Machida18S_wide_simple 
## Distance: bray 
## 
## Dimensions: 2 
## Stress:     0.2163793 
## Stress type 1, weak ties
## Best solution was repeated 2 times in 20 tries
## The best solution was from try 1 (random start)
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'Machida18S_wide_simple'

get datascores

Machida18S.data.scores<-scores(Machida18S_NMDSmodel,display="sites")
Machida18S.data.scores<- as.data.frame(Machida18S.data.scores)

add environmental variables back in

# Extract the first 5 columns from df1
first_5_columns <- Machida18S_wide[, 1:4]

# Combine the first 5 columns from df1 with df2
Machida18S.data.scores <- cbind(first_5_columns, Machida18S.data.scores)

plot NMDS

plot datascores

xx <- ggplot(Machida18S.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
xx

extract hulls

unique(Machida18S.data.scores$station)
## [1] P12  P22  P28  P38  P402 P4   P8  
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- Machida18S.data.scores[Machida18S.data.scores$station == "P12", ][chull(Machida18S.data.scores[Machida18S.data.scores$station ==                                                           "P12", c("NMDS1", "NMDS2")]), ]  
P22 <- Machida18S.data.scores[Machida18S.data.scores$station == "P22", ][chull(Machida18S.data.scores[Machida18S.data.scores$station ==                                                           "P22", c("NMDS1", "NMDS2")]), ]  
P28 <- Machida18S.data.scores[Machida18S.data.scores$station == "P28", ][chull(Machida18S.data.scores[Machida18S.data.scores$station ==                                                           "P28", c("NMDS1", "NMDS2")]), ]
P38 <- Machida18S.data.scores[Machida18S.data.scores$station == "P38", ][chull(Machida18S.data.scores[Machida18S.data.scores$station ==                                                           "P38", c("NMDS1", "NMDS2")]), ]  
P4 <- Machida18S.data.scores[Machida18S.data.scores$station == "P4", ][chull(Machida18S.data.scores[Machida18S.data.scores$station ==                                                           "P4", c("NMDS1", "NMDS2")]), ]  
P402 <- Machida18S.data.scores[Machida18S.data.scores$station == "P402", ][chull(Machida18S.data.scores[Machida18S.data.scores$station ==                                                           "P402", c("NMDS1", "NMDS2")]), ]  
P8 <- Machida18S.data.scores[Machida18S.data.scores$station == "P8", ][chull(Machida18S.data.scores[Machida18S.data.scores$station ==                                                           "P8", c("NMDS1", "NMDS2")]), ]  

get hull data

hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8)  #combine grp.a and grp.b
hull.data
##        sample Year Month station        NMDS1        NMDS2
## 29  1907P12Ve   19    07     P12  0.285632321  0.003671575
## 43  2007P12Ve   20    07     P12  0.080497975  0.007615974
## 22  1904P12Ve   19    04     P12 -0.415356582  0.025930785
## 1   1804P12Ve   18    04     P12 -0.436836617  0.175839515
## 8   1807P12Ve   18    07     P12  0.127018893  0.294534201
## 15  1809P12Ve   18    09     P12  0.187192503  0.301463881
## 36  1909P12Ve   19    09     P12  0.249314963  0.255855882
## 50  2009P12Ve   20    09     P12  0.284637221  0.210947319
## 16  1809P22Ve   18    09     P22  0.172969670 -0.322878502
## 44  2007P22Ve   20    07     P22  0.076654235 -0.404326330
## 23  1904P22Ve   19    04     P22 -0.144131685 -0.427195821
## 57  2010P22Ve   20    10     P22 -0.286700575 -0.311911951
## 51  2009P22Ve   20    09     P22 -0.225557848 -0.126888368
## 37  1909P22Ve   19    09     P22  0.267036386  0.048181939
## 45  2007P28Ve   20    07     P28  0.622695147 -0.110176087
## 58  2010P28Ve   20    10     P28  0.499286622 -0.182269509
## 3   1804P28Ve   18    04     P28 -0.502986562 -0.158503186
## 10  1807P28Ve   18    07     P28  0.267363454  0.083354826
## 17  1809P28Ve   18    09     P28  0.373217095  0.077533646
## 31  1907P28Ve   19    07     P28  0.505872368  0.025819039
## 53  2009P38Ve   20    09     P38  0.356903278 -0.289913829
## 46  2007P38Ve   20    07     P38 -0.129960063 -0.032679488
## 11  1807P38Ve   18    07     P38  0.092598508  0.261858292
## 18  1809P38Ve   18    09     P38  0.346863849  0.170714255
## 39  1909P38Ve   19    09     P38  0.389149836  0.150181105
## 19 1809P402Ve   18    09    P402  0.603555216  0.129285096
## 5  1804P402Ve   18    04    P402 -0.579608798 -0.069047538
## 26 1904P402Ve   19    04    P402 -0.567012241  0.040559030
## 47 2007P402Ve   20    07    P402 -0.009323803  0.541579183
## 55   2009P4Ve   20    09      P4 -0.140147422  0.092028973
## 6    1804P4Ve   18    04      P4 -0.470206160 -0.238264494
## 48   2007P4Ve   20    07      P4 -0.545946886  0.297874497
## 13   1807P4Ve   18    07      P4 -0.397604463  0.308384525
## 20   1809P4Ve   18    09      P4 -0.073224489  0.194903571
## 35   1907P8Ve   19    07      P8  0.124048964 -0.207604475
## 56   2009P8Ve   20    09      P8  0.180682894 -0.392350193
## 7    1804P8Ve   18    04      P8 -0.400921351 -0.560704335
## 28   1904P8Ve   19    04      P8 -0.374429720 -0.174329516
## 14   1807P8Ve   18    07      P8 -0.302581429  0.403424438
## 21   1809P8Ve   18    09      P8 -0.117115805  0.164399174

Species fitting

vf <- envfit(Machida18S_NMDSmodel, Machida18S_wide, perm = 999)

spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)

# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
##                                 NMDS1       NMDS2                   Species
## Clytia gracilis           -0.61855596 -0.54329049           Clytia gracilis
## Cyerce nigricans           0.13815638  0.75000000          Cyerce nigricans
## Diphyes chamissonis       -0.74109561 -0.07156108       Diphyes chamissonis
## Dryodora glandiformis     -0.34627917  0.50839213     Dryodora glandiformis
## Glycinde armigera         -0.21641888  0.57027309         Glycinde armigera
## Lacuna vincta             -0.36738020 -0.50819965             Lacuna vincta
## Leuckartiara octona       -0.74684486  0.24316325       Leuckartiara octona
## Mesochaetopterus taylori  -0.63560681  0.06607504  Mesochaetopterus taylori
## Microcalanus pygmaeus     -0.01130659  0.66790154     Microcalanus pygmaeus
## Neosabellaria cementarium -0.25725010 -0.55560778 Neosabellaria cementarium
## Oikopleura dioica         -0.62286782 -0.15292846         Oikopleura dioica
## Phoronopsis harmeri       -0.56006021  0.48617058       Phoronopsis harmeri
## Spiophanes berkeleyorum   -0.57072655  0.28271566   Spiophanes berkeleyorum
##                           Pvalues R_squared
## Clytia gracilis             0.001 0.5695546
## Cyerce nigricans            0.001 0.4887244
## Diphyes chamissonis         0.001 0.4658309
## Dryodora glandiformis       0.001 0.3179567
## Glycinde armigera           0.001 0.3126430
## Lacuna vincta               0.001 0.3304467
## Leuckartiara octona         0.001 0.5184035
## Mesochaetopterus taylori    0.001 0.3431582
## Microcalanus pygmaeus       0.001 0.3749717
## Neosabellaria cementarium   0.001 0.3150204
## Oikopleura dioica           0.001 0.3456704
## Phoronopsis harmeri         0.001 0.4622054
## Spiophanes berkeleyorum     0.001 0.3408851
Machida18S_Species_plot <- ggplot(Machida18S.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour =  station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
  geom_segment(data = spp.scrs,size=0.4,
               aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
               arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+ 
  geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
  annotate("text", label = "2D Stress: 0.216", x =-0.6, y = 0.8, size = 5, colour = "black")+
  geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
                  size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
Machida18S_Species_plot

save plot

setwd("/Users/hailaschultz/Dropbox/Schultz_Dissertation/Data_Analysis/Schultz_dissertation-3/output")
ggsave(filename = "Machida18S_NMDS_vert.png", plot = Machida18S_Species_plot, height = 170, width = 200, units="mm", device='png', dpi=300)

Fishcytb

Data Setup

Remove non-zooplanton phyla

unique(Fishcytb_counts$Phylum)
## [1] NA               "Chordata"       "Arthropoda"     "Mollusca"      
## [5] "Annelida"       "Echinodermata"  "Pseudomonadota"
levels_to_remove <- c('Bacillariophyta', 'Rhodophyta',NA,'Oomycota','Ascomycota','Onychophora','Cryptophyceae__p','Zoopagomycota','Phaeophyceae__p','Haptophyta','Basidiomycota','Chlorophyta','Dinophyceae__p','Discosea','Tubulinea','Dictyochophyceae__p','Bacteroidota','Blastocladiomycota','Pseudomonadota','Chrysophyceae__p','Malawimonadida__c__p','Prasinodermophyta','Chrysoparadoxa__f__o__c__p','Apusomonadida__c__p','Streptophyta','Pelagophyceae__p','Eustigmatophyceae__p','Pseudomonadota')

# Remove those levels and drop them from the factor
Fishcytb_counts <- droplevels(Fishcytb_counts[!Fishcytb_counts$Phylum %in% levels_to_remove,])

subset to fish only

Fishcytb_counts<-subset(Fishcytb_counts,Class=="Actinopteri")

remove non-species rows

Fishcytb_comp<- Fishcytb_counts[complete.cases(Fishcytb_counts), ]

convert to presence-absence

Fishcytb_comp_pa<-Fishcytb_comp %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

remove excess columns

Fishcytb_comp_pa <- Fishcytb_comp_pa[ -c(1:7) ]

wide to long format

Fishcytb_long<-melt(Fishcytb_comp_pa, id.vars=c("Species"))

add up multiple lines per station and convert back to presence-absence

Fishcytb_long_sum <- Fishcytb_long %>%
  group_by(Species,variable) %>%
  summarise(
    value = sum(value))

Fishcytb_long_sum<-Fishcytb_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

split code string up to extract metadata

Fishcytb_long_sum$variable<-str_split_fixed(Fishcytb_long_sum$variable,"_",4)

remove samples of non-interest

unique(Fishcytb_long_sum$variable[,3])
##  [1] "P12"   "P22"   "P28"   "P38"   "P402"  "P4"    "P8"    "CA042" "P105" 
## [10] "P123"  "P132"  "P136"  "P7"    ""
unique(Fishcytb_long_sum$variable[,2])
##  [1] "1804"     "1806"     "1807"     "1809"     "1904"     "1907"    
##  [7] "1909"     "2007"     "2009"     "2010"     "Control1"
#remove excess stations
levels_to_remove <- c('CA042','',"P105","P123","P132","P136","P381","P7")
Fishcytb_long_sum <- droplevels(Fishcytb_long_sum[!Fishcytb_long_sum$variable[,3] %in% levels_to_remove,])

split up replicate columns

unique(Fishcytb_long_sum$variable[,4])
## [1] "Ob"  "VeA" "Ve"  "ObB" "ObA" "VeB"
Fishcytb_long_sum <- Fishcytb_long_sum %>%
  mutate(
    tow_type = substr(variable[,4], 1, 2),
    replicate = substr(variable[,4], 3, nchar(variable[,4]))
  )

split up year and month columns

Fishcytb_long_sum <- Fishcytb_long_sum %>%
  mutate(
    Year = substr(variable[,2], 1, 2),
    Month = substr(variable[,2], 3, 4)
  )

make station column

Fishcytb_long_sum$station<-Fishcytb_long_sum$variable[,3]

remove oblique samples

Fishcytb_long_sum<-subset(Fishcytb_long_sum,tow_type=="Ve")

merge replicates

colnames(Fishcytb_long_sum)
## [1] "Species"   "variable"  "value"     "tow_type"  "replicate" "Year"     
## [7] "Month"     "station"
Fishcytb_long_sum$sample<-paste(Fishcytb_long_sum$Year,Fishcytb_long_sum$Month,Fishcytb_long_sum$station,Fishcytb_long_sum$tow_type,sep="")

Fishcytb_long_sum <- Fishcytb_long_sum %>%
  group_by(Year,Month,station,sample,Species) %>%
  summarise(
    value = sum(value))
#convert back to presence-absence
Fishcytb_long_sum<-Fishcytb_long_sum %>%
  mutate(across(where(is.numeric), ~ifelse(.x >0, 1, 0)))

back to wide format

Fishcytb_wide<-dcast(Fishcytb_long_sum, sample+Year+Month+station ~ Species )

remove any columns with all zeroes

target_cols <- 6:ncol(Fishcytb_wide)

non_zero_cols <- target_cols[colSums(Fishcytb_wide[, target_cols]) != 0]

Fishcytb_wide <- Fishcytb_wide[, c(1:5, non_zero_cols)]

remove rows with all zeroes

row_sums <- rowSums(Fishcytb_wide[, 5:32])

# Create a logical vector to identify rows where the sum is not zero
non_zero_rows <- row_sums != 0

# Subset the data frame to keep only rows with a non-zero sum
Fishcytb_wide <- Fishcytb_wide[non_zero_rows, ]

remove environmental data

Fishcytb_wide_simple<-Fishcytb_wide[ , 5:32]

Make environmental columns categorical

# Specify the columns to convert to factors
cols_to_factor <- c("station", "Year", "Month")

# Convert the specified columns to factors
Fishcytb_wide <- Fishcytb_wide %>%
  mutate_at(vars(one_of(cols_to_factor)), as.factor)

PERMANOVA

dist<-vegdist(Fishcytb_wide_simple, method='bray')
perm<-adonis2(dist~station*Month, data=Fishcytb_wide, permutations = 999, method="bray")
perm
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## adonis2(formula = dist ~ station * Month, data = Fishcytb_wide, permutations = 999, method = "bray")
##               Df SumOfSqs      R2      F Pr(>F)    
## station        6   3.0463 0.18841 1.6458  0.027 *  
## Month          3   2.1318 0.13185 2.3035  0.001 ***
## station:Month 12   3.5869 0.22184 0.9689  0.566    
## Residual      24   7.4037 0.45790                  
## Total         45  16.1688 1.00000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

station comparisons

adonis.pair(vegdist(Fishcytb_wide_simple),Fishcytb_wide$station)
##     combination  SumsOfSqs    MeanSqs   F.Model         R2    P.value
## 1   P12 <-> P22 1.00072446 1.00072446 3.1970897 0.22519332 0.00999001
## 2   P12 <-> P28 0.38349786 0.38349786 1.0807378 0.11901432 0.38061938
## 3   P12 <-> P38 0.19507430 0.19507430 0.6105907 0.05258912 0.64135864
## 4    P12 <-> P4 0.60159503 0.60159503 1.8160236 0.14169946 0.13286713
## 5  P12 <-> P402 0.13610450 0.13610450 0.3991343 0.03219050 0.93206793
## 6    P12 <-> P8 0.97416594 0.97416594 2.8495125 0.20574822 0.00999001
## 7   P22 <-> P28 0.64095358 0.64095358 1.9140820 0.17537728 0.07092907
## 8   P22 <-> P38 0.71634957 0.71634957 2.3300318 0.16259781 0.04295704
## 9    P22 <-> P4 1.03125801 1.03125801 3.2404455 0.21262144 0.01298701
## 10 P22 <-> P402 1.10540608 1.10540608 3.3677992 0.20575761 0.01898102
## 11   P22 <-> P8 0.36114998 0.36114998 1.1011914 0.08405277 0.36363636
## 12  P28 <-> P38 0.23085341 0.23085341 0.6734854 0.06962180 0.69930070
## 13   P28 <-> P4 0.12095108 0.12095108 0.3386285 0.03626106 0.91208791
## 14 P28 <-> P402 0.35319187 0.35319187 0.9643127 0.08795012 0.53046953
## 15   P28 <-> P8 0.30673635 0.30673635 0.8287137 0.08431558 0.53746254
## 16   P38 <-> P4 0.27063623 0.27063623 0.8348338 0.06504438 0.50749251
## 17 P38 <-> P402 0.06877409 0.06877409 0.2060921 0.01560584 0.96703297
## 18   P38 <-> P8 0.43841720 0.43841720 1.3130313 0.09862752 0.29370629
## 19  P4 <-> P402 0.42189443 0.42189443 1.2275853 0.08628205 0.31468531
## 20    P4 <-> P8 0.31886594 0.31886594 0.9250514 0.07157042 0.48351648
## 21  P402 <-> P8 0.79824206 0.79824206 2.2635658 0.14829862 0.03796204
##    P.value.corrected
## 1         0.09090909
## 2         0.66608392
## 3         0.79226656
## 4         0.34877622
## 5         0.96703297
## 6         0.09090909
## 7         0.21278721
## 8         0.15034965
## 9         0.09090909
## 10        0.09965035
## 11        0.66608392
## 12        0.81585082
## 13        0.96703297
## 14        0.70541958
## 15        0.70541958
## 16        0.70541958
## 17        0.96703297
## 18        0.66083916
## 19        0.66083916
## 20        0.70541958
## 21        0.15034965

month comparisons

adonis.pair(vegdist(Fishcytb_wide_simple),Fishcytb_wide$Year)
##   combination SumsOfSqs   MeanSqs   F.Model         R2   P.value
## 1   18 <-> 19 0.3132739 0.3132739 0.8299108 0.02691902 0.5734266
## 2   18 <-> 20 0.5719989 0.5719989 1.7102817 0.05569085 0.1408591
## 3   19 <-> 20 0.2435216 0.2435216 0.6709058 0.02424589 0.6653347
##   P.value.corrected
## 1         0.6653347
## 2         0.4225774
## 3         0.6653347

run NMDS

Fishcytb_NMDSmodel <- metaMDS(Fishcytb_wide_simple, distance = "bray",trymax = 999)
## Run 0 stress 9.96715e-05 
## Run 1 stress 9.75349e-05 
## ... New best solution
## ... Procrustes: rmse 0.09430559  max resid 0.5264682 
## Run 2 stress 9.958194e-05 
## ... Procrustes: rmse 0.1247713  max resid 0.6298247 
## Run 3 stress 9.973775e-05 
## ... Procrustes: rmse 0.03265459  max resid 0.1863039 
## Run 4 stress 9.969515e-05 
## ... Procrustes: rmse 0.05187731  max resid 0.2403079 
## Run 5 stress 8.273728e-05 
## ... New best solution
## ... Procrustes: rmse 0.1296592  max resid 0.7339514 
## Run 6 stress 9.344582e-05 
## ... Procrustes: rmse 0.06284471  max resid 0.3282738 
## Run 7 stress 9.931674e-05 
## ... Procrustes: rmse 0.0762488  max resid 0.4006294 
## Run 8 stress 9.775671e-05 
## ... Procrustes: rmse 0.1285796  max resid 0.5242158 
## Run 9 stress 9.830201e-05 
## ... Procrustes: rmse 0.1095635  max resid 0.5394174 
## Run 10 stress 9.392837e-05 
## ... Procrustes: rmse 0.129269  max resid 0.696586 
## Run 11 stress 9.669906e-05 
## ... Procrustes: rmse 0.08536242  max resid 0.467002 
## Run 12 stress 9.854856e-05 
## ... Procrustes: rmse 0.1031584  max resid 0.4692604 
## Run 13 stress 9.919992e-05 
## ... Procrustes: rmse 0.04583251  max resid 0.2204744 
## Run 14 stress 9.649161e-05 
## ... Procrustes: rmse 0.09384754  max resid 0.4784585 
## Run 15 stress 9.543744e-05 
## ... Procrustes: rmse 0.05841074  max resid 0.3025211 
## Run 16 stress 9.579453e-05 
## ... Procrustes: rmse 0.04862104  max resid 0.279127 
## Run 17 stress 9.734579e-05 
## ... Procrustes: rmse 0.09149968  max resid 0.4382632 
## Run 18 stress 9.860336e-05 
## ... Procrustes: rmse 0.07700855  max resid 0.3609093 
## Run 19 stress 9.070296e-05 
## ... Procrustes: rmse 0.07266025  max resid 0.396419 
## Run 20 stress 9.952852e-05 
## ... Procrustes: rmse 0.1296747  max resid 0.6479447 
## Run 21 stress 9.512282e-05 
## ... Procrustes: rmse 0.1328264  max resid 0.686675 
## Run 22 stress 9.739848e-05 
## ... Procrustes: rmse 0.06855957  max resid 0.3421457 
## Run 23 stress 8.874257e-05 
## ... Procrustes: rmse 0.06419484  max resid 0.2752779 
## Run 24 stress 9.576999e-05 
## ... Procrustes: rmse 0.1189964  max resid 0.6311046 
## Run 25 stress 9.553193e-05 
## ... Procrustes: rmse 0.06275402  max resid 0.3331681 
## Run 26 stress 9.843738e-05 
## ... Procrustes: rmse 0.1324294  max resid 0.7060374 
## Run 27 stress 9.894548e-05 
## ... Procrustes: rmse 0.118082  max resid 0.6638971 
## Run 28 stress 9.403177e-05 
## ... Procrustes: rmse 0.125089  max resid 0.5364074 
## Run 29 stress 9.769695e-05 
## ... Procrustes: rmse 0.05520166  max resid 0.3319527 
## Run 30 stress 9.544365e-05 
## ... Procrustes: rmse 0.1309602  max resid 0.6507916 
## Run 31 stress 9.090805e-05 
## ... Procrustes: rmse 0.1148325  max resid 0.5663596 
## Run 32 stress 9.600007e-05 
## ... Procrustes: rmse 0.1028325  max resid 0.582182 
## Run 33 stress 9.46122e-05 
## ... Procrustes: rmse 0.142758  max resid 0.5852639 
## Run 34 stress 9.758168e-05 
## ... Procrustes: rmse 0.09654126  max resid 0.4421842 
## Run 35 stress 9.560847e-05 
## ... Procrustes: rmse 0.09388391  max resid 0.460163 
## Run 36 stress 9.921027e-05 
## ... Procrustes: rmse 0.1162486  max resid 0.5600381 
## Run 37 stress 9.746339e-05 
## ... Procrustes: rmse 0.1059962  max resid 0.5676365 
## Run 38 stress 9.909799e-05 
## ... Procrustes: rmse 0.1289224  max resid 0.6878097 
## Run 39 stress 9.37889e-05 
## ... Procrustes: rmse 0.12323  max resid 0.765839 
## Run 40 stress 9.718613e-05 
## ... Procrustes: rmse 0.07737252  max resid 0.4586744 
## Run 41 stress 9.119705e-05 
## ... Procrustes: rmse 0.09078855  max resid 0.5574966 
## Run 42 stress 9.778634e-05 
## ... Procrustes: rmse 0.09837851  max resid 0.6315403 
## Run 43 stress 9.251664e-05 
## ... Procrustes: rmse 0.114049  max resid 0.5338618 
## Run 44 stress 9.46984e-05 
## ... Procrustes: rmse 0.1176502  max resid 0.6172387 
## Run 45 stress 9.697375e-05 
## ... Procrustes: rmse 0.1213547  max resid 0.6424515 
## Run 46 stress 9.940132e-05 
## ... Procrustes: rmse 0.1208353  max resid 0.5525615 
## Run 47 stress 9.671236e-05 
## ... Procrustes: rmse 0.08079754  max resid 0.482363 
## Run 48 stress 9.177386e-05 
## ... Procrustes: rmse 0.1160546  max resid 0.5021645 
## Run 49 stress 9.582192e-05 
## ... Procrustes: rmse 0.09333844  max resid 0.4939013 
## Run 50 stress 9.578441e-05 
## ... Procrustes: rmse 0.0967547  max resid 0.5273107 
## Run 51 stress 9.736007e-05 
## ... Procrustes: rmse 0.07162394  max resid 0.4120993 
## Run 52 stress 9.866079e-05 
## ... Procrustes: rmse 0.08569844  max resid 0.4272956 
## Run 53 stress 9.441312e-05 
## ... Procrustes: rmse 0.1368498  max resid 0.6068444 
## Run 54 stress 7.654569e-05 
## ... New best solution
## ... Procrustes: rmse 0.09447945  max resid 0.5922589 
## Run 55 stress 9.862594e-05 
## ... Procrustes: rmse 0.09848941  max resid 0.4290333 
## Run 56 stress 9.909308e-05 
## ... Procrustes: rmse 0.1264894  max resid 0.6045184 
## Run 57 stress 9.563956e-05 
## ... Procrustes: rmse 0.1089863  max resid 0.507262 
## Run 58 stress 9.275881e-05 
## ... Procrustes: rmse 0.0543158  max resid 0.2572836 
## Run 59 stress 9.475322e-05 
## ... Procrustes: rmse 0.1238916  max resid 0.6089966 
## Run 60 stress 9.784636e-05 
## ... Procrustes: rmse 0.121621  max resid 0.5591331 
## Run 61 stress 9.469208e-05 
## ... Procrustes: rmse 0.1200632  max resid 0.6400296 
## Run 62 stress 9.572298e-05 
## ... Procrustes: rmse 0.1412343  max resid 0.6775698 
## Run 63 stress 7.327085e-05 
## ... New best solution
## ... Procrustes: rmse 0.1439532  max resid 0.6328702 
## Run 64 stress 9.961301e-05 
## ... Procrustes: rmse 0.1182992  max resid 0.6461115 
## Run 65 stress 9.856205e-05 
## ... Procrustes: rmse 0.1398348  max resid 0.5955722 
## Run 66 stress 9.56079e-05 
## ... Procrustes: rmse 0.1373493  max resid 0.7267581 
## Run 67 stress 9.654724e-05 
## ... Procrustes: rmse 0.1391696  max resid 0.6044573 
## Run 68 stress 9.616437e-05 
## ... Procrustes: rmse 0.1133907  max resid 0.5574505 
## Run 69 stress 9.756814e-05 
## ... Procrustes: rmse 0.1085085  max resid 0.4700647 
## Run 70 stress 9.828909e-05 
## ... Procrustes: rmse 0.06365127  max resid 0.3258589 
## Run 71 stress 9.294552e-05 
## ... Procrustes: rmse 0.1422372  max resid 0.6848019 
## Run 72 stress 9.735298e-05 
## ... Procrustes: rmse 0.1424317  max resid 0.7002058 
## Run 73 stress 9.796792e-05 
## ... Procrustes: rmse 0.1252596  max resid 0.5254391 
## Run 74 stress 9.895538e-05 
## ... Procrustes: rmse 0.1096951  max resid 0.6119103 
## Run 75 stress 9.381724e-05 
## ... Procrustes: rmse 0.1297873  max resid 0.589601 
## Run 76 stress 8.893093e-05 
## ... Procrustes: rmse 0.107187  max resid 0.5802412 
## Run 77 stress 9.394178e-05 
## ... Procrustes: rmse 0.1398469  max resid 0.6776492 
## Run 78 stress 9.830192e-05 
## ... Procrustes: rmse 0.08555688  max resid 0.4963664 
## Run 79 stress 9.944401e-05 
## ... Procrustes: rmse 0.05745935  max resid 0.2587292 
## Run 80 stress 9.500845e-05 
## ... Procrustes: rmse 0.1322577  max resid 0.5722952 
## Run 81 stress 9.778754e-05 
## ... Procrustes: rmse 0.1431271  max resid 0.6450261 
## Run 82 stress 9.288355e-05 
## ... Procrustes: rmse 0.128594  max resid 0.6069907 
## Run 83 stress 9.363447e-05 
## ... Procrustes: rmse 0.1089433  max resid 0.5096521 
## Run 84 stress 9.383311e-05 
## ... Procrustes: rmse 0.1044262  max resid 0.5653977 
## Run 85 stress 9.042208e-05 
## ... Procrustes: rmse 0.09492574  max resid 0.5441837 
## Run 86 stress 7.942336e-05 
## ... Procrustes: rmse 0.1097058  max resid 0.6228815 
## Run 87 stress 9.367233e-05 
## ... Procrustes: rmse 0.1412062  max resid 0.5737656 
## Run 88 stress 9.653428e-05 
## ... Procrustes: rmse 0.1287088  max resid 0.6231385 
## Run 89 stress 9.699859e-05 
## ... Procrustes: rmse 0.1047207  max resid 0.5583689 
## Run 90 stress 9.941579e-05 
## ... Procrustes: rmse 0.1376131  max resid 0.604738 
## Run 91 stress 9.964806e-05 
## ... Procrustes: rmse 0.09380279  max resid 0.5607533 
## Run 92 stress 9.634176e-05 
## ... Procrustes: rmse 0.1261403  max resid 0.6673482 
## Run 93 stress 9.593268e-05 
## ... Procrustes: rmse 0.1418879  max resid 0.6963708 
## Run 94 stress 9.922093e-05 
## ... Procrustes: rmse 0.1115366  max resid 0.474904 
## Run 95 stress 9.253149e-05 
## ... Procrustes: rmse 0.1113668  max resid 0.5644933 
## Run 96 stress 9.885921e-05 
## ... Procrustes: rmse 0.1378043  max resid 0.6846926 
## Run 97 stress 9.345996e-05 
## ... Procrustes: rmse 0.1011218  max resid 0.5984547 
## Run 98 stress 9.750194e-05 
## ... Procrustes: rmse 0.07818538  max resid 0.4138954 
## Run 99 stress 9.163249e-05 
## ... Procrustes: rmse 0.1428086  max resid 0.7560296 
## Run 100 stress 9.885203e-05 
## ... Procrustes: rmse 0.110061  max resid 0.5655507 
## Run 101 stress 9.949834e-05 
## ... Procrustes: rmse 0.08134256  max resid 0.4046848 
## Run 102 stress 9.100031e-05 
## ... Procrustes: rmse 0.08238185  max resid 0.4699018 
## Run 103 stress 9.986165e-05 
## ... Procrustes: rmse 0.1287566  max resid 0.5624157 
## Run 104 stress 9.910446e-05 
## ... Procrustes: rmse 0.1051665  max resid 0.5473797 
## Run 105 stress 8.168464e-05 
## ... Procrustes: rmse 0.1244541  max resid 0.7020407 
## Run 106 stress 9.529976e-05 
## ... Procrustes: rmse 0.1179017  max resid 0.6974942 
## Run 107 stress 9.575484e-05 
## ... Procrustes: rmse 0.1175783  max resid 0.5846994 
## Run 108 stress 9.90271e-05 
## ... Procrustes: rmse 0.07794535  max resid 0.4483445 
## Run 109 stress 9.65721e-05 
## ... Procrustes: rmse 0.09138343  max resid 0.4531438 
## Run 110 stress 9.918346e-05 
## ... Procrustes: rmse 0.1240639  max resid 0.5225935 
## Run 111 stress 9.470268e-05 
## ... Procrustes: rmse 0.1158568  max resid 0.5383242 
## Run 112 stress 9.322149e-05 
## ... Procrustes: rmse 0.05089734  max resid 0.2741764 
## Run 113 stress 9.758626e-05 
## ... Procrustes: rmse 0.08005744  max resid 0.4347551 
## Run 114 stress 9.250553e-05 
## ... Procrustes: rmse 0.120379  max resid 0.6483421 
## Run 115 stress 9.74674e-05 
## ... Procrustes: rmse 0.08130857  max resid 0.4397889 
## Run 116 stress 9.391136e-05 
## ... Procrustes: rmse 0.07518872  max resid 0.3589781 
## Run 117 stress 9.356553e-05 
## ... Procrustes: rmse 0.1088761  max resid 0.5566732 
## Run 118 stress 9.835208e-05 
## ... Procrustes: rmse 0.09435505  max resid 0.4586083 
## Run 119 stress 9.232045e-05 
## ... Procrustes: rmse 0.1218116  max resid 0.6252972 
## Run 120 stress 9.720461e-05 
## ... Procrustes: rmse 0.05579754  max resid 0.2958394 
## Run 121 stress 9.945436e-05 
## ... Procrustes: rmse 0.06911879  max resid 0.3532765 
## Run 122 stress 9.479227e-05 
## ... Procrustes: rmse 0.1349042  max resid 0.5744012 
## Run 123 stress 9.384024e-05 
## ... Procrustes: rmse 0.1440119  max resid 0.6552111 
## Run 124 stress 9.96354e-05 
## ... Procrustes: rmse 0.1007094  max resid 0.4717648 
## Run 125 stress 9.812292e-05 
## ... Procrustes: rmse 0.1284599  max resid 0.5950112 
## Run 126 stress 9.72994e-05 
## ... Procrustes: rmse 0.1296738  max resid 0.5919943 
## Run 127 stress 9.742965e-05 
## ... Procrustes: rmse 0.08683925  max resid 0.3872349 
## Run 128 stress 9.619206e-05 
## ... Procrustes: rmse 0.05803052  max resid 0.3496762 
## Run 129 stress 9.515014e-05 
## ... Procrustes: rmse 0.1379924  max resid 0.7461915 
## Run 130 stress 8.989503e-05 
## ... Procrustes: rmse 0.07297234  max resid 0.3612064 
## Run 131 stress 9.34496e-05 
## ... Procrustes: rmse 0.1051397  max resid 0.4571336 
## Run 132 stress 9.399703e-05 
## ... Procrustes: rmse 0.1402787  max resid 0.7185469 
## Run 133 stress 9.62578e-05 
## ... Procrustes: rmse 0.1178929  max resid 0.6261235 
## Run 134 stress 8.872857e-05 
## ... Procrustes: rmse 0.1003151  max resid 0.5300573 
## Run 135 stress 9.317596e-05 
## ... Procrustes: rmse 0.1127878  max resid 0.5876389 
## Run 136 stress 9.210276e-05 
## ... Procrustes: rmse 0.09771741  max resid 0.5402262 
## Run 137 stress 9.675004e-05 
## ... Procrustes: rmse 0.05627763  max resid 0.3155264 
## Run 138 stress 9.981371e-05 
## ... Procrustes: rmse 0.08091857  max resid 0.419735 
## Run 139 stress 9.790113e-05 
## ... Procrustes: rmse 0.1402376  max resid 0.6946299 
## Run 140 stress 9.835982e-05 
## ... Procrustes: rmse 0.0614662  max resid 0.3216811 
## Run 141 stress 9.798141e-05 
## ... Procrustes: rmse 0.110695  max resid 0.6210509 
## Run 142 stress 9.628963e-05 
## ... Procrustes: rmse 0.1136742  max resid 0.5987257 
## Run 143 stress 9.536186e-05 
## ... Procrustes: rmse 0.09440331  max resid 0.4812174 
## Run 144 stress 9.683879e-05 
## ... Procrustes: rmse 0.07018767  max resid 0.34141 
## Run 145 stress 9.736379e-05 
## ... Procrustes: rmse 0.06342456  max resid 0.3314063 
## Run 146 stress 9.115004e-05 
## ... Procrustes: rmse 0.1152759  max resid 0.6371821 
## Run 147 stress 9.56826e-05 
## ... Procrustes: rmse 0.1320726  max resid 0.560562 
## Run 148 stress 9.767038e-05 
## ... Procrustes: rmse 0.05831339  max resid 0.2434712 
## Run 149 stress 9.370485e-05 
## ... Procrustes: rmse 0.09777932  max resid 0.5194319 
## Run 150 stress 9.278302e-05 
## ... Procrustes: rmse 0.1073665  max resid 0.5054621 
## Run 151 stress 9.123359e-05 
## ... Procrustes: rmse 0.08072102  max resid 0.4478038 
## Run 152 stress 9.156754e-05 
## ... Procrustes: rmse 0.09207418  max resid 0.3910434 
## Run 153 stress 9.982587e-05 
## ... Procrustes: rmse 0.1336986  max resid 0.5802313 
## Run 154 stress 9.732734e-05 
## ... Procrustes: rmse 0.1222572  max resid 0.6534221 
## Run 155 stress 9.891791e-05 
## ... Procrustes: rmse 0.0493275  max resid 0.2604717 
## Run 156 stress 9.631087e-05 
## ... Procrustes: rmse 0.1326154  max resid 0.7658346 
## Run 157 stress 9.767522e-05 
## ... Procrustes: rmse 0.1302556  max resid 0.7577407 
## Run 158 stress 9.719721e-05 
## ... Procrustes: rmse 0.1312026  max resid 0.5996647 
## Run 159 stress 9.878918e-05 
## ... Procrustes: rmse 0.11687  max resid 0.5903779 
## Run 160 stress 9.432599e-05 
## ... Procrustes: rmse 0.05486775  max resid 0.3079096 
## Run 161 stress 9.342908e-05 
## ... Procrustes: rmse 0.1421457  max resid 0.6132945 
## Run 162 stress 9.468885e-05 
## ... Procrustes: rmse 0.1396842  max resid 0.6737434 
## Run 163 stress 9.001979e-05 
## ... Procrustes: rmse 0.08503317  max resid 0.3737083 
## Run 164 stress 8.77514e-05 
## ... Procrustes: rmse 0.09615989  max resid 0.5775061 
## Run 165 stress 9.962668e-05 
## ... Procrustes: rmse 0.06288752  max resid 0.3801943 
## Run 166 stress 9.75619e-05 
## ... Procrustes: rmse 0.1407755  max resid 0.7365237 
## Run 167 stress 9.500923e-05 
## ... Procrustes: rmse 0.1298091  max resid 0.5480323 
## Run 168 stress 9.912566e-05 
## ... Procrustes: rmse 0.1325516  max resid 0.7394301 
## Run 169 stress 9.463623e-05 
## ... Procrustes: rmse 0.05629619  max resid 0.2582185 
## Run 170 stress 9.53721e-05 
## ... Procrustes: rmse 0.06094657  max resid 0.3724713 
## Run 171 stress 9.792743e-05 
## ... Procrustes: rmse 0.1037827  max resid 0.5228265 
## Run 172 stress 9.776929e-05 
## ... Procrustes: rmse 0.06285902  max resid 0.3279133 
## Run 173 stress 9.582871e-05 
## ... Procrustes: rmse 0.1127387  max resid 0.5431126 
## Run 174 stress 9.514932e-05 
## ... Procrustes: rmse 0.1163973  max resid 0.4924373 
## Run 175 stress 9.329654e-05 
## ... Procrustes: rmse 0.1195379  max resid 0.7236514 
## Run 176 stress 8.993174e-05 
## ... Procrustes: rmse 0.1295518  max resid 0.6140557 
## Run 177 stress 9.601624e-05 
## ... Procrustes: rmse 0.09108979  max resid 0.4699937 
## Run 178 stress 9.323281e-05 
## ... Procrustes: rmse 0.1171357  max resid 0.48967 
## Run 179 stress 9.891583e-05 
## ... Procrustes: rmse 0.1282472  max resid 0.6468975 
## Run 180 stress 9.089202e-05 
## ... Procrustes: rmse 0.03104347  max resid 0.1525612 
## Run 181 stress 9.539974e-05 
## ... Procrustes: rmse 0.1174953  max resid 0.5817028 
## Run 182 stress 9.029126e-05 
## ... Procrustes: rmse 0.104949  max resid 0.4777966 
## Run 183 stress 9.534219e-05 
## ... Procrustes: rmse 0.1119135  max resid 0.5720301 
## Run 184 stress 9.615899e-05 
## ... Procrustes: rmse 0.1103782  max resid 0.5238648 
## Run 185 stress 9.598422e-05 
## ... Procrustes: rmse 0.1378947  max resid 0.6465008 
## Run 186 stress 8.668635e-05 
## ... Procrustes: rmse 0.1037371  max resid 0.5686971 
## Run 187 stress 9.763623e-05 
## ... Procrustes: rmse 0.1369366  max resid 0.5477898 
## Run 188 stress 9.70142e-05 
## ... Procrustes: rmse 0.1102999  max resid 0.6210505 
## Run 189 stress 8.239601e-05 
## ... Procrustes: rmse 0.07344165  max resid 0.3844313 
## Run 190 stress 9.553607e-05 
## ... Procrustes: rmse 0.1170427  max resid 0.6407372 
## Run 191 stress 9.918769e-05 
## ... Procrustes: rmse 0.1268943  max resid 0.6210398 
## Run 192 stress 8.471616e-05 
## ... Procrustes: rmse 0.106659  max resid 0.5414456 
## Run 193 stress 9.633478e-05 
## ... Procrustes: rmse 0.135487  max resid 0.7276001 
## Run 194 stress 8.964612e-05 
## ... Procrustes: rmse 0.1229991  max resid 0.6831705 
## Run 195 stress 9.707769e-05 
## ... Procrustes: rmse 0.1241657  max resid 0.607378 
## Run 196 stress 9.055323e-05 
## ... Procrustes: rmse 0.09380704  max resid 0.4604519 
## Run 197 stress 8.673142e-05 
## ... Procrustes: rmse 0.136572  max resid 0.7088472 
## Run 198 stress 9.985331e-05 
## ... Procrustes: rmse 0.06647277  max resid 0.3339458 
## Run 199 stress 9.77144e-05 
## ... Procrustes: rmse 0.04038893  max resid 0.2106804 
## Run 200 stress 9.337122e-05 
## ... Procrustes: rmse 0.1083033  max resid 0.4853429 
## Run 201 stress 9.769055e-05 
## ... Procrustes: rmse 0.1365715  max resid 0.6602458 
## Run 202 stress 9.324339e-05 
## ... Procrustes: rmse 0.09291796  max resid 0.4532865 
## Run 203 stress 8.743882e-05 
## ... Procrustes: rmse 0.1357394  max resid 0.5793048 
## Run 204 stress 9.657468e-05 
## ... Procrustes: rmse 0.05444799  max resid 0.346794 
## Run 205 stress 8.930917e-05 
## ... Procrustes: rmse 0.1363594  max resid 0.6136228 
## Run 206 stress 9.32604e-05 
## ... Procrustes: rmse 0.1391728  max resid 0.6707893 
## Run 207 stress 9.791209e-05 
## ... Procrustes: rmse 0.1254533  max resid 0.6944022 
## Run 208 stress 9.009416e-05 
## ... Procrustes: rmse 0.142582  max resid 0.5848495 
## Run 209 stress 9.755132e-05 
## ... Procrustes: rmse 0.1332762  max resid 0.7540113 
## Run 210 stress 9.248339e-05 
## ... Procrustes: rmse 0.1345057  max resid 0.6505188 
## Run 211 stress 9.625145e-05 
## ... Procrustes: rmse 0.08376379  max resid 0.4915709 
## Run 212 stress 9.755635e-05 
## ... Procrustes: rmse 0.1327678  max resid 0.5875122 
## Run 213 stress 9.95109e-05 
## ... Procrustes: rmse 0.1348676  max resid 0.6221652 
## Run 214 stress 9.986477e-05 
## ... Procrustes: rmse 0.1403876  max resid 0.6795223 
## Run 215 stress 9.795613e-05 
## ... Procrustes: rmse 0.1222911  max resid 0.5232345 
## Run 216 stress 8.934798e-05 
## ... Procrustes: rmse 0.121759  max resid 0.5793099 
## Run 217 stress 9.675672e-05 
## ... Procrustes: rmse 0.08693072  max resid 0.4418413 
## Run 218 stress 9.82727e-05 
## ... Procrustes: rmse 0.0583244  max resid 0.2812002 
## Run 219 stress 9.441796e-05 
## ... Procrustes: rmse 0.1272251  max resid 0.5788156 
## Run 220 stress 9.616275e-05 
## ... Procrustes: rmse 0.09560179  max resid 0.5049806 
## Run 221 stress 9.250305e-05 
## ... Procrustes: rmse 0.1061227  max resid 0.4962865 
## Run 222 stress 9.46851e-05 
## ... Procrustes: rmse 0.1220671  max resid 0.581807 
## Run 223 stress 9.256184e-05 
## ... Procrustes: rmse 0.1213342  max resid 0.6736182 
## Run 224 stress 8.731078e-05 
## ... Procrustes: rmse 0.1124582  max resid 0.5233933 
## Run 225 stress 9.891088e-05 
## ... Procrustes: rmse 0.08202076  max resid 0.3985643 
## Run 226 stress 9.54543e-05 
## ... Procrustes: rmse 0.107178  max resid 0.4749042 
## Run 227 stress 9.287484e-05 
## ... Procrustes: rmse 0.1267047  max resid 0.6888745 
## Run 228 stress 9.88107e-05 
## ... Procrustes: rmse 0.1439411  max resid 0.6470049 
## Run 229 stress 9.060329e-05 
## ... Procrustes: rmse 0.1359754  max resid 0.6549927 
## Run 230 stress 9.6465e-05 
## ... Procrustes: rmse 0.1151147  max resid 0.6013988 
## Run 231 stress 8.320121e-05 
## ... Procrustes: rmse 0.1103197  max resid 0.5136143 
## Run 232 stress 9.601129e-05 
## ... Procrustes: rmse 0.1129601  max resid 0.6703097 
## Run 233 stress 9.74122e-05 
## ... Procrustes: rmse 0.1186793  max resid 0.6118331 
## Run 234 stress 8.34078e-05 
## ... Procrustes: rmse 0.04101282  max resid 0.2093611 
## Run 235 stress 9.647096e-05 
## ... Procrustes: rmse 0.0793849  max resid 0.4958281 
## Run 236 stress 9.947416e-05 
## ... Procrustes: rmse 0.1023564  max resid 0.5712998 
## Run 237 stress 9.076539e-05 
## ... Procrustes: rmse 0.1159653  max resid 0.6040264 
## Run 238 stress 9.771647e-05 
## ... Procrustes: rmse 0.02870513  max resid 0.1246208 
## Run 239 stress 9.458949e-05 
## ... Procrustes: rmse 0.1126257  max resid 0.5560182 
## Run 240 stress 9.740382e-05 
## ... Procrustes: rmse 0.084618  max resid 0.472157 
## Run 241 stress 8.963113e-05 
## ... Procrustes: rmse 0.09132368  max resid 0.5192529 
## Run 242 stress 9.376294e-05 
## ... Procrustes: rmse 0.1005676  max resid 0.4612832 
## Run 243 stress 9.659678e-05 
## ... Procrustes: rmse 0.06887047  max resid 0.3403922 
## Run 244 stress 9.399637e-05 
## ... Procrustes: rmse 0.1409735  max resid 0.7228716 
## Run 245 stress 9.615338e-05 
## ... Procrustes: rmse 0.0830649  max resid 0.4201042 
## Run 246 stress 9.989886e-05 
## ... Procrustes: rmse 0.13295  max resid 0.7833237 
## Run 247 stress 9.116397e-05 
## ... Procrustes: rmse 0.1064682  max resid 0.5000923 
## Run 248 stress 8.784918e-05 
## ... Procrustes: rmse 0.1354732  max resid 0.658496 
## Run 249 stress 9.98938e-05 
## ... Procrustes: rmse 0.1150746  max resid 0.5230309 
## Run 250 stress 9.851947e-05 
## ... Procrustes: rmse 0.09315033  max resid 0.4833164 
## Run 251 stress 9.762838e-05 
## ... Procrustes: rmse 0.1056884  max resid 0.5638554 
## Run 252 stress 9.664042e-05 
## ... Procrustes: rmse 0.1269441  max resid 0.7457451 
## Run 253 stress 9.80115e-05 
## ... Procrustes: rmse 0.0976648  max resid 0.5112527 
## Run 254 stress 9.32905e-05 
## ... Procrustes: rmse 0.1226982  max resid 0.5012736 
## Run 255 stress 9.2918e-05 
## ... Procrustes: rmse 0.133937  max resid 0.5819929 
## Run 256 stress 9.409283e-05 
## ... Procrustes: rmse 0.06811463  max resid 0.2965241 
## Run 257 stress 9.808667e-05 
## ... Procrustes: rmse 0.1283918  max resid 0.5619365 
## Run 258 stress 9.823741e-05 
## ... Procrustes: rmse 0.03451195  max resid 0.1559731 
## Run 259 stress 9.542857e-05 
## ... Procrustes: rmse 0.04391601  max resid 0.2151104 
## Run 260 stress 9.808248e-05 
## ... Procrustes: rmse 0.1316382  max resid 0.6189441 
## Run 261 stress 9.172487e-05 
## ... Procrustes: rmse 0.1240851  max resid 0.7189595 
## Run 262 stress 9.810213e-05 
## ... Procrustes: rmse 0.05498895  max resid 0.3322111 
## Run 263 stress 9.339753e-05 
## ... Procrustes: rmse 0.1300435  max resid 0.6040862 
## Run 264 stress 9.532309e-05 
## ... Procrustes: rmse 0.1360962  max resid 0.6518638 
## Run 265 stress 9.73917e-05 
## ... Procrustes: rmse 0.06523861  max resid 0.3853051 
## Run 266 stress 9.224839e-05 
## ... Procrustes: rmse 0.1294742  max resid 0.7049621 
## Run 267 stress 9.485385e-05 
## ... Procrustes: rmse 0.1221672  max resid 0.6165804 
## Run 268 stress 9.486626e-05 
## ... Procrustes: rmse 0.1284961  max resid 0.5839982 
## Run 269 stress 9.007206e-05 
## ... Procrustes: rmse 0.1359397  max resid 0.7618579 
## Run 270 stress 9.246428e-05 
## ... Procrustes: rmse 0.1306635  max resid 0.6666094 
## Run 271 stress 9.630698e-05 
## ... Procrustes: rmse 0.1301116  max resid 0.6999843 
## Run 272 stress 9.963483e-05 
## ... Procrustes: rmse 0.05521511  max resid 0.2880312 
## Run 273 stress 9.929217e-05 
## ... Procrustes: rmse 0.0898618  max resid 0.4239108 
## Run 274 stress 9.863444e-05 
## ... Procrustes: rmse 0.09290785  max resid 0.5780838 
## Run 275 stress 9.89296e-05 
## ... Procrustes: rmse 0.1365966  max resid 0.7598131 
## Run 276 stress 9.557948e-05 
## ... Procrustes: rmse 0.137715  max resid 0.6059507 
## Run 277 stress 9.817481e-05 
## ... Procrustes: rmse 0.1100828  max resid 0.5455952 
## Run 278 stress 9.506325e-05 
## ... Procrustes: rmse 0.08989958  max resid 0.4264511 
## Run 279 stress 9.79055e-05 
## ... Procrustes: rmse 0.1327093  max resid 0.5607231 
## Run 280 stress 9.953264e-05 
## ... Procrustes: rmse 0.1127256  max resid 0.5799718 
## Run 281 stress 9.892072e-05 
## ... Procrustes: rmse 0.1417193  max resid 0.6780589 
## Run 282 stress 9.628487e-05 
## ... Procrustes: rmse 0.132015  max resid 0.6028866 
## Run 283 stress 9.386623e-05 
## ... Procrustes: rmse 0.117608  max resid 0.5763305 
## Run 284 stress 9.679591e-05 
## ... Procrustes: rmse 0.05995476  max resid 0.3037161 
## Run 285 stress 9.934997e-05 
## ... Procrustes: rmse 0.08111637  max resid 0.4584156 
## Run 286 stress 9.831703e-05 
## ... Procrustes: rmse 0.1135803  max resid 0.5772043 
## Run 287 stress 9.353379e-05 
## ... Procrustes: rmse 0.07829812  max resid 0.3632307 
## Run 288 stress 9.871875e-05 
## ... Procrustes: rmse 0.09937798  max resid 0.495021 
## Run 289 stress 9.564151e-05 
## ... Procrustes: rmse 0.1332557  max resid 0.5566207 
## Run 290 stress 9.275332e-05 
## ... Procrustes: rmse 0.08123864  max resid 0.3328222 
## Run 291 stress 8.928955e-05 
## ... Procrustes: rmse 0.05117687  max resid 0.2155563 
## Run 292 stress 9.194355e-05 
## ... Procrustes: rmse 0.1147056  max resid 0.6510856 
## Run 293 stress 9.38352e-05 
## ... Procrustes: rmse 0.1287429  max resid 0.6140713 
## Run 294 stress 9.370347e-05 
## ... Procrustes: rmse 0.1286998  max resid 0.7742802 
## Run 295 stress 9.820122e-05 
## ... Procrustes: rmse 0.1239426  max resid 0.574019 
## Run 296 stress 9.778802e-05 
## ... Procrustes: rmse 0.1137334  max resid 0.5892874 
## Run 297 stress 9.508464e-05 
## ... Procrustes: rmse 0.1218785  max resid 0.5940166 
## Run 298 stress 9.761874e-05 
## ... Procrustes: rmse 0.1331526  max resid 0.5395226 
## Run 299 stress 9.494333e-05 
## ... Procrustes: rmse 0.1130753  max resid 0.6588989 
## Run 300 stress 9.735035e-05 
## ... Procrustes: rmse 0.1253795  max resid 0.7287606 
## Run 301 stress 9.740178e-05 
## ... Procrustes: rmse 0.09615049  max resid 0.4074795 
## Run 302 stress 9.652803e-05 
## ... Procrustes: rmse 0.1434446  max resid 0.6133614 
## Run 303 stress 9.48416e-05 
## ... Procrustes: rmse 0.1233956  max resid 0.5356111 
## Run 304 stress 9.735396e-05 
## ... Procrustes: rmse 0.1226446  max resid 0.703006 
## Run 305 stress 9.809919e-05 
## ... Procrustes: rmse 0.1356011  max resid 0.767065 
## Run 306 stress 9.360648e-05 
## ... Procrustes: rmse 0.1341348  max resid 0.7736119 
## Run 307 stress 9.82179e-05 
## ... Procrustes: rmse 0.1223576  max resid 0.7294438 
## Run 308 stress 9.657967e-05 
## ... Procrustes: rmse 0.1244974  max resid 0.6145611 
## Run 309 stress 8.956675e-05 
## ... Procrustes: rmse 0.09126289  max resid 0.4931538 
## Run 310 stress 9.672088e-05 
## ... Procrustes: rmse 0.1250788  max resid 0.6846125 
## Run 311 stress 9.143703e-05 
## ... Procrustes: rmse 0.1008046  max resid 0.4968863 
## Run 312 stress 9.752226e-05 
## ... Procrustes: rmse 0.1248917  max resid 0.5136188 
## Run 313 stress 9.672029e-05 
## ... Procrustes: rmse 0.1005042  max resid 0.5353857 
## Run 314 stress 9.545714e-05 
## ... Procrustes: rmse 0.1361808  max resid 0.5865522 
## Run 315 stress 9.697711e-05 
## ... Procrustes: rmse 0.1103527  max resid 0.5933938 
## Run 316 stress 9.9928e-05 
## ... Procrustes: rmse 0.0755534  max resid 0.3895803 
## Run 317 stress 9.067206e-05 
## ... Procrustes: rmse 0.04952124  max resid 0.21317 
## Run 318 stress 9.768466e-05 
## ... Procrustes: rmse 0.1319218  max resid 0.6363263 
## Run 319 stress 9.579721e-05 
## ... Procrustes: rmse 0.08331163  max resid 0.5071928 
## Run 320 stress 9.047146e-05 
## ... Procrustes: rmse 0.1193455  max resid 0.7067933 
## Run 321 stress 9.815379e-05 
## ... Procrustes: rmse 0.09124584  max resid 0.4953266 
## Run 322 stress 9.564815e-05 
## ... Procrustes: rmse 0.1077941  max resid 0.5216217 
## Run 323 stress 9.750636e-05 
## ... Procrustes: rmse 0.1325311  max resid 0.7258633 
## Run 324 stress 8.970075e-05 
## ... Procrustes: rmse 0.1357068  max resid 0.6729905 
## Run 325 stress 9.202365e-05 
## ... Procrustes: rmse 0.123143  max resid 0.5456208 
## Run 326 stress 9.649969e-05 
## ... Procrustes: rmse 0.02650673  max resid 0.1474228 
## Run 327 stress 9.578272e-05 
## ... Procrustes: rmse 0.1068178  max resid 0.4911979 
## Run 328 stress 9.497833e-05 
## ... Procrustes: rmse 0.1347869  max resid 0.6567122 
## Run 329 stress 9.654355e-05 
## ... Procrustes: rmse 0.1329596  max resid 0.6348034 
## Run 330 stress 9.53519e-05 
## ... Procrustes: rmse 0.1414644  max resid 0.671175 
## Run 331 stress 9.785607e-05 
## ... Procrustes: rmse 0.1341932  max resid 0.6873309 
## Run 332 stress 9.279099e-05 
## ... Procrustes: rmse 0.07445258  max resid 0.3623903 
## Run 333 stress 9.063398e-05 
## ... Procrustes: rmse 0.1216903  max resid 0.622784 
## Run 334 stress 9.903578e-05 
## ... Procrustes: rmse 0.1187496  max resid 0.5577147 
## Run 335 stress 9.598899e-05 
## ... Procrustes: rmse 0.05530817  max resid 0.2307087 
## Run 336 stress 9.727338e-05 
## ... Procrustes: rmse 0.1432395  max resid 0.6830772 
## Run 337 stress 9.901863e-05 
## ... Procrustes: rmse 0.1121812  max resid 0.563745 
## Run 338 stress 9.831902e-05 
## ... Procrustes: rmse 0.07366617  max resid 0.3836651 
## Run 339 stress 9.555731e-05 
## ... Procrustes: rmse 0.1017586  max resid 0.5344678 
## Run 340 stress 9.339686e-05 
## ... Procrustes: rmse 0.09858084  max resid 0.5369858 
## Run 341 stress 8.750882e-05 
## ... Procrustes: rmse 0.08552002  max resid 0.4339809 
## Run 342 stress 9.982018e-05 
## ... Procrustes: rmse 0.07368726  max resid 0.3623216 
## Run 343 stress 9.327905e-05 
## ... Procrustes: rmse 0.111818  max resid 0.5344433 
## Run 344 stress 9.772893e-05 
## ... Procrustes: rmse 0.1026161  max resid 0.4814782 
## Run 345 stress 9.116191e-05 
## ... Procrustes: rmse 0.1031294  max resid 0.5130447 
## Run 346 stress 9.981168e-05 
## ... Procrustes: rmse 0.09183544  max resid 0.4940757 
## Run 347 stress 9.534975e-05 
## ... Procrustes: rmse 0.1236058  max resid 0.5328982 
## Run 348 stress 9.831995e-05 
## ... Procrustes: rmse 0.1215966  max resid 0.6586395 
## Run 349 stress 9.58244e-05 
## ... Procrustes: rmse 0.1310235  max resid 0.6518259 
## Run 350 stress 9.242854e-05 
## ... Procrustes: rmse 0.1279926  max resid 0.6659363 
## Run 351 stress 9.980357e-05 
## ... Procrustes: rmse 0.07325353  max resid 0.4085568 
## Run 352 stress 9.093181e-05 
## ... Procrustes: rmse 0.1266446  max resid 0.5399009 
## Run 353 stress 9.808404e-05 
## ... Procrustes: rmse 0.1292841  max resid 0.7407364 
## Run 354 stress 9.081119e-05 
## ... Procrustes: rmse 0.1225588  max resid 0.6702313 
## Run 355 stress 9.934367e-05 
## ... Procrustes: rmse 0.1144235  max resid 0.6300175 
## Run 356 stress 9.754054e-05 
## ... Procrustes: rmse 0.1219978  max resid 0.6111889 
## Run 357 stress 9.986789e-05 
## ... Procrustes: rmse 0.1369069  max resid 0.7552544 
## Run 358 stress 9.640377e-05 
## ... Procrustes: rmse 0.1312716  max resid 0.6134773 
## Run 359 stress 8.751788e-05 
## ... Procrustes: rmse 0.139164  max resid 0.6778968 
## Run 360 stress 9.763541e-05 
## ... Procrustes: rmse 0.1069006  max resid 0.5155132 
## Run 361 stress 9.760334e-05 
## ... Procrustes: rmse 0.1404165  max resid 0.5616295 
## Run 362 stress 9.942798e-05 
## ... Procrustes: rmse 0.06311537  max resid 0.3040285 
## Run 363 stress 9.249432e-05 
## ... Procrustes: rmse 0.128034  max resid 0.6600314 
## Run 364 stress 9.896439e-05 
## ... Procrustes: rmse 0.1419931  max resid 0.5720679 
## Run 365 stress 9.764396e-05 
## ... Procrustes: rmse 0.1362108  max resid 0.6150035 
## Run 366 stress 8.352727e-05 
## ... Procrustes: rmse 0.0883723  max resid 0.5563886 
## Run 367 stress 9.862659e-05 
## ... Procrustes: rmse 0.1182246  max resid 0.568584 
## Run 368 stress 9.327753e-05 
## ... Procrustes: rmse 0.05693184  max resid 0.3123018 
## Run 369 stress 9.929113e-05 
## ... Procrustes: rmse 0.07912939  max resid 0.3808468 
## Run 370 stress 8.984089e-05 
## ... Procrustes: rmse 0.06700872  max resid 0.3291642 
## Run 371 stress 9.893768e-05 
## ... Procrustes: rmse 0.1301601  max resid 0.6605912 
## Run 372 stress 9.065789e-05 
## ... Procrustes: rmse 0.03524657  max resid 0.1739881 
## Run 373 stress 9.417501e-05 
## ... Procrustes: rmse 0.1209788  max resid 0.6045326 
## Run 374 stress 9.099072e-05 
## ... Procrustes: rmse 0.1244915  max resid 0.6671365 
## Run 375 stress 9.396659e-05 
## ... Procrustes: rmse 0.09443156  max resid 0.4034279 
## Run 376 stress 9.825288e-05 
## ... Procrustes: rmse 0.1098461  max resid 0.536561 
## Run 377 stress 8.401977e-05 
## ... Procrustes: rmse 0.1402599  max resid 0.7200856 
## Run 378 stress 9.579656e-05 
## ... Procrustes: rmse 0.1317033  max resid 0.5523281 
## Run 379 stress 9.793289e-05 
## ... Procrustes: rmse 0.13477  max resid 0.6873667 
## Run 380 stress 9.229514e-05 
## ... Procrustes: rmse 0.1232106  max resid 0.6101637 
## Run 381 stress 8.876616e-05 
## ... Procrustes: rmse 0.1267742  max resid 0.5712485 
## Run 382 stress 9.903146e-05 
## ... Procrustes: rmse 0.1389263  max resid 0.5622608 
## Run 383 stress 9.63114e-05 
## ... Procrustes: rmse 0.1412235  max resid 0.7063958 
## Run 384 stress 8.986914e-05 
## ... Procrustes: rmse 0.132007  max resid 0.7655157 
## Run 385 stress 9.967062e-05 
## ... Procrustes: rmse 0.1246165  max resid 0.7262614 
## Run 386 stress 9.566425e-05 
## ... Procrustes: rmse 0.1161287  max resid 0.551228 
## Run 387 stress 9.798515e-05 
## ... Procrustes: rmse 0.09882639  max resid 0.5404176 
## Run 388 stress 9.816975e-05 
## ... Procrustes: rmse 0.1189957  max resid 0.5562541 
## Run 389 stress 9.348701e-05 
## ... Procrustes: rmse 0.1191694  max resid 0.6104617 
## Run 390 stress 9.996841e-05 
## ... Procrustes: rmse 0.08869451  max resid 0.4885367 
## Run 391 stress 9.35588e-05 
## ... Procrustes: rmse 0.1397084  max resid 0.7552083 
## Run 392 stress 9.42968e-05 
## ... Procrustes: rmse 0.07768785  max resid 0.4190442 
## Run 393 stress 9.855283e-05 
## ... Procrustes: rmse 0.1174417  max resid 0.5532065 
## Run 394 stress 9.777169e-05 
## ... Procrustes: rmse 0.09398537  max resid 0.5542574 
## Run 395 stress 9.66304e-05 
## ... Procrustes: rmse 0.1005421  max resid 0.5012141 
## Run 396 stress 9.266504e-05 
## ... Procrustes: rmse 0.1118653  max resid 0.5654414 
## Run 397 stress 9.695896e-05 
## ... Procrustes: rmse 0.1034569  max resid 0.5126059 
## Run 398 stress 9.337657e-05 
## ... Procrustes: rmse 0.1160969  max resid 0.6137153 
## Run 399 stress 9.069531e-05 
## ... Procrustes: rmse 0.0961829  max resid 0.4811818 
## Run 400 stress 9.535471e-05 
## ... Procrustes: rmse 0.1141056  max resid 0.5265306 
## Run 401 stress 9.192184e-05 
## ... Procrustes: rmse 0.1369104  max resid 0.6118274 
## Run 402 stress 9.551899e-05 
## ... Procrustes: rmse 0.1193894  max resid 0.5773125 
## Run 403 stress 9.934102e-05 
## ... Procrustes: rmse 0.127677  max resid 0.6604834 
## Run 404 stress 9.833781e-05 
## ... Procrustes: rmse 0.1005961  max resid 0.5840986 
## Run 405 stress 9.546329e-05 
## ... Procrustes: rmse 0.09304625  max resid 0.5730618 
## Run 406 stress 9.565334e-05 
## ... Procrustes: rmse 0.07622678  max resid 0.4498822 
## Run 407 stress 9.189831e-05 
## ... Procrustes: rmse 0.1182391  max resid 0.5997504 
## Run 408 stress 9.509274e-05 
## ... Procrustes: rmse 0.1413674  max resid 0.6732883 
## Run 409 stress 9.451968e-05 
## ... Procrustes: rmse 0.1162624  max resid 0.5161694 
## Run 410 stress 9.59909e-05 
## ... Procrustes: rmse 0.1170204  max resid 0.5232321 
## Run 411 stress 8.61344e-05 
## ... Procrustes: rmse 0.1335012  max resid 0.6202835 
## Run 412 stress 9.817324e-05 
## ... Procrustes: rmse 0.1305383  max resid 0.7212328 
## Run 413 stress 9.278203e-05 
## ... Procrustes: rmse 0.08892063  max resid 0.5237012 
## Run 414 stress 8.877892e-05 
## ... Procrustes: rmse 0.07899835  max resid 0.4719645 
## Run 415 stress 8.580057e-05 
## ... Procrustes: rmse 0.1195243  max resid 0.5816493 
## Run 416 stress 9.887283e-05 
## ... Procrustes: rmse 0.1361719  max resid 0.7623436 
## Run 417 stress 9.13576e-05 
## ... Procrustes: rmse 0.1293422  max resid 0.5436075 
## Run 418 stress 9.768137e-05 
## ... Procrustes: rmse 0.1380936  max resid 0.5972111 
## Run 419 stress 9.556861e-05 
## ... Procrustes: rmse 0.07382709  max resid 0.3711304 
## Run 420 stress 9.760117e-05 
## ... Procrustes: rmse 0.1079011  max resid 0.5639894 
## Run 421 stress 9.625142e-05 
## ... Procrustes: rmse 0.0936667  max resid 0.4404215 
## Run 422 stress 8.290341e-05 
## ... Procrustes: rmse 0.1028131  max resid 0.6157022 
## Run 423 stress 9.533581e-05 
## ... Procrustes: rmse 0.1023809  max resid 0.5060918 
## Run 424 stress 9.782154e-05 
## ... Procrustes: rmse 0.123641  max resid 0.5542826 
## Run 425 stress 9.933952e-05 
## ... Procrustes: rmse 0.1044616  max resid 0.5296247 
## Run 426 stress 9.981236e-05 
## ... Procrustes: rmse 0.1226567  max resid 0.5926184 
## Run 427 stress 8.328406e-05 
## ... Procrustes: rmse 0.1026753  max resid 0.4750102 
## Run 428 stress 9.999949e-05 
## ... Procrustes: rmse 0.1218177  max resid 0.6363223 
## Run 429 stress 9.874062e-05 
## ... Procrustes: rmse 0.1026513  max resid 0.5316615 
## Run 430 stress 9.458093e-05 
## ... Procrustes: rmse 0.1138907  max resid 0.6533098 
## Run 431 stress 9.801086e-05 
## ... Procrustes: rmse 0.02811843  max resid 0.1356243 
## Run 432 stress 8.144891e-05 
## ... Procrustes: rmse 0.1005018  max resid 0.4511746 
## Run 433 stress 9.730793e-05 
## ... Procrustes: rmse 0.1088823  max resid 0.6374296 
## Run 434 stress 9.268467e-05 
## ... Procrustes: rmse 0.1136796  max resid 0.5764873 
## Run 435 stress 9.568899e-05 
## ... Procrustes: rmse 0.08636596  max resid 0.4817167 
## Run 436 stress 9.960319e-05 
## ... Procrustes: rmse 0.03931657  max resid 0.2064424 
## Run 437 stress 9.592202e-05 
## ... Procrustes: rmse 0.1244617  max resid 0.6600013 
## Run 438 stress 9.218539e-05 
## ... Procrustes: rmse 0.1337173  max resid 0.5874531 
## Run 439 stress 9.735946e-05 
## ... Procrustes: rmse 0.1162641  max resid 0.6091147 
## Run 440 stress 9.975917e-05 
## ... Procrustes: rmse 0.06174203  max resid 0.3098812 
## Run 441 stress 9.710593e-05 
## ... Procrustes: rmse 0.1135064  max resid 0.4747501 
## Run 442 stress 9.723399e-05 
## ... Procrustes: rmse 0.06466311  max resid 0.2909075 
## Run 443 stress 9.734825e-05 
## ... Procrustes: rmse 0.08999032  max resid 0.5399446 
## Run 444 stress 9.402739e-05 
## ... Procrustes: rmse 0.09103985  max resid 0.4105907 
## Run 445 stress 9.987687e-05 
## ... Procrustes: rmse 0.08814469  max resid 0.4858503 
## Run 446 stress 9.921167e-05 
## ... Procrustes: rmse 0.131277  max resid 0.5620346 
## Run 447 stress 9.874126e-05 
## ... Procrustes: rmse 0.1049222  max resid 0.6098475 
## Run 448 stress 9.779907e-05 
## ... Procrustes: rmse 0.1287396  max resid 0.7653749 
## Run 449 stress 9.072966e-05 
## ... Procrustes: rmse 0.1323949  max resid 0.5761377 
## Run 450 stress 9.772975e-05 
## ... Procrustes: rmse 0.06839852  max resid 0.3778055 
## Run 451 stress 8.96752e-05 
## ... Procrustes: rmse 0.09269351  max resid 0.4457899 
## Run 452 stress 7.99772e-05 
## ... Procrustes: rmse 0.1156762  max resid 0.6303955 
## Run 453 stress 9.98291e-05 
## ... Procrustes: rmse 0.1009438  max resid 0.6153727 
## Run 454 stress 9.465363e-05 
## ... Procrustes: rmse 0.07887667  max resid 0.404411 
## Run 455 stress 9.428936e-05 
## ... Procrustes: rmse 0.1247196  max resid 0.779627 
## Run 456 stress 9.227516e-05 
## ... Procrustes: rmse 0.07974654  max resid 0.373401 
## Run 457 stress 9.760492e-05 
## ... Procrustes: rmse 0.1020061  max resid 0.5930662 
## Run 458 stress 9.144469e-05 
## ... Procrustes: rmse 0.1154152  max resid 0.7151954 
## Run 459 stress 9.413825e-05 
## ... Procrustes: rmse 0.1141438  max resid 0.674457 
## Run 460 stress 9.083265e-05 
## ... Procrustes: rmse 0.1340339  max resid 0.6141349 
## Run 461 stress 9.921746e-05 
## ... Procrustes: rmse 0.1350895  max resid 0.6898184 
## Run 462 stress 9.000427e-05 
## ... Procrustes: rmse 0.04235811  max resid 0.1980825 
## Run 463 stress 9.640225e-05 
## ... Procrustes: rmse 0.1388305  max resid 0.5543901 
## Run 464 stress 9.628377e-05 
## ... Procrustes: rmse 0.05027508  max resid 0.2757382 
## Run 465 stress 8.838763e-05 
## ... Procrustes: rmse 0.08314864  max resid 0.4241174 
## Run 466 stress 9.693445e-05 
## ... Procrustes: rmse 0.07054791  max resid 0.3902519 
## Run 467 stress 9.803527e-05 
## ... Procrustes: rmse 0.08640898  max resid 0.4095799 
## Run 468 stress 9.351006e-05 
## ... Procrustes: rmse 0.1095425  max resid 0.6304433 
## Run 469 stress 9.870163e-05 
## ... Procrustes: rmse 0.0726795  max resid 0.4041128 
## Run 470 stress 9.920689e-05 
## ... Procrustes: rmse 0.123546  max resid 0.6368385 
## Run 471 stress 9.982641e-05 
## ... Procrustes: rmse 0.09733528  max resid 0.534536 
## Run 472 stress 9.794748e-05 
## ... Procrustes: rmse 0.1067876  max resid 0.4986706 
## Run 473 stress 9.818075e-05 
## ... Procrustes: rmse 0.08511482  max resid 0.4515028 
## Run 474 stress 9.614643e-05 
## ... Procrustes: rmse 0.1275919  max resid 0.7259134 
## Run 475 stress 9.43488e-05 
## ... Procrustes: rmse 0.1118723  max resid 0.5370932 
## Run 476 stress 9.579584e-05 
## ... Procrustes: rmse 0.02024597  max resid 0.1021998 
## Run 477 stress 9.248205e-05 
## ... Procrustes: rmse 0.09134967  max resid 0.4345199 
## Run 478 stress 9.508354e-05 
## ... Procrustes: rmse 0.1008892  max resid 0.4440781 
## Run 479 stress 9.529186e-05 
## ... Procrustes: rmse 0.09881207  max resid 0.5124389 
## Run 480 stress 9.625375e-05 
## ... Procrustes: rmse 0.1133541  max resid 0.6934464 
## Run 481 stress 9.951145e-05 
## ... Procrustes: rmse 0.1362048  max resid 0.6409663 
## Run 482 stress 9.557771e-05 
## ... Procrustes: rmse 0.1035398  max resid 0.5461805 
## Run 483 stress 9.83576e-05 
## ... Procrustes: rmse 0.1338756  max resid 0.7587259 
## Run 484 stress 9.531343e-05 
## ... Procrustes: rmse 0.09361726  max resid 0.3998748 
## Run 485 stress 9.927247e-05 
## ... Procrustes: rmse 0.1020885  max resid 0.5465685 
## Run 486 stress 8.717258e-05 
## ... Procrustes: rmse 0.1273867  max resid 0.6510289 
## Run 487 stress 9.195072e-05 
## ... Procrustes: rmse 0.1258883  max resid 0.6516583 
## Run 488 stress 9.652606e-05 
## ... Procrustes: rmse 0.1403858  max resid 0.7216154 
## Run 489 stress 9.141979e-05 
## ... Procrustes: rmse 0.08659774  max resid 0.3615145 
## Run 490 stress 9.572959e-05 
## ... Procrustes: rmse 0.1308677  max resid 0.7818984 
## Run 491 stress 9.841248e-05 
## ... Procrustes: rmse 0.1069114  max resid 0.5453931 
## Run 492 stress 9.611446e-05 
## ... Procrustes: rmse 0.1238853  max resid 0.5769224 
## Run 493 stress 8.953737e-05 
## ... Procrustes: rmse 0.1368027  max resid 0.56403 
## Run 494 stress 8.699062e-05 
## ... Procrustes: rmse 0.0326998  max resid 0.1382865 
## Run 495 stress 9.498598e-05 
## ... Procrustes: rmse 0.1301124  max resid 0.6064643 
## Run 496 stress 9.732587e-05 
## ... Procrustes: rmse 0.08628595  max resid 0.450715 
## Run 497 stress 9.444707e-05 
## ... Procrustes: rmse 0.05996973  max resid 0.3183823 
## Run 498 stress 9.651943e-05 
## ... Procrustes: rmse 0.1097959  max resid 0.5331301 
## Run 499 stress 9.223697e-05 
## ... Procrustes: rmse 0.1213531  max resid 0.5557559 
## Run 500 stress 9.888259e-05 
## ... Procrustes: rmse 0.077256  max resid 0.3617031 
## Run 501 stress 9.797361e-05 
## ... Procrustes: rmse 0.1180172  max resid 0.5903942 
## Run 502 stress 9.582191e-05 
## ... Procrustes: rmse 0.06302574  max resid 0.3840622 
## Run 503 stress 8.20733e-05 
## ... Procrustes: rmse 0.1073417  max resid 0.4666858 
## Run 504 stress 9.645547e-05 
## ... Procrustes: rmse 0.1391219  max resid 0.6334359 
## Run 505 stress 9.937268e-05 
## ... Procrustes: rmse 0.1181973  max resid 0.5848759 
## Run 506 stress 9.420916e-05 
## ... Procrustes: rmse 0.09614716  max resid 0.5644213 
## Run 507 stress 9.14968e-05 
## ... Procrustes: rmse 0.1355488  max resid 0.6866441 
## Run 508 stress 9.958939e-05 
## ... Procrustes: rmse 0.1384017  max resid 0.6504428 
## Run 509 stress 9.613572e-05 
## ... Procrustes: rmse 0.07749593  max resid 0.3612009 
## Run 510 stress 9.972696e-05 
## ... Procrustes: rmse 0.1319046  max resid 0.6718024 
## Run 511 stress 9.988592e-05 
## ... Procrustes: rmse 0.06160679  max resid 0.2970848 
## Run 512 stress 9.984471e-05 
## ... Procrustes: rmse 0.1391612  max resid 0.7671991 
## Run 513 stress 9.730935e-05 
## ... Procrustes: rmse 0.07611407  max resid 0.3589653 
## Run 514 stress 9.461304e-05 
## ... Procrustes: rmse 0.09963822  max resid 0.5340054 
## Run 515 stress 9.497522e-05 
## ... Procrustes: rmse 0.04272458  max resid 0.219416 
## Run 516 stress 9.668655e-05 
## ... Procrustes: rmse 0.05051215  max resid 0.2422381 
## Run 517 stress 9.184731e-05 
## ... Procrustes: rmse 0.1013887  max resid 0.5006488 
## Run 518 stress 9.934391e-05 
## ... Procrustes: rmse 0.06880371  max resid 0.3884722 
## Run 519 stress 9.366695e-05 
## ... Procrustes: rmse 0.1263778  max resid 0.5407309 
## Run 520 stress 9.590462e-05 
## ... Procrustes: rmse 0.1204692  max resid 0.5578333 
## Run 521 stress 9.7575e-05 
## ... Procrustes: rmse 0.1045255  max resid 0.6265488 
## Run 522 stress 9.466276e-05 
## ... Procrustes: rmse 0.1122612  max resid 0.5939661 
## Run 523 stress 9.165558e-05 
## ... Procrustes: rmse 0.1188971  max resid 0.5662334 
## Run 524 stress 9.570103e-05 
## ... Procrustes: rmse 0.1059409  max resid 0.4787336 
## Run 525 stress 9.884051e-05 
## ... Procrustes: rmse 0.04570898  max resid 0.2269475 
## Run 526 stress 8.857491e-05 
## ... Procrustes: rmse 0.07261579  max resid 0.4069897 
## Run 527 stress 9.497072e-05 
## ... Procrustes: rmse 0.1169772  max resid 0.5172125 
## Run 528 stress 9.572717e-05 
## ... Procrustes: rmse 0.07651286  max resid 0.3581145 
## Run 529 stress 9.334758e-05 
## ... Procrustes: rmse 0.1028038  max resid 0.5206514 
## Run 530 stress 9.881218e-05 
## ... Procrustes: rmse 0.08334126  max resid 0.5074325 
## Run 531 stress 9.935165e-05 
## ... Procrustes: rmse 0.1083262  max resid 0.5619312 
## Run 532 stress 9.845168e-05 
## ... Procrustes: rmse 0.08692256  max resid 0.4845652 
## Run 533 stress 9.504539e-05 
## ... Procrustes: rmse 0.123029  max resid 0.5206946 
## Run 534 stress 9.509065e-05 
## ... Procrustes: rmse 0.1349639  max resid 0.5675801 
## Run 535 stress 9.612657e-05 
## ... Procrustes: rmse 0.1325085  max resid 0.7224551 
## Run 536 stress 9.433104e-05 
## ... Procrustes: rmse 0.1289538  max resid 0.65089 
## Run 537 stress 9.606461e-05 
## ... Procrustes: rmse 0.1417385  max resid 0.6992653 
## Run 538 stress 9.497222e-05 
## ... Procrustes: rmse 0.1085533  max resid 0.5247165 
## Run 539 stress 9.672482e-05 
## ... Procrustes: rmse 0.1373497  max resid 0.7012863 
## Run 540 stress 9.553288e-05 
## ... Procrustes: rmse 0.1042239  max resid 0.5019315 
## Run 541 stress 9.505233e-05 
## ... Procrustes: rmse 0.1211795  max resid 0.5482367 
## Run 542 stress 8.686603e-05 
## ... Procrustes: rmse 0.1266371  max resid 0.5624408 
## Run 543 stress 9.565532e-05 
## ... Procrustes: rmse 0.09187321  max resid 0.4069859 
## Run 544 stress 9.286699e-05 
## ... Procrustes: rmse 0.08180524  max resid 0.4402856 
## Run 545 stress 9.560398e-05 
## ... Procrustes: rmse 0.04788513  max resid 0.2221164 
## Run 546 stress 8.560609e-05 
## ... Procrustes: rmse 0.09870307  max resid 0.5189261 
## Run 547 stress 9.935719e-05 
## ... Procrustes: rmse 0.1328334  max resid 0.5708575 
## Run 548 stress 9.968783e-05 
## ... Procrustes: rmse 0.125823  max resid 0.6941852 
## Run 549 stress 9.599751e-05 
## ... Procrustes: rmse 0.1359402  max resid 0.7466277 
## Run 550 stress 9.673609e-05 
## ... Procrustes: rmse 0.1206752  max resid 0.5489132 
## Run 551 stress 9.157821e-05 
## ... Procrustes: rmse 0.09322737  max resid 0.5071977 
## Run 552 stress 9.973023e-05 
## ... Procrustes: rmse 0.1321938  max resid 0.59695 
## Run 553 stress 9.740562e-05 
## ... Procrustes: rmse 0.1156091  max resid 0.5903716 
## Run 554 stress 9.644947e-05 
## ... Procrustes: rmse 0.1018225  max resid 0.5031875 
## Run 555 stress 9.837951e-05 
## ... Procrustes: rmse 0.1236989  max resid 0.5901239 
## Run 556 stress 9.659169e-05 
## ... Procrustes: rmse 0.08465876  max resid 0.4639887 
## Run 557 stress 9.919208e-05 
## ... Procrustes: rmse 0.1096302  max resid 0.4966784 
## Run 558 stress 8.408988e-05 
## ... Procrustes: rmse 0.1045298  max resid 0.4585453 
## Run 559 stress 9.718022e-05 
## ... Procrustes: rmse 0.09552035  max resid 0.5411723 
## Run 560 stress 9.739735e-05 
## ... Procrustes: rmse 0.08771158  max resid 0.3843201 
## Run 561 stress 9.643292e-05 
## ... Procrustes: rmse 0.1229512  max resid 0.723206 
## Run 562 stress 8.584872e-05 
## ... Procrustes: rmse 0.08296772  max resid 0.3801879 
## Run 563 stress 9.252348e-05 
## ... Procrustes: rmse 0.1241483  max resid 0.674316 
## Run 564 stress 8.699311e-05 
## ... Procrustes: rmse 0.09835112  max resid 0.5277054 
## Run 565 stress 9.923874e-05 
## ... Procrustes: rmse 0.1281244  max resid 0.642857 
## Run 566 stress 9.720476e-05 
## ... Procrustes: rmse 0.1397067  max resid 0.742435 
## Run 567 stress 9.69329e-05 
## ... Procrustes: rmse 0.04943891  max resid 0.2977122 
## Run 568 stress 9.925693e-05 
## ... Procrustes: rmse 0.1119821  max resid 0.4800141 
## Run 569 stress 9.738582e-05 
## ... Procrustes: rmse 0.1028935  max resid 0.6350565 
## Run 570 stress 9.519786e-05 
## ... Procrustes: rmse 0.109491  max resid 0.6020626 
## Run 571 stress 9.27299e-05 
## ... Procrustes: rmse 0.1294988  max resid 0.6312981 
## Run 572 stress 9.608662e-05 
## ... Procrustes: rmse 0.1057272  max resid 0.4298845 
## Run 573 stress 9.760206e-05 
## ... Procrustes: rmse 0.09040236  max resid 0.5375158 
## Run 574 stress 8.696424e-05 
## ... Procrustes: rmse 0.1346618  max resid 0.7075841 
## Run 575 stress 9.190169e-05 
## ... Procrustes: rmse 0.03578414  max resid 0.1686328 
## Run 576 stress 9.65085e-05 
## ... Procrustes: rmse 0.06888072  max resid 0.4235419 
## Run 577 stress 9.514668e-05 
## ... Procrustes: rmse 0.1098403  max resid 0.5610648 
## Run 578 stress 8.956584e-05 
## ... Procrustes: rmse 0.06398492  max resid 0.3853911 
## Run 579 stress 9.832299e-05 
## ... Procrustes: rmse 0.1317857  max resid 0.6311987 
## Run 580 stress 9.812936e-05 
## ... Procrustes: rmse 0.1323459  max resid 0.6287416 
## Run 581 stress 9.425164e-05 
## ... Procrustes: rmse 0.1226726  max resid 0.6611976 
## Run 582 stress 9.289714e-05 
## ... Procrustes: rmse 0.1103467  max resid 0.6409948 
## Run 583 stress 8.880901e-05 
## ... Procrustes: rmse 0.1346302  max resid 0.7565485 
## Run 584 stress 8.563707e-05 
## ... Procrustes: rmse 0.1189956  max resid 0.7099166 
## Run 585 stress 9.571859e-05 
## ... Procrustes: rmse 0.05733298  max resid 0.270441 
## Run 586 stress 9.833383e-05 
## ... Procrustes: rmse 0.1117393  max resid 0.5196064 
## Run 587 stress 9.972416e-05 
## ... Procrustes: rmse 0.0860366  max resid 0.5383533 
## Run 588 stress 9.94968e-05 
## ... Procrustes: rmse 0.08955143  max resid 0.5071129 
## Run 589 stress 9.541921e-05 
## ... Procrustes: rmse 0.1181134  max resid 0.6121867 
## Run 590 stress 9.823336e-05 
## ... Procrustes: rmse 0.1051244  max resid 0.5703407 
## Run 591 stress 9.14581e-05 
## ... Procrustes: rmse 0.08578058  max resid 0.4960423 
## Run 592 stress 9.917043e-05 
## ... Procrustes: rmse 0.1234731  max resid 0.7457518 
## Run 593 stress 9.545253e-05 
## ... Procrustes: rmse 0.1179188  max resid 0.4908106 
## Run 594 stress 9.914262e-05 
## ... Procrustes: rmse 0.08392887  max resid 0.3754517 
## Run 595 stress 9.287813e-05 
## ... Procrustes: rmse 0.1173377  max resid 0.4925735 
## Run 596 stress 9.499098e-05 
## ... Procrustes: rmse 0.1084829  max resid 0.5389128 
## Run 597 stress 9.745942e-05 
## ... Procrustes: rmse 0.1097405  max resid 0.5788056 
## Run 598 stress 9.305748e-05 
## ... Procrustes: rmse 0.1439405  max resid 0.685763 
## Run 599 stress 9.993963e-05 
## ... Procrustes: rmse 0.1020262  max resid 0.5012803 
## Run 600 stress 9.506523e-05 
## ... Procrustes: rmse 0.1250368  max resid 0.6329894 
## Run 601 stress 8.975393e-05 
## ... Procrustes: rmse 0.07715842  max resid 0.3496764 
## Run 602 stress 9.878091e-05 
## ... Procrustes: rmse 0.09144159  max resid 0.5417333 
## Run 603 stress 9.419553e-05 
## ... Procrustes: rmse 0.07477666  max resid 0.4167283 
## Run 604 stress 9.680356e-05 
## ... Procrustes: rmse 0.1075995  max resid 0.5502399 
## Run 605 stress 9.840266e-05 
## ... Procrustes: rmse 0.1174126  max resid 0.5829194 
## Run 606 stress 9.679434e-05 
## ... Procrustes: rmse 0.1306741  max resid 0.6446969 
## Run 607 stress 9.5168e-05 
## ... Procrustes: rmse 0.117877  max resid 0.6453379 
## Run 608 stress 9.147667e-05 
## ... Procrustes: rmse 0.07037731  max resid 0.4611239 
## Run 609 stress 9.814418e-05 
## ... Procrustes: rmse 0.1298776  max resid 0.6512224 
## Run 610 stress 9.792625e-05 
## ... Procrustes: rmse 0.06775823  max resid 0.4058177 
## Run 611 stress 9.922054e-05 
## ... Procrustes: rmse 0.1105366  max resid 0.6567 
## Run 612 stress 9.808587e-05 
## ... Procrustes: rmse 0.1328431  max resid 0.580406 
## Run 613 stress 9.70446e-05 
## ... Procrustes: rmse 0.1032091  max resid 0.4934845 
## Run 614 stress 9.682873e-05 
## ... Procrustes: rmse 0.09866057  max resid 0.4090073 
## Run 615 stress 9.340482e-05 
## ... Procrustes: rmse 0.1278192  max resid 0.6284036 
## Run 616 stress 9.008675e-05 
## ... Procrustes: rmse 0.04320779  max resid 0.2067014 
## Run 617 stress 9.96567e-05 
## ... Procrustes: rmse 0.1355299  max resid 0.7931075 
## Run 618 stress 9.865454e-05 
## ... Procrustes: rmse 0.1258938  max resid 0.5869102 
## Run 619 stress 9.729902e-05 
## ... Procrustes: rmse 0.1228703  max resid 0.6760514 
## Run 620 stress 9.630671e-05 
## ... Procrustes: rmse 0.1425823  max resid 0.6335766 
## Run 621 stress 9.976381e-05 
## ... Procrustes: rmse 0.1338446  max resid 0.785138 
## Run 622 stress 9.995202e-05 
## ... Procrustes: rmse 0.08386498  max resid 0.4463303 
## Run 623 stress 9.792296e-05 
## ... Procrustes: rmse 0.1132149  max resid 0.5565841 
## Run 624 stress 9.813786e-05 
## ... Procrustes: rmse 0.1270013  max resid 0.7466572 
## Run 625 stress 9.770696e-05 
## ... Procrustes: rmse 0.1290626  max resid 0.6712051 
## Run 626 stress 9.905901e-05 
## ... Procrustes: rmse 0.07160617  max resid 0.3791207 
## Run 627 stress 9.859491e-05 
## ... Procrustes: rmse 0.1243218  max resid 0.7125665 
## Run 628 stress 9.557728e-05 
## ... Procrustes: rmse 0.1052167  max resid 0.490216 
## Run 629 stress 8.958731e-05 
## ... Procrustes: rmse 0.1323714  max resid 0.6667983 
## Run 630 stress 9.927502e-05 
## ... Procrustes: rmse 0.1119094  max resid 0.604455 
## Run 631 stress 9.959904e-05 
## ... Procrustes: rmse 0.1044246  max resid 0.4930839 
## Run 632 stress 9.69455e-05 
## ... Procrustes: rmse 0.124974  max resid 0.6582785 
## Run 633 stress 8.792904e-05 
## ... Procrustes: rmse 0.1029008  max resid 0.5724549 
## Run 634 stress 9.798751e-05 
## ... Procrustes: rmse 0.1174758  max resid 0.6866905 
## Run 635 stress 9.377903e-05 
## ... Procrustes: rmse 0.0673956  max resid 0.3971212 
## Run 636 stress 9.992313e-05 
## ... Procrustes: rmse 0.0842273  max resid 0.4281352 
## Run 637 stress 9.681335e-05 
## ... Procrustes: rmse 0.1414434  max resid 0.7366155 
## Run 638 stress 9.015212e-05 
## ... Procrustes: rmse 0.1399771  max resid 0.697714 
## Run 639 stress 9.884187e-05 
## ... Procrustes: rmse 0.1343093  max resid 0.7807231 
## Run 640 stress 9.729044e-05 
## ... Procrustes: rmse 0.1378763  max resid 0.6217905 
## Run 641 stress 9.627542e-05 
## ... Procrustes: rmse 0.1391784  max resid 0.6746818 
## Run 642 stress 9.663814e-05 
## ... Procrustes: rmse 0.1193416  max resid 0.6217222 
## Run 643 stress 9.604047e-05 
## ... Procrustes: rmse 0.04535572  max resid 0.2254721 
## Run 644 stress 9.551403e-05 
## ... Procrustes: rmse 0.05310827  max resid 0.2612599 
## Run 645 stress 9.672887e-05 
## ... Procrustes: rmse 0.1070268  max resid 0.571504 
## Run 646 stress 8.734239e-05 
## ... Procrustes: rmse 0.1114964  max resid 0.510701 
## Run 647 stress 9.473944e-05 
## ... Procrustes: rmse 0.08237687  max resid 0.3712917 
## Run 648 stress 9.476268e-05 
## ... Procrustes: rmse 0.1352429  max resid 0.6499225 
## Run 649 stress 9.925842e-05 
## ... Procrustes: rmse 0.1015482  max resid 0.5321456 
## Run 650 stress 9.707738e-05 
## ... Procrustes: rmse 0.05734186  max resid 0.2775043 
## Run 651 stress 9.53836e-05 
## ... Procrustes: rmse 0.1198191  max resid 0.6500862 
## Run 652 stress 9.740824e-05 
## ... Procrustes: rmse 0.09413684  max resid 0.4802279 
## Run 653 stress 9.980259e-05 
## ... Procrustes: rmse 0.05491954  max resid 0.3376059 
## Run 654 stress 9.555986e-05 
## ... Procrustes: rmse 0.03799231  max resid 0.2273066 
## Run 655 stress 9.492066e-05 
## ... Procrustes: rmse 0.08817134  max resid 0.4734684 
## Run 656 stress 9.898815e-05 
## ... Procrustes: rmse 0.08697785  max resid 0.4715641 
## Run 657 stress 9.651487e-05 
## ... Procrustes: rmse 0.1340717  max resid 0.5694927 
## Run 658 stress 9.305114e-05 
## ... Procrustes: rmse 0.03930929  max resid 0.1801482 
## Run 659 stress 9.517563e-05 
## ... Procrustes: rmse 0.1117346  max resid 0.5241783 
## Run 660 stress 9.287485e-05 
## ... Procrustes: rmse 0.05339528  max resid 0.2792646 
## Run 661 stress 9.116348e-05 
## ... Procrustes: rmse 0.1137801  max resid 0.5415726 
## Run 662 stress 9.464508e-05 
## ... Procrustes: rmse 0.1380011  max resid 0.6086221 
## Run 663 stress 9.26272e-05 
## ... Procrustes: rmse 0.06267218  max resid 0.3710561 
## Run 664 stress 9.557538e-05 
## ... Procrustes: rmse 0.1232249  max resid 0.7481438 
## Run 665 stress 9.137321e-05 
## ... Procrustes: rmse 0.1137563  max resid 0.4972997 
## Run 666 stress 9.861194e-05 
## ... Procrustes: rmse 0.1244182  max resid 0.770156 
## Run 667 stress 9.804365e-05 
## ... Procrustes: rmse 0.1270159  max resid 0.5662396 
## Run 668 stress 9.761983e-05 
## ... Procrustes: rmse 0.09246013  max resid 0.45416 
## Run 669 stress 9.989299e-05 
## ... Procrustes: rmse 0.1148292  max resid 0.5670815 
## Run 670 stress 9.5316e-05 
## ... Procrustes: rmse 0.1440049  max resid 0.6226963 
## Run 671 stress 9.843586e-05 
## ... Procrustes: rmse 0.06090854  max resid 0.2954206 
## Run 672 stress 9.636976e-05 
## ... Procrustes: rmse 0.1133442  max resid 0.5027111 
## Run 673 stress 9.809108e-05 
## ... Procrustes: rmse 0.09340421  max resid 0.393064 
## Run 674 stress 9.903678e-05 
## ... Procrustes: rmse 0.1275282  max resid 0.7808794 
## Run 675 stress 9.520393e-05 
## ... Procrustes: rmse 0.09987596  max resid 0.6033202 
## Run 676 stress 9.765956e-05 
## ... Procrustes: rmse 0.1354811  max resid 0.5559696 
## Run 677 stress 9.978277e-05 
## ... Procrustes: rmse 0.1156538  max resid 0.6495883 
## Run 678 stress 9.954762e-05 
## ... Procrustes: rmse 0.09435004  max resid 0.5496774 
## Run 679 stress 9.222547e-05 
## ... Procrustes: rmse 0.1289273  max resid 0.5750494 
## Run 680 stress 9.410911e-05 
## ... Procrustes: rmse 0.09192916  max resid 0.359617 
## Run 681 stress 9.831862e-05 
## ... Procrustes: rmse 0.1405583  max resid 0.7552919 
## Run 682 stress 9.221476e-05 
## ... Procrustes: rmse 0.1293048  max resid 0.5972277 
## Run 683 stress 9.628183e-05 
## ... Procrustes: rmse 0.1394401  max resid 0.6039135 
## Run 684 stress 9.4456e-05 
## ... Procrustes: rmse 0.1376464  max resid 0.6874547 
## Run 685 stress 9.61738e-05 
## ... Procrustes: rmse 0.09789341  max resid 0.4675593 
## Run 686 stress 9.518713e-05 
## ... Procrustes: rmse 0.05721292  max resid 0.2835252 
## Run 687 stress 9.732804e-05 
## ... Procrustes: rmse 0.1385187  max resid 0.5780402 
## Run 688 stress 9.799111e-05 
## ... Procrustes: rmse 0.1253338  max resid 0.6210224 
## Run 689 stress 9.959027e-05 
## ... Procrustes: rmse 0.1351567  max resid 0.7181484 
## Run 690 stress 9.457918e-05 
## ... Procrustes: rmse 0.09805558  max resid 0.4493529 
## Run 691 stress 8.782416e-05 
## ... Procrustes: rmse 0.1232156  max resid 0.5943609 
## Run 692 stress 9.681283e-05 
## ... Procrustes: rmse 0.09108869  max resid 0.5163907 
## Run 693 stress 9.592978e-05 
## ... Procrustes: rmse 0.1237508  max resid 0.5249113 
## Run 694 stress 9.959002e-05 
## ... Procrustes: rmse 0.07657839  max resid 0.4268617 
## Run 695 stress 9.598795e-05 
## ... Procrustes: rmse 0.114142  max resid 0.5313419 
## Run 696 stress 9.547759e-05 
## ... Procrustes: rmse 0.1097565  max resid 0.6275924 
## Run 697 stress 9.416887e-05 
## ... Procrustes: rmse 0.08362033  max resid 0.4231884 
## Run 698 stress 9.504613e-05 
## ... Procrustes: rmse 0.09443533  max resid 0.4282344 
## Run 699 stress 9.632469e-05 
## ... Procrustes: rmse 0.08587389  max resid 0.4841768 
## Run 700 stress 9.67118e-05 
## ... Procrustes: rmse 0.1298668  max resid 0.5957182 
## Run 701 stress 9.614144e-05 
## ... Procrustes: rmse 0.09997794  max resid 0.5236056 
## Run 702 stress 9.962519e-05 
## ... Procrustes: rmse 0.143687  max resid 0.6297608 
## Run 703 stress 9.205282e-05 
## ... Procrustes: rmse 0.1434605  max resid 0.6962279 
## Run 704 stress 9.442607e-05 
## ... Procrustes: rmse 0.1207801  max resid 0.703923 
## Run 705 stress 9.843e-05 
## ... Procrustes: rmse 0.05625562  max resid 0.2263776 
## Run 706 stress 9.582724e-05 
## ... Procrustes: rmse 0.09589767  max resid 0.493651 
## Run 707 stress 9.736778e-05 
## ... Procrustes: rmse 0.0498582  max resid 0.2912317 
## Run 708 stress 9.566344e-05 
## ... Procrustes: rmse 0.07245212  max resid 0.4417438 
## Run 709 stress 9.427668e-05 
## ... Procrustes: rmse 0.1333734  max resid 0.698421 
## Run 710 stress 9.636061e-05 
## ... Procrustes: rmse 0.1407683  max resid 0.700883 
## Run 711 stress 9.157082e-05 
## ... Procrustes: rmse 0.1458508  max resid 0.6672982 
## Run 712 stress 9.92656e-05 
## ... Procrustes: rmse 0.1141025  max resid 0.5150569 
## Run 713 stress 9.599986e-05 
## ... Procrustes: rmse 0.06416048  max resid 0.3217215 
## Run 714 stress 9.274842e-05 
## ... Procrustes: rmse 0.07135266  max resid 0.3393882 
## Run 715 stress 9.7006e-05 
## ... Procrustes: rmse 0.0901683  max resid 0.4622043 
## Run 716 stress 9.715816e-05 
## ... Procrustes: rmse 0.1054946  max resid 0.5868932 
## Run 717 stress 9.06722e-05 
## ... Procrustes: rmse 0.1350854  max resid 0.7900781 
## Run 718 stress 9.253644e-05 
## ... Procrustes: rmse 0.1354946  max resid 0.7839159 
## Run 719 stress 9.615045e-05 
## ... Procrustes: rmse 0.1243483  max resid 0.576684 
## Run 720 stress 9.675546e-05 
## ... Procrustes: rmse 0.1016316  max resid 0.5679596 
## Run 721 stress 9.933271e-05 
## ... Procrustes: rmse 0.05993782  max resid 0.2680298 
## Run 722 stress 9.938873e-05 
## ... Procrustes: rmse 0.1317647  max resid 0.6059432 
## Run 723 stress 9.784924e-05 
## ... Procrustes: rmse 0.1082456  max resid 0.4610153 
## Run 724 stress 9.512046e-05 
## ... Procrustes: rmse 0.09358541  max resid 0.4936686 
## Run 725 stress 9.98445e-05 
## ... Procrustes: rmse 0.1327389  max resid 0.7945093 
## Run 726 stress 8.573032e-05 
## ... Procrustes: rmse 0.1404365  max resid 0.5570388 
## Run 727 stress 9.593559e-05 
## ... Procrustes: rmse 0.09628469  max resid 0.513597 
## Run 728 stress 9.902931e-05 
## ... Procrustes: rmse 0.1362928  max resid 0.6134877 
## Run 729 stress 9.903558e-05 
## ... Procrustes: rmse 0.131589  max resid 0.6247477 
## Run 730 stress 9.319911e-05 
## ... Procrustes: rmse 0.1104579  max resid 0.534672 
## Run 731 stress 9.61351e-05 
## ... Procrustes: rmse 0.1291341  max resid 0.7053398 
## Run 732 stress 8.944801e-05 
## ... Procrustes: rmse 0.1297578  max resid 0.6442252 
## Run 733 stress 9.722636e-05 
## ... Procrustes: rmse 0.1261324  max resid 0.6581049 
## Run 734 stress 9.82441e-05 
## ... Procrustes: rmse 0.1180803  max resid 0.6539671 
## Run 735 stress 9.966186e-05 
## ... Procrustes: rmse 0.09357231  max resid 0.5051585 
## Run 736 stress 9.563635e-05 
## ... Procrustes: rmse 0.09130412  max resid 0.5328884 
## Run 737 stress 9.902831e-05 
## ... Procrustes: rmse 0.1322632  max resid 0.6648395 
## Run 738 stress 9.76834e-05 
## ... Procrustes: rmse 0.1040306  max resid 0.5496079 
## Run 739 stress 9.545106e-05 
## ... Procrustes: rmse 0.1263152  max resid 0.6288086 
## Run 740 stress 9.855876e-05 
## ... Procrustes: rmse 0.1150043  max resid 0.6024184 
## Run 741 stress 9.167403e-05 
## ... Procrustes: rmse 0.1145222  max resid 0.6226112 
## Run 742 stress 8.423409e-05 
## ... Procrustes: rmse 0.07679451  max resid 0.372045 
## Run 743 stress 9.368884e-05 
## ... Procrustes: rmse 0.1065192  max resid 0.5760895 
## Run 744 stress 9.663461e-05 
## ... Procrustes: rmse 0.04109072  max resid 0.1791786 
## Run 745 stress 9.631974e-05 
## ... Procrustes: rmse 0.1210158  max resid 0.7296302 
## Run 746 stress 8.987655e-05 
## ... Procrustes: rmse 0.1145174  max resid 0.7222387 
## Run 747 stress 9.595166e-05 
## ... Procrustes: rmse 0.1370067  max resid 0.5881774 
## Run 748 stress 9.649167e-05 
## ... Procrustes: rmse 0.07845759  max resid 0.3561024 
## Run 749 stress 9.946206e-05 
## ... Procrustes: rmse 0.1054646  max resid 0.5353367 
## Run 750 stress 9.802265e-05 
## ... Procrustes: rmse 0.02677142  max resid 0.1608552 
## Run 751 stress 9.875694e-05 
## ... Procrustes: rmse 0.1170022  max resid 0.5724296 
## Run 752 stress 9.867956e-05 
## ... Procrustes: rmse 0.09089277  max resid 0.3739679 
## Run 753 stress 9.815915e-05 
## ... Procrustes: rmse 0.0806082  max resid 0.4894387 
## Run 754 stress 9.717464e-05 
## ... Procrustes: rmse 0.09781562  max resid 0.4564429 
## Run 755 stress 9.671177e-05 
## ... Procrustes: rmse 0.09258534  max resid 0.437357 
## Run 756 stress 9.87009e-05 
## ... Procrustes: rmse 0.1012492  max resid 0.494571 
## Run 757 stress 9.836662e-05 
## ... Procrustes: rmse 0.1280885  max resid 0.7568481 
## Run 758 stress 9.429583e-05 
## ... Procrustes: rmse 0.1439615  max resid 0.6894816 
## Run 759 stress 9.638995e-05 
## ... Procrustes: rmse 0.1442288  max resid 0.7001137 
## Run 760 stress 9.917723e-05 
## ... Procrustes: rmse 0.1367497  max resid 0.769666 
## Run 761 stress 9.877502e-05 
## ... Procrustes: rmse 0.02238613  max resid 0.1208209 
## Run 762 stress 9.628311e-05 
## ... Procrustes: rmse 0.1289843  max resid 0.6588702 
## Run 763 stress 9.570755e-05 
## ... Procrustes: rmse 0.0843576  max resid 0.4498155 
## Run 764 stress 9.103642e-05 
## ... Procrustes: rmse 0.08101088  max resid 0.4333617 
## Run 765 stress 9.804965e-05 
## ... Procrustes: rmse 0.09124825  max resid 0.4392755 
## Run 766 stress 9.324633e-05 
## ... Procrustes: rmse 0.09688222  max resid 0.4962959 
## Run 767 stress 9.825588e-05 
## ... Procrustes: rmse 0.1049223  max resid 0.4841434 
## Run 768 stress 9.997939e-05 
## ... Procrustes: rmse 0.05820292  max resid 0.304606 
## Run 769 stress 9.996223e-05 
## ... Procrustes: rmse 0.1295669  max resid 0.7590337 
## Run 770 stress 9.893217e-05 
## ... Procrustes: rmse 0.1429261  max resid 0.6903853 
## Run 771 stress 9.537709e-05 
## ... Procrustes: rmse 0.1347833  max resid 0.7288972 
## Run 772 stress 9.624345e-05 
## ... Procrustes: rmse 0.05777076  max resid 0.2753537 
## Run 773 stress 9.133759e-05 
## ... Procrustes: rmse 0.1407702  max resid 0.7041245 
## Run 774 stress 9.961427e-05 
## ... Procrustes: rmse 0.1437755  max resid 0.628431 
## Run 775 stress 9.689419e-05 
## ... Procrustes: rmse 0.1179369  max resid 0.6322189 
## Run 776 stress 9.898808e-05 
## ... Procrustes: rmse 0.1450749  max resid 0.6783624 
## Run 777 stress 9.882346e-05 
## ... Procrustes: rmse 0.1094261  max resid 0.5686575 
## Run 778 stress 9.122431e-05 
## ... Procrustes: rmse 0.09074195  max resid 0.5621816 
## Run 779 stress 9.504637e-05 
## ... Procrustes: rmse 0.1100704  max resid 0.4861888 
## Run 780 stress 9.875853e-05 
## ... Procrustes: rmse 0.1090203  max resid 0.4956415 
## Run 781 stress 9.711889e-05 
## ... Procrustes: rmse 0.143052  max resid 0.6820583 
## Run 782 stress 9.909684e-05 
## ... Procrustes: rmse 0.1283345  max resid 0.6281022 
## Run 783 stress 9.370745e-05 
## ... Procrustes: rmse 0.1147505  max resid 0.702654 
## Run 784 stress 9.782632e-05 
## ... Procrustes: rmse 0.1245958  max resid 0.5456474 
## Run 785 stress 9.823352e-05 
## ... Procrustes: rmse 0.1301148  max resid 0.6415377 
## Run 786 stress 9.642036e-05 
## ... Procrustes: rmse 0.09016173  max resid 0.4857513 
## Run 787 stress 9.670199e-05 
## ... Procrustes: rmse 0.1135688  max resid 0.5471167 
## Run 788 stress 9.776228e-05 
## ... Procrustes: rmse 0.09032988  max resid 0.4999749 
## Run 789 stress 9.874534e-05 
## ... Procrustes: rmse 0.1389272  max resid 0.7536412 
## Run 790 stress 9.696878e-05 
## ... Procrustes: rmse 0.1163212  max resid 0.5518241 
## Run 791 stress 9.435979e-05 
## ... Procrustes: rmse 0.1346683  max resid 0.6860881 
## Run 792 stress 9.383225e-05 
## ... Procrustes: rmse 0.1238  max resid 0.5977472 
## Run 793 stress 9.990599e-05 
## ... Procrustes: rmse 0.1217383  max resid 0.5187998 
## Run 794 stress 9.930151e-05 
## ... Procrustes: rmse 0.1294581  max resid 0.6244489 
## Run 795 stress 9.7106e-05 
## ... Procrustes: rmse 0.05940677  max resid 0.3017585 
## Run 796 stress 9.660162e-05 
## ... Procrustes: rmse 0.1407313  max resid 0.5904714 
## Run 797 stress 9.935062e-05 
## ... Procrustes: rmse 0.1391197  max resid 0.6468576 
## Run 798 stress 9.596629e-05 
## ... Procrustes: rmse 0.04666548  max resid 0.2468838 
## Run 799 stress 9.836388e-05 
## ... Procrustes: rmse 0.03333808  max resid 0.1539942 
## Run 800 stress 9.706608e-05 
## ... Procrustes: rmse 0.1311621  max resid 0.7503785 
## Run 801 stress 9.273051e-05 
## ... Procrustes: rmse 0.1227645  max resid 0.6327246 
## Run 802 stress 9.550858e-05 
## ... Procrustes: rmse 0.1380818  max resid 0.6444401 
## Run 803 stress 9.57952e-05 
## ... Procrustes: rmse 0.1366577  max resid 0.7181241 
## Run 804 stress 9.786985e-05 
## ... Procrustes: rmse 0.07370557  max resid 0.3400542 
## Run 805 stress 9.661437e-05 
## ... Procrustes: rmse 0.1095421  max resid 0.4920785 
## Run 806 stress 8.81043e-05 
## ... Procrustes: rmse 0.08748883  max resid 0.4562728 
## Run 807 stress 9.442306e-05 
## ... Procrustes: rmse 0.06263837  max resid 0.3214455 
## Run 808 stress 9.947041e-05 
## ... Procrustes: rmse 0.14283  max resid 0.6058801 
## Run 809 stress 9.706409e-05 
## ... Procrustes: rmse 0.138917  max resid 0.6585785 
## Run 810 stress 9.064466e-05 
## ... Procrustes: rmse 0.1157008  max resid 0.5858784 
## Run 811 stress 9.799241e-05 
## ... Procrustes: rmse 0.1271243  max resid 0.6191473 
## Run 812 stress 9.930651e-05 
## ... Procrustes: rmse 0.1333005  max resid 0.7832014 
## Run 813 stress 9.949341e-05 
## ... Procrustes: rmse 0.04504434  max resid 0.2816401 
## Run 814 stress 9.955029e-05 
## ... Procrustes: rmse 0.09954865  max resid 0.6406672 
## Run 815 stress 9.981566e-05 
## ... Procrustes: rmse 0.05816335  max resid 0.3233207 
## Run 816 stress 9.616108e-05 
## ... Procrustes: rmse 0.1404865  max resid 0.5793235 
## Run 817 stress 9.228295e-05 
## ... Procrustes: rmse 0.1020766  max resid 0.5072579 
## Run 818 stress 9.654968e-05 
## ... Procrustes: rmse 0.06505342  max resid 0.334393 
## Run 819 stress 9.714531e-05 
## ... Procrustes: rmse 0.1302643  max resid 0.6200475 
## Run 820 stress 9.954058e-05 
## ... Procrustes: rmse 0.1178515  max resid 0.7029164 
## Run 821 stress 9.45358e-05 
## ... Procrustes: rmse 0.1330742  max resid 0.6261921 
## Run 822 stress 9.158167e-05 
## ... Procrustes: rmse 0.1074027  max resid 0.513189 
## Run 823 stress 9.964302e-05 
## ... Procrustes: rmse 0.04988628  max resid 0.2013648 
## Run 824 stress 9.96272e-05 
## ... Procrustes: rmse 0.131255  max resid 0.7257421 
## Run 825 stress 9.858113e-05 
## ... Procrustes: rmse 0.1180405  max resid 0.5700352 
## Run 826 stress 9.826171e-05 
## ... Procrustes: rmse 0.1436397  max resid 0.6248295 
## Run 827 stress 9.809668e-05 
## ... Procrustes: rmse 0.1241264  max resid 0.5515244 
## Run 828 stress 9.463335e-05 
## ... Procrustes: rmse 0.1283708  max resid 0.6812575 
## Run 829 stress 9.959823e-05 
## ... Procrustes: rmse 0.04746721  max resid 0.2708095 
## Run 830 stress 9.390365e-05 
## ... Procrustes: rmse 0.03511227  max resid 0.1688559 
## Run 831 stress 9.995108e-05 
## ... Procrustes: rmse 0.125478  max resid 0.6387202 
## Run 832 stress 9.910168e-05 
## ... Procrustes: rmse 0.1227142  max resid 0.649958 
## Run 833 stress 9.336541e-05 
## ... Procrustes: rmse 0.1301941  max resid 0.7096378 
## Run 834 stress 9.406049e-05 
## ... Procrustes: rmse 0.05573204  max resid 0.2609423 
## Run 835 stress 9.428598e-05 
## ... Procrustes: rmse 0.1017806  max resid 0.4821233 
## Run 836 stress 9.674173e-05 
## ... Procrustes: rmse 0.1177259  max resid 0.491613 
## Run 837 stress 9.223996e-05 
## ... Procrustes: rmse 0.09521847  max resid 0.4762516 
## Run 838 stress 9.142992e-05 
## ... Procrustes: rmse 0.07610669  max resid 0.3533936 
## Run 839 stress 9.783934e-05 
## ... Procrustes: rmse 0.1328407  max resid 0.5364382 
## Run 840 stress 9.363345e-05 
## ... Procrustes: rmse 0.03564709  max resid 0.1755501 
## Run 841 stress 9.72452e-05 
## ... Procrustes: rmse 0.1035789  max resid 0.4895084 
## Run 842 stress 9.674679e-05 
## ... Procrustes: rmse 0.08697928  max resid 0.5279133 
## Run 843 stress 9.005208e-05 
## ... Procrustes: rmse 0.1429296  max resid 0.698603 
## Run 844 stress 9.436867e-05 
## ... Procrustes: rmse 0.05006419  max resid 0.2719386 
## Run 845 stress 9.573644e-05 
## ... Procrustes: rmse 0.1419455  max resid 0.6341543 
## Run 846 stress 9.85203e-05 
## ... Procrustes: rmse 0.1219465  max resid 0.6213666 
## Run 847 stress 9.989744e-05 
## ... Procrustes: rmse 0.1071443  max resid 0.5559819 
## Run 848 stress 9.4511e-05 
## ... Procrustes: rmse 0.131838  max resid 0.6339063 
## Run 849 stress 9.791976e-05 
## ... Procrustes: rmse 0.05782042  max resid 0.2969143 
## Run 850 stress 9.534178e-05 
## ... Procrustes: rmse 0.03948838  max resid 0.2194461 
## Run 851 stress 9.353074e-05 
## ... Procrustes: rmse 0.1426585  max resid 0.6400454 
## Run 852 stress 9.94642e-05 
## ... Procrustes: rmse 0.1251465  max resid 0.5860678 
## Run 853 stress 9.576043e-05 
## ... Procrustes: rmse 0.1187153  max resid 0.6046834 
## Run 854 stress 9.999346e-05 
## ... Procrustes: rmse 0.1237698  max resid 0.6412577 
## Run 855 stress 9.85182e-05 
## ... Procrustes: rmse 0.1078151  max resid 0.5689577 
## Run 856 stress 9.604858e-05 
## ... Procrustes: rmse 0.107148  max resid 0.4385674 
## Run 857 stress 9.772599e-05 
## ... Procrustes: rmse 0.1080073  max resid 0.4755259 
## Run 858 stress 9.914702e-05 
## ... Procrustes: rmse 0.06917067  max resid 0.322591 
## Run 859 stress 9.782229e-05 
## ... Procrustes: rmse 0.09058312  max resid 0.4468527 
## Run 860 stress 8.646194e-05 
## ... Procrustes: rmse 0.1433234  max resid 0.6608161 
## Run 861 stress 9.697472e-05 
## ... Procrustes: rmse 0.1284275  max resid 0.6928261 
## Run 862 stress 9.98277e-05 
## ... Procrustes: rmse 0.1256653  max resid 0.5597088 
## Run 863 stress 9.678636e-05 
## ... Procrustes: rmse 0.1426693  max resid 0.6515759 
## Run 864 stress 9.554467e-05 
## ... Procrustes: rmse 0.1120776  max resid 0.4707165 
## Run 865 stress 9.022261e-05 
## ... Procrustes: rmse 0.1389855  max resid 0.7612314 
## Run 866 stress 9.879704e-05 
## ... Procrustes: rmse 0.1193446  max resid 0.5258649 
## Run 867 stress 9.730595e-05 
## ... Procrustes: rmse 0.1324918  max resid 0.6814864 
## Run 868 stress 8.831671e-05 
## ... Procrustes: rmse 0.1133296  max resid 0.6370265 
## Run 869 stress 9.968364e-05 
## ... Procrustes: rmse 0.0875287  max resid 0.4400494 
## Run 870 stress 9.498867e-05 
## ... Procrustes: rmse 0.1317917  max resid 0.7772521 
## Run 871 stress 9.376669e-05 
## ... Procrustes: rmse 0.09159746  max resid 0.432867 
## Run 872 stress 9.575369e-05 
## ... Procrustes: rmse 0.1227651  max resid 0.5846033 
## Run 873 stress 9.527452e-05 
## ... Procrustes: rmse 0.1437952  max resid 0.6689977 
## Run 874 stress 9.156608e-05 
## ... Procrustes: rmse 0.1316002  max resid 0.7405265 
## Run 875 stress 9.782739e-05 
## ... Procrustes: rmse 0.1158815  max resid 0.6076898 
## Run 876 stress 9.99084e-05 
## ... Procrustes: rmse 0.07663131  max resid 0.3693731 
## Run 877 stress 9.701722e-05 
## ... Procrustes: rmse 0.130067  max resid 0.7405159 
## Run 878 stress 9.929993e-05 
## ... Procrustes: rmse 0.07292367  max resid 0.4142107 
## Run 879 stress 9.833307e-05 
## ... Procrustes: rmse 0.133924  max resid 0.5745054 
## Run 880 stress 9.496949e-05 
## ... Procrustes: rmse 0.1137712  max resid 0.586138 
## Run 881 stress 9.398945e-05 
## ... Procrustes: rmse 0.08890154  max resid 0.4411269 
## Run 882 stress 9.827678e-05 
## ... Procrustes: rmse 0.1060687  max resid 0.6077091 
## Run 883 stress 9.899508e-05 
## ... Procrustes: rmse 0.1344344  max resid 0.7925295 
## Run 884 stress 9.112388e-05 
## ... Procrustes: rmse 0.1440546  max resid 0.62579 
## Run 885 stress 9.405819e-05 
## ... Procrustes: rmse 0.1427184  max resid 0.6392512 
## Run 886 stress 8.810252e-05 
## ... Procrustes: rmse 0.14119  max resid 0.6737043 
## Run 887 stress 9.760382e-05 
## ... Procrustes: rmse 0.1442898  max resid 0.6569634 
## Run 888 stress 9.785725e-05 
## ... Procrustes: rmse 0.1367859  max resid 0.6277682 
## Run 889 stress 9.562961e-05 
## ... Procrustes: rmse 0.06621321  max resid 0.3275121 
## Run 890 stress 9.042246e-05 
## ... Procrustes: rmse 0.08707446  max resid 0.4929428 
## Run 891 stress 9.498124e-05 
## ... Procrustes: rmse 0.04103255  max resid 0.1947284 
## Run 892 stress 9.390253e-05 
## ... Procrustes: rmse 0.1376842  max resid 0.6695542 
## Run 893 stress 9.807549e-05 
## ... Procrustes: rmse 0.1387494  max resid 0.5963905 
## Run 894 stress 9.794045e-05 
## ... Procrustes: rmse 0.1421816  max resid 0.6563714 
## Run 895 stress 9.650132e-05 
## ... Procrustes: rmse 0.09306642  max resid 0.4366679 
## Run 896 stress 9.841537e-05 
## ... Procrustes: rmse 0.1041043  max resid 0.570329 
## Run 897 stress 9.39598e-05 
## ... Procrustes: rmse 0.09372343  max resid 0.5044934 
## Run 898 stress 9.307183e-05 
## ... Procrustes: rmse 0.08670133  max resid 0.44846 
## Run 899 stress 9.459758e-05 
## ... Procrustes: rmse 0.1359789  max resid 0.651303 
## Run 900 stress 9.486967e-05 
## ... Procrustes: rmse 0.08270721  max resid 0.4303468 
## Run 901 stress 9.894443e-05 
## ... Procrustes: rmse 0.08693301  max resid 0.4462103 
## Run 902 stress 9.512611e-05 
## ... Procrustes: rmse 0.04522248  max resid 0.2077338 
## Run 903 stress 9.42214e-05 
## ... Procrustes: rmse 0.1322257  max resid 0.7080454 
## Run 904 stress 8.917817e-05 
## ... Procrustes: rmse 0.1453637  max resid 0.6892364 
## Run 905 stress 9.559766e-05 
## ... Procrustes: rmse 0.07233235  max resid 0.3651588 
## Run 906 stress 9.194773e-05 
## ... Procrustes: rmse 0.08912292  max resid 0.4095563 
## Run 907 stress 9.651178e-05 
## ... Procrustes: rmse 0.03398072  max resid 0.1387391 
## Run 908 stress 9.919211e-05 
## ... Procrustes: rmse 0.107781  max resid 0.6060931 
## Run 909 stress 9.637196e-05 
## ... Procrustes: rmse 0.1007212  max resid 0.5474282 
## Run 910 stress 9.301656e-05 
## ... Procrustes: rmse 0.1210905  max resid 0.6525515 
## Run 911 stress 9.016523e-05 
## ... Procrustes: rmse 0.1434523  max resid 0.6322782 
## Run 912 stress 9.495537e-05 
## ... Procrustes: rmse 0.1264605  max resid 0.5889615 
## Run 913 stress 9.891339e-05 
## ... Procrustes: rmse 0.1053062  max resid 0.5061057 
## Run 914 stress 9.813857e-05 
## ... Procrustes: rmse 0.05196476  max resid 0.2892624 
## Run 915 stress 9.760568e-05 
## ... Procrustes: rmse 0.1382354  max resid 0.7422587 
## Run 916 stress 9.596921e-05 
## ... Procrustes: rmse 0.1136743  max resid 0.4865001 
## Run 917 stress 9.856987e-05 
## ... Procrustes: rmse 0.1169744  max resid 0.5717189 
## Run 918 stress 9.410758e-05 
## ... Procrustes: rmse 0.1173394  max resid 0.6698417 
## Run 919 stress 9.422597e-05 
## ... Procrustes: rmse 0.06126961  max resid 0.2623502 
## Run 920 stress 9.532282e-05 
## ... Procrustes: rmse 0.1287214  max resid 0.6691233 
## Run 921 stress 9.759369e-05 
## ... Procrustes: rmse 0.1445613  max resid 0.6282268 
## Run 922 stress 9.264865e-05 
## ... Procrustes: rmse 0.1101157  max resid 0.5282698 
## Run 923 stress 9.624759e-05 
## ... Procrustes: rmse 0.138738  max resid 0.7386304 
## Run 924 stress 9.749395e-05 
## ... Procrustes: rmse 0.1209386  max resid 0.5904118 
## Run 925 stress 9.614679e-05 
## ... Procrustes: rmse 0.09457725  max resid 0.5467725 
## Run 926 stress 9.202379e-05 
## ... Procrustes: rmse 0.1160208  max resid 0.5518938 
## Run 927 stress 9.704556e-05 
## ... Procrustes: rmse 0.08856657  max resid 0.4419517 
## Run 928 stress 9.746201e-05 
## ... Procrustes: rmse 0.06734452  max resid 0.3090197 
## Run 929 stress 9.921994e-05 
## ... Procrustes: rmse 0.125745  max resid 0.54857 
## Run 930 stress 9.941541e-05 
## ... Procrustes: rmse 0.08553617  max resid 0.5175357 
## Run 931 stress 9.438474e-05 
## ... Procrustes: rmse 0.1371404  max resid 0.5986602 
## Run 932 stress 9.884396e-05 
## ... Procrustes: rmse 0.116245  max resid 0.4763903 
## Run 933 stress 9.979167e-05 
## ... Procrustes: rmse 0.1142401  max resid 0.5190099 
## Run 934 stress 9.239917e-05 
## ... Procrustes: rmse 0.1179729  max resid 0.5817208 
## Run 935 stress 9.726349e-05 
## ... Procrustes: rmse 0.06230883  max resid 0.3516136 
## Run 936 stress 9.194965e-05 
## ... Procrustes: rmse 0.1398802  max resid 0.6399242 
## Run 937 stress 9.810267e-05 
## ... Procrustes: rmse 0.04115051  max resid 0.2315015 
## Run 938 stress 9.827662e-05 
## ... Procrustes: rmse 0.09592652  max resid 0.4483335 
## Run 939 stress 9.917031e-05 
## ... Procrustes: rmse 0.07598793  max resid 0.4294538 
## Run 940 stress 9.984775e-05 
## ... Procrustes: rmse 0.1081412  max resid 0.5812286 
## Run 941 stress 9.796303e-05 
## ... Procrustes: rmse 0.1298068  max resid 0.6148063 
## Run 942 stress 9.812394e-05 
## ... Procrustes: rmse 0.1316213  max resid 0.6475278 
## Run 943 stress 9.616326e-05 
## ... Procrustes: rmse 0.08787881  max resid 0.4562389 
## Run 944 stress 9.633935e-05 
## ... Procrustes: rmse 0.1286841  max resid 0.6417467 
## Run 945 stress 9.820455e-05 
## ... Procrustes: rmse 0.1255771  max resid 0.5540498 
## Run 946 stress 9.58859e-05 
## ... Procrustes: rmse 0.08494858  max resid 0.4333278 
## Run 947 stress 9.46252e-05 
## ... Procrustes: rmse 0.134758  max resid 0.68509 
## Run 948 stress 9.148822e-05 
## ... Procrustes: rmse 0.1427307  max resid 0.7188752 
## Run 949 stress 9.280184e-05 
## ... Procrustes: rmse 0.1203198  max resid 0.5679255 
## Run 950 stress 9.065377e-05 
## ... Procrustes: rmse 0.1261904  max resid 0.5784626 
## Run 951 stress 9.489855e-05 
## ... Procrustes: rmse 0.1423109  max resid 0.5816855 
## Run 952 stress 9.46057e-05 
## ... Procrustes: rmse 0.1061747  max resid 0.5733851 
## Run 953 stress 9.703349e-05 
## ... Procrustes: rmse 0.1154932  max resid 0.5844506 
## Run 954 stress 9.86154e-05 
## ... Procrustes: rmse 0.1007879  max resid 0.5618952 
## Run 955 stress 9.976062e-05 
## ... Procrustes: rmse 0.1133081  max resid 0.6195598 
## Run 956 stress 9.957872e-05 
## ... Procrustes: rmse 0.02579664  max resid 0.1085732 
## Run 957 stress 9.882727e-05 
## ... Procrustes: rmse 0.1071937  max resid 0.6073372 
## Run 958 stress 9.692647e-05 
## ... Procrustes: rmse 0.1334241  max resid 0.5589173 
## Run 959 stress 9.943794e-05 
## ... Procrustes: rmse 0.126224  max resid 0.5484232 
## Run 960 stress 9.64754e-05 
## ... Procrustes: rmse 0.1319253  max resid 0.6365642 
## Run 961 stress 9.820125e-05 
## ... Procrustes: rmse 0.07339253  max resid 0.3648639 
## Run 962 stress 7.229357e-05 
## ... New best solution
## ... Procrustes: rmse 0.1195022  max resid 0.6330615 
## Run 963 stress 9.619245e-05 
## ... Procrustes: rmse 0.119586  max resid 0.642231 
## Run 964 stress 9.608804e-05 
## ... Procrustes: rmse 0.1306753  max resid 0.6686307 
## Run 965 stress 9.98396e-05 
## ... Procrustes: rmse 0.1327542  max resid 0.628649 
## Run 966 stress 9.824598e-05 
## ... Procrustes: rmse 0.07701028  max resid 0.4581597 
## Run 967 stress 9.470024e-05 
## ... Procrustes: rmse 0.05166974  max resid 0.2487532 
## Run 968 stress 9.838355e-05 
## ... Procrustes: rmse 0.09593451  max resid 0.4150594 
## Run 969 stress 9.687099e-05 
## ... Procrustes: rmse 0.1085058  max resid 0.51413 
## Run 970 stress 9.720692e-05 
## ... Procrustes: rmse 0.1106491  max resid 0.5367901 
## Run 971 stress 9.779112e-05 
## ... Procrustes: rmse 0.09715535  max resid 0.5289982 
## Run 972 stress 9.70299e-05 
## ... Procrustes: rmse 0.118105  max resid 0.50269 
## Run 973 stress 9.332147e-05 
## ... Procrustes: rmse 0.1093494  max resid 0.4878376 
## Run 974 stress 9.997872e-05 
## ... Procrustes: rmse 0.1292351  max resid 0.580801 
## Run 975 stress 9.611434e-05 
## ... Procrustes: rmse 0.1086579  max resid 0.5237937 
## Run 976 stress 9.867881e-05 
## ... Procrustes: rmse 0.126438  max resid 0.6927411 
## Run 977 stress 8.938787e-05 
## ... Procrustes: rmse 0.07292716  max resid 0.4308419 
## Run 978 stress 9.774227e-05 
## ... Procrustes: rmse 0.1332251  max resid 0.5506737 
## Run 979 stress 9.821674e-05 
## ... Procrustes: rmse 0.06077253  max resid 0.2804834 
## Run 980 stress 9.90532e-05 
## ... Procrustes: rmse 0.08686582  max resid 0.4630577 
## Run 981 stress 8.993395e-05 
## ... Procrustes: rmse 0.1010706  max resid 0.5622036 
## Run 982 stress 9.540147e-05 
## ... Procrustes: rmse 0.106592  max resid 0.5340276 
## Run 983 stress 9.994062e-05 
## ... Procrustes: rmse 0.1253104  max resid 0.6654489 
## Run 984 stress 9.790161e-05 
## ... Procrustes: rmse 0.08233517  max resid 0.3950112 
## Run 985 stress 9.331986e-05 
## ... Procrustes: rmse 0.05442191  max resid 0.2577177 
## Run 986 stress 9.733496e-05 
## ... Procrustes: rmse 0.122606  max resid 0.6128088 
## Run 987 stress 9.163111e-05 
## ... Procrustes: rmse 0.1261904  max resid 0.6039626 
## Run 988 stress 9.507128e-05 
## ... Procrustes: rmse 0.07545072  max resid 0.4787759 
## Run 989 stress 9.927224e-05 
## ... Procrustes: rmse 0.1292429  max resid 0.5414162 
## Run 990 stress 9.550689e-05 
## ... Procrustes: rmse 0.1014061  max resid 0.5349006 
## Run 991 stress 9.366558e-05 
## ... Procrustes: rmse 0.1194979  max resid 0.6278103 
## Run 992 stress 9.567026e-05 
## ... Procrustes: rmse 0.1285295  max resid 0.6842082 
## Run 993 stress 9.189494e-05 
## ... Procrustes: rmse 0.1135553  max resid 0.5062501 
## Run 994 stress 9.357012e-05 
## ... Procrustes: rmse 0.133799  max resid 0.6807082 
## Run 995 stress 9.75015e-05 
## ... Procrustes: rmse 0.1325859  max resid 0.6559115 
## Run 996 stress 8.780842e-05 
## ... Procrustes: rmse 0.0534672  max resid 0.2777782 
## Run 997 stress 9.909493e-05 
## ... Procrustes: rmse 0.1070371  max resid 0.5085635 
## Run 998 stress 8.525977e-05 
## ... Procrustes: rmse 0.06669069  max resid 0.3367896 
## Run 999 stress 9.037163e-05 
## ... Procrustes: rmse 0.1129424  max resid 0.492407 
## *** Best solution was not repeated -- monoMDS stopping criteria:
##    999: stress < smin
Fishcytb_NMDSmodel
## 
## Call:
## metaMDS(comm = Fishcytb_wide_simple, distance = "bray", trymax = 999) 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     Fishcytb_wide_simple 
## Distance: bray 
## 
## Dimensions: 2 
## Stress:     7.229357e-05 
## Stress type 1, weak ties
## Best solution was not repeated after 999 tries
## The best solution was from try 962 (random start)
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'Fishcytb_wide_simple'

get datascores

Fishcytb.data.scores<-scores(Fishcytb_NMDSmodel,display="sites")
Fishcytb.data.scores<- as.data.frame(Fishcytb.data.scores)

add environmental variables back in

# Extract the first 5 columns from df1
first_5_columns <- Fishcytb_wide[, 1:4]

# Combine the first 5 columns from df1 with df2
Fishcytb.data.scores <- cbind(first_5_columns, Fishcytb.data.scores)

plot NMDS

plot datascores

xx <- ggplot(Fishcytb.data.scores, aes(x = NMDS1, y = NMDS2,colour = station)) +geom_point(aes(colour = station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+scale_x_continuous(limits = c(-30, -20))+scale_y_continuous(limits = c(60, 70))
  
xx

for the plot I had to zoom way in, because there were 3 outliers. I think there isn’t enough data for nmds here

extract hulls

unique(Fishcytb.data.scores$station)
## [1] P12  P22  P28  P38  P402 P4   P8  
## Levels: P12 P22 P28 P38 P4 P402 P8
P12 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P12", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station ==                                                           "P12", c("NMDS1", "NMDS2")]), ]  
P22 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P22", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station ==                                                           "P22", c("NMDS1", "NMDS2")]), ]  
P28 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P28", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station ==                                                           "P28", c("NMDS1", "NMDS2")]), ]
P38 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P38", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station ==                                                           "P38", c("NMDS1", "NMDS2")]), ]  
P4 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P4", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station ==                                                           "P4", c("NMDS1", "NMDS2")]), ]  
P402 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P402", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station ==                                                           "P402", c("NMDS1", "NMDS2")]), ]  
P8 <- Fishcytb.data.scores[Fishcytb.data.scores$station == "P8", ][chull(Fishcytb.data.scores[Fishcytb.data.scores$station ==                                                           "P8", c("NMDS1", "NMDS2")]), ]  

get hull data

hull.data <- rbind(P12,P22,P28,P38,P402,P4,P8)  #combine grp.a and grp.b
hull.data
##        sample Year Month station      NMDS1       NMDS2
## 1   1804P12Ve   18    04     P12  -178.0565   -91.23799
## 20  1904P12Ve   19    04     P12  -177.9685   -90.37474
## 40  2007P12Ve   20    07     P12  -177.2824   -90.06131
## 14  1809P12Ve   18    09     P12  6587.4608  2559.60750
## 2   1804P22Ve   18    04     P22  4323.9944 -1742.15125
## 41  2007P22Ve   20    07     P22  -178.7962   -90.79103
## 21  1904P22Ve   19    04     P22  -178.9742   -90.47192
## 48  2009P22Ve   20    09     P22  -178.5052   -90.04232
## 27  1907P22Ve   19    07     P22  -177.2716   -89.81666
## 49  2009P28Ve   20    09     P28  -178.4999   -89.71447
## 35  1909P28Ve   19    09     P28  -177.7276   -90.63829
## 3   1804P28Ve   18    04     P28  -177.8578   -90.84520
## 28  1907P28Ve   19    07     P28 -3264.0067  3069.71982
## 29  1907P38Ve   19    07     P38  -177.0627   -90.45004
## 50  2009P38Ve   20    09     P38  -177.8628   -91.46905
## 4   1804P38Ve   18    04     P38  -178.1200   -90.30005
## 36  1909P38Ve   19    09     P38  -177.6326   -89.73425
## 10  1807P38Ve   18    07     P38  -177.2824   -90.06131
## 17 1809P402Ve   18    09    P402  -177.0627   -90.45004
## 51 2009P402Ve   20    09    P402  -177.3602   -90.98712
## 5  1804P402Ve   18    04    P402  -178.4874   -91.24981
## 24 1904P402Ve   19    04    P402  -178.4999   -89.71447
## 37 1909P402Ve   19    09    P402  -178.0678   -87.26822
## 25   1904P4Ve   19    04      P4  -177.2042   -91.34216
## 31   1907P4Ve   19    07      P4  -177.8628   -91.46905
## 52   2009P4Ve   20    09      P4  -178.1697   -90.82015
## 6    1804P4Ve   18    04      P4  -178.1548   -90.68834
## 45   2007P4Ve   20    07      P4  -177.6548   -89.99608
## 18   1809P4Ve   18    09      P4  -177.0627   -90.45004
## 19   1809P8Ve   18    09      P8  -177.6191   -90.87260
## 13   1807P8Ve   18    07      P8  -177.8628   -91.46905
## 53   2009P8Ve   20    09      P8  -178.7585   -90.52287
## 7    1804P8Ve   18    04      P8  -178.9385   -90.20712
## 32   1907P8Ve   19    07      P8  -178.4999   -89.71447
## 39   1909P8Ve   19    09      P8  -177.8701   -89.62581

Species fitting

vf <- envfit(Fishcytb_NMDSmodel, Fishcytb_wide, perm = 999)

spp.scrs <- as.data.frame(scores(vf, display = "vectors"))
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs))
####for ggplot
arrow_factor <- ordiArrowMul(vf)
spp.scrs <- as.data.frame(scores(vf, display = "vectors")) * arrow_factor
spp.scrs <- cbind(spp.scrs, Species = rownames(spp.scrs), Pvalues = vf$vectors$pvals, R_squared = vf$vectors$r)

# select significance similarly to `plot(vf, p.max = 0.01)`
spp.scrs <- subset(spp.scrs, Pvalues < 0.05)
spp.scrs <- subset(spp.scrs, R_squared > 0.3)
spp.scrs
##                              NMDS1     NMDS2                 Species Pvalues
## Artedius lateralis      -0.1998296 0.7193219      Artedius lateralis   0.036
## Gymnocephalus cernua     0.5043014 0.7500000    Gymnocephalus cernua   0.025
## Notemigonus crysoleucas  0.5043014 0.7500000 Notemigonus crysoleucas   0.025
##                         R_squared
## Artedius lateralis      0.6444774
## Gymnocephalus cernua    0.9444988
## Notemigonus crysoleucas 0.9444988
Fishcytb_Species_plot <- ggplot(Fishcytb.data.scores, aes(x = NMDS1, y = NMDS2)) +geom_point(aes(colour =  station))+theme_bw()+theme(panel.grid.major = element_blank(),
                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))+
  geom_segment(data = spp.scrs,size=0.4,
               aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
               arrow = arrow(length = unit(0.2, "cm")), colour = "darkgrey")+ 
  geom_polygon(data=hull.data,aes(x=NMDS1,y=NMDS2,fill=station,group=station),alpha=0.20, size=0.1, linetype=1, colour="black") +
  annotate("text", label = "2D Stress: 0.2", x = 0.55, y = 0.67, size = 5, colour = "black")+
  geom_label_repel(data = spp.scrs, aes(x = NMDS1, y = NMDS2, label = Species),
                  size = 3, fontface="bold", fill="white", label.padding = unit(0.15, "lines"), box.padding = unit(0.16, "lines"), label.size = 0.05)
Fishcytb_Species_plot

okay it looks like this fish one didn’t work, but that’s okay