├── .gitignore ├── 00-before-we-start.Rmd ├── 00-before-we-start.html ├── 01-intro-to-R.Rmd ├── 01-intro-to-R.html ├── 02-starting-with-data.Rmd ├── 02-starting-with-data.html ├── 03-data-frames.Rmd ├── 03-data-frames.html ├── 04-dplyr.Rmd ├── 04-dplyr.html ├── 05-data-visualization.Rmd ├── 05-data-visualization.html ├── 05-r-and-sql.Rmd ├── 05-visualisation-ggplot2.Rmd ├── CONDUCT.Rmd ├── CONDUCT.html ├── CONTRIBUTING.Rmd ├── CONTRIBUTING.html ├── Ecoli_genomes_with_SNPs_per_locus_tag.txt ├── Ecoli_metadata.csv ├── Ecoli_metadata.txt ├── LICENSE.Rmd ├── LICENSE.html ├── Makefile ├── README.md ├── R_visualization.md ├── _config.yml ├── _includes ├── anySetup.html ├── banner.html ├── footer.html ├── header.html ├── javascript.html ├── lesson-index.html ├── pythonSetup.html ├── rSetup.html ├── setup.html └── spreadsheetSetup.html ├── _layouts ├── lesson.html ├── slides.html └── workshop.html ├── _site.yml ├── css ├── bootstrap │ ├── bootstrap-responsive.css │ ├── bootstrap.css │ └── img │ │ ├── glyphicons-halflings-white.png │ │ └── glyphicons-halflings.png ├── lesson.css ├── pygments │ └── friendly.css ├── swc-bootstrap.css └── swc.css ├── data ├── Ecoli_genomes_with_SNPs_per_locus_tag.txt ├── Ecoli_metadata.csv └── Ecoli_metadata.txt ├── footer.html ├── img ├── DC-logo-vision.png ├── DC1_logo_small.png ├── DataONE_LOGO.jpg ├── R-ecology-correct-order-1.png ├── R-ecology-wrong-order-1.png ├── creative-commons-attribution-license.png ├── r-lesson-boxplot-1.png ├── r-lesson-correct-order-1.png ├── r-lesson-scatter-plot1-1.png ├── r-lesson-unnamed-chunk-10-1.png ├── r-lesson-unnamed-chunk-11-1.png ├── r-lesson-unnamed-chunk-13-1.png ├── r-lesson-unnamed-chunk-14-1.png ├── r-lesson-unnamed-chunk-3-1.png ├── r-lesson-unnamed-chunk-4-1.png ├── r-lesson-unnamed-chunk-5-1.png ├── r-lesson-unnamed-chunk-6-1.png ├── r-lesson-wrong-order-1.png ├── r_starting_example_script.png └── r_starting_how_it_should_like.png ├── index.Rmd ├── index.html ├── journal.pone.0081760.s004.csv ├── site_libs ├── bootstrap-3.3.5 │ ├── css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap-theme.css.map │ │ ├── bootstrap-theme.min.css │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ ├── cerulean.min.css │ │ ├── cosmo.min.css │ │ ├── flatly.min.css │ │ ├── fonts │ │ │ ├── Lato.ttf │ │ │ ├── LatoBold.ttf │ │ │ ├── LatoItalic.ttf │ │ │ ├── NewsCycle.ttf │ │ │ ├── NewsCycleBold.ttf │ │ │ ├── OpenSans.ttf │ │ │ ├── OpenSansBold.ttf │ │ │ ├── OpenSansBoldItalic.ttf │ │ │ ├── OpenSansItalic.ttf │ │ │ ├── OpenSansLight.ttf │ │ │ ├── OpenSansLightItalic.ttf │ │ │ ├── Raleway.ttf │ │ │ ├── RalewayBold.ttf │ │ │ ├── Roboto.ttf │ │ │ ├── RobotoBold.ttf │ │ │ ├── RobotoLight.ttf │ │ │ ├── RobotoMedium.ttf │ │ │ ├── SourceSansPro.ttf │ │ │ ├── SourceSansProBold.ttf │ │ │ ├── SourceSansProItalic.ttf │ │ │ ├── SourceSansProLight.ttf │ │ │ └── Ubuntu.ttf │ │ ├── journal.min.css │ │ ├── lumen.min.css │ │ ├── paper.min.css │ │ ├── readable.min.css │ │ ├── sandstone.min.css │ │ ├── simplex.min.css │ │ ├── spacelab.min.css │ │ ├── united.min.css │ │ └── yeti.min.css │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ └── npm.js │ └── shim │ │ ├── html5shiv.min.js │ │ └── respond.min.js ├── font-awesome-5.0.13 │ ├── css │ │ └── fa-svg-with-js.css │ ├── fonts │ │ ├── fa-brands-400.ttf │ │ ├── fa-regular-400.ttf │ │ └── fa-solid-900.ttf │ └── js │ │ ├── fa-v4-shims.min.js │ │ └── fontawesome-all.min.js ├── jquery-1.11.3 │ └── jquery.min.js ├── jqueryui-1.11.4 │ ├── README │ ├── images │ │ ├── ui-icons_444444_256x240.png │ │ ├── ui-icons_555555_256x240.png │ │ ├── ui-icons_777620_256x240.png │ │ ├── ui-icons_777777_256x240.png │ │ ├── ui-icons_cc0000_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── index.html │ ├── jquery-ui.css │ ├── jquery-ui.js │ ├── jquery-ui.min.css │ ├── jquery-ui.min.js │ ├── jquery-ui.structure.css │ ├── jquery-ui.structure.min.css │ ├── jquery-ui.theme.css │ └── jquery-ui.theme.min.css ├── navigation-1.1 │ ├── codefolding.js │ ├── sourceembed.js │ └── tabsets.js └── tocify-1.9.1 │ ├── jquery.tocify.css │ └── jquery.tocify.js └── style.css /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | 3 | # History files 4 | .Rhistory 5 | 6 | # Example code in package build process 7 | *-Ex.R 8 | 9 | # R data files from past sessions 10 | .Rdata 11 | 12 | # RStudio files 13 | .Rproj.user/ 14 | .Rproj.user 15 | *.Rproj 16 | 17 | # vim backup files 18 | *.swp 19 | /data/ 20 | /portalR.db 21 | data_output/ 22 | -------------------------------------------------------------------------------- /00-before-we-start.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | layout: topic 3 | title: Before we start 4 | author: Data Carpentry contributors 5 | minutes: 15 6 | --- 7 | 8 | ```{r, echo=FALSE, purl=FALSE} 9 | knitr::opts_chunk$set(results='hide', fig.path='img/r-lesson-') 10 | ``` 11 | ------------ 12 | 13 | > ## Learning Objectives 14 | > 15 | > * Describe the purpose of RStudio’s script, console, environment, and file/plot/help windows. 16 | > * Create an R project. 17 | > * Organize files and directories for a set of analyses as an R Project. 18 | > * Use the built-in RStudio help interface to search for more information on R functions. 19 | 20 | 21 | ------------ 22 | 23 | # Presentation of RStudio 24 | 25 | Start RStudio -- Let's start by learning about our tool. 26 | 27 | * Console, Scripts, Environments, Plots 28 | * Code and workflow are more reproducible if we can document everything that we 29 | do. 30 | * Our end goal is not just to "do stuff" but to do it in a way that anyone can 31 | easily and exactly replicate our workflow and results. 32 | 33 | # Before we get started 34 | 35 | * Under the `File` menu, click on `New project`, choose `New directory`, then 36 | `Empty project` 37 | * Enter a name for this new folder, and choose a convenient location for 38 | it. This will be your **working directory** for the rest of the day 39 | (e.g., `~/data-carpentry`) 40 | * Confirm that the folder named in the `Create project as a sub-directory of` box is where you want the working directory created. Use the `Browse` button to navigate folders if changes are needed. 41 | * Click on "Create project" 42 | * Under the `Files` tab on the right of the screen, click on `New Folder` and 43 | create a folder named `data` within your newly created working directory. 44 | (e.g., `~/data-carpentry/data`) 45 | * Create a new R script (File > New File > R script) and save it in your working 46 | directory (e.g. `data-carpentry-script.R`) 47 | 48 | Your working directory should now look like this: 49 | 50 | ![How it should look like at the beginning of this lesson](img/r_starting_how_it_should_like.png) 51 | 52 | 53 | # Interacting with R 54 | 55 | There are two main ways of interacting with R: using the console or by using 56 | script files (plain text files that contain your code). 57 | 58 | The console window (in RStudio, the bottom left panel) is the place where R is 59 | waiting for you to tell it what to do, and where it will show the results of a 60 | command. You can type commands directly into the console, but they will be 61 | forgotten when you close the session. It is better to enter the commands in the 62 | script editor, and save the script. This way, you have a complete record of what 63 | you did, you can easily show others how you did it and you can do it again later 64 | on if needed. You can copy-paste into the R console, but the Rstudio script 65 | editor allows you to 'send' the current line or the currently selected text to 66 | the R console using the `Ctrl-Enter` shortcut. 67 | 68 | If R is ready to accept commands, the R console shows a `>` prompt. If it 69 | receives a command (by typing, copy-pasting or sent from the script editor using 70 | Ctrl-Enter), R will try to execute it, and when ready, show the results and 71 | come back with a new `>` prompt to wait for new commands. 72 | 73 | If R is still waiting for you to enter more data because it isn't complete yet, 74 | the console will show a `+` prompt. It means that you haven't finished entering 75 | a complete command. This is because you have not 'closed' a parenthesis or 76 | quotation. If you're in Rstudio and this happens, click inside the console 77 | window and press Esc; this should help you out of trouble. 78 | 79 | # Basics of R 80 | 81 | R is a versatile, open source programming/scripting language that's useful both 82 | for statistics but also data science. Inspired by the programming language S. 83 | 84 | * Open source software under GPL. 85 | * Superior (if not just comparable) to commercial alternatives. R has over 7,000 86 | user contributed packages at this time. It's widely used both in academia and 87 | industry. 88 | * Available on all platforms. 89 | * Not just for statistics, but also general purpose programming. 90 | * For people who have experience in programmming: R is both an object-oriented 91 | and a so-called [functional language](http://adv-r.had.co.nz/Functional-programming.html) 92 | * Large and growing community of peers. 93 | 94 | 95 | ## Organizing your working directory 96 | 97 | You should separate the original data (raw data) from intermediate datasets that 98 | you may create for the need of a particular analysis. For instance, you may want 99 | to create a `data/` directory within your working directory that stores the raw 100 | data, and have a `data_output/` directory for intermediate datasets and a 101 | `figure_output/` directory for the plots you will generate. 102 | -------------------------------------------------------------------------------- /02-starting-with-data.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | layout: topic 3 | title: Starting with data 4 | author: Data Carpentry contributors 5 | minutes: 25 6 | --- 7 | 8 | ```{r, echo=FALSE, purl=FALSE} 9 | knitr::opts_chunk$set(results='hide', fig.path='img/r-lesson-') 10 | ``` 11 | 12 | ------------ 13 | 14 | > ## Learning Objectives 15 | > 16 | > * Load external tabular data from a .csv file into R. 17 | > * Describe what an R data frame is. 18 | > * Summarize the contents of a data frame in R. 19 | > * Manipulate categorical data in R using factors. 20 | 21 | 22 | ------------ 23 | 24 | # Looking at Metadata 25 | 26 | ```{r, echo=FALSE, purl=TRUE} 27 | # Looking at metadata 28 | ``` 29 | 30 | We are studying a population of Escherichia coli (designated Ara-3), which were propagated for more than 40,000 generations in a glucose-limited minimal medium. This medium was supplemented with citrate which E. coli cannot metabolize in the aerobic conditions of the experiment. Sequencing of the populations at regular time points reveals that spontaneous citrate-using mutants (Cit+) appeared at around 31,000 generations. This metadata describes information on the Ara-3 clones and the columns represent: 31 | 32 | | Column | Description | 33 | |------------------|--------------------------------------------| 34 | | sample | clone name | 35 | | generation | generation when sample frozen | 36 | | clade | based on parsimony-based tree | 37 | | strain | ancestral strain | 38 | | cit | citrate-using mutant status | 39 | | run | Sequence read archive sample ID | 40 | | genome_size | size in Mbp (made up data for this lesson) | 41 | 42 | 43 | 44 | 45 | 46 | The metadata file required for this lesson can be [downloaded directly here](https://raw.githubusercontent.com/datacarpentry/R-genomics/gh-pages/data/Ecoli_metadata.csv) or [viewed in Github](./data/Ecoli_metadata.csv). 47 | 48 | > Tip: 49 | > If you can't find the Ecoli_metadata.csv file, or have lost track of it, 50 | > download the file directly using the R `download.file() function` 51 | 52 | ```{r, eval=TRUE, purl=FALSE} 53 | download.file("https://raw.githubusercontent.com/datacarpentry/R-genomics/gh-pages/data/Ecoli_metadata.csv", "data/Ecoli_metadata.csv") 54 | ``` 55 | 56 | You are now ready to load the data. We are going to use the R function `read.csv()` to load the data file into memory (as a `data.frame`): 57 | 58 | ```{r, eval=TRUE, purl=FALSE} 59 | metadata <- read.csv('data/Ecoli_metadata.csv') 60 | ``` 61 | 62 | This statement doesn't produce any output because assignment doesn't display 63 | anything. If we want to check that our data has been loaded, we can print the 64 | variable's value: `metadata` 65 | 66 | Alternatively, wrapping an assignment in parentheses will perform the assignment 67 | and display it at the same time. 68 | 69 | ```{r, eval = TRUE, purl = FALSE} 70 | (metadata <- read.csv('data/Ecoli_metadata.csv')) 71 | ``` 72 | 73 | Wow... that was a lot of output. At least it means the data loaded properly. Let's check the top (the first 6 lines) of this `data.frame` using the function `head()`: 74 | 75 | ```{r, results='show', purl=FALSE} 76 | head(metadata) 77 | ``` 78 | 79 | We've just done two very useful things. 80 | 1. We've read our data in to R, so now we can work with it in R 81 | 2. We've created a data frame (with the read.csv command) the 82 | standard way R works with data. 83 | 84 | # What are data frames? 85 | 86 | `data.frame` is the _de facto_ data structure for most tabular data and what we 87 | use for statistics and plotting. 88 | 89 | A `data.frame` is a collection of vectors of identical lengths. Each vector 90 | represents a column, and each vector can be of a different data type (e.g., 91 | characters, integers, factors). The `str()` function is useful to inspect the 92 | data types of the columns. 93 | 94 | A `data.frame` can be created by the functions `read.csv()` or `read.table()`, in 95 | other words, when importing spreadsheets from your hard drive (or the web). 96 | 97 | By default, `data.frame` converts (= coerces) columns that contain characters 98 | (i.e., text) into the `factor` data type. Depending on what you want to do with 99 | the data, you may want to keep these columns as `character`. To do so, 100 | `read.csv()` and `read.table()` have an argument called `stringsAsFactors` which 101 | can be set to `FALSE`: 102 | 103 | Let's now check the __str__ucture of this `data.frame` in more details with the 104 | function `str()`: 105 | 106 | ```{r, purl=FALSE} 107 | str(metadata) 108 | ``` 109 | 110 | # Inspecting `data.frame` objects 111 | 112 | We already saw how the functions `head()` and `str()` can be useful to check the 113 | content and the structure of a `data.frame`. Here is a non-exhaustive list of 114 | functions to get a sense of the content/structure of the data. 115 | 116 | * Size: 117 | + `dim()` - returns a vector with the number of rows in the first element, and 118 | the number of columns as the second element (the __dim__ensions of the object) 119 | + `nrow()` - returns the number of rows 120 | + `ncol()` - returns the number of columns 121 | * Content: 122 | + `head()` - shows the first 6 rows 123 | + `tail()` - shows the last 6 rows 124 | * Names: 125 | + `names()` - returns the column names (synonym of `colnames()` for `data.frame` 126 | objects) 127 | + `rownames()` - returns the row names 128 | * Summary: 129 | + `str()` - structure of the object and information about the class, length and 130 | content of each column 131 | + `summary()` - summary statistics for each column 132 | 133 | Note: most of these functions are "generic", they can be used on other types of 134 | objects besides `data.frame`. 135 | 136 | 137 | ### Challenge 138 | 139 | Based on the given table of functions to asses data structure, can you answer the following questions? 140 | 141 | * What is the class of the object `metadata`? 142 | * How many rows and how many columns are in this object? 143 | * How many citrate+ mutants have been recorded in this population? 144 | 145 | 146 | As you can see, many of the columns in our data frame are of a special class called 147 | `factor`. Before we learn more about the `data.frame` class, we are going to 148 | talk about factors. They are very useful but not necessarily intuitive, and 149 | therefore require some attention. 150 | 151 | 152 | ## Factors 153 | 154 | ```{r, echo=FALSE, purl=TRUE} 155 | ### Factors 156 | ``` 157 | 158 | Factors are used to represent categorical data. Factors can be ordered or 159 | unordered and are an important class for statistical analysis and for plotting. 160 | 161 | Factors are stored as integers, and have labels associated with these unique 162 | integers. While factors look (and often behave) like character vectors, they are 163 | actually integers under the hood, and you need to be careful when treating them 164 | like strings. 165 | 166 | In the data frame we just imported, let's do 167 | ```{r, purl=TRUE} 168 | str(metadata) 169 | ``` 170 | 171 | We can see the names of the multiple columns. And, we see that 172 | some say things like `Factor w/ 30 levels` 173 | 174 | When we read in a file, any column that contains text is automatically 175 | assumed to be a factor. Once created, factors can only contain a pre-defined set values, known as 176 | *levels*. By default, R always sorts *levels* in alphabetical order. 177 | 178 | For instance, we see that `cit` is a Factor w/ 3 levels, `minus`, `plus` and `unknown`. 179 | 180 | 248 | -------------------------------------------------------------------------------- /03-data-frames.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | layout: topic 3 | title: Using data in data frames 4 | author: Data Carpentry contributors 5 | minutes: 30 6 | --- 7 | 8 | ```{r, echo=FALSE, purl=TRUE} 9 | ## The data.frame class 10 | ``` 11 | 12 | ------------ 13 | 14 | > ## Learning Objectives 15 | > 16 | > * Extract values from vectors and data frames. 17 | > * Perform operations on columns in a data frame. 18 | > * Append columns to a data frame. 19 | > * Create subsets of a data frame. 20 | 21 | 22 | ------------ 23 | 24 | In this lesson you will learn how to extract and manipulate data stored in data frames in R. We will work with the *E. coli* metadata file that we used previously. Be sure to read this file into a dataframe named `metadata`, if you haven't already done so. 25 | 26 | ```{r, eval=TRUE, purl=FALSE} 27 | metadata <- read.csv('data/Ecoli_metadata.csv') 28 | ``` 29 | 30 | Because the columns of a data frame are vectors, we will first learn how to extract elements from vectors and then learn how to apply this concept to select rows and columns from a data frame. 31 | 32 | # Extracting values with indexing and sequences 33 | 34 | ```{r, echo=FALSE, purl=TRUE} 35 | ## Indexing and sequences 36 | ``` 37 | 38 | ## Vectors 39 | 40 | Let's create a vector containing the first ten letters of the alphabet. 41 | 42 | ```{r, purl=FALSE, eval=FALSE} 43 | ten_letters <- c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j') 44 | ``` 45 | 46 | In order to extract one or several values from a vector, we must provide one or several indices in square brackets, just as we do in math. R indexes start at 1. Programming languages like Fortran, MATLAB, and R start counting at 1, because that's what human beings typically do. Languages in the C family (including C++, Java, Perl, and Python) count from 0 because that's simpler for computers to do. 47 | 48 | So, to extract the 2nd element of `ten_letters` we type: 49 | 50 | ```{r, purl=FALSE, eval=FALSE} 51 | ten_letters[2] 52 | ``` 53 | 54 | We can extract multiple elements at a time by specifying mulitple indices inside the square brackets as a vector. Notice how you can use `:` to make a vector of all integers two numbers. 55 | 56 | ```{r, purl=FALSE, eval=FALSE} 57 | ten_letters[c(1,7)] 58 | 59 | ten_letters[3:6] 60 | 61 | ten_letters[10:1] 62 | 63 | ten_letters[c(2, 8:10)] 64 | 65 | ``` 66 | 67 | Quick exercise / formative assessment: Select every other element in `ten_letters`. 68 | 69 | What if we were dealing with a much longer vector? We can use the `seq()` function to quickly create sequences of numbers. 70 | 71 | ```{r, purl=FALSE, eval=FALSE} 72 | seq(1, 10, by = 2) 73 | seq(20, 4, by = -3) 74 | ``` 75 | 76 | 84 | 85 | > ## Exercise 86 | > 87 | > Fill in the blank to select the even elements of ten_letters using the seq() function. 88 | > 89 | > ten_letters[____________] 90 | > 91 | > > ## Solution 92 | > > ten_letters[seq(2, 10, by = 2)] 93 | > {: .solution} 94 | {: .challenge} 95 | 96 | 97 | ## Data frames 98 | 99 | The metadata data frame has rows and columns (it has 2 dimensions), if we want to 100 | extract some specific data from it, we need to specify the "coordinates" we want 101 | from it. Row numbers come first, followed by column numbers (i.e. [row, column]). 102 | 103 | ```{r, purl=FALSE, eval=FALSE} 104 | metadata[1, 2] # 1st element in the 2nd column 105 | metadata[1, 6] # 1st element in the 6th column 106 | metadata[1:3, 7] # First three elements in the 7th column 107 | metadata[3, ] # 3rd element for all columns 108 | metadata[, 7] # Entire 7th column 109 | ``` 110 | 111 | 112 | > ## Challenge 113 | > 114 | > The function `nrow()` on a `data.frame` returns the number of rows. For example, try typing nrow(metadata)`. 115 | > Use `nrow()` and `seq()` to create a new data frame called `meta_by_2` that includes all even numbered rows of `metadata`. 116 | > 117 | > ## Solution 118 | > > meta_data[seq(2, nrow(metadata), by = 2, ] 119 | > > 120 | > > 121 | > {: .solution} 122 | {: .challenge} 123 | 124 | For larger datasets, it can be tricky to remember the column number that corresponds to a particular variable. Sometimes the column number for a particular variable can change if your analysis adds or removes columns. The best practice when working with columns in a data frame is to refer to them by name. This also makes your code easier to read and your intentions clearer. 125 | 126 | There are two ways to select a column by name from a data frame: 127 | 128 | * Using `dataframe[ , "column_name"]` 129 | * Using `dataframe$column_name` 130 | 131 | You can do operations on a particular column, by selecting it using the `$` 132 | sign. In this case, the entire column is a vector. You can use 133 | `names(metadata)` or `colnames(metadata)` to remind yourself of the column names. 134 | For instance, to extract all the strain information from our datasets: 135 | 136 | ```{r, eval=FALSE} 137 | # Select the strain column from metadata 138 | metadata[ , "strain"] 139 | 140 | # Alternatively... 141 | metadata$strain 142 | ``` 143 | 144 | The first method allows you to select multiple columns at once. Suppose we wanted strain and clade information: 145 | 146 | ```{r, eval=FALSE} 147 | metadata[, c("strain", "clade")] 148 | ``` 149 | 150 | You can even access columns by column name _and_ select specific rows of interest. For example, if we wanted the strain and clade of just rows 4 through 7, we could do: 151 | 152 | ```{r, eval=FALSE} 153 | metadata[4:7, c("strain", "clade")] 154 | ``` 155 | 156 | 157 | 13 | ² 14 | ```{r, echo=FALSE, purl=FALSE}² 15 | knitr::opts_chunk$set(results='hide', fig.path='img/r-lesson-', fig.keep='last') 16 | ``` 17 | 18 | ```{r setup, echo=FALSE, purl=FALSE} 19 | source("setup.R") 20 | ``` 21 | 22 | Authors: **Mateusz Kuzak**, **Diana Marek**, **Hedi Peterson** 23 | 24 | 25 | 26 | #### Disclaimer 27 | 28 | We will here using functions of ggplot2 package. There are basic ploting 29 | capabilities in basic R, but ggplot2 adds more powerful plotting capabilities. 30 | 31 | > ### Learning Objectives 32 | > 33 | > - Visualise some of the 34 | >[mammals data](http://figshare.com/articles/Portal_Project_Teaching_Database/1314459) 35 | >from Figshare [surveys.csv](http://files.figshare.com/1919744/surveys.csv) 36 | > - Understand how to plot these data using R ggplot2 package. For more details 37 | >on using ggplot2 see 38 | >[official documentation](http://docs.ggplot2.org/current/). 39 | > - Building step by step complex plots with ggplot2 package 40 | 41 | Load required packages 42 | 43 | ```{r} 44 | # plotting package 45 | library(ggplot2) 46 | # piping / chaining 47 | library(magrittr) 48 | # modern dataframe manipulations 49 | library(dplyr) 50 | ``` 51 | 52 | Load data directly from figshare. 53 | 54 | ```{r} 55 | surveys_raw <- read.csv("http://files.figshare.com/1919744/surveys.csv") 56 | ``` 57 | 58 | `surveys.csv` data contains some measurements of the animals caught in plots. 59 | 60 | ## Data cleaning and preparing for plotting 61 | 62 | Let's look at the summary 63 | 64 | ```{r} 65 | summary(surveys_raw) 66 | ``` 67 | 68 | There are few things we need to clean in the dataset. 69 | 70 | There is missing species_id in some records. Let's remove those. 71 | 72 | ```{r} 73 | surveys <- surveys_raw %>% 74 | filter(species_id != "") 75 | ``` 76 | 77 | There are a lot of species with low counts, let's remove the ones below 10 counts 78 | 79 | ```{r} 80 | # count records per species 81 | species_counts <- surveys %>% 82 | group_by(species_id) %>% 83 | summarise(n=n()) 84 | 85 | # get names of those frequent species 86 | frequent_species <- species_counts %>% 87 | filter(n >= 10) %>% 88 | select(species_id) 89 | 90 | surveys <- surveys %>% 91 | filter(species_id %in% frequent_species$species_id) 92 | ``` 93 | 94 | We saw in summary, there were NA's in weight and hindfoot_length. Let's remove 95 | rows with missing weights. 96 | 97 | ```{r} 98 | surveys_weight_present <- surveys %>% 99 | filter(!is.na(weight)) 100 | ``` 101 | 102 | > ### Challenge 103 | > 104 | > - Do the same to remove rows without `hindfoot_length`. Save results in the new dataframe. 105 | 106 | 107 | ```{r} 108 | surveys_length_present <- surveys %>% 109 | filter(!is.na(hindfoot_length)) 110 | ``` 111 | 112 | - How would you get the dataframe without missing values? 113 | 114 | ```{r} 115 | surveys_complete <- surveys_weight_present %>% 116 | filter(!is.na(hindfoot_length)) 117 | ``` 118 | 119 | > We can chain filtering together using pipe operator (`%>%`) introduced earlier. 120 | 121 | ```{r} 122 | surveys_complete <- surveys %>% 123 | filter(!is.na(weight)) %>% 124 | filter(!is.na(hindfoot_length)) 125 | ``` 126 | 127 | > Make simple scatter plot of `hindfoot_length` (in millimeters) as a function of 128 | > `weight` (in grams), using basic R plotting capabilities. 129 | 130 | ```{r} 131 | plot(x=surveys_complete$weight, y=surveys_complete$hindfoot_length) 132 | ``` 133 | 134 | ## Plotting with ggplot2 135 | 136 | We will make the same plot using `ggplot2` package. 137 | 138 | `ggplot2` is a plotting package that makes it sipmple to create complex plots 139 | from data in a dataframe. It uses default settings, which help creating 140 | publication quality plotts with minimal amount of settings and tweaking. 141 | 142 | With ggplot graphics are build step by step by adding new elements. 143 | 144 | To build a ggplot we need to: 145 | 146 | - bind plot to a specific data frame 147 | 148 | ```{r, eval=FALSE} 149 | ggplot(surveys_complete) 150 | ``` 151 | 152 | - define aestetics (`aes`), that maps variables in the data to axes on the plot 153 | or to plotting size, shape color, etc., 154 | 155 | ```{r} 156 | ggplot(surveys_complete, aes(x = weight, y = hindfoot_length)) 157 | ``` 158 | 159 | - add `geoms` -- graphical representation of the data in the plot (points, 160 | lines, bars). To add a geom to the plot use `+` operator: 161 | 162 | ```{r} 163 | ggplot(surveys_complete, aes(x = weight, y = hindfoot_length)) + 164 | geom_point() 165 | ``` 166 | 167 | ## Modifying plots 168 | 169 | - adding transparency (alpha) 170 | 171 | ```{r} 172 | ggplot(surveys_complete, aes(x = weight, y = hindfoot_length)) + 173 | geom_point(alpha=0.1) 174 | ``` 175 | 176 | - adding colors 177 | 178 | ```{r} 179 | ggplot(surveys_complete, aes(x = weight, y = hindfoot_length)) + 180 | geom_point(alpha=0.1, color="blue") 181 | ``` 182 | 183 | Example of complex visualisation in which plot area is divided into hexagonal 184 | sections and points are counted wihin hexagons. The number of points per hexagon 185 | is encoded by color. 186 | 187 | ```{r} 188 | ggplot(surveys_complete, aes(x = weight, y = hindfoot_length)) + stat_binhex(bins=50) + 189 | scale_fill_gradientn(trans="log10", colours = heat.colors(10, alpha=0.5)) 190 | ``` 191 | 192 | ## Boxplot 193 | 194 | Visualising the distribution of weight within each species. 195 | 196 | ```{r} 197 | ggplot(surveys_weight_present, aes(factor(species_id), weight)) + 198 | geom_boxplot() 199 | ``` 200 | 201 | By adding points to boxplot, we can see particular measurements and the 202 | abundance of measurements. 203 | 204 | ```{r} 205 | ggplot(surveys_weight_present, aes(factor(species_id), weight)) + 206 | geom_jitter(alpha=0.3, color="tomato") + 207 | geom_boxplot(alpha=0) 208 | ``` 209 | 210 | > ### Challenge 211 | > 212 | > Create boxplot for `hindfoot_length`. 213 | 214 | ## Plotting time series data 215 | 216 | Let's calculate number of counts per year for each species. To do that we need 217 | to group data first and count records within each group. 218 | 219 | ```{r} 220 | yearly_counts <- surveys %>% 221 | group_by(year, species_id) %>% 222 | summarise(count=n()) 223 | ``` 224 | 225 | Timelapse data can be visualised as a line plot with years on x axis and counts 226 | on y axis. 227 | 228 | ```{r} 229 | ggplot(yearly_counts, aes(x=year, y=count)) + 230 | geom_line() 231 | ``` 232 | 233 | Unfortunately this does not work, because we plot data for all the species 234 | together. We need to tell ggplot to split graphed data by `species_id` 235 | 236 | ```{r} 237 | ggplot(yearly_counts, aes(x=year, y=count, group=species_id)) + 238 | geom_line() 239 | ``` 240 | 241 | We will be able to distiguish species in the plot if we add colors. 242 | 243 | ```{r} 244 | ggplot(yearly_counts, aes(x=year, y=count, group=species_id, color=species_id)) + 245 | geom_line() 246 | ``` 247 | 248 | ## Faceting 249 | 250 | ggplot has a special technique called *faceting* that allows to split one plot 251 | into mutliple plots based on some factor. We will use it to plot one time series 252 | for each species separately. 253 | 254 | ```{r} 255 | ggplot(yearly_counts, aes(x=year, y=count, color=species_id)) + 256 | geom_line() + facet_wrap(~species_id) 257 | ``` 258 | 259 | Now we wuld like to split line in each plot by sex of each individual 260 | measured. To do that we need to make counts in dataframe grouped by sex. 261 | 262 | > ### Challenges: 263 | > 264 | > - filter the dataframe so that we only keep records with sex "F" or "M"s 265 | > 266 | 267 | ```{r} 268 | sex_values = c("F", "M") 269 | surveys <- surveys %>% 270 | filter(sex %in% sex_values) 271 | ``` 272 | 273 | > - group by year, species_id, sex 274 | 275 | ```{r} 276 | yearly_sex_counts <- surveys %>% 277 | group_by(year, species_id, sex) %>% 278 | summarise(count=n()) 279 | ``` 280 | 281 | > - make the faceted plot spliting further by sex (within single plot) 282 | 283 | ```{r} 284 | ggplot(yearly_sex_counts, aes(x=year, y=count, color=species_id, group=sex)) + 285 | geom_line() + facet_wrap(~ species_id) 286 | ``` 287 | 288 | > We can improve the plot by coloring by sex instead of species (species are 289 | > already in separate plots, so we don't need to distinguish them better) 290 | 291 | ```{r} 292 | ggplot(yearly_sex_counts, aes(x=year, y=count, color=sex, group=sex)) + 293 | geom_line() + facet_wrap(~ species_id) 294 | ``` 295 | -------------------------------------------------------------------------------- /CONDUCT.Rmd: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | As contributors and maintainers of this project, we pledge to respect all people 4 | who contribute through reporting issues, posting feature requests, updating 5 | documentation, submitting pull requests or patches, and other activities. 6 | 7 | We are committed to making participation in this project a harassment-free 8 | experience for everyone, regardless of level of experience, gender, gender 9 | identity and expression, sexual orientation, disability, personal appearance, 10 | body size, race, ethnicity, age, or religion. 11 | 12 | Examples of unacceptable behavior by participants include the use of sexual 13 | language or imagery, derogatory comments or personal attacks, trolling, public 14 | or private harassment, insults, or other unprofessional conduct. 15 | 16 | Project maintainers have the right and responsibility to remove, edit, or reject 17 | comments, commits, code, wiki edits, issues, and other contributions that are 18 | not aligned to 19 | our [Code of Conduct](https://software-carpentry.org/conduct/). Project 20 | maintainers who do not follow the Code of Conduct may be removed from the 21 | project team. 22 | 23 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 24 | reported by following 25 | our [reporting guidelines](https://software-carpentry.org/CoC-reporting/). 26 | -------------------------------------------------------------------------------- /CONDUCT.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | CONDUCT.utf8.md 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 90 | 91 | 92 | 125 | 126 | 143 | 144 | 145 |
146 | 147 | 148 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 185 | 186 | 249 | 250 | 251 |
252 |
253 |
254 |
255 |
256 | 257 |
258 | 259 | 260 | 261 | 262 | 307 | 308 | 314 | 315 | 316 |
317 |

