├── .DS_Store ├── ANALYSIS ├── .DS_Store ├── SeqProcessing │ └── seq_processing.md └── Stats │ ├── .Rhistory │ ├── .Rproj.user │ ├── 92953359 │ │ ├── console06 │ │ │ └── INDEX001 │ │ ├── pcs │ │ │ ├── files-pane.pper │ │ │ ├── source-pane.pper │ │ │ ├── source-window.pper │ │ │ ├── windowlayoutstate.pper │ │ │ └── workbench-pane.pper │ │ ├── rmd-outputs │ │ ├── saved_source_markers │ │ ├── sources │ │ │ ├── prop │ │ │ │ ├── 28BDF35D │ │ │ │ ├── BC05893E │ │ │ │ └── INDEX │ │ │ └── s-A25273C9 │ │ │ │ ├── BF93FF9C │ │ │ │ ├── BF93FF9C-contents │ │ │ │ ├── C3C00765-contents │ │ │ │ └── lock_file │ │ └── unsaved-notebooks │ │ │ └── C3C00765 │ │ │ └── 1 │ │ │ └── chunks.json │ └── shared │ │ └── notebooks │ │ ├── CB327C74-MicrobiomeAnalysis │ │ └── 1 │ │ │ ├── 929533598EFCBFAF │ │ │ └── chunks.json │ │ │ ├── 92953359C22BEDC9 │ │ │ ├── c6m332ir3orow │ │ │ │ └── 00000c.csv │ │ │ └── chunks.json │ │ │ └── s │ │ │ ├── c1cup1of484m3 │ │ │ └── 000002.csv │ │ │ ├── c1lz5bi0ajiv0 │ │ │ └── 000002.csv │ │ │ ├── c6zpd7d8n5qlb │ │ │ ├── 000002.metadata │ │ │ ├── 000002.png │ │ │ └── 000002.snapshot │ │ │ ├── cbod964bcc19e │ │ │ └── 00000e.csv │ │ │ ├── cfh7w37oqgure │ │ │ ├── 00000b.metadata │ │ │ ├── 00000b.png │ │ │ └── 00000b.snapshot │ │ │ ├── ch7ikfjr1lozr │ │ │ ├── 000002.metadata │ │ │ ├── 000002.png │ │ │ └── 000002.snapshot │ │ │ ├── chunks.json │ │ │ ├── cn097rd6yrqt5 │ │ │ ├── 00001a.metadata │ │ │ ├── 00001a.png │ │ │ └── 00001a.snapshot │ │ │ ├── conbs9k8v86lg │ │ │ └── 000002.csv │ │ │ ├── cq8r4x9dc8qie │ │ │ ├── 000002.metadata │ │ │ ├── 000002.png │ │ │ └── 000002.snapshot │ │ │ ├── ctdl1y7hlnzwv │ │ │ ├── 000004.metadata │ │ │ ├── 000004.png │ │ │ └── 000004.snapshot │ │ │ └── cxjdrnmy2ovjy │ │ │ ├── 000002.metadata │ │ │ └── 000002.rdf │ │ ├── DF0CB8B-Kmer_analysis │ │ └── 1 │ │ │ ├── 92953359A25273C9 │ │ │ ├── cgkzm0p0ft1vn │ │ │ │ └── 000002.csv │ │ │ └── chunks.json │ │ │ └── s │ │ │ ├── c94mg95tffj05 │ │ │ └── 000002.csv │ │ │ ├── cgpxz02ls5dpg │ │ │ ├── 000006.csv │ │ │ ├── 000007.html │ │ │ ├── 000007.json │ │ │ └── 000007.metadata │ │ │ ├── chunks.json │ │ │ └── lib │ │ │ ├── crosstalk-1.0.0 │ │ │ ├── css │ │ │ │ └── crosstalk.css │ │ │ └── js │ │ │ │ ├── crosstalk.js │ │ │ │ ├── crosstalk.js.map │ │ │ │ ├── crosstalk.min.js │ │ │ │ └── crosstalk.min.js.map │ │ │ ├── htmlwidgets-0.9 │ │ │ └── htmlwidgets.js │ │ │ ├── jquery-1.11.3 │ │ │ ├── jquery-AUTHORS.txt │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ └── jquery.min.map │ │ │ ├── plotly-binding-4.7.1 │ │ │ └── plotly.js │ │ │ ├── plotlyjs-1.29.2 │ │ │ ├── LICENSE │ │ │ ├── plotly-htmlwidgets.css │ │ │ └── plotly-latest.min.js │ │ │ └── typedarray-0.1 │ │ │ ├── LICENSE │ │ │ └── typedarray.min.js │ │ ├── E919217A-MicrobiomeAnalysis │ │ └── 1 │ │ │ └── s │ │ │ ├── chunks.json │ │ │ ├── cjpxypzvgpa11 │ │ │ └── 000002.csv │ │ │ └── cu4neytpn3pra │ │ │ └── 000002.csv │ │ ├── patch-chunk-names │ │ └── paths │ ├── MicrobiomeAnalysis.nb.html │ ├── MicrobiomeAnalysis.rmd │ └── Stats.Rproj ├── BioProtocolV2.docx ├── BioProtocolV3.docx ├── DATA ├── example_map.tsv ├── example_otu_table.tsv └── gg_otus_tax.rds ├── FIGURES ├── .DS_Store ├── FIG1 │ ├── .DS_Store │ ├── fig1.pdf │ ├── fig1.tiff │ └── figure1.pdf ├── FIG2 │ ├── .DS_Store │ ├── Fig2.pdf │ ├── Fig2.tiff │ ├── amplicon.svg │ └── figure2.pdf ├── FIG3 │ ├── Fig3.tiff │ ├── fig3.pdf │ └── figure.svg └── compartments.tiff ├── FWD_primer_seq.tsv ├── Protocol 0101902_V3.docx ├── Protocol_0101902_ReformattedV2.docx ├── README.md ├── RVS_primer_seq.tsv └── ~$oProtocolV3.docx /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/.DS_Store -------------------------------------------------------------------------------- /ANALYSIS/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/.DS_Store -------------------------------------------------------------------------------- /ANALYSIS/SeqProcessing/seq_processing.md: -------------------------------------------------------------------------------- 1 | # Sequence Wrangling 2 | 3 | ## Introduction 4 | The first part of any microbiome analysis is download, demultiplex, clean, and cluster the data. Here, we will give some basic instructions on how to complete these tasks. 5 | 6 | ## Before starting 7 | If you want to follow along with this tutorial, you will need to download a few things 8 | 9 | - [BananaStand](https://github.com/bulksoil/BananaStand) is a pipeline and wrapper for conducting many of the steps involved in the up-front sequence processing. 10 | - [PANDAseq](https://github.com/neufeld/pandaseq) is used by BananaStand to merge paired end amplicons into contiguous sequences. 11 | - [NINJA-OPS](https://github.com/GabeAl/NINJA-OPS) is the OTU calling pipeline used to quickly cluster sequences. 12 | - [BIOM Format](http://biom-format.org/) is the output format of the OTU table from NINJA-OPS. You will eventually need to convert it to a .tsv file 13 | 14 | Visit the homepages for each of these packages/software and follow their installation instructions. If you have any problems installing BananaStand please contact Joe Edwards at edwards@ucdavis.edu. 15 | 16 | 17 | ## The Data 18 | The data used for this tutorial were published in the recent paper by Santos-Medellín et al. [Drought stress results in a compartment-specific restructuring of the rice root-associated microbiomes. *MBio*, 2017](http://mbio.asm.org/content/8/4/e00764-17.short) where the authors survey the root associated microbiota of rice plants grown in multiple soils and exposed to well-watered or drought conditions. Here, we are only including the data taken from the well-watered plants. 19 | 20 | To download the data, please visit this [Google Drive Folder](https://goo.gl/tCMLBn). You will notice that there are two folders - Lib1 and Lib2. The data collected for this experiment were sequenced across two separate MiSeq runs. The barcodes used between the two experiments overlap, therefore the files can not simply be concatenated prior to processing. In each folder there are 5 files. 21 | 22 | - Undetermined_S0_L001_R1_001.fastq.gz A 250 bp read starting from the end of the 515F primer. Reads 5' to 3' 23 | - Undetermined_S0_L001_R2_001.fastq.gz A 250 bp read starting from the 806R primer. Reads 3' to 5' 24 | - Undetermined_S0_L001_I1_001.fastq.gz The 12 bp 5' barcode 25 | - Undetermined_S0_L001_I2_001.fastq.gz Te 12 bp 3' barcode 26 | - lib1_map.tsv (or lib2_map.tsv) The mapping file which contains the information about each sample including the barcode. The barcode column is simply a concatenation of the forward and reverse barcode used for each sample. 27 | 28 | It is important to note that the fastq files do not need to be unzipped for processing. Please note that if the user would like to replicate this workflow in their own data, then the SampleID column should be first and the barcode column should be second in the tab separated file. 29 | 30 | ## Sequence Processing 31 | 32 | ### Demultiplex, merge, and clean 33 | 34 | We will use the mpipe.py pipeline from the BananaStand repo to process the data. Let's start with Lib1. 35 | 36 | ``` 37 | mpipe.py -m lib1_map.tsv --read1 Undetermined_S0_L001_R1_001.fastq.gz -- read2 Undetermined_S0_L001_I1_001.fastq.gz --read3 Undetermined_S0_L001_I2_001.fastq.gz --read4 Undetermined_S0_L001_R2_001.fastq.gz -p lib1 38 | ``` 39 | 40 | - `-m` is the option for specifying the mapping file 41 | - `--read1` is the first 250 bp read 42 | - `--read2` is the first index 43 | - `--read3` is the second index 44 | - `--read4` is the second 250 bp read 45 | - `-p` is the prefix that should be appended the output files 46 | 47 | The pipeline is first demultiplexing the sequences and assigning each sequence to a sample. It next forms contiguous reads using PANDAseq. Then it filters out reads with low quality bases or reads that are too long. At the end of the processing there should be a file `lib1seqs.fa`. This is the file containing the final seqs for this library. 48 | 49 | Next, run the exact same thing from within the Lib2 directory. 50 | ``` 51 | mpipe.py -m lib2_map.tsv --read1 Undetermined_S0_L001_R1_001.fastq.gz -- read2 Undetermined_S0_L001_I1_001.fastq.gz --read3 Undetermined_S0_L001_I2_001.fastq.gz --read4 Undetermined_S0_L001_R2_001.fastq.gz -p lib2 52 | ``` 53 | 54 | Now there should be a lib2seqs.fa file present. 55 | 56 | ### Concatenate output fasta files and mapping files 57 | 58 | After the above steps, we are left with an output fasta file for each sequencing run. We need to concatenate these files to have a large fasta to run through the OTU clustering pipeline. 59 | 60 | ``` 61 | cat lib1seqs.fa lib2seqs.fa > example_seqs.fa 62 | ``` 63 | 64 | While we are at it, we should concatenate the two mapping files. 65 | 66 | ``` 67 | cat lib1_map.tsv lib2_map.tsv > example_map.tsv 68 | ``` 69 | 70 | There will be a line near the middle of `example_map.tsv` with the headers from the second file. Go ahead and remove this using a text editor. 71 | 72 | ### Cluster the sequences into OTUs 73 | 74 | We will cluster the sequences into OTUs using the NINJA-OPS pipeline. This particular pipeline can only perform closed-reference clustering - meaning that the sequences are compared to a database of known 16S rRNA gene sequences and retained only if there is a match. This pipeline has a few advantages over others - it is extremely fast and memory efficient, meaning that you can run this on your laptop. It achieves this by taking advantage of the Bowtie framework commonly used for mapping sequencing reads back to a reference genome. In this case, the authors have taken the database of 16S rRNA gene sequences and concatenated them into a pseudogenome. Pretty nifty. 75 | 76 | ``` 77 | python /usr/local/NINJA/bin/ninja.py -i example_seqs.fa -o ninja 78 | ``` 79 | 80 | This should only a take a minute or two. After it is finished, navigate inside the ninja directory. There should be a file in there named `ninja_otutable.biom`. This is the OTU table in the BIOM format. The file will need to be converted to .tsv to be compatible with the rest of this tutorial. 81 | 82 | ``` 83 | biom convert -i ninja_otutable.biom -o example_otu_table.tsv --to-tsv 84 | ``` 85 | 86 | After completing this step, the last thing is to manually edit the very first character out of the file. After converting the file from biom to tsv format, the header begins with a `#`. This will confuse R when loading the file in, so go ahead and delete this character and save the file. 87 | 88 | Now the data is ready to be loaded into R. For the tutorial on how to process the data in R, please click [here](https://github.com/bulksoil/BioProtocol/blob/master/ANALYSIS/Stats/MicrobiomeAnalysis.rmd). 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rhistory: -------------------------------------------------------------------------------- 1 | mutate(DGEL = map(data, ~tidyDGEL(., value = "value", group_column = "group", method = "DESeq2", formula = "~ group"))) %>% 2 | mutate(dds = map(DGEL, ~DESeq(.))) %>% 3 | mutate(BSvsES = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Endosphere")))) %>% 4 | mutate(BSvsRS = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Rhizosphere")))) %>% 5 | dplyr::select(BSvsES, BSvsRS) %>% 6 | gather(key = taxon, value = results) 7 | library(DESeq2) 8 | DESeq2_example <- mb_experiment %>% 9 | select(Compartment, variable, value, SampleID) %>% 10 | group_by(variable) %>% 11 | filter(sum(value > 0) / n() > 0.1) %>% 12 | mutate(Compartment = relevel(factor(Compartment), ref = "BulkSoil")) %>% 13 | mutate(group = Compartment) %>% 14 | group_by(1) %>% 15 | nest() %>% 16 | mutate(DGEL = map(data, ~tidyDGEL(., value = "value", group_column = "group", method = "DESeq2", formula = "~ group"))) %>% 17 | mutate(dds = map(DGEL, ~DESeq(.))) %>% 18 | mutate(BSvsES = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Endosphere")))) %>% 19 | mutate(BSvsRS = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Rhizosphere")))) %>% 20 | dplyr::select(BSvsES, BSvsRS) %>% 21 | gather(key = taxon, value = results) 22 | DESeq2_example 23 | DESeq2_example <- mb_experiment %>% 24 | select(Compartment, variable, value, SampleID) %>% 25 | group_by(variable) %>% 26 | filter(sum(value > 0) / n() > 0.1) %>% 27 | mutate(Compartment = relevel(factor(Compartment), ref = "BulkSoil")) %>% 28 | mutate(group = Compartment) %>% 29 | group_by(1) %>% 30 | nest() %>% 31 | mutate(DGEL = map(data, ~tidyDGEL(., value = "value", group_column = "group", method = "DESeq2", formula = "~ group"))) %>% 32 | mutate(dds = map(DGEL, ~DESeq(.))) %>% 33 | mutate(BSvsES = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Endosphere")))) %>% 34 | mutate(BSvsRS = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Rhizosphere")))) %>% 35 | dplyr::select(BSvsES, BSvsRS) %>% 36 | gather(key = Comparison, value = results) 37 | DESeq2_example_results %>% 38 | DESeq2_example %>% 39 | unnest(results) 40 | DESeq2_example_results <- DESeq2_example %>% 41 | unnest(results) 42 | DESeq2_example_results <- DESeq2_example %>% 43 | unnest(map(results, ~tidy(.))) 44 | library(broom) 45 | DESeq2_example_results <- DESeq2_example %>% 46 | unnest(map(results, ~tidy(.))) 47 | library(biobroom) 48 | DESeq2_example_results <- DESeq2_example %>% 49 | unnest(map(results, ~tidy(.))) 50 | DESeq2_example_results 51 | DESeq2_example <- mb_experiment %>% 52 | select(Compartment, variable, value, SampleID) %>% 53 | group_by(variable) %>% 54 | filter(sum(value > 0) / n() > 0.1) %>% 55 | mutate(Compartment = relevel(factor(Compartment), ref = "BulkSoil")) %>% 56 | mutate(group = Compartment) %>% 57 | group_by(1) %>% 58 | nest() %>% 59 | mutate(DGEL = map(data, ~tidyDGEL(., value = "value", group_column = "group", method = "DESeq2", formula = "~ group"))) %>% 60 | mutate(dds = map(DGEL, ~DESeq(.))) %>% 61 | mutate(BulkSoil_Endosphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Endosphere")))) %>% 62 | mutate(BulkSoil_RhizoSphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Rhizosphere")))) %>% 63 | dplyr::select(BulkSoil_Endosphere, BulkSoil_RhizoSphere) %>% 64 | gather(key = Comparison, value = results) 65 | DESeq2_example <- mb_experiment %>% 66 | select(Compartment, variable, value, SampleID) %>% 67 | group_by(variable) %>% 68 | filter(sum(value > 0) / n() > 0.1) %>% 69 | mutate(Compartment = relevel(factor(Compartment), ref = "BulkSoil")) %>% 70 | mutate(group = Compartment) %>% 71 | group_by(1) %>% 72 | nest() %>% 73 | mutate(DGEL = map(data, ~tidyDGEL(., value = "value", group_column = "group", method = "DESeq2", formula = "~ group"))) %>% 74 | mutate(dds = map(DGEL, ~DESeq(.))) %>% 75 | mutate(BulkSoil_Endosphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Endosphere")))) %>% 76 | mutate(BulkSoil_RhizoSphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Rhizosphere")))) %>% 77 | dplyr::select(BulkSoil_Endosphere, BulkSoil_Rhizosphere) %>% 78 | gather(key = Comparison, value = results) 79 | DESeq2_example <- mb_experiment %>% 80 | select(Compartment, variable, value, SampleID) %>% 81 | group_by(variable) %>% 82 | filter(sum(value > 0) / n() > 0.1) %>% 83 | mutate(Compartment = relevel(factor(Compartment), ref = "BulkSoil")) %>% 84 | mutate(group = Compartment) %>% 85 | group_by(1) %>% 86 | nest() %>% 87 | mutate(DGEL = map(data, ~tidyDGEL(., value = "value", group_column = "group", method = "DESeq2", formula = "~ group"))) %>% 88 | mutate(dds = map(DGEL, ~DESeq(.))) %>% 89 | mutate(BulkSoil_Endosphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Endosphere")))) %>% 90 | mutate(BulkSoil_Rhizosphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Rhizosphere")))) %>% 91 | dplyr::select(BulkSoil_Endosphere, BulkSoil_Rhizosphere) %>% 92 | gather(key = Comparison, value = results) 93 | DESeq2_example_results <- DESeq2_example %>% 94 | unnest(map(results, ~tidy(.))) 95 | DESeq2_example_results 96 | DESeq2_example_results %>% 97 | separate(Comparison, into = c("Comp1, Comp2"), sep = "_") 98 | DESeq2_example_results 99 | DESeq2_example_results %>% 100 | dplyr::separate(Comparison, into = c("Comp1, Comp2"), sep = "_") 101 | DESeq2_example_results %>% 102 | tidyr::separate(Comparison, into = c("Comp1, Comp2"), sep = "_") 103 | ?separate 104 | DESeq2_example_results %>% head() 105 | DESeq2_example_results %>% 106 | tidyr::separate(Comparison, c("Comp1, Comp2"), sep = "_") 107 | DESeq2_example_results %>% 108 | tidyr::separate(Comparison, c("Comp1, Comp2"), "_") 109 | DESeq2_example_results %>% 110 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_") 111 | DESeq2_example_results %>% 112 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_") %>% 113 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 114 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) 115 | DESeq2_example_results %>% 116 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_") %>% 117 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 118 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 119 | replace_na(list(classification = "ns")) 120 | DESeq2_example_results %>% 121 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 122 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 123 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 124 | replace_na(list(classification = "ns")) %>% 125 | ggplot(aes(baseMean, estimate, color = classfication)) + 126 | geom_point() + 127 | facet_grid(.~Comparison) + 128 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid")) 129 | DESeq2_example_results %>% 130 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 131 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 132 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 133 | replace_na(list(classification = "ns")) %>% 134 | ggplot(aes(baseMean, estimate, color = classification)) + 135 | geom_point() + 136 | facet_grid(.~Comparison) + 137 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid")) 138 | DESeq2_example_results %>% 139 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 140 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 141 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 142 | replace_na(list(classification = "ns")) %>% 143 | ggplot(aes(baseMean, estimate, color = classification)) + 144 | geom_point() + 145 | facet_grid(.~Comparison) + 146 | scale_x_log10() 147 | DESeq2_example_results %>% 148 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 149 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 150 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 151 | replace_na(list(classification = "ns")) %>% 152 | ggplot(aes(baseMean, estimate, color = classification)) + 153 | geom_point() + 154 | facet_grid(.~Comparison) + 155 | scale_x_log10() + 156 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid")) 157 | DESeq2_example_results %>% 158 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 159 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 160 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 161 | replace_na(list(classification = "ns")) %>% 162 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 163 | geom_point() + 164 | facet_grid(.~Comparison) + 165 | scale_x_log10() + 166 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid")) + 167 | scale_alpha_manual(values = c(1, 1, 0.1, 1)) 168 | DESeq2_example_results %>% 169 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 170 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 171 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 172 | replace_na(list(classification = "ns")) %>% 173 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 174 | geom_point() + 175 | facet_grid(.~Comparison) + 176 | scale_x_log10() + 177 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid")) + 178 | scale_alpha_manual(values = c(1, 1, 0.1, 1)) + 179 | theme_minimal() 180 | DESeq2_example_results %>% 181 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 182 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 183 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 184 | replace_na(list(classification = "ns")) %>% 185 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 186 | geom_point() + 187 | facet_grid(.~Comparison) + 188 | scale_x_log10() + 189 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid")) + 190 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 191 | theme_minimal() 192 | DESeq2_example_results %>% 193 | filter(Comparison == "BulkSoil_Rhizosphere" & p.adjusted <=0.05, & estimate > 0) 194 | DESeq2_example_results %>% 195 | filter(Comparison == "BulkSoil_Rhizosphere" & p.adjusted <=0.05 & estimate > 0) 196 | mb_experiment %>% 197 | filter(variable == "113170") %>% 198 | ggplot(aes(Compartment, log2(RA + 1))) + 199 | geom_boxplot() 200 | DESeq2_example_results %>% 201 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 202 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 203 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 204 | replace_na(list(classification = "ns")) %>% 205 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 206 | geom_point() + 207 | facet_grid(.~Comparison) + 208 | scale_x_log10() + 209 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid4")) + 210 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 211 | theme_minimal() 212 | DESeq2_example_results %>% 213 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 214 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 215 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 216 | replace_na(list(classification = "ns")) %>% 217 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 218 | geom_point() + 219 | facet_grid(.~Comparison) + 220 | scale_x_log10() + 221 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid3")) + 222 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 223 | theme_minimal() 224 | DESeq2_example_results %>% 225 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 226 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 227 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 228 | replace_na(list(classification = "ns")) %>% 229 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 230 | geom_point(size = 1) + 231 | facet_grid(.~Comparison) + 232 | scale_x_log10() + 233 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid3")) + 234 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 235 | labs 236 | DESeq2_example_results %>% 237 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 238 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 239 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 240 | replace_na(list(classification = "ns")) %>% 241 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 242 | geom_point(size = 1) + 243 | facet_grid(.~Comparison) + 244 | scale_x_log10() + 245 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid3")) + 246 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 247 | labs(x = "Mean abundance (log10)", y = "Fold Change") %>% 248 | theme_minimal() 249 | DESeq2_example_results %>% 250 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 251 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 252 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 253 | replace_na(list(classification = "ns")) %>% 254 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 255 | geom_point(size = 1) + 256 | facet_grid(.~Comparison) + 257 | scale_x_log10() + 258 | scale_color_manual(values = c("red", "steelblue", "grey50", "darkorchid3")) + 259 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 260 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 261 | theme_minimal() 262 | DESeq2_example_results %>% 263 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 264 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 265 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 266 | replace_na(list(classification = "ns")) %>% 267 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 268 | geom_point(size = 1) + 269 | facet_grid(.~Comparison) + 270 | scale_x_log10() + 271 | scale_color_manual(values = c("red", "steelblue", "grey20", "darkorchid3")) + 272 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 273 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 274 | theme_minimal() 275 | DESeq2_example_results %>% 276 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 277 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 278 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 279 | replace_na(list(classification = "ns")) %>% 280 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 281 | geom_point(size = 1) + 282 | facet_grid(.~Comparison) + 283 | scale_x_log10() + 284 | scale_color_manual(values = c("red", "steelblue", "grey30", "darkorchid3")) + 285 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 286 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 287 | theme_minimal() 288 | MA_plot <- DESeq2_example_results %>% 289 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 290 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 291 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 292 | replace_na(list(classification = "ns")) %>% 293 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 294 | geom_point(size = 1) + 295 | facet_grid(.~Comparison) + 296 | scale_x_log10() + 297 | scale_color_manual(values = c("red", "steelblue", "grey30", "darkorchid3")) + 298 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 299 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 300 | theme_minimal() 301 | MA_plot 302 | library(gridExtra) 303 | phy_plot <- phy_abundance %>% 304 | ggplot(aes(x = Compartment, mean_phy, fill = Phylum)) + 305 | geom_bar(stat = "identity") + 306 | scale_fill_brewer(palette = "Spectral") + 307 | facet_grid(.~Soil) + 308 | theme_minimal() + 309 | labs(x = "", y = "Relative Abundance (‰)") + 310 | theme(axis.text.x = element_text(angle = 30, hjust = 1), text = element_text(size = 12)) 311 | phy_plot 312 | grid.arrange(pc_plot, adiv_plot, phy_plot, MA_plot) 313 | MA_plot <- DESeq2_example_results %>% 314 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 315 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 316 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 317 | replace_na(list(classification = "ns")) %>% 318 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 319 | geom_point(size = 1) + 320 | facet_grid(.~Comparison) + 321 | scale_x_log10() + 322 | scale_color_manual(values = c("red", "steelblue", "grey30", "darkorchid3")) + 323 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 324 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 325 | theme_minimal() + 326 | theme(text = element_text(size = 12), legend.position = "none") 327 | grid.arrange(pc_plot, adiv_plot, phy_plot, MA_plot) 328 | grid.arrange(pc_plot, adiv_plot, phy_plot, MA_plot) 329 | MA_plot <- DESeq2_example_results %>% 330 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 331 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 332 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 333 | replace_na(list(classification = "ns")) %>% 334 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 335 | geom_point(size = 1) + 336 | facet_grid(.~Comparison) + 337 | scale_x_log10() + 338 | scale_color_manual(values = c("red", "steelblue", "grey30", "#984EA3")) + 339 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 340 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 341 | theme_minimal() + 342 | theme(text = element_text(size = 12), legend.position = "none") 343 | MA_plot 344 | grid.arrange(pc_plot, adiv_plot, phy_plot, MA_plot) 345 | MA_plot <- DESeq2_example_results %>% 346 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 347 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 348 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 349 | replace_na(list(classification = "ns")) %>% 350 | mutate(Comparison = fct_relevel(Comparison, "BulkSoil_Rhizosphere", "BulkSoil_Endosphere")) %>% 351 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 352 | geom_point(size = 1) + 353 | facet_grid(.~Comparison) + 354 | scale_x_log10() + 355 | scale_color_manual(values = c("red", "steelblue", "grey30", "#984EA3")) + 356 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 357 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 358 | theme_minimal() + 359 | theme(text = element_text(size = 12), legend.position = "none") 360 | MA_plot 361 | MA_plot <- DESeq2_example_results %>% 362 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 363 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 364 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 365 | replace_na(list(classification = "ns")) %>% 366 | mutate(Comparison = gsub("Soil_", "Soil vs. ", Comparison)) %>% 367 | mutate(Comparison = fct_relevel(Comparison, "Bulk Soil vs. Rhizosphere", "Bulk Soil vs. Endosphere")) %>% 368 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 369 | geom_point(size = 1) + 370 | facet_grid(.~Comparison) + 371 | scale_x_log10() + 372 | scale_color_manual(values = c("red", "steelblue", "grey30", "#984EA3")) + 373 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 374 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 375 | theme_minimal() + 376 | theme(text = element_text(size = 12), legend.position = "none") 377 | MA_plot 378 | MA_plot <- DESeq2_example_results %>% 379 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 380 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 381 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 382 | replace_na(list(classification = "ns")) %>% 383 | mutate(Comparison = gsub("Soil_", "Soil vs. ", Comparison)) %>% 384 | mutate(Comparison = fct_relevel(Comparison, "Bulk Soil vs. Rhizosphere", "Bulk Soil vs. Endosphere")) %>% 385 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 386 | geom_point(size = 1) + 387 | facet_grid(.~Comparison) + 388 | scale_x_log10() + 389 | scale_color_manual(values = c("red", "steelblue", "grey30", "#984EA3")) + 390 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 391 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 392 | theme_minimal() + 393 | theme(text = element_text(size = 12), legend.position = "none") 394 | MA_plot 395 | MA_plot <- DESeq2_example_results %>% 396 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 397 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 398 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 399 | replace_na(list(classification = "ns")) %>% 400 | mutate(Comparison = gsub("Soil_", " Soil vs. ", Comparison)) %>% 401 | mutate(Comparison = fct_relevel(Comparison, "Bulk Soil vs. Rhizosphere", "Bulk Soil vs. Endosphere")) %>% 402 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 403 | geom_point(size = 1) + 404 | facet_grid(.~Comparison) + 405 | scale_x_log10() + 406 | scale_color_manual(values = c("red", "steelblue", "grey30", "#984EA3")) + 407 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 408 | labs(x = "Mean abundance (log10)", y = "Fold Change") + 409 | theme_minimal() + 410 | theme(text = element_text(size = 12), legend.position = "none") 411 | MA_plot 412 | pc_plot <- exp_pc$axes %>% 413 | ggplot(aes(MDS1, MDS2, color = Compartment)) + 414 | geom_point(size = 3, alpha = 0.8) + 415 | labs(x = paste("PCo1 (", round(exp_pc$eigen_vals[1], 3)*100, "%)", sep = ""), 416 | y = paste("PCo2 (", round(exp_pc$eigen_vals[2], 3)*100, "%)", sep = "")) + 417 | theme_minimal() + 418 | scale_color_manual(values = c(c("#E41A1C", "#377EB8", "#984EA3"))) + 419 | theme(text = element_text(size = 12), legend.position = "none") 420 | pc_plot 421 | grid.arrange(pc_plot, adiv_plot, phy_plot, MA_plot) 422 | MA_plot <- DESeq2_example_results %>% 423 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 424 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 425 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 426 | replace_na(list(classification = "ns")) %>% 427 | mutate(Comparison = gsub("Soil_", " Soil vs. ", Comparison)) %>% 428 | mutate(Comparison = fct_relevel(Comparison, "Bulk Soil vs. Rhizosphere", "Bulk Soil vs. Endosphere")) %>% 429 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 430 | geom_point(size = 1) + 431 | facet_grid(.~Comparison) + 432 | scale_x_log10() + 433 | scale_color_manual(values = c("red", "steelblue", "grey30", "#984EA3")) + 434 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 435 | labs(x = "Mean abundance (log10)", y = "Log Fold Change") + 436 | theme_minimal() + 437 | theme(text = element_text(size = 12), legend.position = "none") 438 | MA_plot 439 | grid.arrange(pc_plot, adiv_plot, phy_plot, MA_plot) 440 | grid.arrange(pc_plot, adiv_plot, phy_plot, MA_plot) 441 | MA_plot 442 | adiv_plot 443 | exp_pc <- tidy_pcoa(mb_experiment %>% 444 | mutate(logRA = log2(RA + 1)) %>% 445 | select(SampleID, Tub, Compartment, Soil, Genotype, variable, RA, logRA), 446 | value = "logRA", dist = "bray") 447 | pc_plot <- exp_pc$axes %>% 448 | ggplot(aes(MDS1, MDS2, color = Compartment)) + 449 | geom_point(size = 3, alpha = 0.8) + 450 | labs(x = paste("PCo1 (", round(exp_pc$eigen_vals[1], 3)*100, "%)", sep = ""), 451 | y = paste("PCo2 (", round(exp_pc$eigen_vals[2], 3)*100, "%)", sep = "")) + 452 | theme_minimal() + 453 | scale_color_manual(values = c(c("#E41A1C", "#377EB8", "#984EA3"))) + 454 | theme(text = element_text(size = 12), legend.position = "none") 455 | pc_plot 456 | mb_experiment <- melt(cbind(map_table, t(otu_table)), id.vars = names(map_table)) %>% 457 | inner_join(tax_table, by = "variable") 458 | mb_experiment %>% 459 | group_by(SampleID, Compartment) %>% 460 | summarise(depth = sum(value)) %>% 461 | ggplot(aes(Depth, fill = Compartment)) + 462 | geom_histogram() 463 | mb_experiment %>% 464 | group_by(SampleID, Compartment) %>% 465 | summarise(Depth = sum(value)) %>% 466 | ggplot(aes(Depth, fill = Compartment)) + 467 | geom_histogram() 468 | mb_experiment %>% 469 | group_by(SampleID, Compartment) %>% 470 | summarise(Depth = sum(value)) %>% 471 | ggplot(aes(Depth, fill = Compartment)) + 472 | geom_histogram() + 473 | scale_x_log10() 474 | mb_experiment %>% 475 | group_by(SampleID, Compartment) %>% 476 | summarise(Depth = sum(value)) %>% 477 | ggplot(aes(log10(Depth), fill = Compartment)) + 478 | geom_histogram() 479 | mb_experiment %>% 480 | group_by(SampleID, Compartment) %>% 481 | summarise(Depth = sum(value)) %>% 482 | ggplot(aes(Depth, fill = Compartment)) + 483 | geom_histogram() + 484 | scale_x_log10() + 485 | scale_fill_manual(values = c("#E41A1C", "#377EB8", "#984EA3")) 486 | mb_experiment %>% 487 | group_by(SampleID, Compartment) %>% 488 | summarise(Depth = sum(value)) %>% 489 | ggplot(aes(Depth, fill = Compartment)) + 490 | geom_histogram() + 491 | scale_x_log10() + 492 | scale_fill_manual(values = c("#E41A1C", "#377EB8", "#984EA3")) + 493 | theme_minimal() 494 | mb_experiment %>% 495 | group_by(SampleID, Compartment) %>% 496 | summarise(Depth = sum(value)) %>% 497 | ggplot(aes(Depth, fill = Compartment)) + 498 | geom_histogram() + 499 | scale_x_log10() + 500 | scale_fill_manual(values = c("#E41A1C", "#377EB8", "#984EA3")) + 501 | theme_minimal() + 502 | facet_grid(.~Compartment) 503 | mb_experiment %>% 504 | group_by(SampleID, Compartment) %>% 505 | summarise(Depth = sum(value)) %>% 506 | ggplot(aes(Depth, fill = Compartment)) + 507 | geom_histogram() + 508 | scale_fill_manual(values = c("#E41A1C", "#377EB8", "#984EA3")) + 509 | theme_minimal() + 510 | facet_grid(.~Compartment) 511 | MA_plot 512 | phy_plot 513 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/console06/INDEX001: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/pcs/files-pane.pper: -------------------------------------------------------------------------------- 1 | { 2 | "path" : "~/RMB/BioProtocol/ANALYSIS/Stats", 3 | "sortOrder" : [ 4 | { 5 | "ascending" : true, 6 | "columnIndex" : 2 7 | } 8 | ] 9 | } -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/pcs/source-pane.pper: -------------------------------------------------------------------------------- 1 | { 2 | "activeTab" : -1, 3 | "activeTabSourceWindow1" : 0 4 | } -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/pcs/source-window.pper: -------------------------------------------------------------------------------- 1 | { 2 | "sourceWindowGeometry" : { 3 | "wb2mjx8frqxjl" : { 4 | "height" : 756, 5 | "ordinal" : 1, 6 | "width" : 800, 7 | "x" : 20, 8 | "y" : 22 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/pcs/windowlayoutstate.pper: -------------------------------------------------------------------------------- 1 | { 2 | "left" : { 3 | "panelheight" : 718, 4 | "splitterpos" : 302, 5 | "topwindowstate" : "HIDE", 6 | "windowheight" : 756 7 | }, 8 | "right" : { 9 | "panelheight" : 718, 10 | "splitterpos" : 453, 11 | "topwindowstate" : "NORMAL", 12 | "windowheight" : 756 13 | } 14 | } -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/pcs/workbench-pane.pper: -------------------------------------------------------------------------------- 1 | { 2 | "TabSet1" : 0, 3 | "TabSet2" : 1, 4 | "TabZoom" : { 5 | } 6 | } -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/rmd-outputs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/saved_source_markers: -------------------------------------------------------------------------------- 1 | {"active_set":"","sets":[]} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/sources/prop/28BDF35D: -------------------------------------------------------------------------------- 1 | { 2 | "chunk_output_type" : "inline", 3 | "cursorPosition" : "22,375", 4 | "scrollLine" : "11", 5 | "source_window_id" : "wb2mjx8frqxjl" 6 | } -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/sources/prop/BC05893E: -------------------------------------------------------------------------------- 1 | { 2 | "chunk_output_type" : "inline", 3 | "cursorPosition" : "20,0", 4 | "scrollLine" : "17", 5 | "source_window_id" : "wb2mjx8frqxjl", 6 | "tempName" : "Untitled1" 7 | } -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/sources/prop/INDEX: -------------------------------------------------------------------------------- 1 | ~%2FPython_Projects%2FKmerTax%2FAnalysis%2FKmer_analysis.rmd="BC05893E" 2 | ~%2FRMB%2FBioProtocol%2FANALYSIS%2FStats%2FMicrobiomeAnalysis.rmd="28BDF35D" 3 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/sources/s-A25273C9/BF93FF9C: -------------------------------------------------------------------------------- 1 | { 2 | "collab_server" : "", 3 | "contents" : "", 4 | "created" : 1517690224823.000, 5 | "dirty" : true, 6 | "encoding" : "UTF-8", 7 | "folds" : "", 8 | "hash" : "0", 9 | "id" : "BF93FF9C", 10 | "lastKnownWriteTime" : 1517856909, 11 | "last_content_update" : 1517867195943, 12 | "path" : "~/Python_Projects/KmerTax/Analysis/Kmer_analysis.rmd", 13 | "project_path" : null, 14 | "properties" : { 15 | "chunk_output_type" : "inline", 16 | "cursorPosition" : "20,0", 17 | "scrollLine" : "17", 18 | "source_window_id" : "wb2mjx8frqxjl", 19 | "tempName" : "Untitled1" 20 | }, 21 | "relative_order" : 2, 22 | "source_on_save" : false, 23 | "source_window" : "", 24 | "type" : "r_markdown" 25 | } -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/sources/s-A25273C9/BF93FF9C-contents: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Kmer Analysis" 3 | output: html_notebook 4 | --- 5 | 6 | ```{r} 7 | library(tidyverse) 8 | ``` 9 | 10 | 11 | ```{r} 12 | kmers4 <- read_tsv("~/Python_Projects/KmerTax/Data/full_k4.tsv", col_types = cols(OTU_ID = col_character())) 13 | kmers5 <- read_tsv("~/Python_Projects/KmerTax/Data/V4_K5.tsv", col_types = cols(OTU_ID = col_character())) 14 | kmers6 <- read_tsv("~/Python_Projects/KmerTax/Data/k6.tsv", col_types = cols(OTU_ID = col_character())) 15 | tax <- read_rds("~/RMB/Reference/gg_otus_tax.rds") 16 | tax <- tax[match(kmers4$OTU_ID, tax$variable),] 17 | ``` 18 | 19 | ```{r} 20 | pc <- princomp(kmers6[,-1]) 21 | pc_axes <- cbind(tax, pc$scores) 22 | phy_cent <- pc_axes %>% 23 | group_by(Phylum) 24 | 25 | pc_gg <- pc_axes %>% 26 | ggplot(aes(Comp.1, Comp.3, color = Phylum)) + 27 | geom_point(size = 0.1, alpha = 0.3) + 28 | theme_minimal() + 29 | guides(colour = guide_legend(override.aes = list(alpha = 1)), 30 | size = guide_legend(override.aes = list(size = 1))) + 31 | theme(legend.position = "none") 32 | 33 | p <- plot_ly(pc_axes, x = ~Comp.1, y = ~Comp.2, z = ~Comp.3, color = ~Phylum, marker = list(size = 1)) 34 | p 35 | ``` 36 | 37 | ```{r} 38 | data.frame(Comp = names(pc$sdev), dev = pc$sdev) %>% 39 | mutate(Comp = as.numeric(gsub("Comp.", "", Comp))) %>% 40 | mutate(eig = dev^2, perc = eig/sum(eig)) %>% 41 | ggplot(aes(x = Comp, y = perc)) + 42 | geom_bar(stat = "identity") 43 | 44 | ``` 45 | 46 | ```{r} 47 | 48 | ``` 49 | 50 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/sources/s-A25273C9/C3C00765-contents: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Microbiome Analysis" 3 | output: html_notebook 4 | author: "Joseph Edwards" 5 | --- 6 | 7 | ## Introduction 8 | In this R notebook, we will be conducting an example analysis of microbiome data from the roots of plants. This is not a comprehensive analysis, but the workflow here gives a barebones structure for a typical analysis of amplicon data. If the reader has any questions or concerns, please contact Joseph Edwards at edwards@ucdavis.edu or Chistian Santos at cmsantosm@ucdavis.edu. 9 | 10 | ## Background on the data 11 | This data is derived from Santos-Medellín et al. [Drought stress results in a compartment-specific restructuring of the rice root-associated microbiomes. *MBio*, 2017](http://mbio.asm.org/content/8/4/e00764-17.short). In this paper, the authors inspect the microbiomes of various rice genotypes when exposed to drought in different soils. The OTU table for this particular tutorial was generated only from the well-watered plants in this study. 12 | 13 | ## Required libraries 14 | Here we will be loading in the necessary libraries for the example analysis. The tidyverse contains the libraries ggplot2, tibble, tidyr, readr, purrr, dplyr, stringr, and forcats. The tidyMB package contains a bunch of useful wrapper functions to make microbiome analysis streamlined with a tidy workflow. The vegan package contains many tools essential for community (and microbial) ecology. 15 | ```{r} 16 | library(tidyverse) 17 | library(tidyMB) 18 | library(vegan) 19 | library(reshape2) 20 | ``` 21 | 22 | ## Load in the data 23 | Here we will load in the OTU table, the mapping file (metadata), and the taxonomy table. The OTU table and mapping file are tab delimited files generated freshly for this analysis. If the user would like to generate these files for themselves, please follow the instructions [here](https://github.com/bulksoil/BioProtocol/blob/master/ANALYSIS/SeqProcessing/seq_processing.md). The taxonomy table is a pre-compiled table that is in a ready-to-load R data structure. The OTU table was constructed using closed reference clustering. Therefore there was no need to assign taxonomies to the OTUs. 24 | ```{r} 25 | otu_table <- read.table("../../DATA/example_otu_table.tsv", sep = "\t", header = T, row.names = 1) 26 | map_table <- read_tsv("../../DATA/example_map.tsv") 27 | tax_table <- read_rds("../../DATA/gg_otus_tax.rds") 28 | ``` 29 | 30 | ## Filtering the data 31 | Here is where the user will clean up the data. This includes removing plastid and mitochondria OTUs from the dataset, filtering out low-depth samples, and removing OTUs which are not regularly present in the samples. We will remove OTUs which are not present in at least 5% of the samples. 32 | 33 | ### Assemble data into a 'tidy' format 34 | A good rule of thumb in any analysis is to convert data into a tidy format. To be tidy, the dataset should have one observation per row and the additional columns should reflect information about that observation. 35 | ```{r} 36 | map_table <- map_table[match(colnames(otu_table), map_table$SampleID),] 37 | mb_experiment <- melt(cbind(map_table, t(otu_table)), id.vars = names(map_table)) %>% 38 | inner_join(tax_table, by = "variable") 39 | ``` 40 | 41 | ### Distribution of sequencing depth 42 | It's a good idea to first look at the distribution of sampling depth in each sample type. Sometimes samples are not well represented in the sequencing and should be removed before further analysis. 43 | ```{r} 44 | mb_experiment %>% 45 | group_by(SampleID, Compartment) %>% 46 | summarise(Depth = sum(value)) %>% 47 | ggplot(aes(Depth, fill = Compartment)) + 48 | geom_histogram() + 49 | scale_fill_manual(values = c("#E41A1C", "#377EB8", "#984EA3")) + 50 | theme_minimal() + 51 | facet_grid(.~Compartment) 52 | ``` 53 | Here, it appears that all the samples are fine. 54 | 55 | ### Identify and remove plastid and mitochondria OTUs and define a column for sequencing depth 56 | ```{r} 57 | mb_experiment <- mb_experiment %>% 58 | filter(Family != "mitochondria") %>% 59 | filter(Class != "Chloroplast") %>% 60 | group_by(SampleID) %>% 61 | mutate(Depth = sum(value)) 62 | ``` 63 | 64 | ### Remove OTUs which are not present in at least 5% of the samples 65 | Let us first add a few columns to our data. Here we will add a column for the prevalence of each OTU, the relative abundance of each OTU (per mille), and a column specifying whether the column will be kept after filtering based upon a 5% prevalence threshold. 66 | ```{r} 67 | mb_experiment <- mb_experiment %>% 68 | group_by(variable) %>% 69 | mutate(prev = sum(value > 0) / n()) %>% 70 | mutate(RA = (value / Depth) * 1000) %>% 71 | mutate(Status = ifelse(prev >= 0.05, "Keep", "Discard")) 72 | ``` 73 | 74 | Next we will make a graph plotting mean relative abundance vs. prevalence. The points represent each OTU and are colored by whether they will be kept after filtering. 75 | ```{r} 76 | prev_plot <- mb_experiment %>% 77 | group_by(variable, prev, Status) %>% 78 | summarise(mean_ra = mean(RA)) %>% 79 | ggplot(aes(x = mean_ra, y = prev, color = Status)) + 80 | geom_point(alpha = 0.1) + 81 | scale_x_log10() + 82 | scale_color_manual(values = c("red", "black")) + 83 | labs(x = "Mean Relative Abundance (log10)", y = "Prevalence") + 84 | theme_minimal() + 85 | theme(text = element_text(size = 12), legend.position = "none") 86 | 87 | prev_plot 88 | ``` 89 | 90 | Finally we will remove all the low prevalence OTUs 91 | ```{r} 92 | mb_experiment <- mb_experiment %>% 93 | filter(Status == "Keep") 94 | ``` 95 | 96 | 97 | ## Beta Diversity 98 | One of the first things microbial ecologists do when they finally have their data cleaned up and in a managable format is to identify the obvious underlying patterns using principal coordinate analysis. Here we will use the convenient tidy_pcoa wrapper function from the tidyMB package to perform a PCoA using a Bray-Curtis dissimilary metric between the samples. 99 | ```{r} 100 | exp_pc <- tidy_pcoa(mb_experiment %>% 101 | mutate(logRA = log2(RA + 1)) %>% 102 | select(SampleID, Tub, Compartment, Soil, Genotype, variable, RA, logRA), 103 | value = "logRA", dist = "bray") 104 | ``` 105 | 106 | Plot it out 107 | ```{r} 108 | pc_plot <- exp_pc$axes %>% 109 | ggplot(aes(MDS1, MDS2, color = Compartment)) + 110 | geom_point(size = 3, alpha = 0.8) + 111 | labs(x = paste("PCo1 (", round(exp_pc$eigen_vals[1], 3)*100, "%)", sep = ""), 112 | y = paste("PCo2 (", round(exp_pc$eigen_vals[2], 3)*100, "%)", sep = "")) + 113 | theme_minimal() + 114 | scale_color_manual(values = c("#E41A1C", "#377EB8", "#984EA3")) + 115 | theme(text = element_text(size = 12), legend.position = "none") 116 | 117 | pc_plot 118 | ``` 119 | From the results, we can see that the bulk soil and rhizosphere have very similar communities while the endosphere is very different from both of these compartments. Further analysis will tell us which phyla and OTUs differ between the compartments and how diverse each community is. 120 | 121 | ## Alpha Diversity 122 | Alpha diversity is a measure of how diverse any given sample is (i.e. how many microbes are in the sample or how even are their distributions?). There are a few different measures of alpha diversity and the results can be different depending on the metric. 123 | 124 | Here, we will produce two measures of alpha diversity - species richness and Shannon's entropy. Species richness is simply counting how many different units are detected within a sample. Shannon's entropy requires that the abundances be in a percentage (rather than per mille) form. 125 | ```{r} 126 | mb_a_div <- mb_experiment %>% 127 | group_by(SampleID, Compartment, Soil) %>% 128 | mutate(RA = RA /1000) %>% 129 | filter(value > 0) %>% 130 | summarise(Richness = sum(value > 0), Shannon = -sum(log(RA) * RA)) 131 | ``` 132 | 133 | Plot it out. 134 | ```{r} 135 | adiv_plot <- mb_a_div %>% 136 | ungroup() %>% 137 | mutate(Compartment = fct_relevel(Compartment, "BulkSoil", "Rhizosphere", "Endosphere")) %>% 138 | gather(metric, value, -c(SampleID, Compartment, Soil)) %>% 139 | ggplot(aes(Compartment, value, fill = Compartment)) + 140 | geom_boxplot() + 141 | facet_wrap(~metric, scales = "free") + 142 | theme_minimal() + 143 | labs(x = "", y = "Value") + 144 | scale_fill_manual(values = c("#E41A1C", "#984EA3", "#377EB8")) + 145 | theme(text = element_text(size = 12), 146 | legend.position = "none", 147 | axis.text.x = element_text(angle = 30, hjust = 1)) 148 | 149 | adiv_plot 150 | ``` 151 | Firstly, notice that the graphs have different scales on the y-axis but overall, the patterns look very similar. Species richness and Shannon entropy are measureing different things, but the conclusions drawn from these two techniques can be similar. Here we notice that the bulk soil and the rhizosphere have similar levels of diversity while the endosphere has a reduced diversity compared to the other two sample types. We infer this to mean that the endosphere is a niche that fewer of the microbes in the soil can reside in compared to the rhizosphere. 152 | 153 | ## Phylum Plots 154 | Perhaps the researcher wants to know the microbial patterns at a higher level than OTU. By looking at phylum level abundances, one can get a sense of how large the differences in community structures are between any given comparison. 155 | 156 | Each OTU in the dataset has taxonomic information assigned to it, so to begin, we will aggregate the counts for each phylum in each sample. Next, the chunk of code nests the data and sums up the total abundance for each detected phylum across the dataset. We filter the 10 most highly represent phyla and take a mean of their relative abundance across sample types. 157 | ```{r} 158 | phy_abundance <- mb_experiment %>% 159 | group_by(SampleID, Phylum, SampleID, Compartment, Soil) %>% 160 | summarise(phy_total = sum(RA)) %>% 161 | group_by(Phylum) %>% 162 | nest() %>% 163 | mutate(total = map_dbl(data, ~sum(.x$phy_total))) %>% 164 | top_n(10, total) %>% 165 | select(-total) %>% 166 | unnest(data) %>% 167 | group_by(Phylum, Compartment, Soil) %>% 168 | summarise(mean_phy = mean(phy_total)) %>% 169 | ungroup() %>% 170 | mutate(Compartment = fct_relevel(Compartment, "BulkSoil", "Rhizosphere", "Endosphere")) 171 | ``` 172 | 173 | Plot it out 174 | ```{r} 175 | phy_plot <- phy_abundance %>% 176 | ggplot(aes(x = Compartment, mean_phy, fill = Phylum)) + 177 | geom_bar(stat = "identity") + 178 | scale_fill_brewer(palette = "Spectral") + 179 | facet_grid(.~Soil) + 180 | theme_minimal() + 181 | labs(x = "", y = "Relative Abundance (‰)") + 182 | theme(axis.text.x = element_text(angle = 30, hjust = 1), text = element_text(size = 12)) 183 | 184 | phy_plot 185 | ``` 186 | Here we can see that there appear to be statistically different distributions of phyla in each compartment. In each tested soil the bulk soil and rhizopshere have a lower relative abundance of proteobacteria compared the endosphere, while the opposite distribution appears for Acidobacteria. 187 | 188 | 189 | ## Differential abundance analysis 190 | Here we will compare the microbiomes of the rhizosphere and endosphere to that of the bulk soil to see which OTUs are differentially abundant and describing the witnessed differences between the sample types. For this particular example we will be using DESeq2 to identify the OTUs which prefer one compartment compared to another. Again, this will be done using a tidy framework in order to prevent the creation of excessive dataframes. Essential to this approach are the tidyMB and biobroom packages. 191 | 192 | In the chunk of code below, we filter for OTUs which are represented in 10% or more samples and next load the data into an object useful for the DESeq2 package (using the tidyDGEL function). Because we are interested in understanding which OTUs are differentially abunant between the compartments, our grouping variable is the Compartment column. The DESeq command will then run all of the processes in the DESeq2 workflow. Finally, lfcShrink identify the OTUs differentially abundant between the levels provided in the contrasts. 193 | ```{r} 194 | library(DESeq2) 195 | library(broom) 196 | library(biobroom) 197 | DESeq2_example <- mb_experiment %>% 198 | select(Compartment, variable, value, SampleID) %>% 199 | group_by(variable) %>% 200 | filter(sum(value > 0) / n() > 0.1) %>% 201 | mutate(Compartment = relevel(factor(Compartment), ref = "BulkSoil")) %>% 202 | mutate(group = Compartment) %>% 203 | group_by(1) %>% 204 | nest() %>% 205 | mutate(DGEL = map(data, ~tidyDGEL(., value = "value", group_column = "group", method = "DESeq2", formula = "~ group"))) %>% 206 | mutate(dds = map(DGEL, ~DESeq(.))) %>% 207 | mutate(BulkSoil_Endosphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Endosphere")))) %>% 208 | mutate(BulkSoil_Rhizosphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Rhizosphere")))) %>% 209 | dplyr::select(BulkSoil_Endosphere, BulkSoil_Rhizosphere) %>% 210 | gather(key = Comparison, value = results) 211 | ``` 212 | 213 | Because the resulting object is nested, we will go ahead and unnest it to look at the results. We can then classify those OTUs which are differentially abundant in some scenario (adjusted P value <= 0.05) as being enriched in one compartment compared to another. 214 | ```{r} 215 | DESeq2_example_results <- DESeq2_example %>% 216 | unnest(map(results, ~tidy(.))) %>% 217 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 218 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 219 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 220 | replace_na(list(classification = "ns")) %>% 221 | mutate(Comparison = gsub("Soil_", " Soil vs. ", Comparison)) %>% 222 | mutate(Comparison = fct_relevel(Comparison, "Bulk Soil vs. Rhizosphere", "Bulk Soil vs. Endosphere")) 223 | ``` 224 | 225 | There are many things that one can do with this dataset. One of the most common ways of visualizing patterns is to make a MA plot with the mean abundance on the x-axis and the log-fold change between the two compartments on the y-axis. Each point represents one OTU and its color represents whethere the OTU was differentially abundant. 226 | ```{r} 227 | MA_plot <- DESeq2_example_results %>% 228 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 229 | geom_point(size = 1) + 230 | facet_grid(.~Comparison) + 231 | scale_x_log10() + 232 | scale_color_manual(values = c("red", "steelblue", "grey30", "#984EA3")) + 233 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 234 | labs(x = "Mean abundance (log10)", y = "Log Fold Change") + 235 | theme_minimal() + 236 | theme(text = element_text(size = 12), legend.position = "none") 237 | 238 | MA_plot 239 | ``` 240 | In this plot we can see that very few of the microbes in the bulk soil are depleted from the rhizosphere. It appears that rhizosphere has an enrichment role rather than a depletion role. In the endosphere, we see many OTUs which are enriched compared to the bulk soil and many bulk soil OTUs which are depleted. This makes sense as the endosphere is a nutrient rich niche that has many physical and host-associated barriers for colonization. 241 | 242 | ## Conclusion 243 | Here we have presented a small introduction to plant root microbiome data analysis generated from 16S rRNA gene sequencing. This is by no means a comprehensive workflow, but it can serve as a good introduction to microbiome data analysis for a user with little experience. We have emphasized the use of tidy tools in order to make the code more readable (and hopefully easier to reproduce). We hope that the reader has come away with several points. 244 | 245 | 1. Do not reinvent the wheel 246 | + Use the packages that already exist in order to maximize reproducibilty and minimize mistakes 247 | 2. Drawn on approaches that have been used across disciplines 248 | + DESeq2 was not designed for microbiome studies, but it works quite well microbiome purposes. Other approaches designed for other fields can also work for microbiome analysis. 249 | 3. Use a tidy workflow 250 | + This will ensure that the code is compact, cleaner, and easier to read than alternative methods. 251 | 252 | 253 | 254 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/sources/s-A25273C9/lock_file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/92953359/sources/s-A25273C9/lock_file -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/92953359/unsaved-notebooks/C3C00765/1/chunks.json: -------------------------------------------------------------------------------- 1 | {"chunk_rendered_width":400} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/929533598EFCBFAF/chunks.json: -------------------------------------------------------------------------------- 1 | {"chunk_definitions":[{"chunk_id":"conbs9k8v86lg","chunk_label":"unnamed-chunk-3","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-1"},"row":38,"row_count":1,"visible":true},{"chunk_id":"cfh7w37oqgure","chunk_label":"unnamed-chunk-4","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-9"},"row":51,"row_count":1,"visible":true},{"chunk_id":"c1cup1of484m3","chunk_label":"unnamed-chunk-5","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-3"},"row":61,"row_count":1,"visible":true},{"chunk_id":"c1lz5bi0ajiv0","chunk_label":"unnamed-chunk-6","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-4"},"row":71,"row_count":1,"visible":true},{"chunk_id":"ctdl1y7hlnzwv","chunk_label":"unnamed-chunk-7","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-6"},"row":87,"row_count":1,"visible":true},{"chunk_id":"cxjdrnmy2ovjy","chunk_label":"unnamed-chunk-8","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-7"},"row":93,"row_count":1,"visible":true},{"chunk_id":"cbod964bcc19e","chunk_label":"unnamed-chunk-9","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-2"},"row":103,"row_count":1,"visible":true},{"chunk_id":"cn097rd6yrqt5","chunk_label":"unnamed-chunk-10","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-4"},"row":117,"row_count":1,"visible":true},{"chunk_id":"c6zpd7d8n5qlb","chunk_label":"unnamed-chunk-12","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-1"},"row":149,"row_count":1,"visible":true},{"chunk_id":"ch7ikfjr1lozr","chunk_label":"unnamed-chunk-14","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-2"},"row":184,"row_count":1,"visible":true},{"chunk_id":"cq8r4x9dc8qie","chunk_label":"unnamed-chunk-17","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-1"},"row":238,"row_count":1,"visible":true}],"doc_write_time":1517504161} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/92953359C22BEDC9/c6m332ir3orow/00000c.csv: -------------------------------------------------------------------------------- 1 | "0","exp_pc <- tidy_pcoa(mb_experiment %>% mutate(logRA = log2(RA + 1)), value = ""logRA"") 2 | " 3 | "2","Gathering metadata 4 | " 5 | "2","Removing the column variable from the metadata. 6 | " 7 | "2","Converting to wide table. 8 | " 9 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/92953359C22BEDC9/chunks.json: -------------------------------------------------------------------------------- 1 | {"chunk_definitions":[{"chunk_id":"conbs9k8v86lg","chunk_label":"unnamed-chunk-3","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-15"},"row":35,"row_count":1,"visible":true},{"chunk_id":"cy88f99yb9a22","chunk_label":"unnamed-chunk-4","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-16"},"row":44,"row_count":1,"visible":true},{"chunk_id":"c1lz5bi0ajiv0","chunk_label":"unnamed-chunk-5","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-18"},"row":55,"row_count":1,"visible":true},{"chunk_id":"ctdl1y7hlnzwv","chunk_label":"unnamed-chunk-6","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-2"},"row":71,"row_count":1,"visible":true},{"chunk_id":"cxjdrnmy2ovjy","chunk_label":"unnamed-chunk-7","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-4"},"row":77,"row_count":1,"visible":true},{"chunk_id":"c6m332ir3orow","chunk_label":"unnamed-chunk-8","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-3"},"row":83,"row_count":1,"visible":true}],"chunk_rendered_width":662,"doc_write_time":1517354647} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/c1cup1of484m3/000002.csv: -------------------------------------------------------------------------------- 1 | "0","mb_experiment <- mb_experiment %>% " 2 | "0"," filter(Family != ""mitochondria"") %>% " 3 | "0"," filter(Class != ""Chloroplast"") %>% " 4 | "0"," group_by(SampleID) %>% " 5 | "0"," mutate(Depth = sum(value))" 6 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/c1lz5bi0ajiv0/000002.csv: -------------------------------------------------------------------------------- 1 | "0","mb_experiment <- mb_experiment %>% " 2 | "0"," group_by(variable) %>% " 3 | "0"," mutate(prev = sum(value > 0) / n()) %>% " 4 | "0"," mutate(RA = (value / Depth) * 1000) %>% " 5 | "0"," mutate(Status = ifelse(prev >= 0.05, ""Keep"", ""Discard""))" 6 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/c6zpd7d8n5qlb/000002.metadata: -------------------------------------------------------------------------------- 1 | {"conditions":[],"height":432.6328800988875,"size_behavior":0,"width":700.0000000000000} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/c6zpd7d8n5qlb/000002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/c6zpd7d8n5qlb/000002.png -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/c6zpd7d8n5qlb/000002.snapshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/c6zpd7d8n5qlb/000002.snapshot -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cbod964bcc19e/00000e.csv: -------------------------------------------------------------------------------- 1 | "0","exp_pc <- tidy_pcoa(mb_experiment %>% 2 | mutate(logRA = log2(RA + 1)) %>% 3 | select(SampleID, Tub, Compartment, Soil, Genotype, variable, RA, logRA), 4 | value = ""logRA"", dist = ""bray"") 5 | " 6 | "2","Gathering metadata 7 | " 8 | "2","Removing the column variable from the metadata. 9 | " 10 | "2","Converting to wide table. 11 | " 12 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cfh7w37oqgure/00000b.metadata: -------------------------------------------------------------------------------- 1 | {"conditions":[[0,"`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.\n"]],"height":432.6328800988875,"size_behavior":0,"width":700.0000000000000} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cfh7w37oqgure/00000b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cfh7w37oqgure/00000b.png -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cfh7w37oqgure/00000b.snapshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cfh7w37oqgure/00000b.snapshot -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ch7ikfjr1lozr/000002.metadata: -------------------------------------------------------------------------------- 1 | {"conditions":[],"height":432.6328800988875,"size_behavior":0,"width":700.0000000000000} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ch7ikfjr1lozr/000002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ch7ikfjr1lozr/000002.png -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ch7ikfjr1lozr/000002.snapshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ch7ikfjr1lozr/000002.snapshot -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/chunks.json: -------------------------------------------------------------------------------- 1 | {"chunk_definitions":[{"chunk_id":"conbs9k8v86lg","chunk_label":"unnamed-chunk-3","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-1"},"row":38,"row_count":1,"visible":true},{"chunk_id":"cfh7w37oqgure","chunk_label":"unnamed-chunk-4","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-9"},"row":51,"row_count":1,"visible":true},{"chunk_id":"c1cup1of484m3","chunk_label":"unnamed-chunk-5","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-3"},"row":61,"row_count":1,"visible":true},{"chunk_id":"c1lz5bi0ajiv0","chunk_label":"unnamed-chunk-6","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-4"},"row":71,"row_count":1,"visible":true},{"chunk_id":"ctdl1y7hlnzwv","chunk_label":"unnamed-chunk-7","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-6"},"row":87,"row_count":1,"visible":true},{"chunk_id":"cxjdrnmy2ovjy","chunk_label":"unnamed-chunk-8","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-7"},"row":93,"row_count":1,"visible":true},{"chunk_id":"cbod964bcc19e","chunk_label":"unnamed-chunk-9","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-2"},"row":103,"row_count":1,"visible":true},{"chunk_id":"cn097rd6yrqt5","chunk_label":"unnamed-chunk-10","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-4"},"row":117,"row_count":1,"visible":true},{"chunk_id":"c6zpd7d8n5qlb","chunk_label":"unnamed-chunk-12","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-1"},"row":149,"row_count":1,"visible":true},{"chunk_id":"ch7ikfjr1lozr","chunk_label":"unnamed-chunk-14","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-2"},"row":184,"row_count":1,"visible":true},{"chunk_id":"cq8r4x9dc8qie","chunk_label":"unnamed-chunk-17","document_id":"C3C00765","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-1"},"row":238,"row_count":1,"visible":true}],"doc_write_time":1517504161} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cn097rd6yrqt5/00001a.metadata: -------------------------------------------------------------------------------- 1 | {"conditions":[],"height":432.6328800988875,"size_behavior":0,"width":700.0000000000000} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cn097rd6yrqt5/00001a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cn097rd6yrqt5/00001a.png -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cn097rd6yrqt5/00001a.snapshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cn097rd6yrqt5/00001a.snapshot -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/conbs9k8v86lg/000002.csv: -------------------------------------------------------------------------------- 1 | "0","mb_experiment <- melt(cbind(map_table, t(otu_table)), id.vars = names(map_table)) %>% 2 | inner_join(tax_table, by = ""variable"") 3 | " 4 | "2","Column `variable` joining factor and character vector, coercing into character vector" 5 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cq8r4x9dc8qie/000002.metadata: -------------------------------------------------------------------------------- 1 | {"conditions":[],"height":432.6328800988875,"size_behavior":0,"width":700.0000000000000} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cq8r4x9dc8qie/000002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cq8r4x9dc8qie/000002.png -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cq8r4x9dc8qie/000002.snapshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cq8r4x9dc8qie/000002.snapshot -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ctdl1y7hlnzwv/000004.metadata: -------------------------------------------------------------------------------- 1 | {"conditions":[],"height":405.4388133498146,"size_behavior":0,"width":656.0000000000000} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ctdl1y7hlnzwv/000004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ctdl1y7hlnzwv/000004.png -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ctdl1y7hlnzwv/000004.snapshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/ctdl1y7hlnzwv/000004.snapshot -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cxjdrnmy2ovjy/000002.metadata: -------------------------------------------------------------------------------- 1 | {"classes":["grouped_df","tbl_df","tbl","data.frame"],"ncol":21,"nrow":593628} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cxjdrnmy2ovjy/000002.rdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/ANALYSIS/Stats/.Rproj.user/shared/notebooks/CB327C74-MicrobiomeAnalysis/1/s/cxjdrnmy2ovjy/000002.rdf -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/92953359A25273C9/chunks.json: -------------------------------------------------------------------------------- 1 | {"chunk_definitions":[{"chunk_id":"c94mg95tffj05","chunk_label":"unnamed-chunk-1","document_id":"BF93FF9C","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-7"},"row":7,"row_count":1,"visible":true},{"chunk_id":"cgkzm0p0ft1vn","chunk_label":"unnamed-chunk-2","document_id":"BF93FF9C","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-1"},"row":16,"row_count":1,"visible":true},{"chunk_id":"cgpxz02ls5dpg","chunk_label":"unnamed-chunk-3","document_id":"BF93FF9C","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-8"},"row":34,"row_count":1,"visible":true}],"doc_write_time":1517867195} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/c94mg95tffj05/000002.csv: -------------------------------------------------------------------------------- 1 | "0","library(tidyverse) 2 | " 3 | "2","── Attaching packages ──────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ── 4 | " 5 | "2","✔ ggplot2 2.2.1 ✔ purrr  0.2.4 6 | ✔ tibble  1.3.4 ✔ dplyr  0.7.4 7 | ✔ tidyr  0.7.2 ✔ stringr 1.2.0 8 | ✔ ggplot2 2.2.1 ✔ forcats 0.2.0 9 | " 10 | "2","── Conflicts ─────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ── 11 | ✖ dplyr::filter() masks stats::filter() 12 | ✖ dplyr::lag() masks stats::lag() 13 | " 14 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/cgpxz02ls5dpg/000006.csv: -------------------------------------------------------------------------------- 1 | "0","p 2 | " 3 | "2","No trace type specified: 4 | Based on info supplied, a 'scatter3d' trace seems appropriate. 5 | Read more about this trace type -> https://plot.ly/r/reference/#scatter3d 6 | " 7 | "2","No scatter3d mode specifed: 8 | Setting the mode to markers 9 | Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode 10 | " 11 | "2","n too large, allowed maximum for palette Set2 is 8 12 | Returning the palette you asked for with that many colors 13 | " 14 | "2","No trace type specified: 15 | Based on info supplied, a 'scatter3d' trace seems appropriate. 16 | Read more about this trace type -> https://plot.ly/r/reference/#scatter3d 17 | " 18 | "2","No scatter3d mode specifed: 19 | Setting the mode to markers 20 | Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode 21 | " 22 | "2","n too large, allowed maximum for palette Set2 is 8 23 | Returning the palette you asked for with that many colors 24 | " 25 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/cgpxz02ls5dpg/000007.json: -------------------------------------------------------------------------------- 1 | [{"name":"htmlwidgets","version":"0.9","src":{"file":"\/Library\/Frameworks\/R.framework\/Versions\/3.4\/Resources\/library\/htmlwidgets\/www"},"meta":null,"script":"htmlwidgets.js","stylesheet":null,"head":null,"attachment":null,"package":null,"all_files":true},{"name":"plotly-binding","version":"4.7.1","src":{"file":"\/Library\/Frameworks\/R.framework\/Versions\/3.4\/Resources\/library\/plotly\/htmlwidgets"},"meta":null,"script":"plotly.js","stylesheet":null,"head":null,"attachment":null,"package":null,"all_files":false},{"name":"typedarray","version":"0.1","src":{"file":"\/Library\/Frameworks\/R.framework\/Versions\/3.4\/Resources\/library\/plotly\/htmlwidgets\/lib\/typedarray"},"meta":null,"script":"typedarray.min.js","stylesheet":null,"head":null,"attachment":null,"package":null,"all_files":true},{"name":"jquery","version":"1.11.3","src":{"file":"\/Library\/Frameworks\/R.framework\/Versions\/3.4\/Resources\/library\/crosstalk\/lib\/jquery"},"meta":null,"script":"jquery.min.js","stylesheet":null,"head":null,"attachment":null,"package":null,"all_files":true},{"name":"crosstalk","version":"1.0.0","src":{"file":"\/Library\/Frameworks\/R.framework\/Versions\/3.4\/Resources\/library\/crosstalk\/www"},"meta":null,"script":"js\/crosstalk.min.js","stylesheet":"css\/crosstalk.css","head":null,"attachment":null,"package":null,"all_files":true},{"name":"plotlyjs","version":"1.29.2","src":{"file":"\/Library\/Frameworks\/R.framework\/Versions\/3.4\/Resources\/library\/plotly\/htmlwidgets\/lib\/plotlyjs"},"meta":null,"script":"plotly-latest.min.js","stylesheet":"plotly-htmlwidgets.css","head":null,"attachment":null,"package":null,"all_files":true}] 2 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/cgpxz02ls5dpg/000007.metadata: -------------------------------------------------------------------------------- 1 | {"classes":["plotly","htmlwidget"],"sizingPolicy":{"browser":{"defaultHeight":null,"defaultWidth":null,"fill":[true],"padding":null},"defaultHeight":[400.0000000000000],"defaultWidth":["100%"],"knitr":{"defaultHeight":null,"defaultWidth":null,"figure":[true]},"padding":null,"viewer":{"defaultHeight":null,"defaultWidth":null,"fill":[true],"padding":null,"paneHeight":null,"suppress":[false]},"viewer.fill":[true],"viewer.padding":[0.000000000000000]}} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/chunks.json: -------------------------------------------------------------------------------- 1 | {"chunk_definitions":[{"chunk_id":"c94mg95tffj05","chunk_label":"unnamed-chunk-1","document_id":"BF93FF9C","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-7"},"row":7,"row_count":1,"visible":true},{"chunk_id":"cgkzm0p0ft1vn","chunk_label":"unnamed-chunk-2","document_id":"BF93FF9C","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-4"},"row":15,"row_count":1,"visible":true},{"chunk_id":"cgpxz02ls5dpg","chunk_label":"unnamed-chunk-3","document_id":"BF93FF9C","expansion_state":0,"options":{"engine":"r","label":"unnamed-chunk-8"},"row":33,"row_count":1,"visible":true}],"doc_write_time":1517856253} -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/lib/crosstalk-1.0.0/css/crosstalk.css: -------------------------------------------------------------------------------- 1 | /* Adjust margins outwards, so column contents line up with the edges of the 2 | parent of container-fluid. */ 3 | .container-fluid.crosstalk-bscols { 4 | margin-left: -30px; 5 | margin-right: -30px; 6 | white-space: normal; 7 | } 8 | 9 | /* But don't adjust the margins outwards if we're directly under the body, 10 | i.e. we were the top-level of something at the console. */ 11 | body > .container-fluid.crosstalk-bscols { 12 | margin-left: auto; 13 | margin-right: auto; 14 | } 15 | 16 | .crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { 17 | display: inline-block; 18 | padding-right: 12px; 19 | vertical-align: top; 20 | } 21 | 22 | @media only screen and (max-width:480px) { 23 | .crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { 24 | display: block; 25 | padding-right: inherit; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/lib/crosstalk-1.0.0/js/crosstalk.min.js: -------------------------------------------------------------------------------- 1 | !function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gb?1:void 0}Object.defineProperty(c,"__esModule",{value:!0});var f=function(){function a(a,b){for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:this._allKeys,b=Object.keys(this._handles).length;if(0===b)this._value=null;else{this._value=[];for(var c=0;c?@\[\\\]^`{|}~])/g,"\\$1")}function f(a){var b=h(a);Object.keys(i).forEach(function(c){if(b.hasClass(c)&&!b.hasClass("crosstalk-input-bound")){var d=i[c];g(d,a)}})}function g(a,b){var c=h(b).find("script[type='application/json'][data-for='"+e(b.id)+"']"),d=JSON.parse(c[0].innerText),f=a.factory(b,d);h(b).data("crosstalk-instance",f),h(b).addClass("crosstalk-input-bound")}Object.defineProperty(c,"__esModule",{value:!0}),c.register=b;var h=a.jQuery,i={};a.Shiny&&!function(){var b=new a.Shiny.InputBinding,c=a.jQuery;c.extend(b,{find:function(a){return c(a).find(".crosstalk-input")},initialize:function(a){c(a).hasClass("crosstalk-input-bound")||f(a)},getId:function(a){return a.id},getValue:function(a){},setValue:function(a,b){},receiveMessage:function(a,b){},subscribe:function(a,b){c(a).data("crosstalk-instance").resume()},unsubscribe:function(a){c(a).data("crosstalk-instance").suspend()}}),a.Shiny.inputBindings.register(b,"crosstalk.inputBinding")}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(a,b,c){(function(b){"use strict";function c(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}var d=a("./input"),e=c(d),f=a("./filter"),g=b.jQuery;e.register({className:"crosstalk-input-checkboxgroup",factory:function(a,b){var c=new f.FilterHandle(b.group),d=void 0,e=g(a);return e.on("change","input[type='checkbox']",function(){var a=e.find("input[type='checkbox']:checked");0===a.length?(d=null,c.clear()):!function(){var e={};a.each(function(){b.map[this.value].forEach(function(a){e[a]=!0})});var f=Object.keys(e);f.sort(),d=f,c.set(f)}()}),{suspend:function(){c.clear()},resume:function(){d&&c.set(d)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6}],8:[function(a,b,c){(function(b){"use strict";function c(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}var d=a("./input"),e=c(d),f=a("./util"),g=c(f),h=a("./filter"),i=b.jQuery;e.register({className:"crosstalk-input-select",factory:function(a,b){var c=[{value:"",label:"(All)"}],d=g.dataframeToD3(b.items),e={options:c.concat(d),valueField:"value",labelField:"label",searchField:"label"},f=i(a).find("select")[0],j=i(f).selectize(e)[0].selectize,k=new h.FilterHandle(b.group),l=void 0;return j.on("change",function(){0===j.items.length?(l=null,k.clear()):!function(){var a={};j.items.forEach(function(c){b.map[c].forEach(function(b){a[b]=!0})});var c=Object.keys(a);c.sort(),l=c,k.set(c)}()}),{suspend:function(){k.clear()},resume:function(){l&&k.set(l)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6,"./util":11}],9:[function(a,b,c){(function(b){"use strict";function c(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}function d(a,b){for(var c=a.toString();c.length=i&&m<=j&&k.push(b.keys[l])}k.sort(),d.set(k),p=k}}),{suspend:function(){d.clear()},resume:function(){p&&d.set(p)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6}],10:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}function e(a){return a&&a.__esModule?a:{default:a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.SelectionHandle=void 0;var g=function(){function a(a,b){for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:null,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;f(this,a),this._eventRelay=new i.default,this._emitter=new m.SubscriptionTracker(this._eventRelay),this._group=null,this._var=null,this._varOnChangeSub=null,this._extraInfo=m.extend({sender:this},c),this.setGroup(b)}return g(a,[{key:"setGroup",value:function(a){var b=this;if(this._group!==a&&(this._group||a)&&(this._var&&(this._var.off("change",this._varOnChangeSub),this._var=null,this._varOnChangeSub=null),this._group=a,a)){this._var=(0,k.default)(a).var("selection");var c=this._var.on("change",function(a){b._eventRelay.trigger("change",a,b)});this._varOnChangeSub=c}}},{key:"_mergeExtraInfo",value:function(a){return m.extend({},this._extraInfo?this._extraInfo:null,a?a:null)}},{key:"set",value:function(a,b){this._var&&this._var.set(a,this._mergeExtraInfo(b))}},{key:"clear",value:function(a){this._var&&this.set(void 0,this._mergeExtraInfo(a))}},{key:"on",value:function(a,b){return this._emitter.on(a,b)}},{key:"off",value:function(a,b){return this._emitter.off(a,b)}},{key:"close",value:function(){this._emitter.removeAllListeners(),this.setGroup(null)}},{key:"value",get:function(){return this._var?this._var.get():null}}]),a}()},{"./events":1,"./group":4,"./util":11}],11:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function e(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d 4 | Gilles van den Hoven 5 | Michael Geary 6 | Stefan Petre 7 | Yehuda Katz 8 | Corey Jewett 9 | Klaus Hartl 10 | Franck Marcia 11 | Jörn Zaefferer 12 | Paul Bakaus 13 | Brandon Aaron 14 | Mike Alsup 15 | Dave Methvin 16 | Ed Engelhardt 17 | Sean Catchpole 18 | Paul Mclanahan 19 | David Serduke 20 | Richard D. Worth 21 | Scott González 22 | Ariel Flesler 23 | Jon Evans 24 | TJ Holowaychuk 25 | Michael Bensoussan 26 | Robert Katić 27 | Louis-Rémi Babé 28 | Earle Castledine 29 | Damian Janowski 30 | Rich Dougherty 31 | Kim Dalsgaard 32 | Andrea Giammarchi 33 | Mark Gibson 34 | Karl Swedberg 35 | Justin Meyer 36 | Ben Alman 37 | James Padolsey 38 | David Petersen 39 | Batiste Bieler 40 | Alexander Farkas 41 | Rick Waldron 42 | Filipe Fortes 43 | Neeraj Singh 44 | Paul Irish 45 | Iraê Carvalho 46 | Matt Curry 47 | Michael Monteleone 48 | Noah Sloan 49 | Tom Viner 50 | Douglas Neiner 51 | Adam J. Sontag 52 | Dave Reed 53 | Ralph Whitbeck 54 | Carl Fürstenberg 55 | Jacob Wright 56 | J. Ryan Stinnett 57 | unknown 58 | temp01 59 | Heungsub Lee 60 | Colin Snover 61 | Ryan W Tenney 62 | Pinhook 63 | Ron Otten 64 | Jephte Clain 65 | Anton Matzneller 66 | Alex Sexton 67 | Dan Heberden 68 | Henri Wiechers 69 | Russell Holbrook 70 | Julian Aubourg 71 | Gianni Alessandro Chiappetta 72 | Scott Jehl 73 | James Burke 74 | Jonas Pfenniger 75 | Xavi Ramirez 76 | Jared Grippe 77 | Sylvester Keil 78 | Brandon Sterne 79 | Mathias Bynens 80 | Timmy Willison 81 | Corey Frang 82 | Digitalxero 83 | Anton Kovalyov 84 | David Murdoch 85 | Josh Varner 86 | Charles McNulty 87 | Jordan Boesch 88 | Jess Thrysoee 89 | Michael Murray 90 | Lee Carpenter 91 | Alexis Abril 92 | Rob Morgan 93 | John Firebaugh 94 | Sam Bisbee 95 | Gilmore Davidson 96 | Brian Brennan 97 | Xavier Montillet 98 | Daniel Pihlstrom 99 | Sahab Yazdani 100 | avaly 101 | Scott Hughes 102 | Mike Sherov 103 | Greg Hazel 104 | Schalk Neethling 105 | Denis Knauf 106 | Timo Tijhof 107 | Steen Nielsen 108 | Anton Ryzhov 109 | Shi Chuan 110 | Berker Peksag 111 | Toby Brain 112 | Matt Mueller 113 | Justin 114 | Daniel Herman 115 | Oleg Gaidarenko 116 | Richard Gibson 117 | Rafaël Blais Masson 118 | cmc3cn <59194618@qq.com> 119 | Joe Presbrey 120 | Sindre Sorhus 121 | Arne de Bree 122 | Vladislav Zarakovsky 123 | Andrew E Monat 124 | Oskari 125 | Joao Henrique de Andrade Bruni 126 | tsinha 127 | Matt Farmer 128 | Trey Hunner 129 | Jason Moon 130 | Jeffery To 131 | Kris Borchers 132 | Vladimir Zhuravlev 133 | Jacob Thornton 134 | Chad Killingsworth 135 | Nowres Rafid 136 | David Benjamin 137 | Uri Gilad 138 | Chris Faulkner 139 | Elijah Manor 140 | Daniel Chatfield 141 | Nikita Govorov 142 | Wesley Walser 143 | Mike Pennisi 144 | Markus Staab 145 | Dave Riddle 146 | Callum Macrae 147 | Benjamin Truyman 148 | James Huston 149 | Erick Ruiz de Chávez 150 | David Bonner 151 | Akintayo Akinwunmi 152 | MORGAN 153 | Ismail Khair 154 | Carl Danley 155 | Mike Petrovich 156 | Greg Lavallee 157 | Daniel Gálvez 158 | Sai Lung Wong 159 | Tom H Fuertes 160 | Roland Eckl 161 | Jay Merrifield 162 | Allen J Schmidt Jr 163 | Jonathan Sampson 164 | Marcel Greter 165 | Matthias Jäggli 166 | David Fox 167 | Yiming He 168 | Devin Cooper 169 | Paul Ramos 170 | Rod Vagg 171 | Bennett Sorbo 172 | Sebastian Burkhard 173 | nanto 174 | Danil Somsikov 175 | Ryunosuke SATO 176 | Jean Boussier 177 | Adam Coulombe 178 | Andrew Plummer 179 | Mark Raddatz 180 | Dmitry Gusev 181 | Michał Gołębiowski 182 | Nguyen Phuc Lam 183 | Tom H Fuertes 184 | Brandon Johnson 185 | Jason Bedard 186 | Kyle Robinson Young 187 | Renato Oliveira dos Santos 188 | Chris Talkington 189 | Eddie Monge 190 | Terry Jones 191 | Jason Merino 192 | Jeremy Dunck 193 | Chris Price 194 | Amey Sakhadeo 195 | Anthony Ryan 196 | Dominik D. Geyer 197 | George Kats 198 | Lihan Li 199 | Ronny Springer 200 | Marian Sollmann 201 | Corey Frang 202 | Chris Antaki 203 | Noah Hamann 204 | David Hong 205 | Jakob Stoeck 206 | Christopher Jones 207 | Forbes Lindesay 208 | John Paul 209 | S. Andrew Sheppard 210 | Leonardo Balter 211 | Roman Reiß 212 | Benjy Cui 213 | Rodrigo Rosenfeld Rosas 214 | John Hoven 215 | Christian Kosmowski 216 | Liang Peng 217 | TJ VanToll 218 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/lib/plotlyjs-1.29.2/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Plotly, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/lib/plotlyjs-1.29.2/plotly-htmlwidgets.css: -------------------------------------------------------------------------------- 1 | /* 2 | just here so that plotly works 3 | correctly with ioslides. 4 | see https://github.com/ropensci/plotly/issues/463 5 | */ 6 | 7 | slide:not(.current) .plotly.html-widget{ 8 | display: none; 9 | } 10 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/lib/typedarray-0.1/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Plotly, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/.Rproj.user/shared/notebooks/DF0CB8B-Kmer_analysis/1/s/lib/typedarray-0.1/typedarray.min.js: -------------------------------------------------------------------------------- 1 | (function(global){"use strict";var undefined=void 0;var MAX_ARRAY_LENGTH=1e5;function Type(v){switch(typeof v){case"undefined":return"undefined";case"boolean":return"boolean";case"number":return"number";case"string":return"string";default:return v===null?"null":"object"}}function Class(v){return Object.prototype.toString.call(v).replace(/^\[object *|\]$/g,"")}function IsCallable(o){return typeof o==="function"}function ToObject(v){if(v===null||v===undefined)throw TypeError();return Object(v)}function ToInt32(v){return v>>0}function ToUint32(v){return v>>>0}var LN2=Math.LN2,abs=Math.abs,floor=Math.floor,log=Math.log,max=Math.max,min=Math.min,pow=Math.pow,round=Math.round;(function(){var orig=Object.defineProperty;var dom_only=!function(){try{return Object.defineProperty({},"x",{})}catch(_){return false}}();if(!orig||dom_only){Object.defineProperty=function(o,prop,desc){if(orig)try{return orig(o,prop,desc)}catch(_){}if(o!==Object(o))throw TypeError("Object.defineProperty called on non-object");if(Object.prototype.__defineGetter__&&"get"in desc)Object.prototype.__defineGetter__.call(o,prop,desc.get);if(Object.prototype.__defineSetter__&&"set"in desc)Object.prototype.__defineSetter__.call(o,prop,desc.set);if("value"in desc)o[prop]=desc.value;return o}}})();function makeArrayAccessors(obj){if(obj.length>MAX_ARRAY_LENGTH)throw RangeError("Array too large for polyfill");function makeArrayAccessor(index){Object.defineProperty(obj,index,{get:function(){return obj._getter(index)},set:function(v){obj._setter(index,v)},enumerable:true,configurable:false})}var i;for(i=0;i>s}function as_unsigned(value,bits){var s=32-bits;return value<>>s}function packI8(n){return[n&255]}function unpackI8(bytes){return as_signed(bytes[0],8)}function packU8(n){return[n&255]}function unpackU8(bytes){return as_unsigned(bytes[0],8)}function packU8Clamped(n){n=round(Number(n));return[n<0?0:n>255?255:n&255]}function packI16(n){return[n>>8&255,n&255]}function unpackI16(bytes){return as_signed(bytes[0]<<8|bytes[1],16)}function packU16(n){return[n>>8&255,n&255]}function unpackU16(bytes){return as_unsigned(bytes[0]<<8|bytes[1],16)}function packI32(n){return[n>>24&255,n>>16&255,n>>8&255,n&255]}function unpackI32(bytes){return as_signed(bytes[0]<<24|bytes[1]<<16|bytes[2]<<8|bytes[3],32)}function packU32(n){return[n>>24&255,n>>16&255,n>>8&255,n&255]}function unpackU32(bytes){return as_unsigned(bytes[0]<<24|bytes[1]<<16|bytes[2]<<8|bytes[3],32)}function packIEEE754(v,ebits,fbits){var bias=(1<.5)return w+1;return w%2?w+1:w}if(v!==v){e=(1<=pow(2,1-bias)){e=min(floor(log(v)/LN2),1023);f=roundToEven(v/pow(2,e)*pow(2,fbits));if(f/pow(2,fbits)>=2){e=e+1;f=1}if(e>bias){e=(1<>1}}bits.reverse();str=bits.join("");bias=(1<0){return s*pow(2,e-bias)*(1+f/pow(2,fbits))}else if(f!==0){return s*pow(2,-(bias-1))*(f/pow(2,fbits))}else{return s<0?-0:0}}function unpackF64(b){return unpackIEEE754(b,11,52)}function packF64(v){return packIEEE754(v,11,52)}function unpackF32(b){return unpackIEEE754(b,8,23)}function packF32(v){return packIEEE754(v,8,23)}(function(){function ArrayBuffer(length){length=ToInt32(length);if(length<0)throw RangeError("ArrayBuffer size is not a small enough positive integer.");Object.defineProperty(this,"byteLength",{value:length});Object.defineProperty(this,"_bytes",{value:Array(length)});for(var i=0;i=1&&Type(arguments[0])==="object"&&arguments[0]instanceof $TypedArray$){return function(typedArray){if(this.constructor!==typedArray.constructor)throw TypeError();var byteLength=typedArray.length*this.BYTES_PER_ELEMENT;Object.defineProperty(this,"buffer",{value:new ArrayBuffer(byteLength)});Object.defineProperty(this,"byteLength",{value:byteLength});Object.defineProperty(this,"byteOffset",{value:0});Object.defineProperty(this,"length",{value:typedArray.length});for(var i=0;i=1&&Type(arguments[0])==="object"&&!(arguments[0]instanceof $TypedArray$)&&!(arguments[0]instanceof ArrayBuffer||Class(arguments[0])==="ArrayBuffer")){return function(array){var byteLength=array.length*this.BYTES_PER_ELEMENT;Object.defineProperty(this,"buffer",{value:new ArrayBuffer(byteLength)});Object.defineProperty(this,"byteLength",{value:byteLength});Object.defineProperty(this,"byteOffset",{value:0});Object.defineProperty(this,"length",{value:array.length});for(var i=0;i=1&&Type(arguments[0])==="object"&&(arguments[0]instanceof ArrayBuffer||Class(arguments[0])==="ArrayBuffer")){return function(buffer,byteOffset,length){byteOffset=ToUint32(byteOffset);if(byteOffset>buffer.byteLength)throw RangeError("byteOffset out of range");if(byteOffset%this.BYTES_PER_ELEMENT)throw RangeError("buffer length minus the byteOffset is not a multiple of the element size.");if(length===undefined){var byteLength=buffer.byteLength-byteOffset;if(byteLength%this.BYTES_PER_ELEMENT)throw RangeError("length of buffer minus byteOffset not a multiple of the element size");length=byteLength/this.BYTES_PER_ELEMENT}else{length=ToUint32(length);byteLength=length*this.BYTES_PER_ELEMENT}if(byteOffset+byteLength>buffer.byteLength)throw RangeError("byteOffset and length reference an area beyond the end of the buffer");Object.defineProperty(this,"buffer",{value:buffer});Object.defineProperty(this,"byteLength",{value:byteLength});Object.defineProperty(this,"byteOffset",{value:byteOffset});Object.defineProperty(this,"length",{value:length})}.apply(this,arguments)}throw TypeError()}Object.defineProperty($TypedArray$,"from",{value:function(iterable){return new this(iterable)}});Object.defineProperty($TypedArray$,"of",{value:function(){return new this(arguments)}});var $TypedArrayPrototype$={};$TypedArray$.prototype=$TypedArrayPrototype$;Object.defineProperty($TypedArray$.prototype,"_getter",{value:function(index){if(arguments.length<1)throw SyntaxError("Not enough arguments");index=ToUint32(index);if(index>=this.length)return undefined;var bytes=[],i,o;for(i=0,o=this.byteOffset+index*this.BYTES_PER_ELEMENT;i=this.length)return;var bytes=this._pack(value),i,o;for(i=0,o=this.byteOffset+index*this.BYTES_PER_ELEMENT;i0){o._setter(to,o._getter(from));from=from+direction;to=to+direction;count=count-1}return o}});Object.defineProperty($TypedArray$.prototype,"every",{value:function(callbackfn){if(this===undefined||this===null)throw TypeError();var t=Object(this);var len=ToUint32(t.length);if(!IsCallable(callbackfn))throw TypeError();var thisArg=arguments[1];for(var i=0;i1?arguments[1]:undefined;var k=0;while(k1?arguments[1]:undefined;var k=0;while(k0){n=Number(arguments[1]);if(n!==n){n=0}else if(n!==0&&n!==1/0&&n!==-(1/0)){n=(n>0||-1)*floor(abs(n))}}if(n>=len)return-1;var k=n>=0?n:max(len-abs(n),0);for(;k1){n=Number(arguments[1]);if(n!==n){n=0}else if(n!==0&&n!==1/0&&n!==-(1/0)){n=(n>0||-1)*floor(abs(n))}}var k=n>=0?min(n,len-1):len-abs(n);for(;k>=0;k--){if(t._getter(k)===searchElement)return k}return-1}});Object.defineProperty($TypedArray$.prototype,"map",{value:function(callbackfn){if(this===undefined||this===null)throw TypeError();var t=Object(this);var len=ToUint32(t.length);if(!IsCallable(callbackfn))throw TypeError();var res=[];res.length=len;var thisp=arguments[1];for(var i=0;i=2){accumulator=arguments[1]}else{accumulator=t._getter(k++)}while(k=2){accumulator=arguments[1]}else{accumulator=t._getter(k--)}while(k>=0){accumulator=callbackfn.call(undefined,accumulator,t._getter(k),k,t);k--}return accumulator}});Object.defineProperty($TypedArray$.prototype,"reverse",{value:function(){if(this===undefined||this===null)throw TypeError();var t=Object(this);var len=ToUint32(t.length);var half=floor(len/2);for(var i=0,j=len-1;ithis.length){throw RangeError("Offset plus length of array is out of range")}byteOffset=this.byteOffset+offset*this.BYTES_PER_ELEMENT;byteLength=array.length*this.BYTES_PER_ELEMENT;if(array.buffer===this.buffer){tmp=[];for(i=0,s=array.byteOffset;ithis.length){throw RangeError("Offset plus length of array is out of range")}for(i=0;imax?max:v}start=ToInt32(start);end=ToInt32(end);if(arguments.length<1){start=0}if(arguments.length<2){end=this.length}if(start<0){start=this.length+start}if(end<0){end=this.length+end}start=clamp(start,0,this.length);end=clamp(end,0,this.length);var len=end-start;if(len<0){len=0}return new this.constructor(this.buffer,this.byteOffset+start*this.BYTES_PER_ELEMENT,len)}});function makeTypedArray(elementSize,pack,unpack){var TypedArray=function(){Object.defineProperty(this,"constructor",{value:TypedArray});$TypedArray$.apply(this,arguments);makeArrayAccessors(this)};if("__proto__"in TypedArray){TypedArray.__proto__=$TypedArray$}else{TypedArray.from=$TypedArray$.from;TypedArray.of=$TypedArray$.of}TypedArray.BYTES_PER_ELEMENT=elementSize;var TypedArrayPrototype=function(){};TypedArrayPrototype.prototype=$TypedArrayPrototype$;TypedArray.prototype=new TypedArrayPrototype;Object.defineProperty(TypedArray.prototype,"BYTES_PER_ELEMENT",{value:elementSize});Object.defineProperty(TypedArray.prototype,"_pack",{value:pack});Object.defineProperty(TypedArray.prototype,"_unpack",{value:unpack});return TypedArray}var Int8Array=makeTypedArray(1,packI8,unpackI8);var Uint8Array=makeTypedArray(1,packU8,unpackU8);var Uint8ClampedArray=makeTypedArray(1,packU8Clamped,unpackU8);var Int16Array=makeTypedArray(2,packI16,unpackI16);var Uint16Array=makeTypedArray(2,packU16,unpackU16);var Int32Array=makeTypedArray(4,packI32,unpackI32);var Uint32Array=makeTypedArray(4,packU32,unpackU32);var Float32Array=makeTypedArray(4,packF32,unpackF32);var Float64Array=makeTypedArray(8,packF64,unpackF64);global.Int8Array=global.Int8Array||Int8Array;global.Uint8Array=global.Uint8Array||Uint8Array;global.Uint8ClampedArray=global.Uint8ClampedArray||Uint8ClampedArray;global.Int16Array=global.Int16Array||Int16Array;global.Uint16Array=global.Uint16Array||Uint16Array;global.Int32Array=global.Int32Array||Int32Array;global.Uint32Array=global.Uint32Array||Uint32Array;global.Float32Array=global.Float32Array||Float32Array;global.Float64Array=global.Float64Array||Float64Array})();(function(){function r(array,index){return IsCallable(array.get)?array.get(index):array[index]}var IS_BIG_ENDIAN=function(){var u16array=new Uint16Array([4660]),u8array=new Uint8Array(u16array.buffer);return r(u8array,0)===18}();function DataView(buffer,byteOffset,byteLength){if(!(buffer instanceof ArrayBuffer||Class(buffer)==="ArrayBuffer"))throw TypeError();byteOffset=ToUint32(byteOffset);if(byteOffset>buffer.byteLength)throw RangeError("byteOffset out of range");if(byteLength===undefined)byteLength=buffer.byteLength-byteOffset;else byteLength=ToUint32(byteLength);if(byteOffset+byteLength>buffer.byteLength)throw RangeError("byteOffset and length reference an area beyond the end of the buffer");Object.defineProperty(this,"buffer",{value:buffer});Object.defineProperty(this,"byteLength",{value:byteLength});Object.defineProperty(this,"byteOffset",{value:byteOffset})}function makeGetter(arrayType){return function GetViewValue(byteOffset,littleEndian){byteOffset=ToUint32(byteOffset);if(byteOffset+arrayType.BYTES_PER_ELEMENT>this.byteLength)throw RangeError("Array index out of range");byteOffset+=this.byteOffset;var uint8Array=new Uint8Array(this.buffer,byteOffset,arrayType.BYTES_PER_ELEMENT),bytes=[];for(var i=0;ithis.byteLength)throw RangeError("Array index out of range");var typeArray=new arrayType([value]),byteArray=new Uint8Array(typeArray.buffer),bytes=[],i,byteView;for(i=0;i% 38 | inner_join(tax_table, by = "variable") 39 | ``` 40 | 41 | ### Distribution of sequencing depth 42 | It's a good idea to first look at the distribution of sampling depth in each sample type. Sometimes samples are not well represented in the sequencing and should be removed before further analysis. 43 | ```{r} 44 | mb_experiment %>% 45 | group_by(SampleID, Compartment) %>% 46 | summarise(Depth = sum(value)) %>% 47 | ggplot(aes(Depth, fill = Compartment)) + 48 | geom_histogram() + 49 | scale_fill_manual(values = c("#E41A1C", "#377EB8", "#984EA3")) + 50 | theme_minimal() + 51 | facet_grid(.~Compartment) 52 | ``` 53 | Here, it appears that all the samples are fine. 54 | 55 | ### Identify and remove plastid and mitochondria OTUs and define a column for sequencing depth 56 | ```{r} 57 | mb_experiment <- mb_experiment %>% 58 | filter(Family != "mitochondria") %>% 59 | filter(Class != "Chloroplast") %>% 60 | group_by(SampleID) %>% 61 | mutate(Depth = sum(value)) 62 | ``` 63 | 64 | ### Remove OTUs which are not present in at least 5% of the samples 65 | Let us first add a few columns to our data. Here we will add a column for the prevalence of each OTU, the relative abundance of each OTU (per mille), and a column specifying whether the column will be kept after filtering based upon a 5% prevalence threshold. 66 | ```{r} 67 | mb_experiment <- mb_experiment %>% 68 | group_by(variable) %>% 69 | mutate(prev = sum(value > 0) / n()) %>% 70 | mutate(RA = (value / Depth) * 1000) %>% 71 | mutate(Status = ifelse(prev >= 0.05, "Keep", "Discard")) 72 | ``` 73 | 74 | Next we will make a graph plotting mean relative abundance vs. prevalence. The points represent each OTU and are colored by whether they will be kept after filtering. 75 | ```{r} 76 | prev_plot <- mb_experiment %>% 77 | group_by(variable, prev, Status) %>% 78 | summarise(mean_ra = mean(RA)) %>% 79 | ggplot(aes(x = mean_ra, y = prev, color = Status)) + 80 | geom_point(alpha = 0.1) + 81 | scale_x_log10() + 82 | scale_color_manual(values = c("red", "black")) + 83 | labs(x = "Mean Relative Abundance (log10)", y = "Prevalence") + 84 | theme_minimal() + 85 | theme(text = element_text(size = 12), legend.position = "none") 86 | 87 | prev_plot 88 | ``` 89 | 90 | Finally we will remove all the low prevalence OTUs 91 | ```{r} 92 | mb_experiment <- mb_experiment %>% 93 | filter(Status == "Keep") 94 | ``` 95 | 96 | 97 | ## Beta Diversity 98 | One of the first things microbial ecologists do when they finally have their data cleaned up and in a managable format is to identify the obvious underlying patterns using principal coordinate analysis. Here we will use the convenient tidy_pcoa wrapper function from the tidyMB package to perform a PCoA using a Bray-Curtis dissimilary metric between the samples. 99 | ```{r} 100 | exp_pc <- tidy_pcoa(mb_experiment %>% 101 | mutate(logRA = log2(RA + 1)) %>% 102 | select(SampleID, Tub, Compartment, Soil, Genotype, variable, RA, logRA), 103 | value = "logRA", dist = "bray") 104 | ``` 105 | 106 | Plot it out 107 | ```{r} 108 | pc_plot <- exp_pc$axes %>% 109 | ggplot(aes(MDS1, MDS2, color = Compartment)) + 110 | geom_point(size = 3, alpha = 0.8) + 111 | labs(x = paste("PCo1 (", round(exp_pc$eigen_vals[1], 3)*100, "%)", sep = ""), 112 | y = paste("PCo2 (", round(exp_pc$eigen_vals[2], 3)*100, "%)", sep = "")) + 113 | theme_minimal() + 114 | scale_color_manual(values = c("#E41A1C", "#377EB8", "#984EA3")) + 115 | theme(text = element_text(size = 12), legend.position = "none") 116 | 117 | pc_plot 118 | ``` 119 | From the results, we can see that the bulk soil and rhizosphere have very similar communities while the endosphere is very different from both of these compartments. Further analysis will tell us which phyla and OTUs differ between the compartments and how diverse each community is. 120 | 121 | ## Alpha Diversity 122 | Alpha diversity is a measure of how diverse any given sample is (i.e. how many microbes are in the sample or how even are their distributions?). There are a few different measures of alpha diversity and the results can be different depending on the metric. 123 | 124 | Here, we will produce two measures of alpha diversity - species richness and Shannon's entropy. Species richness is simply counting how many different units are detected within a sample. Shannon's entropy requires that the abundances be in a percentage (rather than per mille) form. 125 | ```{r} 126 | mb_a_div <- mb_experiment %>% 127 | group_by(SampleID, Compartment, Soil) %>% 128 | mutate(RA = RA /1000) %>% 129 | filter(value > 0) %>% 130 | summarise(Richness = sum(value > 0), Shannon = -sum(log(RA) * RA)) 131 | ``` 132 | 133 | Plot it out. 134 | ```{r} 135 | adiv_plot <- mb_a_div %>% 136 | ungroup() %>% 137 | mutate(Compartment = fct_relevel(Compartment, "BulkSoil", "Rhizosphere", "Endosphere")) %>% 138 | gather(metric, value, -c(SampleID, Compartment, Soil)) %>% 139 | ggplot(aes(Compartment, value, fill = Compartment)) + 140 | geom_boxplot() + 141 | facet_wrap(~metric, scales = "free") + 142 | theme_minimal() + 143 | labs(x = "", y = "Value") + 144 | scale_fill_manual(values = c("#E41A1C", "#984EA3", "#377EB8")) + 145 | theme(text = element_text(size = 12), 146 | legend.position = "none", 147 | axis.text.x = element_text(angle = 30, hjust = 1)) 148 | 149 | adiv_plot 150 | ``` 151 | Firstly, notice that the graphs have different scales on the y-axis but overall, the patterns look very similar. Species richness and Shannon entropy are measureing different things, but the conclusions drawn from these two techniques can be similar. Here we notice that the bulk soil and the rhizosphere have similar levels of diversity while the endosphere has a reduced diversity compared to the other two sample types. We infer this to mean that the endosphere is a niche that fewer of the microbes in the soil can reside in compared to the rhizosphere. 152 | 153 | ## Phylum Plots 154 | Perhaps the researcher wants to know the microbial patterns at a higher level than OTU. By looking at phylum level abundances, one can get a sense of how large the differences in community structures are between any given comparison. 155 | 156 | Each OTU in the dataset has taxonomic information assigned to it, so to begin, we will aggregate the counts for each phylum in each sample. Next, the chunk of code nests the data and sums up the total abundance for each detected phylum across the dataset. We filter the 10 most highly represent phyla and take a mean of their relative abundance across sample types. 157 | ```{r} 158 | phy_abundance <- mb_experiment %>% 159 | group_by(SampleID, Phylum, SampleID, Compartment, Soil) %>% 160 | summarise(phy_total = sum(RA)) %>% 161 | group_by(Phylum) %>% 162 | nest() %>% 163 | mutate(total = map_dbl(data, ~sum(.x$phy_total))) %>% 164 | top_n(10, total) %>% 165 | select(-total) %>% 166 | unnest(data) %>% 167 | group_by(Phylum, Compartment, Soil) %>% 168 | summarise(mean_phy = mean(phy_total)) %>% 169 | ungroup() %>% 170 | mutate(Compartment = fct_relevel(Compartment, "BulkSoil", "Rhizosphere", "Endosphere")) 171 | ``` 172 | 173 | Plot it out 174 | ```{r} 175 | phy_plot <- phy_abundance %>% 176 | ggplot(aes(x = Compartment, mean_phy, fill = Phylum)) + 177 | geom_bar(stat = "identity") + 178 | scale_fill_brewer(palette = "Spectral") + 179 | facet_grid(.~Soil) + 180 | theme_minimal() + 181 | labs(x = "", y = "Relative Abundance (‰)") + 182 | theme(axis.text.x = element_text(angle = 30, hjust = 1), text = element_text(size = 12)) 183 | 184 | phy_plot 185 | ``` 186 | Here we can see that there appear to be statistically different distributions of phyla in each compartment. In each tested soil the bulk soil and rhizopshere have a lower relative abundance of proteobacteria compared the endosphere, while the opposite distribution appears for Acidobacteria. 187 | 188 | 189 | ## Differential abundance analysis 190 | Here we will compare the microbiomes of the rhizosphere and endosphere to that of the bulk soil to see which OTUs are differentially abundant and describing the witnessed differences between the sample types. For this particular example we will be using DESeq2 to identify the OTUs which prefer one compartment compared to another. Again, this will be done using a tidy framework in order to prevent the creation of excessive dataframes. Essential to this approach are the tidyMB and biobroom packages. 191 | 192 | In the chunk of code below, we filter for OTUs which are represented in 10% or more samples and next load the data into an object useful for the DESeq2 package (using the tidyDGEL function). Because we are interested in understanding which OTUs are differentially abunant between the compartments, our grouping variable is the Compartment column. The DESeq command will then run all of the processes in the DESeq2 workflow. Finally, lfcShrink identify the OTUs differentially abundant between the levels provided in the contrasts. 193 | ```{r} 194 | library(DESeq2) 195 | library(broom) 196 | library(biobroom) 197 | DESeq2_example <- mb_experiment %>% 198 | select(Compartment, variable, value, SampleID) %>% 199 | group_by(variable) %>% 200 | filter(sum(value > 0) / n() > 0.1) %>% 201 | mutate(Compartment = relevel(factor(Compartment), ref = "BulkSoil")) %>% 202 | mutate(group = Compartment) %>% 203 | group_by(1) %>% 204 | nest() %>% 205 | mutate(DGEL = map(data, ~tidyDGEL(., value = "value", group_column = "group", method = "DESeq2", formula = "~ group"))) %>% 206 | mutate(dds = map(DGEL, ~DESeq(.))) %>% 207 | mutate(BulkSoil_Endosphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Endosphere")))) %>% 208 | mutate(BulkSoil_Rhizosphere = map(dds, ~lfcShrink(., contrast = c("group", "BulkSoil", "Rhizosphere")))) %>% 209 | dplyr::select(BulkSoil_Endosphere, BulkSoil_Rhizosphere) %>% 210 | gather(key = Comparison, value = results) 211 | ``` 212 | 213 | Because the resulting object is nested, we will go ahead and unnest it to look at the results. We can then classify those OTUs which are differentially abundant in some scenario (adjusted P value <= 0.05) as being enriched in one compartment compared to another. 214 | ```{r} 215 | DESeq2_example_results <- DESeq2_example %>% 216 | unnest(map(results, ~tidy(.))) %>% 217 | tidyr::separate(Comparison, c("Comp1", "Comp2"), "_", remove = F) %>% 218 | mutate(direction = ifelse(estimate > 0, Comp1, Comp2)) %>% 219 | mutate(classification = ifelse(p.adjusted <= 0.05, direction, "ns")) %>% 220 | replace_na(list(classification = "ns")) %>% 221 | mutate(Comparison = gsub("Soil_", " Soil vs. ", Comparison)) %>% 222 | mutate(Comparison = fct_relevel(Comparison, "Bulk Soil vs. Rhizosphere", "Bulk Soil vs. Endosphere")) 223 | ``` 224 | 225 | There are many things that one can do with this dataset. One of the most common ways of visualizing patterns is to make a MA plot with the mean abundance on the x-axis and the log-fold change between the two compartments on the y-axis. Each point represents one OTU and its color represents whethere the OTU was differentially abundant. 226 | ```{r} 227 | MA_plot <- DESeq2_example_results %>% 228 | ggplot(aes(baseMean, estimate, color = classification, alpha = classification)) + 229 | geom_point(size = 1) + 230 | facet_grid(.~Comparison) + 231 | scale_x_log10() + 232 | scale_color_manual(values = c("red", "steelblue", "grey30", "#984EA3")) + 233 | scale_alpha_manual(values = c(0.8, 0.8, 0.1, 0.8)) + 234 | labs(x = "Mean abundance (log10)", y = "Log Fold Change") + 235 | theme_minimal() + 236 | theme(text = element_text(size = 12), legend.position = "none") 237 | 238 | MA_plot 239 | ``` 240 | In this plot we can see that very few of the microbes in the bulk soil are depleted from the rhizosphere. It appears that rhizosphere has an enrichment role rather than a depletion role. In the endosphere, we see many OTUs which are enriched compared to the bulk soil and many bulk soil OTUs which are depleted. This makes sense as the endosphere is a nutrient rich niche that has many physical and host-associated barriers for colonization. 241 | 242 | ## Conclusion 243 | Here we have presented a small introduction to plant root microbiome data analysis generated from 16S rRNA gene sequencing. This is by no means a comprehensive workflow, but it can serve as a good introduction to microbiome data analysis for a user with little experience. We have emphasized the use of tidy tools in order to make the code more readable (and hopefully easier to reproduce). We hope that the reader has come away with several points. 244 | 245 | 1. Do not reinvent the wheel 246 | + Use the packages that already exist in order to maximize reproducibilty and minimize mistakes 247 | 2. Drawn on approaches that have been used across disciplines 248 | + DESeq2 was not designed for microbiome studies, but it works quite well microbiome purposes. Other approaches designed for other fields can also work for microbiome analysis. 249 | 3. Use a tidy workflow 250 | + This will ensure that the code is compact, cleaner, and easier to read than alternative methods. 251 | 252 | 253 | 254 | -------------------------------------------------------------------------------- /ANALYSIS/Stats/Stats.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | -------------------------------------------------------------------------------- /BioProtocolV2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/BioProtocolV2.docx -------------------------------------------------------------------------------- /BioProtocolV3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/BioProtocolV3.docx -------------------------------------------------------------------------------- /DATA/example_map.tsv: -------------------------------------------------------------------------------- 1 | SampleID Barcode Primer Tub Treatment Compartment Soil Genotype Run 2 | drght.25 ATCACCAGGTGTAGATTGACCAAC GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Davis TOg7102 DRGHT1 3 | drght.26 ATCACCAGGTGTAGTTACGAGCTA GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Davis Gl_CG14 DRGHT1 4 | drght.27 ATCACCAGGTGTGCATATGCACTG GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Davis IR20 DRGHT1 5 | drght.28 ATCACCAGGTGTCAACTCCCGTGA GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Davis M206 DRGHT1 6 | drght.29 ATCACCAGGTGTTTGCGTTAGCAG GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Arbuckle TOg7102 DRGHT1 7 | drght.30 ATCACCAGGTGTTACGAGCCCTAA GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Arbuckle Gl_CG14 DRGHT1 8 | drght.31 ATCACCAGGTGTCACTACGCTAGA GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Arbuckle IR20 DRGHT1 9 | drght.32 ATCACCAGGTGTTGCAGTCCTCGA GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Arbuckle M206 DRGHT1 10 | drght.41 ATCACCAGGTGTTGTGAATTCGGA GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Arbuckle TOg7102 DRGHT1 11 | drght.42 ATCACCAGGTGTCATTCGTGGCGT GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Arbuckle Gl_CG14 DRGHT1 12 | drght.43 ATCACCAGGTGTTACTACGTGGCC GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Arbuckle IR20 DRGHT1 13 | drght.44 ATCACCAGGTGTGGCCAGTTCCTA GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Arbuckle M206 DRGHT1 14 | drght.45 ATCACCAGGTGTGATGTTCGCTAG GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Biggs TOg7102 DRGHT1 15 | drght.46 ATCACCAGGTGTCTATCTCCTGTC GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Biggs Gl_CG14 DRGHT1 16 | drght.47 ATCACCAGGTGTACTCACAGGAAT GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Biggs IR20 DRGHT1 17 | drght.48 ATCACCAGGTGTATGATGAGCCTC GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Biggs M206 DRGHT1 18 | drght.57 TGGTCAACGATAACCATAGCTCCG GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Biggs TOg7102 DRGHT1 19 | drght.58 TGGTCAACGATATCGACATCTCTT GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Biggs Gl_CG14 DRGHT1 20 | drght.59 TGGTCAACGATAGAACACTTTGGA GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Biggs IR20 DRGHT1 21 | drght.60 TGGTCAACGATAGAGCCATCTGTA GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Biggs M206 DRGHT1 22 | drght.61 TGGTCAACGATATTGGGTACACGT GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Davis TOg7102 DRGHT1 23 | drght.62 TGGTCAACGATAAAGGCGCTCCTT GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Davis Gl_CG14 DRGHT1 24 | drght.63 TGGTCAACGATATAATACGGATCG GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Davis IR20 DRGHT1 25 | drght.64 TGGTCAACGATATCGGAATTAGAC GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Davis M206 DRGHT1 26 | drght.121 AGCGGAGGTTAGAGATTGACCAAC GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Davis TOg7102 DRGHT1 27 | drght.122 AGCGGAGGTTAGAGTTACGAGCTA GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Davis Gl_CG14 DRGHT1 28 | drght.123 AGCGGAGGTTAGGCATATGCACTG GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Davis IR20 DRGHT1 29 | drght.124 AGCGGAGGTTAGCAACTCCCGTGA GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Davis M206 DRGHT1 30 | drght.125 AGCGGAGGTTAGTTGCGTTAGCAG GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Arbuckle TOg7102 DRGHT1 31 | drght.126 AGCGGAGGTTAGTACGAGCCCTAA GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Arbuckle Gl_CG14 DRGHT1 32 | drght.127 AGCGGAGGTTAGCACTACGCTAGA GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Arbuckle IR20 DRGHT1 33 | drght.128 AGCGGAGGTTAGTGCAGTCCTCGA GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Arbuckle M206 DRGHT1 34 | drght.137 AGCGGAGGTTAGTGTGAATTCGGA GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Arbuckle TOg7102 DRGHT1 35 | drght.138 AGCGGAGGTTAGCATTCGTGGCGT GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Arbuckle Gl_CG14 DRGHT1 36 | drght.139 AGCGGAGGTTAGTACTACGTGGCC GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Arbuckle IR20 DRGHT1 37 | drght.140 AGCGGAGGTTAGGGCCAGTTCCTA GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Arbuckle M206 DRGHT1 38 | drght.141 AGCGGAGGTTAGGATGTTCGCTAG GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Biggs TOg7102 DRGHT1 39 | drght.142 AGCGGAGGTTAGCTATCTCCTGTC GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Biggs Gl_CG14 DRGHT1 40 | drght.143 AGCGGAGGTTAGACTCACAGGAAT GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Biggs IR20 DRGHT1 41 | drght.144 AGCGGAGGTTAGATGATGAGCCTC GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Biggs M206 DRGHT1 42 | drght.153 ATCCTTTGGTTCACCATAGCTCCG GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Biggs TOg7102 DRGHT1 43 | drght.154 ATCCTTTGGTTCTCGACATCTCTT GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Biggs Gl_CG14 DRGHT1 44 | drght.155 ATCCTTTGGTTCGAACACTTTGGA GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Biggs IR20 DRGHT1 45 | drght.156 ATCCTTTGGTTCGAGCCATCTGTA GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Biggs M206 DRGHT1 46 | drght.157 ATCCTTTGGTTCTTGGGTACACGT GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Davis TOg7102 DRGHT1 47 | drght.158 ATCCTTTGGTTCAAGGCGCTCCTT GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Davis Gl_CG14 DRGHT1 48 | drght.159 ATCCTTTGGTTCTAATACGGATCG GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Davis IR20 DRGHT1 49 | drght.160 ATCCTTTGGTTCTCGGAATTAGAC GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Davis M206 DRGHT1 50 | drght.201 ACCAGTGACTCAACCATAGCTCCG GGACTACHVGGGTWTCTAAT T3 Watered BulkSoil Biggs NA DRGHT1 51 | drght.208 ACCAGTGACTCATCGGAATTAGAC GGACTACHVGGGTWTCTAAT T6 Watered BulkSoil Davis NA DRGHT1 52 | drght.33 ATCACCAGGTGTACCATAGCTCCG GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Biggs TOg7102 DRGHT2 53 | drght.34 ATCACCAGGTGTTCGACATCTCTT GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Biggs Gl_CG14 DRGHT2 54 | drght.35 ATCACCAGGTGTGAACACTTTGGA GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Biggs IR20 DRGHT2 55 | drght.36 ATCACCAGGTGTGAGCCATCTGTA GGACTACHVGGGTWTCTAAT T2 Watered Rhizosphere Biggs M206 DRGHT2 56 | drght.37 ATCACCAGGTGTTTGGGTACACGT GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Davis TOg7102 DRGHT2 57 | drght.38 ATCACCAGGTGTAAGGCGCTCCTT GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Davis Gl_CG14 DRGHT2 58 | drght.39 ATCACCAGGTGTTAATACGGATCG GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Davis IR20 DRGHT2 59 | drght.40 ATCACCAGGTGTTCGGAATTAGAC GGACTACHVGGGTWTCTAAT T2 Watered Endosphere Davis M206 DRGHT2 60 | drght.49 TGGTCAACGATAAGATTGACCAAC GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Davis TOg7102 DRGHT2 61 | drght.50 TGGTCAACGATAAGTTACGAGCTA GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Davis Gl_CG14 DRGHT2 62 | drght.51 TGGTCAACGATAGCATATGCACTG GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Davis IR20 DRGHT2 63 | drght.52 TGGTCAACGATACAACTCCCGTGA GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Davis M206 DRGHT2 64 | drght.53 TGGTCAACGATATTGCGTTAGCAG GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Arbuckle TOg7102 DRGHT2 65 | drght.54 TGGTCAACGATATACGAGCCCTAA GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Arbuckle Gl_CG14 DRGHT2 66 | drght.55 TGGTCAACGATACACTACGCTAGA GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Arbuckle IR20 DRGHT2 67 | drght.56 TGGTCAACGATATGCAGTCCTCGA GGACTACHVGGGTWTCTAAT T3 Watered Rhizosphere Arbuckle M206 DRGHT2 68 | drght.65 TGGTCAACGATATGTGAATTCGGA GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Arbuckle TOg7102 DRGHT2 69 | drght.66 TGGTCAACGATACATTCGTGGCGT GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Arbuckle Gl_CG14 DRGHT2 70 | drght.67 TGGTCAACGATATACTACGTGGCC GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Arbuckle IR20 DRGHT2 71 | drght.68 TGGTCAACGATAGGCCAGTTCCTA GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Arbuckle M206 DRGHT2 72 | drght.69 TGGTCAACGATAGATGTTCGCTAG GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Biggs TOg7102 DRGHT2 73 | drght.70 TGGTCAACGATACTATCTCCTGTC GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Biggs Gl_CG14 DRGHT2 74 | drght.71 TGGTCAACGATAACTCACAGGAAT GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Biggs IR20 DRGHT2 75 | drght.72 TGGTCAACGATAATGATGAGCCTC GGACTACHVGGGTWTCTAAT T3 Watered Endosphere Biggs M206 DRGHT2 76 | drght.129 AGCGGAGGTTAGACCATAGCTCCG GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Biggs TOg7102 DRGHT2 77 | drght.130 AGCGGAGGTTAGTCGACATCTCTT GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Biggs Gl_CG14 DRGHT2 78 | drght.131 AGCGGAGGTTAGGAACACTTTGGA GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Biggs IR20 DRGHT2 79 | drght.132 AGCGGAGGTTAGGAGCCATCTGTA GGACTACHVGGGTWTCTAAT T6 Watered Rhizosphere Biggs M206 DRGHT2 80 | drght.133 AGCGGAGGTTAGTTGGGTACACGT GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Davis TOg7102 DRGHT2 81 | drght.134 AGCGGAGGTTAGAAGGCGCTCCTT GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Davis Gl_CG14 DRGHT2 82 | drght.135 AGCGGAGGTTAGTAATACGGATCG GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Davis IR20 DRGHT2 83 | drght.136 AGCGGAGGTTAGTCGGAATTAGAC GGACTACHVGGGTWTCTAAT T6 Watered Endosphere Davis M206 DRGHT2 84 | drght.145 ATCCTTTGGTTCAGATTGACCAAC GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Davis TOg7102 DRGHT2 85 | drght.146 ATCCTTTGGTTCAGTTACGAGCTA GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Davis Gl_CG14 DRGHT2 86 | drght.147 ATCCTTTGGTTCGCATATGCACTG GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Davis IR20 DRGHT2 87 | drght.148 ATCCTTTGGTTCCAACTCCCGTGA GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Davis M206 DRGHT2 88 | drght.149 ATCCTTTGGTTCTTGCGTTAGCAG GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Arbuckle TOg7102 DRGHT2 89 | drght.150 ATCCTTTGGTTCTACGAGCCCTAA GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Arbuckle Gl_CG14 DRGHT2 90 | drght.151 ATCCTTTGGTTCCACTACGCTAGA GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Arbuckle IR20 DRGHT2 91 | drght.152 ATCCTTTGGTTCTGCAGTCCTCGA GGACTACHVGGGTWTCTAAT T7 Watered Rhizosphere Arbuckle M206 DRGHT2 92 | drght.161 ATCCTTTGGTTCTGTGAATTCGGA GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Arbuckle TOg7102 DRGHT2 93 | drght.162 ATCCTTTGGTTCCATTCGTGGCGT GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Arbuckle Gl_CG14 DRGHT2 94 | drght.163 ATCCTTTGGTTCTACTACGTGGCC GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Arbuckle IR20 DRGHT2 95 | drght.164 ATCCTTTGGTTCGGCCAGTTCCTA GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Arbuckle M206 DRGHT2 96 | drght.165 ATCCTTTGGTTCGATGTTCGCTAG GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Biggs TOg7102 DRGHT2 97 | drght.166 ATCCTTTGGTTCCTATCTCCTGTC GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Biggs Gl_CG14 DRGHT2 98 | drght.167 ATCCTTTGGTTCACTCACAGGAAT GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Biggs IR20 DRGHT2 99 | drght.168 ATCCTTTGGTTCATGATGAGCCTC GGACTACHVGGGTWTCTAAT T7 Watered Endosphere Biggs M206 DRGHT2 100 | drght.196 ACCAGTGACTCACAACTCCCGTGA GGACTACHVGGGTWTCTAAT T2 Watered BulkSoil Davis NA DRGHT2 101 | drght.197 ACCAGTGACTCATTGCGTTAGCAG GGACTACHVGGGTWTCTAAT T2 Watered BulkSoil Arbuckle NA DRGHT2 102 | drght.198 ACCAGTGACTCATACGAGCCCTAA GGACTACHVGGGTWTCTAAT T2 Watered BulkSoil Biggs NA DRGHT2 103 | drght.199 ACCAGTGACTCACACTACGCTAGA GGACTACHVGGGTWTCTAAT T3 Watered BulkSoil Davis NA DRGHT2 104 | drght.200 ACCAGTGACTCATGCAGTCCTCGA GGACTACHVGGGTWTCTAAT T3 Watered BulkSoil Arbuckle NA DRGHT2 105 | drght.209 ACCAGTGACTCATGTGAATTCGGA GGACTACHVGGGTWTCTAAT T6 Watered BulkSoil Arbuckle NA DRGHT2 106 | drght.210 ACCAGTGACTCACATTCGTGGCGT GGACTACHVGGGTWTCTAAT T6 Watered BulkSoil Biggs NA DRGHT2 107 | drght.212 ACCAGTGACTCAGGCCAGTTCCTA GGACTACHVGGGTWTCTAAT T7 Watered BulkSoil Arbuckle NA DRGHT2 108 | drght.213 ACCAGTGACTCAGATGTTCGCTAG GGACTACHVGGGTWTCTAAT T7 Watered BulkSoil Biggs NA DRGHT2 109 | drght.216 ACCAGTGACTCAATGATGAGCCTC GGACTACHVGGGTWTCTAAT T7 Watered BulkSoil Davis NA DRGHT2 110 | -------------------------------------------------------------------------------- /DATA/gg_otus_tax.rds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/DATA/gg_otus_tax.rds -------------------------------------------------------------------------------- /FIGURES/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/.DS_Store -------------------------------------------------------------------------------- /FIGURES/FIG1/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG1/.DS_Store -------------------------------------------------------------------------------- /FIGURES/FIG1/fig1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG1/fig1.pdf -------------------------------------------------------------------------------- /FIGURES/FIG1/fig1.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG1/fig1.tiff -------------------------------------------------------------------------------- /FIGURES/FIG1/figure1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG1/figure1.pdf -------------------------------------------------------------------------------- /FIGURES/FIG2/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG2/.DS_Store -------------------------------------------------------------------------------- /FIGURES/FIG2/Fig2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG2/Fig2.pdf -------------------------------------------------------------------------------- /FIGURES/FIG2/Fig2.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG2/Fig2.tiff -------------------------------------------------------------------------------- /FIGURES/FIG2/amplicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 59 | 62 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 101 | P5 112 | FBC 123 | 515F 134 | 806R 145 | RBC 156 | P7 167 | 168 | 171 | 174 | 179 | 184 | 189 | 194 | 199 | 204 | 209 | 210 | P5 221 | FBC 232 | 515F 243 | 806R 254 | RBC 265 | P7 276 | 277 | 280 | 282 | 287 | 292 | 297 | 301 | 306 | 311 | 316 | 317 | 321 | 326 | 331 | 336 | 337 | 342 | 347 | 348 | 515F 359 | 806R 370 | 371 | 374 | 379 | 384 | 385 | 388 | 393 | 398 | 403 | 408 | 413 | 418 | 419 | Read 1 430 | Read 2 441 | Read 4 452 | Read 3 463 | A 474 | B 485 | C 496 | 501 | 506 | 507 | 508 | -------------------------------------------------------------------------------- /FIGURES/FIG2/figure2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG2/figure2.pdf -------------------------------------------------------------------------------- /FIGURES/FIG3/Fig3.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG3/Fig3.tiff -------------------------------------------------------------------------------- /FIGURES/FIG3/fig3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/FIG3/fig3.pdf -------------------------------------------------------------------------------- /FIGURES/compartments.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/FIGURES/compartments.tiff -------------------------------------------------------------------------------- /FWD_primer_seq.tsv: -------------------------------------------------------------------------------- 1 | PrimerID P5 Flowcell binding region Barcode Primer linker Pad 515F 16S V4 primer Full sequence 2 | P5-515F1 AATGATACGGCGACCACCGAGATCTACAC TCCCTTGTCTCC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACTCCCTTGTCTCCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 3 | P5-515F2 AATGATACGGCGACCACCGAGATCTACAC ACGAGACTGATT TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACACGAGACTGATTTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 4 | P5-515F3 AATGATACGGCGACCACCGAGATCTACAC GCTGTACGGATT TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACGCTGTACGGATTTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 5 | P5-515F4 AATGATACGGCGACCACCGAGATCTACAC ATCACCAGGTGT TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACATCACCAGGTGTTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 6 | P5-515F5 AATGATACGGCGACCACCGAGATCTACAC TGGTCAACGATA TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACTGGTCAACGATATATGGTAATTGTGTGCCAGCMGCCGCGGTAA 7 | P5-515F6 AATGATACGGCGACCACCGAGATCTACAC ATCGCACAGTAA TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACATCGCACAGTAATATGGTAATTGTGTGCCAGCMGCCGCGGTAA 8 | P5-515F7 AATGATACGGCGACCACCGAGATCTACAC GTCGTGTAGCCT TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACGTCGTGTAGCCTTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 9 | P5-515F8 AATGATACGGCGACCACCGAGATCTACAC AGCGGAGGTTAG TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACAGCGGAGGTTAGTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 10 | P5-515F9 AATGATACGGCGACCACCGAGATCTACAC ATCCTTTGGTTC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACATCCTTTGGTTCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 11 | P5-515F10 AATGATACGGCGACCACCGAGATCTACAC TACAGCGCATAC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACTACAGCGCATACTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 12 | P5-515F11 AATGATACGGCGACCACCGAGATCTACAC ACCGGTATGTAC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACACCGGTATGTACTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 13 | P5-515F12 AATGATACGGCGACCACCGAGATCTACAC AATTGTGTCGGA TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACAATTGTGTCGGATATGGTAATTGTGTGCCAGCMGCCGCGGTAA 14 | P5-515F13 AATGATACGGCGACCACCGAGATCTACAC TGCATACACTGG TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACTGCATACACTGGTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 15 | P5-515F14 AATGATACGGCGACCACCGAGATCTACAC AGTCGAACGAGG TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACAGTCGAACGAGGTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 16 | P5-515F15 AATGATACGGCGACCACCGAGATCTACAC ACCAGTGACTCA TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACACCAGTGACTCATATGGTAATTGTGTGCCAGCMGCCGCGGTAA 17 | P5-515F16 AATGATACGGCGACCACCGAGATCTACAC GAATACCAAGTC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACGAATACCAAGTCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 18 | P5-515F17 AATGATACGGCGACCACCGAGATCTACAC GTAGATCGTGTA TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACGTAGATCGTGTATATGGTAATTGTGTGCCAGCMGCCGCGGTAA 19 | P5-515F18 AATGATACGGCGACCACCGAGATCTACAC TAACGTGTGTGC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACTAACGTGTGTGCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 20 | P5-515F19 AATGATACGGCGACCACCGAGATCTACAC CATTATGGCGTG TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACCATTATGGCGTGTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 21 | P5-515F20 AATGATACGGCGACCACCGAGATCTACAC CCAATACGCCTG TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACCCAATACGCCTGTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 22 | P5-515F21 AATGATACGGCGACCACCGAGATCTACAC GATCTGCGATCC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACGATCTGCGATCCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 23 | P5-515F22 AATGATACGGCGACCACCGAGATCTACAC CAGCTCATCAGC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACCAGCTCATCAGCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 24 | P5-515F23 AATGATACGGCGACCACCGAGATCTACAC CAAACAACAGCT TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACCAAACAACAGCTTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 25 | P5-515F24 AATGATACGGCGACCACCGAGATCTACAC GCAACACCATCC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACGCAACACCATCCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 26 | P5-515F25 AATGATACGGCGACCACCGAGATCTACAC GCGATATATCGC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACGCGATATATCGCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 27 | P5-515F26 AATGATACGGCGACCACCGAGATCTACAC CGAGCAATCCTA TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACCGAGCAATCCTATATGGTAATTGTGTGCCAGCMGCCGCGGTAA 28 | P5-515F27 AATGATACGGCGACCACCGAGATCTACAC AGTCGTGCACAT TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACAGTCGTGCACATTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 29 | P5-515F28 AATGATACGGCGACCACCGAGATCTACAC GTATCTGCGCGT TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACGTATCTGCGCGTTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 30 | P5-515F29 AATGATACGGCGACCACCGAGATCTACAC CGAGGGAAAGTC TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACCGAGGGAAAGTCTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 31 | P5-515F30 AATGATACGGCGACCACCGAGATCTACAC CAAATTCGGGAT TATGGTAATT GT GTGCCAGCMGCCGCGGTAA AATGATACGGCGACCACCGAGATCTACACCAAATTCGGGATTATGGTAATTGTGTGCCAGCMGCCGCGGTAA 32 | -------------------------------------------------------------------------------- /Protocol 0101902_V3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/Protocol 0101902_V3.docx -------------------------------------------------------------------------------- /Protocol_0101902_ReformattedV2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/Protocol_0101902_ReformattedV2.docx -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Data and analysis for BioProtocol 2 | This repo contains data and code necessary to perform the analysis in conducted in the *bio-protocol* publication: 3 | 4 | The sequence processing tutorial can be found [here](https://github.com/bulksoil/BioProtocol/blob/master/ANALYSIS/SeqProcessing/seq_processing.md) 5 | The statistical analysis tutorial is [here](https://github.com/bulksoil/BioProtocol/blob/master/ANALYSIS/Stats/MicrobiomeAnalysis.rmd) 6 | The raw data used in the sequencing processing tutorial can be found in this [Google Drive Folder](https://goo.gl/tCMLBn) 7 | -------------------------------------------------------------------------------- /RVS_primer_seq.tsv: -------------------------------------------------------------------------------- 1 | PrimerID P7 Flowcell binding region Barcode Primer linker Pad 806R 16S V4 primer Full sequence 2 | P7-806R1 CAAGCAGAAGACGGCATACGAGAT AGATTGACCAAC AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATAGATTGACCAACAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 3 | P7-806R2 CAAGCAGAAGACGGCATACGAGAT AGTTACGAGCTA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATAGTTACGAGCTAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 4 | P7-806R3 CAAGCAGAAGACGGCATACGAGAT GCATATGCACTG AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATGCATATGCACTGAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 5 | P7-806R4 CAAGCAGAAGACGGCATACGAGAT CAACTCCCGTGA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATCAACTCCCGTGAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 6 | P7-806R5 CAAGCAGAAGACGGCATACGAGAT TTGCGTTAGCAG AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTTGCGTTAGCAGAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 7 | P7-806R6 CAAGCAGAAGACGGCATACGAGAT TACGAGCCCTAA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTACGAGCCCTAAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 8 | P7-806R7 CAAGCAGAAGACGGCATACGAGAT CACTACGCTAGA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATCACTACGCTAGAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 9 | P7-806R8 CAAGCAGAAGACGGCATACGAGAT TGCAGTCCTCGA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTGCAGTCCTCGAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 10 | P7-806R9 CAAGCAGAAGACGGCATACGAGAT ACCATAGCTCCG AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATACCATAGCTCCGAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 11 | P7-806R10 CAAGCAGAAGACGGCATACGAGAT TCGACATCTCTT AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTCGACATCTCTTAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 12 | P7-806R11 CAAGCAGAAGACGGCATACGAGAT GAACACTTTGGA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATGAACACTTTGGAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 13 | P7-806R12 CAAGCAGAAGACGGCATACGAGAT GAGCCATCTGTA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATGAGCCATCTGTAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 14 | P7-806R13 CAAGCAGAAGACGGCATACGAGAT TTGGGTACACGT AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTTGGGTACACGTAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 15 | P7-806R14 CAAGCAGAAGACGGCATACGAGAT AAGGCGCTCCTT AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATAAGGCGCTCCTTAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 16 | P7-806R15 CAAGCAGAAGACGGCATACGAGAT TAATACGGATCG AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTAATACGGATCGAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 17 | P7-806R16 CAAGCAGAAGACGGCATACGAGAT TCGGAATTAGAC AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTCGGAATTAGACAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 18 | P7-806R17 CAAGCAGAAGACGGCATACGAGAT TGTGAATTCGGA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTGTGAATTCGGAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 19 | P7-806R18 CAAGCAGAAGACGGCATACGAGAT CATTCGTGGCGT AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATCATTCGTGGCGTAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 20 | P7-806R19 CAAGCAGAAGACGGCATACGAGAT TACTACGTGGCC AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTACTACGTGGCCAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 21 | P7-806R20 CAAGCAGAAGACGGCATACGAGAT GGCCAGTTCCTA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATGGCCAGTTCCTAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 22 | P7-806R21 CAAGCAGAAGACGGCATACGAGAT GATGTTCGCTAG AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATGATGTTCGCTAGAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 23 | P7-806R22 CAAGCAGAAGACGGCATACGAGAT CTATCTCCTGTC AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATCTATCTCCTGTCAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 24 | P7-806R23 CAAGCAGAAGACGGCATACGAGAT ACTCACAGGAAT AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATACTCACAGGAATAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 25 | P7-806R24 CAAGCAGAAGACGGCATACGAGAT ATGATGAGCCTC AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATATGATGAGCCTCAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 26 | P7-806R25 CAAGCAGAAGACGGCATACGAGAT GTCGACAGAGGA AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATGTCGACAGAGGAAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 27 | P7-806R26 CAAGCAGAAGACGGCATACGAGAT TGTCGCAAATAG AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTGTCGCAAATAGAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 28 | P7-806R27 CAAGCAGAAGACGGCATACGAGAT CATCCCTCTACT AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATCATCCCTCTACTAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 29 | P7-806R28 CAAGCAGAAGACGGCATACGAGAT TATACCGCTGCG AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATTATACCGCTGCGAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 30 | P7-806R29 CAAGCAGAAGACGGCATACGAGAT AGTTGAGGCATT AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATAGTTGAGGCATTAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 31 | P7-806R30 CAAGCAGAAGACGGCATACGAGAT ACAATAGACACC AGTCAGTCAG CC GGACTACHVGGGTWTCTAAT CAAGCAGAAGACGGCATACGAGATACAATAGACACCAGTCAGTCAGCCGGACTACHVGGGTWTCTAAT 32 | -------------------------------------------------------------------------------- /~$oProtocolV3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bulksoil/BioProtocol/e4098d72d5c049092b56345450201f4570191004/~$oProtocolV3.docx --------------------------------------------------------------------------------