packages
library(knitr)
library(readxl)
#detach(package:plyr)
library(dplyr)
library(ggplot2)
library(reshape2)
library(kableExtra)
library(ggh4x)
library(stringr)
library(Biostrings)
library(palettetown)
library(phyloseq)
library(ggrepel)
set.seed(100)
files
path<-
"/Users/kylielanglois/SCCWRP/KL data - General/sequencing/data/MICRO_zymo_072726"
#zymo 7/27/26
dat<-read.delim(file.path(path,
"MICRO_zymo_072726_V2_4_table.csv"))
dat$ASV<-trimws(dat$ASV)
dat.seq<-read.csv(file.path(path,
"MICRO_zymo_072726_merger_table_V2_4.csv"))
map.zy<-read.csv(file.path(path, "MICRO_zymo_072726_map.csv"))
#BLAST taxonomy
tax<-read.delim(file.path(path, "MICRO_zymo_072726_silva-138-99_bl_tax.tsv"))
tax$Feature.ID<-trimws(tax$Feature.ID)
dat.tax<-merge(dat, tax, by.x = "ASV", by.y = "Feature.ID", all.x = T)
#NB taxonomy
tax.nb<-read.delim(file.path(path, "MICRO_zymo_072726_V2_4_silva_NB_taxonomy.tsv"))
tax.nb$Feature.ID<-trimws(tax.nb$Feature.ID)
dat.tax.nb<-merge(dat, tax.nb, by.x = "ASV", by.y = "Feature.ID", all.x = T)
#previously combined table
combo<-read.csv("/Users/kylielanglois/OneDrive - SCCWRP/SD I-O data/all SD IO combo 2024/SDIO_fastq_combo_table_norep_nobl_nozero.csv")
#previously combined fasta
combo.seq<-readDNAStringSet(
"/Users/kylielanglois/OneDrive - SCCWRP/SD I-O data/all SD IO combo 2024/SDIO_fastq_combo_rep_set.fasta")
combo.seq.repset<-data.frame(ASV=names(combo.seq),
seqs=paste(combo.seq))
combo.tab.seq<-merge(combo.seq.repset, combo, by="ASV", all.y=T)
combo.tab.seq<-combo.tab.seq[, -1]
combo.tax<-read.delim("/Users/kylielanglois/OneDrive - SCCWRP/SD I-O data/all SD IO combo 2024/SDIO_fastq_combo_silva_tax.tsv")
map.24<-read.csv("/Users/kylielanglois/OneDrive - SCCWRP/SD I-O data/all SD IO combo 2024/SD_IO_metadata_combo_012624_norep_nobl_nozero_latlong.csv")
map.24.concise<-map.24[, match(c("SEQUENCING_NAME", "SAMPLE_TYPE", "LOC_EVENT_ID"),
colnames(map.24))]
colnames(map.24.concise)<-gsub("LOC_EVENT_ID", "SCCWRP_ID", colnames(map.24.concise))
#merged in qiime
#comb26<-read.delim(file.path(path,
# "MICRO_zymo_072726_fastq_combo24_merged.txt"),
# header = F)
#colnames(comb26)<-comb26[2, ]
#colnames(comb26)[1]<-"Feature.ID"
#comb26<-comb26[3:nrow(comb26), ]
## [1] "total sequences: 412922"
## [1] "62.06% sequences BLAST unassigned"
## [1] "0.1% sequences NB unassigned"
#first change blanks to NA
combo.tax<-apply(combo.tax, 2, function(x) gsub("^$|^ $", NA, x))
#change back to data frame
combo.tax<-as.data.frame(combo.tax)
#get last non-blank cell (exclude last taxa column)
combo.tax <- data.frame(lapply(combo.tax, as.character), stringsAsFactors=FALSE)
combo.tax$last_tax <- ifelse(!is.na(combo.tax$Taxon6),
combo.tax$Taxon6,
ifelse(!is.na(combo.tax$Taxon5),
combo.tax$Taxon5,
ifelse(!is.na(combo.tax$Taxon4),
combo.tax$Taxon4,
ifelse(!is.na(combo.tax$Taxon3),
combo.tax$Taxon3,
ifelse(!is.na(combo.tax$Taxon2),
combo.tax$Taxon2,
combo.tax$Taxon1)))))
#first change blanks to NA
tax.nb<-apply(tax.nb, 2, function(x) gsub("^$|^ $", NA, x))
#change back to data frame
tax.nb<-as.data.frame(tax.nb)
#get last non-blank cell (exclude last taxa column)
tax.nb <- data.frame(lapply(tax.nb, as.character), stringsAsFactors=FALSE)
tax.nb$last_tax <- ifelse(!is.na(tax.nb$Taxon6),
tax.nb$Taxon6,
ifelse(!is.na(tax.nb$Taxon5),
tax.nb$Taxon5,
ifelse(!is.na(tax.nb$Taxon4),
tax.nb$Taxon4,
ifelse(!is.na(tax.nb$Taxon3),
tax.nb$Taxon3,
ifelse(!is.na(tax.nb$Taxon2),
tax.nb$Taxon2,
tax.nb$Taxon1)))))
dat.tax.1<-merge(dat, tax.nb, by.x="ASV", by.y="Feature.ID")
library(plyr)
combo.tab.tax<-merge(combo.tax, combo, by.x="Feature.ID", by.y="ASV", all.y=T)
combo.tab.tax.consol.g<-ddply(combo.tab.tax, "Taxon6", numcolwise(sum)) #combine at genus level
combo.tab.tax.consol.s<-ddply(combo.tab.tax, "Taxon7", numcolwise(sum)) #combine at species level
combo.tab.tax.consol.l<-ddply(combo.tab.tax, "last_tax", numcolwise(sum)) #combine at last_tax level
dat.tax.nb.consol.g<-ddply(dat.tax.nb, "Taxon6", numcolwise(sum)) #combine at genus level
dat.tax.nb.consol.s<-ddply(dat.tax.nb, "Taxon7", numcolwise(sum)) #combine at species level
dat.tax.nb.consol.l<-ddply(dat.tax.1, "last_tax", numcolwise(sum)) #combine at last_tax level
#combine at genus level
comb26.g<-merge(combo.tab.tax.consol.g, dat.tax.nb.consol.g, by="Taxon6", all=T)
comb26.g<-comb26.g[, !grepl("Confidence", colnames(comb26.g))]
comb26.g$Taxon6<-ifelse(comb26.g$Taxon6=="", "noID", comb26.g$Taxon6)
#combine at species level
comb26.s<-merge(combo.tab.tax.consol.s, dat.tax.nb.consol.s, by="Taxon7", all=T)
comb26.s<-comb26.s[, !grepl("Confidence", colnames(comb26.s))]
comb26.s$Taxon7<-ifelse(comb26.s$Taxon7=="", "noID", comb26.s$Taxon7)
#combine at last_tax level
comb26.l<-merge(combo.tab.tax.consol.l, dat.tax.nb.consol.l, by="last_tax", all=T)
comb26.l<-comb26.l[, !grepl("Confidence", colnames(comb26.l))]
comb26.phy<-comb26.g #CHOOSE WHICH TABLE TO USE <<<<<<<<<<<<<
comb26.phy<-comb26.phy[, -1]
comb26.phy<-as.data.frame(sapply(comb26.phy, as.numeric))
rownames(comb26.phy)<-comb26.l$Taxon6 #MUST MATCH WHICH TABLE YOU CHOSE <<<<<<<<<<<<<
#phyloseq------
colnames(comb26.phy)<-trimws(colnames(comb26.phy)) #double check this ALWAYS
comb26.phy[is.na(comb26.phy)]<-0 #MUST DO
OTU=otu_table(comb26.phy, taxa_are_rows = T)
map1<-rbind(map.24.concise, map.zy)
rownames(map1)<-map1$SEQUENCING_NAME #rownames(map) must match colnames(otu)
MAP=sample_data(map1)
physeq=phyloseq(OTU, MAP)
#remove samples types--------
samples_keep<-map1[!grepl("POLLUTOGRAPH|ENCAMP|EXPERIMENT", map1$SAMPLE_TYPE), ]
physeq1<-prune_samples(samples_keep$SEQUENCING_NAME, physeq)
#phyloseq ordination---------
n.o<-ordinate(physeq1, method = "NMDS", distance = "bray", trymax=1000, na.rm=T)
FALSE Square root transformation
FALSE Wisconsin double standardization
FALSE Run 0 stress 0.1151946
FALSE Run 1 stress 0.1151944
FALSE ... New best solution
FALSE ... Procrustes: rmse 0.0003151682 max resid 0.00303019
FALSE ... Similar to previous best
FALSE Run 2 stress 0.1197269
FALSE Run 3 stress 0.1431903
FALSE Run 4 stress 0.1197267
FALSE Run 5 stress 0.1285245
FALSE Run 6 stress 0.1151944
FALSE ... Procrustes: rmse 5.108233e-05 max resid 0.0004576405
FALSE ... Similar to previous best
FALSE Run 7 stress 0.1436037
FALSE Run 8 stress 0.1151944
FALSE ... New best solution
FALSE ... Procrustes: rmse 2.262675e-05 max resid 0.0002036514
FALSE ... Similar to previous best
FALSE Run 9 stress 0.1151944
FALSE ... New best solution
FALSE ... Procrustes: rmse 0.000298305 max resid 0.002926746
FALSE ... Similar to previous best
FALSE Run 10 stress 0.1386458
FALSE Run 11 stress 0.413419
FALSE Run 12 stress 0.1197267
FALSE Run 13 stress 0.1151941
FALSE ... New best solution
FALSE ... Procrustes: rmse 0.0001815373 max resid 0.001810974
FALSE ... Similar to previous best
FALSE Run 14 stress 0.1254591
FALSE Run 15 stress 0.1343593
FALSE Run 16 stress 0.1372859
FALSE Run 17 stress 0.1151942
FALSE ... Procrustes: rmse 8.332262e-05 max resid 0.000805532
FALSE ... Similar to previous best
FALSE Run 18 stress 0.143374
FALSE Run 19 stress 0.1283221
FALSE Run 20 stress 0.1474628
FALSE *** Solution reached
coords<-as.data.frame(n.o$points) #"points" for NMD "vectors" for PCoA
coords$SEQUENCING_NAME<-rownames(coords)
coords2<-coords
coords2<-merge(coords2, map1, by="SEQUENCING_NAME")