Code of Conduct

318 |

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

319 |

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.

320 |

Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.

321 |

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to our Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.

322 |

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by following our reporting guidelines.

323 |
324 | 325 |
326 | 327 |

Data Carpentry, 328 | 2017-2018. License. Contributing.
329 | Questions? Feedback? 330 | Please file 331 | an issue on GitHub.
On 332 | Twitter: @datacarpentry

333 | 334 | 335 |
336 |
337 | 338 |
339 | 340 | 352 | 353 | 354 | 362 | 363 | 364 | 365 | -------------------------------------------------------------------------------- /CONTRIBUTING.Rmd: -------------------------------------------------------------------------------- 1 | 2 | # Contributing 3 | 4 | 5 | [Data Carpentry](http://datacarpentry.org) in an open source project, and we 6 | welcome contributions of all kinds: new lessons, fixes to existing material, bug 7 | reports, and reviews of proposed changes are all welcome. 8 | 9 | ## Contributor Agreement 10 | 11 | By contributing, you agree that we may redistribute your work 12 | under [our license](http://www.datacarpentry.org/R-genomics/LICENSE.html). 13 | In exchange, we will address your issues and/or assess your change proposal as 14 | promptly as we can, and help you become a member of our community. Everyone 15 | involved in [Software Carpentry](https://software-carpentry.org) 16 | and [Data Carpentry](http://datacarpentry.org) agrees to abide by 17 | our 18 | [code of conduct](http://www.datacarpentry.org/R-genomics/CONDUCT.html). 19 | 20 | 21 | ## Working With GitHub 22 | 23 | **NOTE: this repository uses `gh-pages` as our default branch.** 24 | 25 | 1. Fork the `datacarpentry/R-genomics` repository on GitHub. *See the 26 | "Fork" button in the top-right corner of the screen on the GitHub website.* 27 | 28 | 2. Clone that repository to your own machine. (It is also possible 29 | to make minor edits right on GitHub.) *At your terminal:* 30 | 31 | ```bash 32 | git clone https://github.com/your_username/R-genomics.git R-genomics 33 | cd R-genomics 34 | git remote add upstream https://github.com/datacarpentry/R-genomics.git 35 | ``` 36 | 37 | 3. Create a branch from `gh-pages` for your changes. 38 | Give your branch a meaningful name, 39 | such as `fix-typos-dplyr-lesson` 40 | or `add-tutorial-on-visualization`. *At your terminal:* 41 | 42 | ```bash 43 | git checkout -b fix-typos-dplyr-lesson 44 | ``` 45 | 46 | 4. Make your changes to the Rmd file. If you'd like to check the rendered 47 | version of your changes, you can do one of three things: 48 | 49 | * if you have `GNU Make` installed on your system, type `make` at your shell 50 | terminal. 51 | * if you use RStudio, click on the "Knit" button in the top-right corner of 52 | your editor pane. 53 | * in other cases, you can type: 54 | `rmarkdown::render_site("01-intro-to-r.Rmd")` in your R terminal (make 55 | sure your working directory is at the root of the lesson) to generate the 56 | corresponding html file. 57 | 58 | 5. Commit the Rmd file you edited (`git add file-you-changed.Rmd`, followed by 59 | `git commit -m "fix typos in dplyr lesson"`), and push your changes to your 60 | repository on GitHub (`git push origin fix-typos-dplyr-lesson`). If your 61 | change affects a lesson, **please only commit and push the `Rmd` 62 | files**. The rendered versions will be generated by the lesson maintainers 63 | to avoid merge conflicts. 64 | 65 | 5. Send a pull request (PR) to the `gh-pages` branch of the 66 | `datacarpentry/R-genomics` repository for this lesson at 67 | http://github.com/datacarpentry/R-genomics 68 | 69 | If it is easier for you to send edits to us some other way, please 70 | mail us at [board@datacarpentry.org](mailto:board@datacarpentry.org). 71 | Given a choice between you creating content or wrestling with Git, 72 | we'd rather have you doing the former. 73 | 74 | 75 | ## File Locations and Formats 76 | 77 | Each lesson is composed of files such as `00-before-we-start.Rmd`, 78 | `01-intro-to-r.Rmd` and so on. (We use two digits followed by a 79 | topic key to ensure files appear in the right order when listed.) 80 | 81 | For the R material, lessons must be written in RMarkdown (ending in 82 | `Rmd`). A Makefile converts the Rmd files into HTML that are 83 | processed by Jekyll (the tool GitHub uses to create websites) as 84 | explained in [the README file](https://github.com/datacarpentry/R-genomics#readme). 85 | 86 | _Important Note:_ We use the `purl()` function from `knitr` to 87 | generate a skeleton file that contains code to be distributed to 88 | the workshop participants. This strategy is useful in particular 89 | for error-prone pieces of code (e.g., if it contains long URLs). To 90 | take full advantage, every line of code that should be included in 91 | the handout **must** be enclosed in an `R` code chunk with 92 | `purl=TRUE` in the chunk options. Further, to aid students' use of 93 | the handout code, consider including explanatory comments. When 94 | writing Challenges in particular, you may need to include redundant 95 | comments and used the chunk option `echo=FALSE`. In doubt 96 | consult the `Rmd` files for examples. 97 | 98 | Images (e.g., screenshots) go into the `img/` folder. Graphics 99 | generated by some R code also go into this folder and get the prefix 100 | `R-ecology-`. This latter case is handled automatically with some 101 | knitr options in the `setup.R` file. 102 | 103 | Raw data go into `data/`. However, at this stage, this folder is 104 | created programmatically and only contain dataset downloaded directly 105 | from the figshare repository. In other words, it can be safely be 106 | deleted (e.g. using `make clean-data` or `make clean`.) 107 | 108 | The `data_output/` folder only contains data generated/exported by R 109 | code. 110 | 111 | The `site_libs` folder is generated by the **rmarkdown** package and 112 | holds the javascript, css, and fonts used by the website. 113 | 114 | 115 | 116 | ## Datasets 117 | 118 | We don't store data for lessons inside the lesson repositories. For 119 | completed lessons the data should be publicly available in a data 120 | repository appropriate to the data type. For lesson development the 121 | data may be provided in any way that is convenient including 122 | posting to a website, on [figshare](http://figshare.com/), a public 123 | Dropbox link, a [GitHub gist](https://gist.github.com), or even 124 | included in the pull request (PR). Once the PR is ready to merge the data should 125 | be placed in the [official data repository](https://dx.doi.org/10.6084/m9.figshare.1314459.v5) 126 | and all links to the data updated. 127 | 128 | ## Formatting of the material 129 | 130 | To ensure a consistent formatting of the lessons, we recommend the 131 | following guidelines: 132 | 133 | * No trailing white space 134 | * Wrap lines at 80 characters (unless it breaks URLs) 135 | * Use consistent capitalization (e.g., R not r, RStudio not rstudio 136 | or Rstudio) 137 | * Function names are written as `function()` while variables packages are 138 | written as `variable`, and package names as **`package`**. 139 | * Use unclosed atx style headers (see below): 140 | 141 | ``` 142 | ## Use this format for headers 143 | 144 | And not this format 145 | ------------------- 146 | ``` 147 | 148 | ## FAQ 149 | 150 | * *Where can I get help?* 151 |
152 | Mail us at [board@datacarpentry.org](mailto:board@datacarpentry.org) 153 | or come chat with us on [our Gitter chat](https://gitter.im/data-carpentry/Lobby). 154 | -------------------------------------------------------------------------------- /Ecoli_genomes_with_SNPs_per_locus_tag.txt: -------------------------------------------------------------------------------- 1 | "RefGenomeID" "B21_00283" "B21_00712" "B21_01479" "B21_02113" "B21_02912" "B21_03468" "B21_03483" "CE10_0249" "CE10_1018" "CE10_2487" "CE10_4227" "CE10_4287" "CE10_4923" "EC042_0151" "EC042_0472" "EC042_0610" "EC042_0615" "EC042_0641" "EC042_0670" "EC042_0679" "EC042_0714" "EC042_0728" "EC042_0815" "EC042_0900" "EC042_0930" "EC042_0962" "EC042_1072" "EC042_1118" "EC042_1161" "EC042_1311" "EC042_1455" "EC042_1467" "EC042_1488" "EC042_1679" "EC042_1886" "EC042_1931" "EC042_1941" "EC042_2242" "EC042_2277" "EC042_2315" "EC042_2341" "EC042_2409" "EC042_2471" "EC042_2539" "EC042_2556" "EC042_2704" "EC042_2856" "EC042_2989" "EC042_3032" "EC042_3134" "EC042_3194" "EC042_3536" "EC042_3696" "EC042_3722" "EC042_3771" "EC042_3773" "EC042_3819" "EC042_3928" "EC042_4063" "EC042_4324" "EC042_4427" "EC042_4596" "EC042_4607" "EC042_4714" "EC042_4738" "EC042_4780" "EC042_4810" "EC042_4826" "EC042_4844" "Ec53638_0242" "Ec53638_0275" "Ec53638_0747" "Ec53638_1350" "Ec53638_1710" "Ec53638_1874" "Ec53638_2438" "Ec53638_2918" "Ec53638_3033" "Ec53638_3450" "Ec53638_3691" "Ec53638_3739" "Ec53638_3926" "Ec53638_4078" "Ec53638_4096" "Ec53638_4367" "Ec53638_4369" "Ec53638_4379" "Ec53638_4683" "Ec53638_4962" "ECABU_c01750" "ECABU_c09480" "ECABU_c11320" "ECABU_c12400" "ECABU_c13590" "ECABU_c13630" "ECABU_c22930" "ECABU_c39800" "ECABU_c43910" "EcDH1_2274" "EcDH1_2349" "EcDH1_3569" "ECNA114_08481" "ECNA114_0852" "ECNA114_0866" "ECNA114_0869" "ECNA114_0876" "ECNA114_0920" "ECNA114_3501" "ECO55CA74_01345" "ECOK1_2565" "ECOK1_2568" "ECOK1_2573" "ECOK1_2595" "ECOK1_2677" "EKO11_0226" "EKO11_0853" "EKO11_1031" "EKO11_1751" "EKO11_3062" "ETEC_1974" "ETEC_1977" "ETEC_1978" "ETEC_1980" "ETEC_1982" "ETEC_1985" "ETEC_1989" "ETEC_1991" "ETEC_1992" "ETEC_1993" "ETEC_1994" "ETEC_1997" "ETEC_1998" "ETEC_2000" "ETEC_2001" "ETEC_2002" "ETEC_2005" "ETEC_2011" "ETEC_2012" "ETEC_2014" "ETEC_2015" "ETEC_2018" "ETEC_2473" "i02_1293" "i02_1315" "LF82_099" "locus_tag.location=3592993..3952918" "locus_tag.location=415231..415309" "NRG857_04530" "NRG857_04640" "O3O_01590" "O3O_03115" "O3O_05180" "O3O_05655" "O3O_06555" "O3O_07785" "O3O_09145" "O3O_09530" "O3O_09635" "O3O_09670" "O3O_09685" "O3O_09710" "O3O_09715" "O3O_09740" "O3O_09745" "O3O_09750" "O3O_09755" "O3O_09760" "O3O_09775" "O3O_09800" "O3O_09840" "O3O_09880" "O3O_09885" "O3O_12965" "O3O_12970" "O3O_12975" "O3O_12980" "O3O_13065" "O3O_13160" "O3O_13170" "O3O_13175" "O3O_13180" "O3O_13185" "O3O_13190" "O3O_13240" "O3O_13325" "O3O_13970" "O3O_13975" "O3O_13985" "O3O_13990" "O3O_14000" "O3O_14010" "O3O_14015" "O3O_14030" "O3O_14035" "O3O_14050" "O3O_14080" "O3O_14085" "O3O_14135" "O3O_14145" "O3O_14150" "O3O_14155" "O3O_14165" "O3O_14180" "O3O_14195" "O3O_14205" "O3O_14595" "O3O_17890" "O3O_18175" "O3O_19925" "O3O_24015" "O3O_25120" "O3O_25165" "O3O_25355" "O3O_25360" "P12B_c0469" "product.location=4565053..4565232" "UMNK88_3723" 2 | "Eco042" 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 | "Eco53638" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 5 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 4 | "EcoABU83972" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 4 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | "EcoBL21DE3" 1 1 2 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | "EcoCloneDi2" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | "EcoDH1" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | "EcoETEC_H10407" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 1 1 1 1 1 2 1 1 1 1 2 1 2 1 1 3 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | "EcoIHE3034" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | "EcoKO11FL" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | "EcoLF82" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | "EcoNA114" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | "EcoO104H4_209EL-2071" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 1 1 1 3 1 1 1 4 8 6 12 10 1 3 1 1 1 6 3 5 1 2 1 1 3 1 2 1 5 1 5 2 5 2 1 2 2 3 5 3 1 1 1 5 3 4 2 1 2 1 1 1 1 1 1 1 6 1 1 0 0 0 14 | "EcoO55H7_RM12579" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | "EcoO7K1_CE10" 0 0 0 0 0 0 0 1 1 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 | "EcoO83H1_NRG857C" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 | "EcoP12b" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 18 | "EcoUMNK88" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 19 | "Shifl_2a_301" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | -------------------------------------------------------------------------------- /Ecoli_metadata.csv: -------------------------------------------------------------------------------- 1 | sample,generation,clade,strain,cit,run,genome_size REL606,0,N/A,REL606,unknown,,4.62 REL1166A,2000,unknown,REL606,unknown,SRR098028,4.63 ZDB409,5000,unknown,REL606,unknown,SRR098281,4.6 ZDB429,10000,UC,REL606,unknown,SRR098282,4.59 ZDB446,15000,UC,REL606,unknown,SRR098283,4.66 ZDB458,20000,"(C1,C2)",REL606,unknown,SRR098284,4.63 ZDB464*,20000,"(C1,C2)",REL606,unknown,SRR098285,4.62 ZDB467,20000,"(C1,C2)",REL606,unknown,SRR098286,4.61 ZDB477,25000,C1,REL606,unknown,SRR098287,4.65 ZDB483,25000,C3,REL606,unknown,SRR098288,4.59 ZDB16,30000,C1,REL606,unknown,SRR098031,4.61 ZDB357,30000,C2,REL606,unknown,SRR098280,4.62 ZDB199*,31500,C1,REL606,minus,SRR098044,4.62 ZDB200,31500,C2,REL606,minus,SRR098279,4.63 ZDB564,31500,Cit+,REL606,plus,SRR098289,4.74 ZDB30*,32000,C3,REL606,minus,SRR098032,4.61 ZDB172,32000,Cit+,REL606,plus,SRR098042,4.77 ZDB158,32500,C2,REL606,minus,SRR098041,4.63 ZDB143,32500,Cit+,REL606,plus,SRR098040,4.79 CZB199,33000,C1,REL606,minus,SRR098027,4.59 CZB152,33000,Cit+,REL606,plus,SRR097977,4.8 CZB154,33000,Cit+,REL606,plus,SRR098026,4.76 ZDB83,34000,Cit+,REL606,minus,SRR098034,4.6 ZDB87,34000,C2,REL606,plus,SRR098035,4.75 ZDB96,36000,Cit+,REL606,plus,SRR098036,4.74 ZDB99,36000,C1,REL606,minus,SRR098037,4.61 ZDB107,38000,Cit+,REL606,plus,SRR098038,4.79 ZDB111,38000,C2,REL606,minus,SRR098039,4.62 REL10979,40000,Cit+,REL606,plus,SRR098029,4.78 REL10988,40000,C2,REL606,minus,SRR098030,4.62 -------------------------------------------------------------------------------- /Ecoli_metadata.txt: -------------------------------------------------------------------------------- 1 | Sample_Name_s clade generation cit amplification strain_s Run_s CZB152 Citplus 33000 yes yes REL606 SRR097977 CZB154 Citplus 33000 yes yes REL606 SRR098026 CZB199 C1 33000 no no REL606 SRR098027 REL1166A 2000 REL606 SRR098028 ZDB409 5000 REL606 SRR098281 ZDB446 UC 15000 no no REL606 SRR098283 -------------------------------------------------------------------------------- /LICENSE.Rmd: -------------------------------------------------------------------------------- 1 | # LICENSE 2 | 3 | ### Instructional Material 4 | 5 | All Data Carpentry instructional material is made available under 6 | the Creative Commons Attribution license. You are free: 7 | 8 | * to **Share**---to copy, distribute and transmit the work 9 | * to **Remix**---to adapt the work 10 | 11 | Under the following conditions: 12 | 13 | * **Attribution**---You must attribute the work using "Copyright (c) 14 | Data Carpentry" (but not in any way that suggests that we 15 | endorse you or your use of the work). Where practical, you must 16 | also include a hyperlink to http://datacarpentry.org. 17 | 18 | With the understanding that: 19 | 20 | * **Waiver**---Any of the above conditions can be waived if you get 21 | permission from the copyright holder. 22 | * **Other Rights**---In no way are any of the following rights 23 | affected by the license: 24 | * Your fair dealing or fair use rights; 25 | * The author's moral rights; 26 | * Rights other persons may have either in the work itself or in 27 | how the work is used, such as publicity or privacy rights. * 28 | * **Notice**---For any reuse or distribution, you must make clear to 29 | others the license terms of this work. The best way to do this is 30 | with a link to 31 | [http://creativecommons.org/licenses/by/3.0/](http://creativecommons.org/licenses/by/3.0/). 32 | 33 | For the full legal text of this license, please see 34 | [http://creativecommons.org/licenses/by/3.0/legalcode](http://creativecommons.org/licenses/by/3.0/legalcode). 35 | 36 | ### Software 37 | 38 | Except where otherwise noted, the example programs and other software 39 | provided by Data Carpentry are made available under the 40 | [OSI](http://opensource.org)-approved 41 | [MIT license](http://opensource.org/licenses/mit-license.html). 42 | 43 | Permission is hereby granted, free of charge, to any person obtaining 44 | a copy of this software and associated documentation files (the 45 | "Software"), to deal in the Software without restriction, including 46 | without limitation the rights to use, copy, modify, merge, publish, 47 | distribute, sublicense, and/or sell copies of the Software, and to 48 | permit persons to whom the Software is furnished to do so, subject to 49 | the following conditions: 50 | 51 | The above copyright notice and this permission notice shall be 52 | included in all copies or substantial portions of the Software. 53 | 54 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 55 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 56 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 57 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 58 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 59 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 60 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 61 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # RMarkdown files 2 | RMD_SRC = $(wildcard *.Rmd) 3 | RMD_DST = $(patsubst %.Rmd,%.md,$(RMD_SRC)) 4 | 5 | all: pages 6 | 7 | skeleton-%.R: %.Rmd _site.yml 8 | Rscript -e "knitr::purl('$<', output='$@', documentation=0L)" 9 | 10 | %.html: %.Rmd _site.yml footer.html 11 | Rscript -e "rmarkdown::render_site(input='$<')" 12 | 13 | %.html: %.md 14 | Rscript -e "rmarkdown::render_site(input='$<')" 15 | 16 | #code-handout.R: skeleton-00-before-we-start.R skeleton-01-intro-to-r.R skeleton-02-starting-with-data.R skeleton-03-dplyr.R skeleton-04-visualization-ggplot2.R skeleton-05-r-and-databases.R 17 | # for f in $^; do cat $$f; echo "\n"; done > $@ 18 | # make clean-skeleton 19 | 20 | pages: 00-before-we-start.html 01-intro-to-R.html 02-starting-with-data.html index.html LICENSE.html CONTRIBUTING.html CONDUCT.html 03-data-frames.html 04-dplyr.html 05-data-visualization.html 21 | 22 | make clean-md 23 | 24 | check-spelling: 25 | Rscript -e "source('check-spelling.R')" 26 | 27 | clean-skeleton: 28 | -rm skeleton-*-*.R 29 | 30 | clean-md: 31 | @rm -rf ${RMD_DST} 32 | 33 | clean-html: 34 | -rm *-*.html 35 | 36 | clean-img: 37 | @find . -path './img/R-genomics-*.png' -exec rm {} \; 38 | 39 | clean: clean-skeleton clean-html clean-md clean-img 40 | 41 | clean-data: 42 | -rm -rf data 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) 2 | [![Slack Status](https://img.shields.io/badge/Slack_Channel-dc--genomics-E01563.svg)](https://swcarpentry.slack.com/messages/C9N1K7DCY) 3 | 4 | # R Genomics 5 | 6 | This is a repository for Data Carpentry R Genomics lessons 7 | 8 | -------------------------------------------------------------------------------- /R_visualization.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: lesson 3 | root: . 4 | title: Lesson Title 5 | minutes: 5 6 | --- 7 | 8 | R-visualization-genomics 9 | ======================= 10 | 11 | Group 12 | ----- 13 | Sarah Stevens, Mary Shelley, Ryan Williams, Sue McClatchy, Kate Hertweck 14 | 15 | Learning objectives: 16 | -------------------- 17 | 18 | 19 | Resources: 20 | --------- 21 | * [RStudio cheatsheet](http://www.rstudio.com/resources/cheatsheets/) 22 | * [Choosing a good chart] (http://extremepresentation.typepad.com/blog/2006/09/choosing_a_good.html) 23 | * [Nature Points of Significance] (http://www.nature.com/collections/qghhqm/pointsofsignificance) 24 | * [Kick the bar chart habit] (http://www.nature.com/nmeth/journal/v11/n2/pdf/nmeth.2837.pdf) 25 | 26 | Prerequisites: Assuming use of RStudio and general knowledge of R or completion of [R for first timers](https://github.com/datacarpentry/datacarpentry/tree/master/lessons/R/materials) 27 | 28 | Attitudes/dispositions: 29 | * I feel more comfortable exploring ggplot(). 30 | * I am more at ease working in the R environment 31 | * I feel comfortable with R help documents and online resources for various packages (or at least finding those) 32 | 33 | Declarative knowledge 34 | * There are appropriate and inappropriate ways of plotting the same data 35 | * I know which resources to use to determine which plot will answer my research questions 36 | * I know how and when to use a boxplot versus a bar chart 37 | * I know how to summarize my data with descriptive statistics 38 | 39 | Skills 40 | * Quantitative analysis of data through descriptive statistics (means, sd's, CI's, etc.) 41 | * Organizing data prior to ggplot use (reshape2, melt, cast,plyr,ddply) 42 | * Basic plotting with ggplot() 43 | 44 | Plot ideas: 45 | * box plots or histograms of numerical distributions describing data (avg. read length, kmer-distribution) paired with summary statistics produced through ddply() 46 | 47 | Challenge Questions: 48 | * Fill in arguments for ggplot() in order to produce a new plot. 49 | * Correct a mistake in a call to ggplot(). 50 | 51 | *The text below is all rough, and much of it is just a start 52 | 53 | First we are going to input data 54 | 55 | ``` 56 | dataset<-read.table("file/name/here",sep=...,header=T) 57 | ``` 58 | 59 | There are several differerent summary statistics that we can run 60 | 61 | ``` 62 | mean(dataset$variable) 63 | sd(dataset$variable) 64 | quantile(dataset$variable, c(0.025,0.975)) 65 | ``` 66 | 67 | These statistics desribe how a particular variable is distributed, but we may have this variable from several genomes, and we would want to know how the distribution may differ. To do this we can use the `ddply()` function from the `"plyr"` package. 68 | ``` 69 | library(plyr) 70 | ddply(dataset, .(categorical_variable), summarise, 71 | mean=mean(variable), 72 | sd=sd(variable), 73 | hi_95=quantile(variable, 0.975), 74 | lo_95=quantile(variable, 0.025)) 75 | ``` 76 | 77 | To start plotting this we will use the ggplot2() package. We will start with a blank plot and add aesthetic layers to it. 78 | 79 | ``` 80 | ggplot(dataset) # note the error 81 | ggplot(dataset)+geom_boxplot(aes(x=categorical_variable, y= variable)) 82 | ``` 83 | 84 | With this plot we can see the distributions of data (quantiles and median) categorized by our categorical variable. While this visualization can show you how your data is distributed (is it skewed?), you can also begin comparing between categorical variables (is my variable greater under one category than another)? 85 | 86 | 87 | Applying Visualization to a Dataset 88 | ----------------------------------- 89 | 90 | First we will install the following packages 91 | ``` 92 | install.packages("ggplot2") 93 | install.packages("reshape2") 94 | install.packages("plyr") 95 | install.pacakges("vegan") 96 | 97 | library(reshape2) 98 | library(plyr) 99 | library(ggplot2) 100 | library(vegan) 101 | ``` 102 | These packages include many visualization, statistical, and data management tools that can be used to summarize your data and produce publication-ready plots. 103 | 104 | First we will read in the data (journal.pone.0081760.s004.csv), we will remove some nonsenical labels for ease of visualization here. We will also add a variable that allows us to count up SNPs in the database 105 | ``` 106 | data<-read.csv("~/Desktop/journal.pone.0081760.s004.csv") 107 | data<-subset(data, RefGenomeID != "" & locus_tag != "") 108 | data$count<-1 109 | 110 | ``` 111 | 112 | This dataset displays SNPs among multiple E.coli strains. We are interested in looking at how many total SNPs there are per E.coli genome. We will do this using ddply. Here we could calculate multiple descriptive statistics that can be useful when visualizing relationships. Alternatively, this data can be read in straight from the github repo. 113 | 114 | ``` 115 | dataset<-read.table("https://github.com/datacarpentry/R-genomics/raw/master/Ecoli_genomes_with_SNPs_per_locus_tag.txt",header=T,sep="\t") 116 | 117 | ``` 118 | We can then convert the data to long form 119 | ``` 120 | dataset_melt<-melt(dataset, id="RefGenomeID") 121 | ``` 122 | We will then create another object that will include information about the average number of SNPs per E.coli genome 123 | ``` 124 | av_snps<-ddply(dataset_melt, .(RefGenomeID),summarise, 125 | average=mean(value), 126 | SD=sd(value) 127 | ) 128 | ``` 129 | 130 | 131 | Now we will use ggplot to produce visualizations of these data. These functions work in a step-wise manner, where we add visual layers to our data. 132 | 133 | ``` 134 | ggplot(av_snps) 135 | 136 | ``` 137 | The errror shows that we have no layers in our plot, so lets add bars to show the average number of SNPs per genome. 138 | 139 | ``` 140 | av_snps<-arrange(av_snps, -average) 141 | ggplot(av_snps)+geom_bar(aes(x=variable, y=average),stat="identity") 142 | 143 | ``` 144 | 145 | We can order them within the plot as well 146 | 147 | ``` 148 | ggplot(av_snps)+geom_bar(aes(x=reorder(variable,average), y=average),stat="identity") 149 | 150 | ``` 151 | 152 | These are hard to see. We will arrange them, look at the top 10, and flip the axes so we can read labels. 153 | 154 | ``` 155 | av_snps<-arrange(av_snps,-average) 156 | ggplot(av_snps[1:10,])+geom_bar(aes(x=reorder(variable,average), y=average),stat="identity")+coord_flip() 157 | ``` 158 | 159 | Lets add a layer that will show the variability around these averages (standard deviation) 160 | 161 | ``` 162 | p<-ggplot(av_snps[1:10,])+geom_bar(aes(x=reorder(variable,average), y=average),stat="identity")+coord_flip() 163 | p+geom_errorbar(aes(x=reorder(variable,average),y=average,ymax=average+SD,ymin=average-SD)) 164 | 165 | ``` 166 | 167 | We can also add informative labels easily 168 | 169 | ``` 170 | p<-ggplot(av_snps[1:10,])+geom_bar(aes(x=reorder(variable,average), y=average),stat="identity")+coord_flip() 171 | p.error.bars<-p+geom_errorbar(aes(x=reorder(variable,average),y=average,ymax=average+SD,ymin=average-SD)) 172 | p.error.bars+labs(x="Average Number of SNPs",y="E. Coli Genomes") 173 | ``` 174 | 175 | Colors can be used as well 176 | 177 | ``` 178 | p<-ggplot(av_snps[1:10,])+geom_bar(aes(x=reorder(variable,average), y=average,fill=variable),stat="identity")+coord_flip() 179 | p.error.bars<-p+geom_errorbar(aes(x=reorder(variable,average),y=average,ymax=average+SD,ymin=average-SD,colour=variable)) 180 | p.error.bars+labs(x="Average Number of SNPs",y="E. Coli Genomes") 181 | 182 | ``` 183 | 184 | We may also be interested in a multivariate analysis of these data. We can ask the question, "Which genomes are most similar based on SNPs?" This is analogous to saying, "Which of my samples are the most similar?" We will do this using nonmetric multidimensional scaling or NMDS. 185 | 186 | First we will transform data to presence-absence 187 | 188 | ``` 189 | library(vegan) 190 | transformed_data<-decostand(dataset[,-1],"pa") 191 | ``` 192 | 193 | Then we will produce the NMDS and look at one of the outputs 194 | 195 | ``` 196 | mds<-metaMDS(transformed_data, distance="jaccard",k=2,autotransform=F) 197 | scores<-data.frame(dataset[,1],scores(mds)) 198 | head(scores) 199 | names(scores)[1]<-"RefGenomeID" 200 | ``` 201 | We changed the neame above of the first column for ease of understanding. 202 | Now let's look at the first two axes from our NMDS analysis and colour points by genome identity 203 | 204 | ``` 205 | ggplot(scores)+geom_point(aes(x=NMDS1,y=NMDS2,colour=RefGenomeID)) 206 | ``` 207 | 208 | This visualization shows where points are in multidimensional space in relation to one another compressed down into a 2D form. Points that are very close together are very similar while points that are very far apart are dissimilar. These are just a few examples of how you can visualizae univariate, bivariate, and multivariate relationships in data. 209 | 210 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | exclude: ["*.Rmd"] 2 | -------------------------------------------------------------------------------- /_includes/anySetup.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |

Setting Up

5 | 6 |

7 | This workshop may require some software installation, and details will be included here. 8 | 9 |

10 | 11 | 12 |
13 |

Windows

14 |
    15 |
  1. 16 | Download and install 17 |
  2. 18 |
  3. 19 | 20 |
  4. 21 |
22 |
23 | 24 | 25 |
26 |

Mac OS X

27 |
    28 |
  1. 29 | Download and install 30 |
  2. 31 |
  3. 32 | 33 |
  4. 34 |
35 |
36 | 37 | 38 | 39 |
40 |

Linux

41 |
    42 |
  1. 43 | Download and install 44 |
  2. 45 |
  3. 46 | 47 |
  4. 48 |
49 |
50 | 51 | 52 |
53 | -------------------------------------------------------------------------------- /_includes/banner.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /_includes/javascript.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /_includes/lesson-index.html: -------------------------------------------------------------------------------- 1 | * [Lesson 00 Name](./00-lesson-00-name.html) 2 | * [Lesson 01 Name](./01-lesson-01-name.html) 3 | * [Lesson 02 Name](./02-lesson-02-name.html) 4 | * [Lesson 03 Name](./03-lesson-03-name.html) 5 | -------------------------------------------------------------------------------- /_includes/pythonSetup.html: -------------------------------------------------------------------------------- 1 | 2 |
6 |

Setting Up Python

7 | 8 |

9 | Python is a popular language for 10 | scientific computing, and great for general-purpose programming as 11 | well. Installing all of its scientific packages individually can be 12 | a bit difficult, so we recommend an all-in-one installer. 13 |

14 | 15 |

16 | Regardless of how you choose to install it, 17 | please make sure you install Python version 2.x and not version 3.x 18 | (e.g., 2.7 is fine but not 3.4). 19 | Python 3 introduced changes that will break some of the code we teach during the workshop. 20 |

21 | 22 |

23 | We will teach Python using the IPython notebook, a programming environment 24 | that runs in a web browser. For this to work you will need a reasonably 25 | up-to-date browser. The current versions of the Chrome, Safari and 26 | Firefox browsers are all supported 28 | (some older browsers, including Internet Explorer version 9 29 | and below, are not). 30 |

31 | 32 | 33 |
34 |

Windows

35 | 47 |
48 | 49 | 50 | 51 |
52 |

Mac OS X

53 | 63 |
64 | 65 | 66 | 67 |
68 |

Linux

69 |

70 | We recommend the all-in-one scientific Python installer 71 | Anaconda. 72 | (Installation requires using the shell and if you aren't 73 | comfortable doing the installation yourself just 74 | download the installer and we'll help you at the boot 75 | camp.) 76 |

77 |
    78 |
  1. 79 | Download the installer that matches your operating 80 | system and save it in your home folder. 81 | Download the default Python 2 installer (do not follow the link to version 3). 82 |
  2. 83 |
  3. 84 | Open a terminal window. 85 |
  4. 86 |
  5. 87 | Type
    bash Anaconda-
    and then press 88 | tab. The name of the file you just downloaded should 89 | appear. 90 |
  6. 91 |
  7. 92 | Press enter. You will follow the text-only prompts. When 93 | there is a colon at the bottom of the screen press the down 94 | arrow to move down through the text. Type yes and 95 | press enter to approve the license. Press enter to approve the 96 | default location for the files. Type yes and 97 | press enter to prepend Anaconda to your PATH 98 | (this makes the Anaconda distribution the default Python). 99 |
  8. 100 |
101 |
102 | 103 | 104 |
105 | -------------------------------------------------------------------------------- /_includes/rSetup.html: -------------------------------------------------------------------------------- 1 |
2 |

R

3 | 4 | 5 | 6 |

7 | R is a programming language 8 | that is especially powerful for data exploration, visualization, and 9 | statistical analysis. To interact with R, we use 10 | RStudio. 11 |

12 | 13 | 14 |
15 |

Windows

16 |

17 | Install R by downloading and running 18 | this .exe file 19 | from CRAN. 20 | Also, please install the 21 | RStudio IDE. 22 |

23 |
24 |
25 |

Mac OS X

26 |

27 | Install R by downloading and running 28 | this .pkg file 29 | from CRAN. 30 | Also, please install the 31 | RStudio IDE. 32 |

33 |
34 |
35 |

Linux

36 |

37 | You can download the binary files for your distribution 38 | from CRAN. Or 39 | you can use your package manager (e.g. for Debian/Ubuntu 40 | run sudo apt-get install r-base and for Fedora run 41 | sudo yum install R). Also, please install the 42 | RStudio IDE. 43 |

44 |
45 |
46 | -------------------------------------------------------------------------------- /_includes/setup.html: -------------------------------------------------------------------------------- 1 |

Overview

2 | 3 |
4 |
5 |

Editor

6 |

7 | When you're writing scripts or text, it's nice to have a text 8 | editor that is optimized for writing code, with features 9 | like automatic color-coding of key words. 10 | The default text editor on Mac OS X and Linux is usually set to Vim, 11 | which is not famous for being intuitive. 12 | if you accidentally find yourself stuck in it, 13 | try typing the escape key, 14 | followed by ':q!' (colon, lower-case 'q', exclamation mark), 15 | then hitting Return 16 | to return to the shell. (This will lose any unsaved changes to the file.) 17 |

18 |

The Bash Shell

19 |

20 | Bash is a commonly-used shell. Using a shell gives you 21 | more power to do more tasks more quickly with your 22 | computer. 23 |

24 |
25 |
26 |

R

27 |

28 | R is a programming language that specializes in statistical 29 | computing. It is a powerful tool for exploratory data analysis. To 30 | interact with R, we will 31 | use RStudio, an interactive 32 | development environment (IDE). 33 |

34 |

SQL

35 |

36 | SQL is a specialized programming language used with databases. 37 | We use a simple database manager called SQLite, 38 | either directly or through a browser plugin. 39 |

40 |

OpenRefine

41 |

42 | OpenRefine (formerly Google Refine) is a powerful tool for exploring and working with messy data. 43 | 44 |

45 |
46 |
47 | 48 |

Windows

49 | 50 |
51 |
52 |

Editor

53 |

54 | Notepad++ is a 55 | popular free code editor for Windows. 56 | Be aware that you must add its installation directory to your system path 57 | in order to launch it from the command line 58 | (or have other tools like Git launch it for you). 59 | Please ask your instructor to help you do this. 60 |

61 |

Git Bash

62 |

63 | Install Git (version control) and a Bash shell for Windows from 64 | the msysGit project's homepage. 65 | This will provide you with Bash in the Git Bash program. 66 |

67 |

Software Carpentry Installer

68 |

Other tools used in Data Carpentry have been packaged up by 69 | Software Carpentry in an installer. This installer requires an active internet connection.

70 | 81 |
82 |
83 |

R

84 |

85 | Install R by downloading and running 86 | this .exe file 87 | from CRAN. 88 | Also, please install the 89 | RStudio IDE. 90 |

91 |

SQLite

92 |

93 | Install the Firefox SQLite browser plugin described below. 94 |

95 |

OpenRefine

96 |

97 | Download the OpenRefine software described below. 98 |

99 |
100 |
101 | 102 |

Mac OS X

103 | 104 |
105 |
106 |

Bash

107 |

108 | The default shell in all versions of Mac OS X is bash, 109 | so no need to install anything. You access bash from 110 | the Terminal (found 111 | in /Applications/Utilities). You may want 112 | to keep Terminal in your dock for this workshop. 113 |

114 |

Editor

115 |

116 | We recommend 117 | Text Wrangler or 118 | Sublime Text. 119 | In a pinch, you can use nano, 120 | which should be pre-installed. 121 |

122 |
123 |
124 |

R

125 |

126 | Install R by downloading and running 127 | this .pkg file 128 | from CRAN. 129 | Also, please install the 130 | RStudio IDE. 131 |

132 |

SQLite

133 |

134 | sqlite3 comes pre-installed on Mac OS X. 135 | Also install the Firefox SQLite browser plugin described below. 136 |

137 |

OpenRefine

138 |

139 | Download the OpenRefine software described below. 140 |

141 |
142 |
143 | 144 |

Linux

145 | 146 |
147 |
148 |

Bash

149 |

150 | The default shell is usually bash, 151 | but if your machine is set up differently 152 | you can run it by opening a terminal and typing bash. 153 | There is no need to install anything. 154 |

155 |

Editor

156 |

157 | Kate is one option for Linux users. 158 | In a pinch, you can use nano, 159 | which should be pre-installed. 160 |

161 |
162 |
163 |

R

164 |

165 | You can download the binary files for your distribution 166 | from CRAN. Or 167 | you can use your package manager, e.g. for Debian/Ubuntu 168 | run apt-get install r-base. Also, please install 169 | the 170 | RStudio IDE. 171 |

172 |

SQLite

173 |

174 | sqlite3 comes pre-installed on Linux. 175 | Also install the Firefox SQLite browser plugin described below. 176 |

177 |

OpenRefine

178 |

179 | Download the OpenRefine software described below. 180 |

181 |
182 |
183 | 184 |

Miscellaneous

185 | 186 |
187 |
188 |

Firefox SQLite Plugin

189 |

190 | Instead of using sqlite3 from the command line, 191 | you may use this plugin 192 | for Firefox instead. 193 | To install it: 194 |

195 | 215 |
216 |
217 |

OpenRefine

218 |

219 | Head to the OpenRefine download page for information on how to install it. It will run through a browser, but will not need to use an internet connection, and your data will also be securely stored on your own computer. 220 |

221 |
222 |
223 | 224 | -------------------------------------------------------------------------------- /_includes/spreadsheetSetup.html: -------------------------------------------------------------------------------- 1 |
2 |

Spreadsheets

3 | 4 |

5 | Spreadsheets are useful for data entry and data organization, and 6 | some subsetting and sorting of the data as well as getting an overview of the data. To interact with spreadsheets, we can use 7 | LibreOffice, 8 | Microsoft Excel, 9 | Gnumeric, 10 | OpenOffice.org, or other programs. 11 | Commands may differ a bit between programs, but general ideas for thinking about spreadsheets is the same. 12 | 13 |

14 | For this lesson, if you don't have a spreadsheet program already, you can use LibreOffice. It's a free, open source spreadsheet program. 15 | 16 | 17 |

18 |

Windows

19 |

20 |

29 |

30 |
31 | 32 |
33 |

Mac OS X

34 |

35 |

45 |

46 | 47 | 48 |
49 | 50 |
51 |

Linux

52 |

53 |

64 |

65 | 66 | 67 | 68 |
69 | 70 |
71 | -------------------------------------------------------------------------------- /_layouts/lesson.html: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | 6 | {% if page.title %} 7 | {{ page.title }} 8 | {% endif %} 9 | {% include header.html %} 10 | 11 | 12 | 13 |
14 | {% include banner.html %} 15 | 16 |
17 |
18 | 19 | {% if page.title %} 20 |

{{page.title}}

21 | {% endif %} 22 | {{content}} 23 | 24 |
25 |
26 | 27 | {% include footer.html %} 28 |
29 | {% include javascript.html %} 30 | 31 | 32 | -------------------------------------------------------------------------------- /_layouts/slides.html: -------------------------------------------------------------------------------- 1 | --- 2 | cdn: http://files.software-carpentry.org/cdn 3 | --- 4 | 5 | 6 | 7 | 8 | {{page.title}} 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | {{content}} 26 |
27 |
28 | 29 | 30 | 31 | 32 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /_layouts/workshop.html: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | 6 | {% if page.title %} 7 | {{ page.title }} 8 | {% else %} 9 | {{ page.venue }} 10 | {% endif %} 11 | {% include header.html %} 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | {% include banner.html %} 21 | 22 |
23 |
24 |
25 |

A Data Carpentry Workshop

26 |

Organized by ...

27 |

{{page.venue}}

28 | {% if page.address %}{{page.address}}
{% endif %} 29 | {{page.humandate}} 30 | {% if page.humantime %}
{{page.humantime}}{% endif %} 31 |
32 |
33 |
34 | 35 | {{content}} 36 | 37 | {% include footer.html %} 38 |
39 |
40 | {% include javascript.html %} 41 | 42 | 43 | -------------------------------------------------------------------------------- /_site.yml: -------------------------------------------------------------------------------- 1 | navbar: 2 | left: 3 | - text: "Home" 4 | href: index.html 5 | - text: "Before we start" 6 | href: 00-before-we-start.html 7 | - text: "Intro to R" 8 | href: 01-intro-to-R.html 9 | - text: "Starting with data" 10 | href: 02-starting-with-data.html 11 | - text: "Data frames" 12 | href: 03-data-frames.html 13 | - text: "The dplyr package" 14 | href: 04-dplyr.html 15 | - text: "Data visualization" 16 | href: 05-data-visualization.html 17 | right: 18 | - icon: fa-github fa-lg 19 | href: https://github.com/data-lessons/R-genomics 20 | output_dir: "." 21 | exclude: ["CONTRIBUT*.md","index.md","README.md","*.db"] 22 | include: ["*.Rmd","LICENSE.md"] 23 | output: 24 | html_document: 25 | highlight: pygments 26 | toc: true 27 | toc_float: 28 | collapsed: false 29 | include: 30 | after_body: footer.html 31 | css: style.css 32 | -------------------------------------------------------------------------------- /css/bootstrap/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/css/bootstrap/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /css/bootstrap/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/css/bootstrap/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /css/lesson.css: -------------------------------------------------------------------------------- 1 | /* Comments in code. */ 2 | .comment { 3 | color: purple; 4 | } 5 | 6 | /* Highlighted changes in code. */ 7 | .highlight { 8 | background-color: mistyrose; 9 | } 10 | 11 | /* Manual input. */ 12 | .in { 13 | color: darkgreen; 14 | margin-left: 20px; 15 | } 16 | 17 | div.in:before { 18 | content: ""; 19 | display: block; 20 | width: 0; 21 | height: 0; 22 | border-top: 12px solid transparent; 23 | border-bottom: 12px solid transparent; 24 | border-left: 12px solid #727272; 25 | position: relative; 26 | left:-16px; 27 | top:10px; 28 | float:left; 29 | } 30 | 31 | /* Program output. */ 32 | .out { 33 | color: darkblue; 34 | margin-left: 20px; 35 | } 36 | 37 | div.out:before { 38 | content: ""; 39 | display: block; 40 | width: 0; 41 | height: 0; 42 | border-top: 12px solid transparent; 43 | border-bottom: 12px solid transparent; 44 | border-right: 12px solid #727272; 45 | position: relative; 46 | left:-16px; 47 | top:10px; 48 | float:left; 49 | } 50 | 51 | /* Error output. */ 52 | .err { 53 | color: darkred; 54 | font-style: italic; 55 | font-weight: bold; 56 | } 57 | 58 | /* Explanatory call-out boxes. */ 59 | div.box { 60 | background-color: lightgray; 61 | } 62 | 63 | /* Challenge questions. */ 64 | div.challenges {} 65 | 66 | /* Key points in summary. */ 67 | div.keypoints {} 68 | 69 | /* Main lesson. */ 70 | div.lesson {} 71 | 72 | /* Learning objectives. */ 73 | div.objectives {} 74 | 75 | /* Continuation paragraph. */ 76 | p.continue {} 77 | -------------------------------------------------------------------------------- /css/pygments/friendly.css: -------------------------------------------------------------------------------- 1 | .hll { background-color: #ffffcc } 2 | .c { color: #60a0b0; font-style: italic } /* Comment */ 3 | .err { border: 1px solid #FF0000 } /* Error */ 4 | .k { color: #007020; font-weight: bold } /* Keyword */ 5 | .o { color: #666666 } /* Operator */ 6 | .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */ 7 | .cp { color: #007020 } /* Comment.Preproc */ 8 | .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */ 9 | .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */ 10 | .gd { color: #A00000 } /* Generic.Deleted */ 11 | .ge { font-style: italic } /* Generic.Emph */ 12 | .gr { color: #FF0000 } /* Generic.Error */ 13 | .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 14 | .gi { color: #00A000 } /* Generic.Inserted */ 15 | .go { color: #888888 } /* Generic.Output */ 16 | .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ 17 | .gs { font-weight: bold } /* Generic.Strong */ 18 | .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 19 | .gt { color: #0044DD } /* Generic.Traceback */ 20 | .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ 21 | .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ 22 | .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ 23 | .kp { color: #007020 } /* Keyword.Pseudo */ 24 | .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ 25 | .kt { color: #902000 } /* Keyword.Type */ 26 | .m { color: #40a070 } /* Literal.Number */ 27 | .s { color: #4070a0 } /* Literal.String */ 28 | .na { color: #4070a0 } /* Name.Attribute */ 29 | .nb { color: #007020 } /* Name.Builtin */ 30 | .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ 31 | .no { color: #60add5 } /* Name.Constant */ 32 | .nd { color: #555555; font-weight: bold } /* Name.Decorator */ 33 | .ni { color: #d55537; font-weight: bold } /* Name.Entity */ 34 | .ne { color: #007020 } /* Name.Exception */ 35 | .nf { color: #06287e } /* Name.Function */ 36 | .nl { color: #002070; font-weight: bold } /* Name.Label */ 37 | .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ 38 | .nt { color: #062873; font-weight: bold } /* Name.Tag */ 39 | .nv { color: #bb60d5 } /* Name.Variable */ 40 | .ow { color: #007020; font-weight: bold } /* Operator.Word */ 41 | .w { color: #bbbbbb } /* Text.Whitespace */ 42 | .mf { color: #40a070 } /* Literal.Number.Float */ 43 | .mh { color: #40a070 } /* Literal.Number.Hex */ 44 | .mi { color: #40a070 } /* Literal.Number.Integer */ 45 | .mo { color: #40a070 } /* Literal.Number.Oct */ 46 | .sb { color: #4070a0 } /* Literal.String.Backtick */ 47 | .sc { color: #4070a0 } /* Literal.String.Char */ 48 | .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ 49 | .s2 { color: #4070a0 } /* Literal.String.Double */ 50 | .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ 51 | .sh { color: #4070a0 } /* Literal.String.Heredoc */ 52 | .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ 53 | .sx { color: #c65d09 } /* Literal.String.Other */ 54 | .sr { color: #235388 } /* Literal.String.Regex */ 55 | .s1 { color: #4070a0 } /* Literal.String.Single */ 56 | .ss { color: #517918 } /* Literal.String.Symbol */ 57 | .bp { color: #007020 } /* Name.Builtin.Pseudo */ 58 | .vc { color: #bb60d5 } /* Name.Variable.Class */ 59 | .vg { color: #bb60d5 } /* Name.Variable.Global */ 60 | .vi { color: #bb60d5 } /* Name.Variable.Instance */ 61 | .il { color: #40a070 } /* Literal.Number.Integer.Long */ 62 | -------------------------------------------------------------------------------- /css/swc-bootstrap.css: -------------------------------------------------------------------------------- 1 | /* Customizations to Bootstrap's default styles */ 2 | 3 | blockquote p { 4 | font-size: inherit; 5 | font-weight: inherit; 6 | line-height: inherit; 7 | } 8 | 9 | /* readability: darken the alert colour for contrast with background */ 10 | .alert { 11 | color: rgb(0,0,0); 12 | } 13 | 14 | /* Container for page contents. */ 15 | .container { 16 | background-color: white; 17 | } 18 | 19 | .hero-unit { 20 | padding: 20px; 21 | } 22 | 23 | .navbar .container { 24 | background-color: inherit; 25 | } 26 | 27 | .navbar-inner { 28 | min-height: 40px; 29 | padding-right: 20px; 30 | padding-left: 20px; 31 | background-color: #F4F4F4; 32 | background-image: none; 33 | border: 1px solid #d4d4d4; 34 | -webkit-border-radius: 0; 35 | -moz-border-radius: 0; 36 | border-radius: 0; 37 | } 38 | 39 | code { 40 | color: #333333; 41 | } 42 | 43 | .navbar-inverse .navbar-inner { 44 | background-color: #20267D; 45 | background-image: none; 46 | border-color: #20267D; 47 | } 48 | 49 | .navbar-inverse .nav .active > a, 50 | .navbar-inverse .nav .active > a:hover, 51 | .navbar-inverse .nav .active > a:focus { 52 | color: #ffffff; 53 | background-color: #20267D; 54 | } 55 | 56 | .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, 57 | .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, 58 | .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { 59 | color: #ffffff; 60 | background-color: #20267D; 61 | } 62 | 63 | .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret { 64 | border-top-color: #999999; 65 | border-bottom-color: #999999; 66 | } 67 | 68 | .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret { 69 | border-top-color: #ffffff; 70 | border-bottom-color: #ffffff; 71 | } 72 | -------------------------------------------------------------------------------- /css/swc.css: -------------------------------------------------------------------------------- 1 | /* Headings */ 2 | h1, h2, h3, h4, h5, h6 { 3 | color: rgb(03,03,03); 4 | } 5 | 6 | h1, h2 { 7 | margin-top: 40px; 8 | margin-bottom: 10px; 9 | } 10 | 11 | h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { 12 | color: inherit; 13 | } 14 | 15 | /* Chapter titles. */ 16 | div.chapter h2 { 17 | text-align: center; 18 | font-style: italic; 19 | } 20 | 21 | /* Objectives and key points */ 22 | .objectives, .keypoints { 23 | background-color: azure; 24 | } 25 | 26 | /* Things to fix. */ 27 | .fixme { 28 | text-decoration: underline; 29 | color: darkred; 30 | background-color: lightgray; 31 | } 32 | 33 | /* Putting shadows around things. */ 34 | .shadow { 35 | -moz-box-shadow: 0 0 30px 5px #999; 36 | -webkit-box-shadow: 0 0 30px 5px #999; 37 | box-shadow: 0 0 30px 5px #999; 38 | } 39 | 40 | /* Things to understand (lead-in to sections in book). */ 41 | .understand { 42 | background-color: lightyellow; 43 | } 44 | 45 | /* Block quotations. */ 46 | blockquote { 47 | margin: 1em; 48 | padding: 1em 1em .5em 1em; 49 | width: 90%; 50 | } 51 | 52 | /* Citation for testimonial quote. */ 53 | blockquote.testimonial cite { 54 | font-style: italic; 55 | } 56 | 57 | /* Main body of pages. */ 58 | body { 59 | background: #BEC3C6; 60 | margin: 20px 0; 61 | font-family: "Open Sans", Helvetica, Arial, sans-serif; 62 | color: rgb(03, 03, 03); 63 | } 64 | 65 | /* Styling for editorial stylesheet */ 66 | body.stylesheet { 67 | background: #ffffff; 68 | width: 60em; 69 | margin: 20 auto; 70 | } 71 | 72 | /* Top banner of every page. */ 73 | div.banner { 74 | background-color: #FFFFFF; 75 | width: 100%; 76 | height: 120px; 77 | margin: 0px; 78 | padding: 0; 79 | border-bottom: 1px solid #A6A6A6; 80 | } 81 | 82 | /* Padding around image in top banner. */ 83 | div.banner a img { 84 | padding: 20px 25px; 85 | } 86 | 87 | /* Explanatory call-out boxes. */ 88 | div.box { 89 | background-color: mistyrose; 90 | display: block; 91 | margin-left: auto; 92 | margin-right: auto; 93 | padding-top: 1px; 94 | padding-bottom: 1px; 95 | padding-left: 10px; 96 | padding-right: 10px; 97 | outline-color: gray; 98 | outline-width: 1px; 99 | outline-style: solid; 100 | } 101 | @media (max-width: 700px) { 102 | div.box { 103 | width: 80%; 104 | } 105 | } 106 | @media (min-width: 700px) { 107 | div.box { 108 | width: 54em; 109 | max-width: 80%; 110 | } 111 | } 112 | 113 | /* Level 2 headings inside pages. */ 114 | div.content div h3 { 115 | border-bottom: 1px solid #CCCCCC; 116 | display: block; 117 | font-family: Verdana,"BitStream vera Sans"; 118 | margin-top: 10px; 119 | padding: 0 5px 3px; 120 | } 121 | 122 | /* PDF and slide files referenced from lectures. */ 123 | div.files { 124 | padding: 10px; 125 | } 126 | 127 | /* Footer of every page. */ 128 | div.footer { 129 | clear: both; 130 | background: url("/img/main_shadow.png") repeat-x scroll center top #FFFFFF; 131 | padding: 4px 10px 7px 10px; 132 | border-top: 1px solid #A6A6A6; 133 | text-align: right; 134 | } 135 | 136 | .swc-blue-bg { 137 | background-color: #20267D; 138 | } 139 | 140 | /* Main menu at the top of every page. */ 141 | div.mainmenu { 142 | clear: both; 143 | background-color: #F4F4F4; 144 | margin: 0px; 145 | padding: 3px 0px 3px 25px; 146 | border-bottom: 1px solid #A6A6A6; 147 | height:30px 148 | } 149 | 150 | #menubar { 151 | float:left; 152 | margin-top:4px; 153 | } 154 | 155 | #searchbar { 156 | float:right; 157 | margin-right:20px; 158 | } 159 | 160 | /* Narration for audio-only lectures. */ 161 | div.narration { 162 | text-align: center; 163 | font-size: 2em; 164 | } 165 | 166 | /* Table of contents. */ 167 | div.toc { 168 | /* No special styling yet. */ 169 | } 170 | 171 | .transcript { 172 | display: table; 173 | } 174 | 175 | .transcript .media img { 176 | border: 1px solid grey; 177 | } 178 | 179 | 180 | /* Title styling */ 181 | h1.title { 182 | margin:40px 0px; 183 | border-bottom:1px solid #515151; 184 | } 185 | 186 | /* YouTube video embed. */ 187 | div.youtube { 188 | text-align: center; 189 | padding: 10px; 190 | } 191 | 192 | /* Glossary description lists. */ 193 | dl.gloss { 194 | /* Empty for now. */ 195 | } 196 | 197 | /* FIXME: shouldn't be using iframe's directly (EventBrite and YouTube should be via macro expansion). */ 198 | iframe.youtube_player { 199 | border : 0; 200 | text-align : center; 201 | width : 640px; 202 | height : 500px; 203 | } 204 | 205 | /* Amy Brown's logo in book/stylesheet.html. */ 206 | img.logoARB { 207 | float: right; 208 | } 209 | 210 | /* Person's name in team.html. */ 211 | span.person { 212 | font-weight: bold; 213 | font-style: italic; 214 | } 215 | 216 | /* Bibliography book covers. */ 217 | img.book-cover { 218 | width: 80px; 219 | } 220 | 221 | /* Blog calendar table in blog/index.html. */ 222 | table.blogcalendar th { 223 | text-align : right; 224 | font-weight : bold; 225 | } 226 | 227 | /* See above. */ 228 | table.blogcalendar th.left { 229 | text-align : left; 230 | } 231 | 232 | /* See above. */ 233 | table.blogcalendar tr td { 234 | text-align : right; 235 | } 236 | 237 | /* Blog index tables in blog/index.html. */ 238 | table.blogindex td.date { 239 | text-align: left ; 240 | width:10em; 241 | } 242 | 243 | /* Tables used for displaying choices in challenges. */ 244 | table.choices tr td { 245 | vertical-align : top; 246 | } 247 | 248 | /* Database tables do _not_ have double borders */ 249 | table.outlined { 250 | border-collapse: collapse; 251 | } 252 | 253 | /* Container for content in the bootcamp index page */ 254 | div.bootcamps { 255 | text-align: center; 256 | } 257 | 258 | /* Link items (to bootcamp pages) in the bootcamps tables */ 259 | table.bootcamps td.link { 260 | width: 50%; 261 | text-align: left; 262 | } 263 | 264 | /* Spacer items (i.e. ellipsis) on the bootcamps tables */ 265 | table.bootcamps td.spacer { 266 | max-width: 100%; 267 | text-align: center; 268 | } 269 | 270 | /* Date columns on the bootcamps tables */ 271 | table.bootcamps td.date { 272 | width: 50%; 273 | text-align: right; 274 | } 275 | 276 | /* Badge modal dialog */ 277 | #assertion-modal { 278 | width:700px; 279 | margin-left:-350px; 280 | } 281 | #assertion-modal iframe { 282 | background-color: transparent; 283 | border: 0px none transparent; 284 | padding: 0px; 285 | width: 100%; 286 | height: 20em; 287 | } 288 | 289 | #assertion-model img.badge { 290 | position: absolute; 291 | right: 15px; 292 | bottom: 35px; 293 | opacity: 0.5; 294 | } 295 | 296 | /* list with checkbox as bullet */ 297 | ul.checklist { 298 | list-style-image: url('/img/checkbox.png'); 299 | } 300 | -------------------------------------------------------------------------------- /data/Ecoli_genomes_with_SNPs_per_locus_tag.txt: -------------------------------------------------------------------------------- 1 | "RefGenomeID" "B21_00283" "B21_00712" "B21_01479" "B21_02113" "B21_02912" "B21_03468" "B21_03483" "CE10_0249" "CE10_1018" "CE10_2487" "CE10_4227" "CE10_4287" "CE10_4923" "EC042_0151" "EC042_0472" "EC042_0610" "EC042_0615" "EC042_0641" "EC042_0670" "EC042_0679" "EC042_0714" "EC042_0728" "EC042_0815" "EC042_0900" "EC042_0930" "EC042_0962" "EC042_1072" "EC042_1118" "EC042_1161" "EC042_1311" "EC042_1455" "EC042_1467" "EC042_1488" "EC042_1679" "EC042_1886" "EC042_1931" "EC042_1941" "EC042_2242" "EC042_2277" "EC042_2315" "EC042_2341" "EC042_2409" "EC042_2471" "EC042_2539" "EC042_2556" "EC042_2704" "EC042_2856" "EC042_2989" "EC042_3032" "EC042_3134" "EC042_3194" "EC042_3536" "EC042_3696" "EC042_3722" "EC042_3771" "EC042_3773" "EC042_3819" "EC042_3928" "EC042_4063" "EC042_4324" "EC042_4427" "EC042_4596" "EC042_4607" "EC042_4714" "EC042_4738" "EC042_4780" "EC042_4810" "EC042_4826" "EC042_4844" "Ec53638_0242" "Ec53638_0275" "Ec53638_0747" "Ec53638_1350" "Ec53638_1710" "Ec53638_1874" "Ec53638_2438" "Ec53638_2918" "Ec53638_3033" "Ec53638_3450" "Ec53638_3691" "Ec53638_3739" "Ec53638_3926" "Ec53638_4078" "Ec53638_4096" "Ec53638_4367" "Ec53638_4369" "Ec53638_4379" "Ec53638_4683" "Ec53638_4962" "ECABU_c01750" "ECABU_c09480" "ECABU_c11320" "ECABU_c12400" "ECABU_c13590" "ECABU_c13630" "ECABU_c22930" "ECABU_c39800" "ECABU_c43910" "EcDH1_2274" "EcDH1_2349" "EcDH1_3569" "ECNA114_08481" "ECNA114_0852" "ECNA114_0866" "ECNA114_0869" "ECNA114_0876" "ECNA114_0920" "ECNA114_3501" "ECO55CA74_01345" "ECOK1_2565" "ECOK1_2568" "ECOK1_2573" "ECOK1_2595" "ECOK1_2677" "EKO11_0226" "EKO11_0853" "EKO11_1031" "EKO11_1751" "EKO11_3062" "ETEC_1974" "ETEC_1977" "ETEC_1978" "ETEC_1980" "ETEC_1982" "ETEC_1985" "ETEC_1989" "ETEC_1991" "ETEC_1992" "ETEC_1993" "ETEC_1994" "ETEC_1997" "ETEC_1998" "ETEC_2000" "ETEC_2001" "ETEC_2002" "ETEC_2005" "ETEC_2011" "ETEC_2012" "ETEC_2014" "ETEC_2015" "ETEC_2018" "ETEC_2473" "i02_1293" "i02_1315" "LF82_099" "locus_tag.location=3592993..3952918" "locus_tag.location=415231..415309" "NRG857_04530" "NRG857_04640" "O3O_01590" "O3O_03115" "O3O_05180" "O3O_05655" "O3O_06555" "O3O_07785" "O3O_09145" "O3O_09530" "O3O_09635" "O3O_09670" "O3O_09685" "O3O_09710" "O3O_09715" "O3O_09740" "O3O_09745" "O3O_09750" "O3O_09755" "O3O_09760" "O3O_09775" "O3O_09800" "O3O_09840" "O3O_09880" "O3O_09885" "O3O_12965" "O3O_12970" "O3O_12975" "O3O_12980" "O3O_13065" "O3O_13160" "O3O_13170" "O3O_13175" "O3O_13180" "O3O_13185" "O3O_13190" "O3O_13240" "O3O_13325" "O3O_13970" "O3O_13975" "O3O_13985" "O3O_13990" "O3O_14000" "O3O_14010" "O3O_14015" "O3O_14030" "O3O_14035" "O3O_14050" "O3O_14080" "O3O_14085" "O3O_14135" "O3O_14145" "O3O_14150" "O3O_14155" "O3O_14165" "O3O_14180" "O3O_14195" "O3O_14205" "O3O_14595" "O3O_17890" "O3O_18175" "O3O_19925" "O3O_24015" "O3O_25120" "O3O_25165" "O3O_25355" "O3O_25360" "P12B_c0469" "product.location=4565053..4565232" "UMNK88_3723" 2 | "Eco042" 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 | "Eco53638" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 5 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 4 | "EcoABU83972" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 4 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | "EcoBL21DE3" 1 1 2 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | "EcoCloneDi2" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | "EcoDH1" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | "EcoETEC_H10407" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 1 1 1 1 1 2 1 1 1 1 2 1 2 1 1 3 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | "EcoIHE3034" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | "EcoKO11FL" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | "EcoLF82" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | "EcoNA114" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | "EcoO104H4_209EL-2071" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 1 1 1 3 1 1 1 4 8 6 12 10 1 3 1 1 1 6 3 5 1 2 1 1 3 1 2 1 5 1 5 2 5 2 1 2 2 3 5 3 1 1 1 5 3 4 2 1 2 1 1 1 1 1 1 1 6 1 1 0 0 0 14 | "EcoO55H7_RM12579" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | "EcoO7K1_CE10" 0 0 0 0 0 0 0 1 1 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 | "EcoO83H1_NRG857C" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 | "EcoP12b" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 18 | "EcoUMNK88" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 19 | "Shifl_2a_301" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | -------------------------------------------------------------------------------- /data/Ecoli_metadata.csv: -------------------------------------------------------------------------------- 1 | sample,generation,clade,strain,cit,run,genome_size 2 | REL606,0,NA,REL606,unknown,,4.62 3 | REL1166A,2000,unknown,REL606,unknown,SRR098028,4.63 4 | ZDB409,5000,unknown,REL606,unknown,SRR098281,4.6 5 | ZDB429,10000,UC,REL606,unknown,SRR098282,4.59 6 | ZDB446,15000,UC,REL606,unknown,SRR098283,4.66 7 | ZDB458,20000,"(C1,C2)",REL606,unknown,SRR098284,4.63 8 | ZDB464*,20000,"(C1,C2)",REL606,unknown,SRR098285,4.62 9 | ZDB467,20000,"(C1,C2)",REL606,unknown,SRR098286,4.61 10 | ZDB477,25000,C1,REL606,unknown,SRR098287,4.65 11 | ZDB483,25000,C3,REL606,unknown,SRR098288,4.59 12 | ZDB16,30000,C1,REL606,unknown,SRR098031,4.61 13 | ZDB357,30000,C2,REL606,unknown,SRR098280,4.62 14 | ZDB199*,31500,C1,REL606,minus,SRR098044,4.62 15 | ZDB200,31500,C2,REL606,minus,SRR098279,4.63 16 | ZDB564,31500,Cit+,REL606,plus,SRR098289,4.74 17 | ZDB30*,32000,C3,REL606,minus,SRR098032,4.61 18 | ZDB172,32000,Cit+,REL606,plus,SRR098042,4.77 19 | ZDB158,32500,C2,REL606,minus,SRR098041,4.63 20 | ZDB143,32500,Cit+,REL606,plus,SRR098040,4.79 21 | CZB199,33000,C1,REL606,minus,SRR098027,4.59 22 | CZB152,33000,Cit+,REL606,plus,SRR097977,4.8 23 | CZB154,33000,Cit+,REL606,plus,SRR098026,4.76 24 | ZDB83,34000,Cit+,REL606,minus,SRR098034,4.6 25 | ZDB87,34000,C2,REL606,plus,SRR098035,4.75 26 | ZDB96,36000,Cit+,REL606,plus,SRR098036,4.74 27 | ZDB99,36000,C1,REL606,minus,SRR098037,4.61 28 | ZDB107,38000,Cit+,REL606,plus,SRR098038,4.79 29 | ZDB111,38000,C2,REL606,minus,SRR098039,4.62 30 | REL10979,40000,Cit+,REL606,plus,SRR098029,4.78 31 | REL10988,40000,C2,REL606,minus,SRR098030,4.62 -------------------------------------------------------------------------------- /data/Ecoli_metadata.txt: -------------------------------------------------------------------------------- 1 | Sample_Name_s clade generation cit amplification strain_s Run_s CZB152 Citplus 33000 yes yes REL606 SRR097977 CZB154 Citplus 33000 yes yes REL606 SRR098026 CZB199 C1 33000 no no REL606 SRR098027 REL1166A 2000 REL606 SRR098028 ZDB409 5000 REL606 SRR098281 ZDB446 UC 15000 no no REL606 SRR098283 -------------------------------------------------------------------------------- /footer.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |

Data Carpentry, 4 | 2017-2018. License. Contributing.
5 | Questions? Feedback? 6 | Please file 7 | an issue on GitHub.
On 8 | Twitter: @datacarpentry

9 | -------------------------------------------------------------------------------- /img/DC-logo-vision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/DC-logo-vision.png -------------------------------------------------------------------------------- /img/DC1_logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/DC1_logo_small.png -------------------------------------------------------------------------------- /img/DataONE_LOGO.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/DataONE_LOGO.jpg -------------------------------------------------------------------------------- /img/R-ecology-correct-order-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/R-ecology-correct-order-1.png -------------------------------------------------------------------------------- /img/R-ecology-wrong-order-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/R-ecology-wrong-order-1.png -------------------------------------------------------------------------------- /img/creative-commons-attribution-license.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/creative-commons-attribution-license.png -------------------------------------------------------------------------------- /img/r-lesson-boxplot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-boxplot-1.png -------------------------------------------------------------------------------- /img/r-lesson-correct-order-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-correct-order-1.png -------------------------------------------------------------------------------- /img/r-lesson-scatter-plot1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-scatter-plot1-1.png -------------------------------------------------------------------------------- /img/r-lesson-unnamed-chunk-10-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-unnamed-chunk-10-1.png -------------------------------------------------------------------------------- /img/r-lesson-unnamed-chunk-11-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-unnamed-chunk-11-1.png -------------------------------------------------------------------------------- /img/r-lesson-unnamed-chunk-13-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-unnamed-chunk-13-1.png -------------------------------------------------------------------------------- /img/r-lesson-unnamed-chunk-14-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-unnamed-chunk-14-1.png -------------------------------------------------------------------------------- /img/r-lesson-unnamed-chunk-3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-unnamed-chunk-3-1.png -------------------------------------------------------------------------------- /img/r-lesson-unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /img/r-lesson-unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /img/r-lesson-unnamed-chunk-6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-unnamed-chunk-6-1.png -------------------------------------------------------------------------------- /img/r-lesson-wrong-order-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r-lesson-wrong-order-1.png -------------------------------------------------------------------------------- /img/r_starting_example_script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r_starting_example_script.png -------------------------------------------------------------------------------- /img/r_starting_how_it_should_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/img/r_starting_how_it_should_like.png -------------------------------------------------------------------------------- /index.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Data Analysis and Visualization in R *alpha*" 3 | author: Data Carpentry contributors 4 | --- 5 | 6 |

7 | 8 |
9 | ![](./img/DC-logo-vision.png) 10 |
11 | 12 |

13 | 14 | 15 | Data Carpentry's aim is to teach researchers basic concepts, skills, 16 | and tools for working with data so that they can get more done in less 17 | time, and with less pain. The lessons below were designed for those interested 18 | in working with genomics data in R. 19 | 20 | This is an introduction to R designed for participants with no programming 21 | experience. These lessons can be taught in a day (~ 6 hours). They start with 22 | some basic information about R syntax, the RStudio interface, and move through 23 | how to import CSV files, the structure of data frames, how to deal with factors, 24 | how to add/remove rows and columns, how to calculate summary statistics from a 25 | data frame, and a brief introduction to plotting. The last lesson demonstrates 26 | how to work with databases directly from R. 27 | 28 | 29 | ## Chapters 30 | 31 | 1. [Before we start](00-before-we-start.html) 32 | 2. [Introduction to R](01-intro-to-R.html) 33 | 3. [Starting with data](02-starting-with-data.html) 34 | 4. [Data frames](03-data-frames.html) 35 | 5. [The dplyr package](04-dplyr.html) 36 | 6. [Data visualization](05-data-visualization.html) 37 | 38 | 39 | ## Requirements 40 | 41 | Data Carpentry's teaching is hands-on, so participants are encouraged to use 42 | their own computers to ensure the proper setup of tools for an efficient 43 | workflow. *These lessons assume no prior knowledge of the skills or tools*, but 44 | working through this lesson requires working copies of the software described 45 | below. To most effectively use these materials, please make sure to download 46 | the data and install everything *before* working through this lesson. 47 | 48 | ### Data 49 | 50 | Data for the lesson is available [here](https://raw.githubusercontent.com/datacarpentry/R-genomics/gh-pages/data/Ecoli_metadata.csv). 51 | 52 | We will download this file directly from R during the lessons when we need 53 | it. 54 | 55 | ### Setup instructions 56 | 57 | **R** and **RStudio** are separate downloads and installations. R is the 58 | underlying statistical computing environment, but using R alone is no 59 | fun. RStudio is a graphical integrated development environment (IDE) that makes 60 | using R much easier and more interactive. You need to install R before you 61 | install RStudio. After installing both programs, you will need to install the 62 | **`tidyverse`** package from within RStudio. In the sections below are the instructions 63 | for installing R and R Studio on your operating system, as well as instructions for 64 | then installing **`tidyverse`** and **`RSQLite`**. 65 | 66 | #### Windows 67 | 68 | ##### If you already have R and RStudio installed 69 | 70 | * Open RStudio, and click on "Help" > "Check for updates". If a new version is 71 | available, quit RStudio, and download the latest version for RStudio. 72 | * To check which version of R you are using, start RStudio and the first thing 73 | that appears in the console indicates the version of R you are 74 | running. Alternatively, you can type `sessionInfo()`, which will also display 75 | which version of R you are running. Go on 76 | the [CRAN website](https://cran.r-project.org/bin/windows/base/) and check 77 | whether a more recent version is available. If so, please download and install 78 | it. You can [check here](https://cran.r-project.org/bin/windows/base/rw-FAQ.html#How-do-I-UNinstall-R_003f) for 79 | more information on how to remove old versions from your system if you wish to do so. 80 | 81 | ##### If you don't have R and RStudio installed 82 | 83 | * Download R from 84 | the [CRAN website](http://cran.r-project.org/bin/windows/base/release.htm). 85 | * Run the `.exe` file that was just downloaded 86 | * Go to the [RStudio download page](https://www.rstudio.com/products/rstudio/download/#download) 87 | * Under *Installers* select **RStudio x.yy.zzz - Windows 88 | XP/Vista/7/8** (where x, y, and z represent version numbers) 89 | * Double click the file to install it 90 | * Once it's installed, open RStudio to make sure it works and you don't get any 91 | error messages. 92 | 93 | 94 | #### macOS 95 | 96 | ##### If you already have R and RStudio installed 97 | 98 | * Open RStudio, and click on "Help" > "Check for updates". If a new version is 99 | available, quit RStudio, and download the latest version for RStudio. 100 | * To check the version of R you are using, start RStudio and the first thing 101 | that appears on the terminal indicates the version of R you are running. Alternatively, you can type `sessionInfo()`, which will also display which version of R you are running. Go on 102 | the [CRAN website](https://cran.r-project.org/bin/macosx/) and check 103 | whether a more recent version is available. If so, please download and install 104 | it. 105 | 106 | ##### If you don't have R and RStudio installed 107 | 108 | * Download R from 109 | the [CRAN website](http://cran.r-project.org/bin/macosx). 110 | * Select the `.pkg` file for the latest R version 111 | * Double click on the downloaded file to install R 112 | * It is also a good idea to install [XQuartz](https://www.xquartz.org/) (needed 113 | by some packages) 114 | * Go to the [RStudio download page](https://www.rstudio.com/products/rstudio/download/#download) 115 | * Under *Installers* select **RStudio x.yy.zzz - Mac OS X 10.6+ (64-bit)** 116 | (where x, y, and z represent version numbers) 117 | * Double click the file to install RStudio 118 | * Once it's installed, open RStudio to make sure it works and you don't get any 119 | error messages. 120 | 121 | 122 | #### Linux 123 | 124 | * Follow the instructions for your distribution 125 | from [CRAN](https://cloud.r-project.org/bin/linux), they provide information 126 | to get the most recent version of R for common distributions. For most 127 | distributions, you could use your package manager (e.g., for Debian/Ubuntu run 128 | `sudo apt-get install r-base`, and for Fedora `sudo yum install R`), but we 129 | don't recommend this approach as the versions provided by this are 130 | usually out of date. In any case, make sure you have at least R 3.3.1. 131 | * Go to the 132 | [RStudio download page](https://www.rstudio.com/products/rstudio/download/#download) 133 | * Under *Installers* select the version that matches your distribution, and 134 | install it with your preferred method (e.g., with Debian/Ubuntu `sudo dpkg -i 135 | rstudio-x.yy.zzz-amd64.deb` at the terminal). 136 | * Once it's installed, open RStudio to make sure it works and you don't get any 137 | error messages. 138 | 139 | 140 | #### For everyone 141 | 142 | **After installing R and RStudio, you need to install the `tidyverse` and 143 | `RSQLite` packages.** 144 | 145 | * After starting RStudio, at the console type: 146 | `install.packages(c("tidyverse", "RSQLite"))` 147 | 148 | ## Contributors 149 | 150 | The list of contributors to this lesson is available [here](http://datacarpentry.org/R-ecology-lesson/CITATION). 151 | -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/Lato.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/Lato.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/LatoBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/LatoBold.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/LatoItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/LatoItalic.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/NewsCycle.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/NewsCycle.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/NewsCycleBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/NewsCycleBold.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/OpenSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/OpenSans.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/OpenSansBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/OpenSansBold.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/OpenSansBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/OpenSansBoldItalic.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/OpenSansItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/OpenSansItalic.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/OpenSansLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/OpenSansLight.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/OpenSansLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/OpenSansLightItalic.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/Raleway.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/Raleway.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/RalewayBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/RalewayBold.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/Roboto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/Roboto.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/RobotoBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/RobotoBold.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/RobotoLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/RobotoLight.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/RobotoMedium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/RobotoMedium.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/SourceSansPro.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/SourceSansPro.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/SourceSansProBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProBold.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/SourceSansProItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProItalic.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/SourceSansProLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProLight.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/css/fonts/Ubuntu.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/css/fonts/Ubuntu.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/shim/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | // Only run this code in IE 8 5 | if (!!window.navigator.userAgent.match("MSIE 8")) { 6 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); 7 | }; 8 | -------------------------------------------------------------------------------- /site_libs/bootstrap-3.3.5/shim/respond.min.js: -------------------------------------------------------------------------------- 1 | /*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl 2 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT 3 | * */ 4 | 5 | // Only run this code in IE 8 6 | if (!!window.navigator.userAgent.match("MSIE 8")) { 7 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b li { 207 | position: relative; } 208 | 209 | .fa-li { 210 | left: -2em; 211 | position: absolute; 212 | text-align: center; 213 | width: 2em; 214 | line-height: inherit; } 215 | 216 | .fa-border { 217 | border: solid 0.08em #eee; 218 | border-radius: .1em; 219 | padding: .2em .25em .15em; } 220 | 221 | .fa-pull-left { 222 | float: left; } 223 | 224 | .fa-pull-right { 225 | float: right; } 226 | 227 | .fa.fa-pull-left, 228 | .fas.fa-pull-left, 229 | .far.fa-pull-left, 230 | .fal.fa-pull-left, 231 | .fab.fa-pull-left { 232 | margin-right: .3em; } 233 | 234 | .fa.fa-pull-right, 235 | .fas.fa-pull-right, 236 | .far.fa-pull-right, 237 | .fal.fa-pull-right, 238 | .fab.fa-pull-right { 239 | margin-left: .3em; } 240 | 241 | .fa-spin { 242 | -webkit-animation: fa-spin 2s infinite linear; 243 | animation: fa-spin 2s infinite linear; } 244 | 245 | .fa-pulse { 246 | -webkit-animation: fa-spin 1s infinite steps(8); 247 | animation: fa-spin 1s infinite steps(8); } 248 | 249 | @-webkit-keyframes fa-spin { 250 | 0% { 251 | -webkit-transform: rotate(0deg); 252 | transform: rotate(0deg); } 253 | 100% { 254 | -webkit-transform: rotate(360deg); 255 | transform: rotate(360deg); } } 256 | 257 | @keyframes fa-spin { 258 | 0% { 259 | -webkit-transform: rotate(0deg); 260 | transform: rotate(0deg); } 261 | 100% { 262 | -webkit-transform: rotate(360deg); 263 | transform: rotate(360deg); } } 264 | 265 | .fa-rotate-90 { 266 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; 267 | -webkit-transform: rotate(90deg); 268 | transform: rotate(90deg); } 269 | 270 | .fa-rotate-180 { 271 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; 272 | -webkit-transform: rotate(180deg); 273 | transform: rotate(180deg); } 274 | 275 | .fa-rotate-270 { 276 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; 277 | -webkit-transform: rotate(270deg); 278 | transform: rotate(270deg); } 279 | 280 | .fa-flip-horizontal { 281 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; 282 | -webkit-transform: scale(-1, 1); 283 | transform: scale(-1, 1); } 284 | 285 | .fa-flip-vertical { 286 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; 287 | -webkit-transform: scale(1, -1); 288 | transform: scale(1, -1); } 289 | 290 | .fa-flip-horizontal.fa-flip-vertical { 291 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; 292 | -webkit-transform: scale(-1, -1); 293 | transform: scale(-1, -1); } 294 | 295 | :root .fa-rotate-90, 296 | :root .fa-rotate-180, 297 | :root .fa-rotate-270, 298 | :root .fa-flip-horizontal, 299 | :root .fa-flip-vertical { 300 | -webkit-filter: none; 301 | filter: none; } 302 | 303 | .fa-stack { 304 | display: inline-block; 305 | height: 2em; 306 | position: relative; 307 | width: 2em; } 308 | 309 | .fa-stack-1x, 310 | .fa-stack-2x { 311 | bottom: 0; 312 | left: 0; 313 | margin: auto; 314 | position: absolute; 315 | right: 0; 316 | top: 0; } 317 | 318 | .svg-inline--fa.fa-stack-1x { 319 | height: 1em; 320 | width: 1em; } 321 | 322 | .svg-inline--fa.fa-stack-2x { 323 | height: 2em; 324 | width: 2em; } 325 | 326 | .fa-inverse { 327 | color: #fff; } 328 | 329 | .sr-only { 330 | border: 0; 331 | clip: rect(0, 0, 0, 0); 332 | height: 1px; 333 | margin: -1px; 334 | overflow: hidden; 335 | padding: 0; 336 | position: absolute; 337 | width: 1px; } 338 | 339 | .sr-only-focusable:active, .sr-only-focusable:focus { 340 | clip: auto; 341 | height: auto; 342 | margin: 0; 343 | overflow: visible; 344 | position: static; 345 | width: auto; } 346 | -------------------------------------------------------------------------------- /site_libs/font-awesome-5.0.13/fonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/font-awesome-5.0.13/fonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /site_libs/font-awesome-5.0.13/fonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/font-awesome-5.0.13/fonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /site_libs/font-awesome-5.0.13/fonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/font-awesome-5.0.13/fonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /site_libs/jqueryui-1.11.4/README: -------------------------------------------------------------------------------- 1 | This a jQuery UI custom build, downloaded from: 2 | http://jqueryui.com/download/#!version=1.11.4&components=1111111111110111111111111111111111111 3 | 4 | It includes all components except the datepicker, because it conflicts with 5 | bootstrap-datepicker that is packaged with Shiny. 6 | 7 | The copy of jQuery that is bundled with the download, under external/, is not 8 | included because Shiny already has its own copy of jQuery. 9 | -------------------------------------------------------------------------------- /site_libs/jqueryui-1.11.4/images/ui-icons_444444_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/jqueryui-1.11.4/images/ui-icons_444444_256x240.png -------------------------------------------------------------------------------- /site_libs/jqueryui-1.11.4/images/ui-icons_555555_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/jqueryui-1.11.4/images/ui-icons_555555_256x240.png -------------------------------------------------------------------------------- /site_libs/jqueryui-1.11.4/images/ui-icons_777620_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/jqueryui-1.11.4/images/ui-icons_777620_256x240.png -------------------------------------------------------------------------------- /site_libs/jqueryui-1.11.4/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/jqueryui-1.11.4/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /site_libs/jqueryui-1.11.4/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/jqueryui-1.11.4/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /site_libs/jqueryui-1.11.4/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datacarpentry/R-genomics/cd4213a7f95ddcb70e8d771b48014ff619692fac/site_libs/jqueryui-1.11.4/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /site_libs/jqueryui-1.11.4/jquery-ui.structure.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.11.4 - 2016-01-05 2 | * http://jqueryui.com 3 | * Copyright jQuery Foundation and other contributors; Licensed MIT */ 4 | 5 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px} -------------------------------------------------------------------------------- /site_libs/navigation-1.1/codefolding.js: -------------------------------------------------------------------------------- 1 | 2 | window.initializeCodeFolding = function(show) { 3 | 4 | // handlers for show-all and hide all 5 | $("#rmd-show-all-code").click(function() { 6 | $('div.r-code-collapse').each(function() { 7 | $(this).collapse('show'); 8 | }); 9 | }); 10 | $("#rmd-hide-all-code").click(function() { 11 | $('div.r-code-collapse').each(function() { 12 | $(this).collapse('hide'); 13 | }); 14 | }); 15 | 16 | // index for unique code element ids 17 | var currentIndex = 1; 18 | 19 | // select all R code blocks 20 | var rCodeBlocks = $('pre.r, pre.python, pre.bash, pre.sql, pre.cpp, pre.stan'); 21 | rCodeBlocks.each(function() { 22 | 23 | // create a collapsable div to wrap the code in 24 | var div = $('
'); 25 | if (show) 26 | div.addClass('in'); 27 | var id = 'rcode-643E0F36' + currentIndex++; 28 | div.attr('id', id); 29 | $(this).before(div); 30 | $(this).detach().appendTo(div); 31 | 32 | // add a show code button right above 33 | var showCodeText = $('' + (show ? 'Hide' : 'Code') + ''); 34 | var showCodeButton = $(''); 35 | showCodeButton.append(showCodeText); 36 | showCodeButton 37 | .attr('data-toggle', 'collapse') 38 | .attr('data-target', '#' + id) 39 | .attr('aria-expanded', show) 40 | .attr('aria-controls', id); 41 | 42 | var buttonRow = $('
'); 43 | var buttonCol = $('
'); 44 | 45 | buttonCol.append(showCodeButton); 46 | buttonRow.append(buttonCol); 47 | 48 | div.before(buttonRow); 49 | 50 | // update state of button on show/hide 51 | div.on('hidden.bs.collapse', function () { 52 | showCodeText.text('Code'); 53 | }); 54 | div.on('show.bs.collapse', function () { 55 | showCodeText.text('Hide'); 56 | }); 57 | }); 58 | 59 | } 60 | -------------------------------------------------------------------------------- /site_libs/navigation-1.1/sourceembed.js: -------------------------------------------------------------------------------- 1 | 2 | window.initializeSourceEmbed = function(filename) { 3 | $("#rmd-download-source").click(function() { 4 | var src = $("#rmd-source-code").html(); 5 | var a = document.createElement('a'); 6 | a.href = "data:text/x-r-markdown;base64," + src; 7 | a.download = filename; 8 | document.body.appendChild(a); 9 | a.click(); 10 | document.body.removeChild(a); 11 | }); 12 | }; 13 | -------------------------------------------------------------------------------- /site_libs/navigation-1.1/tabsets.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | /** 4 | * jQuery Plugin: Sticky Tabs 5 | * 6 | * @author Aidan Lister 7 | * adapted by Ruben Arslan to activate parent tabs too 8 | * http://www.aidanlister.com/2014/03/persisting-the-tab-state-in-bootstrap/ 9 | */ 10 | (function($) { 11 | "use strict"; 12 | $.fn.rmarkdownStickyTabs = function() { 13 | var context = this; 14 | // Show the tab corresponding with the hash in the URL, or the first tab 15 | var showStuffFromHash = function() { 16 | var hash = window.location.hash; 17 | var selector = hash ? 'a[href="' + hash + '"]' : 'li.active > a'; 18 | var $selector = $(selector, context); 19 | if($selector.data('toggle') === "tab") { 20 | $selector.tab('show'); 21 | // walk up the ancestors of this element, show any hidden tabs 22 | $selector.parents('.section.tabset').each(function(i, elm) { 23 | var link = $('a[href="#' + $(elm).attr('id') + '"]'); 24 | if(link.data('toggle') === "tab") { 25 | link.tab("show"); 26 | } 27 | }); 28 | } 29 | }; 30 | 31 | 32 | // Set the correct tab when the page loads 33 | showStuffFromHash(context); 34 | 35 | // Set the correct tab when a user uses their back/forward button 36 | $(window).on('hashchange', function() { 37 | showStuffFromHash(context); 38 | }); 39 | 40 | // Change the URL when tabs are clicked 41 | $('a', context).on('click', function(e) { 42 | history.pushState(null, null, this.href); 43 | showStuffFromHash(context); 44 | }); 45 | 46 | return this; 47 | }; 48 | }(jQuery)); 49 | 50 | window.buildTabsets = function(tocID) { 51 | 52 | // build a tabset from a section div with the .tabset class 53 | function buildTabset(tabset) { 54 | 55 | // check for fade and pills options 56 | var fade = tabset.hasClass("tabset-fade"); 57 | var pills = tabset.hasClass("tabset-pills"); 58 | var navClass = pills ? "nav-pills" : "nav-tabs"; 59 | 60 | // determine the heading level of the tabset and tabs 61 | var match = tabset.attr('class').match(/level(\d) /); 62 | if (match === null) 63 | return; 64 | var tabsetLevel = Number(match[1]); 65 | var tabLevel = tabsetLevel + 1; 66 | 67 | // find all subheadings immediately below 68 | var tabs = tabset.find("div.section.level" + tabLevel); 69 | if (!tabs.length) 70 | return; 71 | 72 | // create tablist and tab-content elements 73 | var tabList = $(''); 74 | $(tabs[0]).before(tabList); 75 | var tabContent = $('
'); 76 | $(tabs[0]).before(tabContent); 77 | 78 | // build the tabset 79 | var activeTab = 0; 80 | tabs.each(function(i) { 81 | 82 | // get the tab div 83 | var tab = $(tabs[i]); 84 | 85 | // get the id then sanitize it for use with bootstrap tabs 86 | var id = tab.attr('id'); 87 | 88 | // see if this is marked as the active tab 89 | if (tab.hasClass('active')) 90 | activeTab = i; 91 | 92 | // remove any table of contents entries associated with 93 | // this ID (since we'll be removing the heading element) 94 | $("div#" + tocID + " li a[href='#" + id + "']").parent().remove(); 95 | 96 | // sanitize the id for use with bootstrap tabs 97 | id = id.replace(/[.\/?&!#<>]/g, '').replace(/\s/g, '_'); 98 | tab.attr('id', id); 99 | 100 | // get the heading element within it, grab it's text, then remove it 101 | var heading = tab.find('h' + tabLevel + ':first'); 102 | var headingText = heading.html(); 103 | heading.remove(); 104 | 105 | // build and append the tab list item 106 | var a = $('' + headingText + ''); 107 | a.attr('href', '#' + id); 108 | a.attr('aria-controls', id); 109 | var li = $('
  • '); 110 | li.append(a); 111 | tabList.append(li); 112 | 113 | // set it's attributes 114 | tab.attr('role', 'tabpanel'); 115 | tab.addClass('tab-pane'); 116 | tab.addClass('tabbed-pane'); 117 | if (fade) 118 | tab.addClass('fade'); 119 | 120 | // move it into the tab content div 121 | tab.detach().appendTo(tabContent); 122 | }); 123 | 124 | // set active tab 125 | $(tabList.children('li')[activeTab]).addClass('active'); 126 | var active = $(tabContent.children('div.section')[activeTab]); 127 | active.addClass('active'); 128 | if (fade) 129 | active.addClass('in'); 130 | 131 | if (tabset.hasClass("tabset-sticky")) 132 | tabset.rmarkdownStickyTabs(); 133 | } 134 | 135 | // convert section divs with the .tabset class to tabsets 136 | var tabsets = $("div.section.tabset"); 137 | tabsets.each(function(i) { 138 | buildTabset($(tabsets[i])); 139 | }); 140 | }; 141 | 142 | -------------------------------------------------------------------------------- /site_libs/tocify-1.9.1/jquery.tocify.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jquery.tocify.css 1.9.1 3 | * Author: @gregfranko 4 | */ 5 | 6 | /* The Table of Contents container element */ 7 | .tocify { 8 | width: 20%; 9 | max-height: 90%; 10 | overflow: auto; 11 | margin-left: 2%; 12 | position: fixed; 13 | border: 1px solid #ccc; 14 | webkit-border-radius: 6px; 15 | moz-border-radius: 6px; 16 | border-radius: 6px; 17 | } 18 | 19 | /* The Table of Contents is composed of multiple nested unordered lists. These styles remove the default styling of an unordered list because it is ugly. */ 20 | .tocify ul, .tocify li { 21 | list-style: none; 22 | margin: 0; 23 | padding: 0; 24 | border: none; 25 | line-height: 30px; 26 | } 27 | 28 | /* Top level header elements */ 29 | .tocify-header { 30 | text-indent: 10px; 31 | } 32 | 33 | /* Top level subheader elements. These are the first nested items underneath a header element. */ 34 | .tocify-subheader { 35 | text-indent: 20px; 36 | display: none; 37 | } 38 | 39 | /* Makes the font smaller for all subheader elements. */ 40 | .tocify-subheader li { 41 | font-size: 12px; 42 | } 43 | 44 | /* Further indents second level subheader elements. */ 45 | .tocify-subheader .tocify-subheader { 46 | text-indent: 30px; 47 | } 48 | 49 | /* Further indents third level subheader elements. You can continue this pattern if you have more nested elements. */ 50 | .tocify-subheader .tocify-subheader .tocify-subheader { 51 | text-indent: 40px; 52 | } 53 | 54 | /* Twitter Bootstrap Override Style */ 55 | .tocify .tocify-item > a, .tocify .nav-list .nav-header { 56 | margin: 0px; 57 | } 58 | 59 | /* Twitter Bootstrap Override Styles */ 60 | .tocify .tocify-item a, .tocify .list-group-item { 61 | padding: 5px; 62 | } 63 | 64 | .tocify .nav-pills > li { 65 | float: none; 66 | } 67 | 68 | /* We don't override the bootstrap colors because this gives us the 69 | wrong selection colors when using bootstrap themes 70 | 71 | .tocify .list-group-item:hover, .tocify .list-group-item:focus { 72 | background-color: #f5f5f5; 73 | } 74 | 75 | .tocify .list-group-item.active:hover, .tocify .list-group-item.active:focus { 76 | background-color: #428bca; 77 | } 78 | */ 79 | 80 | /* End Twitter Bootstrap Override Styles */ 81 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 15px; 3 | } 4 | 5 | p { 6 | font-size: 1.1em; 7 | } 8 | 9 | pre { 10 | font-size: 15px; 11 | } --------------------------------------------------------------------------------