diff --git a/.github/workflows/quarto-gh-pages-html.yaml b/.github/workflows/quarto-gh-pages-html.yaml index 3b454b2..010bb6e 100644 --- a/.github/workflows/quarto-gh-pages-html.yaml +++ b/.github/workflows/quarto-gh-pages-html.yaml @@ -25,7 +25,7 @@ jobs: sudo apt-get update -y && sudo apt-get install -y libcurl4-openssl-dev sudo apt-get install -y libharfbuzz-dev sudo apt-get install -y libfribidi-dev - + sudo apt-get install -y libglpk40 - uses: r-lib/actions/setup-renv@v2 diff --git a/omics/week-3/study_after_workshop.qmd b/omics/week-3/study_after_workshop.qmd index 33da2bc..da9879f 100644 --- a/omics/week-3/study_after_workshop.qmd +++ b/omics/week-3/study_after_workshop.qmd @@ -1,6 +1,6 @@ --- title: "Independent Study to consolidate this week" -subtitle: "Core 1" +subtitle: "Omics 1: 👋 Hello data!" toc: true toc-location: right format: diff --git a/omics/week-4/overview.qmd b/omics/week-4/overview.qmd index 6f08bcc..f109d10 100644 --- a/omics/week-4/overview.qmd +++ b/omics/week-4/overview.qmd @@ -5,8 +5,8 @@ toc: true toc-location: right --- -This week you will .... The independent study will ... -In the workshop, you will learn ... +This week we cover differential expression analysis on raw counts or log normalised values. The independent study will allow you to check you have what you should have following the [Omics 1: Hello Data workshop](../week-3/workshop.html) and [Consolidation study](../week-3/study_after_workshop.html). It will also summarise the concepts and methods we will use in the workshop. +In the workshop, you will learn how to perform differential expression analysis on raw counts using **`DESeq2`** or on logged normalised expression values using **`scran`** or both. We suggest you sit together with your group in the workshop. @@ -14,30 +14,31 @@ We suggest you sit together with your group in the workshop. The successful student will be able to: -- xxx -- xxx -- xxx -- xxx +- verify they have the required RStudio Project set up and the data and code files from the previous Workshop and Consolidation study +- explain the goal of differential expression analysis and the importance of normalisation +- explain why and how the nature of the input values determines the analysis package used +- describe the metadata needed to carry out differential expression analysis and the statistical models used by **`DESeq2`** and **`scran`** +- find genes that are unexpressed or expressed in a a single cell type or treatment group +- perform differential expression analysis on raw counts using **`DESeq2`** or on logged normalised expression values using **`scran`** or both. +- explain the output of differential expression: log fold change, p-value, adjusted p-value, ### Instructions 1. [Prepare](study_before_workshop.qmd) - i. 📖 Read xxx + i. 📖 Read what you should have so far and about concepts in differential expression analysis. 2. [Workshop](workshop.qmd) - i. 💻 xx + i. 💻 Find unexpressed genes and those expressed in a single cell type or treatment group. - ii. 💻 xx + ii. 💻 Set up the metadata for differential expression analysis. - iii. 💻 xx + iii. 💻 Perform differential expression analysis on raw counts using **`DESeq2`** or on logged normalised expression values using **`scran`** or both. - iv. 💻 xx - - v. 💻 Look after future you! + iv. Look after future you! 3. [Consolidate](study_after_workshop.qmd) diff --git a/omics/week-4/study_after_workshop.qmd b/omics/week-4/study_after_workshop.qmd index 56a6870..6017bf2 100644 --- a/omics/week-4/study_after_workshop.qmd +++ b/omics/week-4/study_after_workshop.qmd @@ -14,14 +14,14 @@ You need only do the section for your own project data 🐸 Frogs -🎬 Open your `frogs-88H` Project. xxx +🎬 Open your `frogs-88H` Project and script you began in the Consolidation study last week. This is likely to be `cont-fgf-s20.R` or `cont-fgf-s14.R`. Use the differential expression analysis you did in the workshop (in `cont-fgf-s30.R`) as a template to continue your script. 🐭 Mice -🎬 Open your `mice-88H` Project. xxx +🎬 Open your `mice-88H` Project. Make a new script and, using `hspc-prog.R` as a template, repeat the analysis on a different comparisons. 🍂 xxxx -🎬 Open your `xxxx-88H` Project. xxx +🎬 Follow one of the other examples diff --git a/renv.lock b/renv.lock index 18f7ed3..9fff535 100644 --- a/renv.lock +++ b/renv.lock @@ -2,6 +2,26 @@ "R": { "Version": "4.3.1", "Repositories": [ + { + "Name": "BioCsoft", + "URL": "https://bioconductor.org/packages/3.17/bioc" + }, + { + "Name": "BioCann", + "URL": "https://bioconductor.org/packages/3.17/data/annotation" + }, + { + "Name": "BioCexp", + "URL": "https://bioconductor.org/packages/3.17/data/experiment" + }, + { + "Name": "BioCworkflows", + "URL": "https://bioconductor.org/packages/3.17/workflows" + }, + { + "Name": "BioCbooks", + "URL": "https://bioconductor.org/packages/3.17/books" + }, { "Name": "CRAN", "URL": "https://packagemanager.posit.co/cran/latest" @@ -54,6 +74,21 @@ ], "Hash": "d57e43105a1aa9cb54fdb4629725acb1" }, + "BiocNeighbors": { + "Package": "BiocNeighbors", + "Version": "1.18.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocParallel", + "Matrix", + "Rcpp", + "RcppHNSW", + "S4Vectors", + "methods", + "stats" + ], + "Hash": "54d236313a4df87a45f1a24542df05b8" + }, "BiocParallel": { "Package": "BiocParallel", "Version": "1.34.2", @@ -72,6 +107,26 @@ ], "Hash": "84347b6a8118ba2182b148298b118f0e" }, + "BiocSingular": { + "Package": "BiocSingular", + "Version": "1.16.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "BiocParallel", + "DelayedArray", + "Matrix", + "Rcpp", + "S4Vectors", + "ScaledMatrix", + "beachmat", + "irlba", + "methods", + "rsvd", + "utils" + ], + "Hash": "21d431747e4555048f65e6f9f7df8e90" + }, "BiocVersion": { "Package": "BiocVersion", "Version": "3.17.1", @@ -132,6 +187,22 @@ ], "Hash": "ef6ff3e15ce624118e6cf8151e58e38c" }, + "DelayedMatrixStats": { + "Package": "DelayedMatrixStats", + "Version": "1.22.6", + "Source": "Bioconductor", + "Requirements": [ + "DelayedArray", + "IRanges", + "Matrix", + "MatrixGenerics", + "S4Vectors", + "matrixStats", + "methods", + "sparseMatrixStats" + ], + "Hash": "126ad3bc49aefe4565670c2c16f50bd2" + }, "GenomeInfoDb": { "Package": "GenomeInfoDb", "Version": "1.36.4", @@ -290,6 +361,17 @@ ], "Hash": "cafeccdc6577a445a15ce98b6a1805cf" }, + "RcppHNSW": { + "Package": "RcppHNSW", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "Rcpp", + "methods" + ], + "Hash": "6af2d9ed44e0281f6ae77eb6bed7a3c9" + }, "S4Arrays": { "Package": "S4Arrays", "Version": "1.0.6", @@ -321,6 +403,34 @@ ], "Hash": "338207894998073e7823706f886a1386" }, + "ScaledMatrix": { + "Package": "ScaledMatrix", + "Version": "1.8.1", + "Source": "Bioconductor", + "Requirements": [ + "DelayedArray", + "Matrix", + "S4Vectors", + "methods" + ], + "Hash": "57301723a70d0ee3c7d53691681fade0" + }, + "SingleCellExperiment": { + "Package": "SingleCellExperiment", + "Version": "1.22.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "DelayedArray", + "GenomicRanges", + "S4Vectors", + "SummarizedExperiment", + "methods", + "stats", + "utils" + ], + "Hash": "47569baf7560bf8e3ba57386e9672f7f" + }, "SummarizedExperiment": { "Package": "SummarizedExperiment", "Version": "1.30.2", @@ -415,6 +525,19 @@ ], "Hash": "543776ae6848fde2f48ff3816d0628bc" }, + "beachmat": { + "Package": "beachmat", + "Version": "2.16.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "DelayedArray", + "Matrix", + "Rcpp", + "methods" + ], + "Hash": "43616288aada4bfe6fd316435445cfb1" + }, "bit": { "Package": "bit", "Version": "4.0.5", @@ -458,6 +581,24 @@ ], "Hash": "40415719b5a479b87949f3aa0aee737c" }, + "bluster": { + "Package": "bluster", + "Version": "1.10.0", + "Source": "Bioconductor", + "Requirements": [ + "BiocNeighbors", + "BiocParallel", + "Matrix", + "Rcpp", + "S4Vectors", + "cluster", + "igraph", + "methods", + "stats", + "utils" + ], + "Hash": "49d6795461d47f4c1a1d1d35ecc91b7a" + }, "broom": { "Package": "broom", "Version": "1.0.5", @@ -571,6 +712,20 @@ ], "Hash": "3f038e5ac7f41d4ac41ce658c85e3042" }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "stats", + "utils" + ], + "Hash": "5edbbabab6ce0bf7900a74fd4358628e" + }, "codetools": { "Package": "codetools", "Version": "0.2-19", @@ -727,6 +882,19 @@ ], "Hash": "e85ffbebaad5f70e1a2e2ef4302b4949" }, + "dqrng": { + "Package": "dqrng", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "BH", + "R", + "Rcpp", + "sitmo" + ], + "Hash": "a8fa88d5e211585a234c1bbb03e797ae" + }, "dtplyr": { "Package": "dtplyr", "Version": "1.3.1", @@ -746,6 +914,22 @@ ], "Hash": "54ed3ea01b11e81a86544faaecfef8e2" }, + "edgeR": { + "Package": "edgeR", + "Version": "3.42.4", + "Source": "Bioconductor", + "Requirements": [ + "R", + "Rcpp", + "graphics", + "limma", + "locfit", + "methods", + "stats", + "utils" + ], + "Hash": "3186512bacaffb43a1f37e6f26d3b72c" + }, "ellipsis": { "Package": "ellipsis", "Version": "0.3.2", @@ -1092,6 +1276,41 @@ ], "Hash": "99df65cfef20e525ed38c3d2577f7190" }, + "igraph": { + "Package": "igraph", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "Matrix", + "R", + "cli", + "cpp11", + "grDevices", + "graphics", + "lifecycle", + "magrittr", + "methods", + "pkgconfig", + "rlang", + "stats", + "utils" + ], + "Hash": "80401cb5ec513e8ddc56764d03f63669" + }, + "irlba": { + "Package": "irlba", + "Version": "2.3.5.1", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "Matrix", + "R", + "methods", + "stats" + ], + "Hash": "acb06a47b732c6251afd16e19c3201ff" + }, "isoband": { "Package": "isoband", "Version": "0.2.7", @@ -1199,6 +1418,20 @@ ], "Hash": "001cecbeac1cff9301bdc3775ee46a86" }, + "limma": { + "Package": "limma", + "Version": "3.56.2", + "Source": "Bioconductor", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "stats", + "utils" + ], + "Hash": "15b74284b9eb4641fa99a01e445a8256" + }, "locfit": { "Package": "locfit", "Version": "1.5-9.8", @@ -1254,6 +1487,15 @@ ], "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" }, + "metapod": { + "Package": "metapod", + "Version": "1.8.0", + "Source": "Bioconductor", + "Requirements": [ + "Rcpp" + ], + "Hash": "577022e3e4c4d3a3c812aefbe640467e" + }, "mgcv": { "Package": "mgcv", "Version": "1.8-42", @@ -1583,6 +1825,17 @@ "Repository": "RSPM", "Hash": "5564500e25cffad9e22244ced1379887" }, + "rsvd": { + "Package": "rsvd", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "Matrix", + "R" + ], + "Hash": "b462187d887abc519894874486dbd6fd" + }, "rvest": { "Package": "rvest", "Version": "1.0.3", @@ -1635,6 +1888,59 @@ ], "Hash": "906cb23d2f1c5680b8ce439b44c6fa63" }, + "scran": { + "Package": "scran", + "Version": "1.28.2", + "Source": "Bioconductor", + "Requirements": [ + "BH", + "BiocGenerics", + "BiocParallel", + "BiocSingular", + "DelayedArray", + "DelayedMatrixStats", + "Matrix", + "Rcpp", + "S4Vectors", + "SingleCellExperiment", + "SummarizedExperiment", + "beachmat", + "bluster", + "dqrng", + "edgeR", + "igraph", + "limma", + "metapod", + "methods", + "scuttle", + "statmod", + "stats", + "utils" + ], + "Hash": "ad52c1517a09929ca3ab0a622a22e0a3" + }, + "scuttle": { + "Package": "scuttle", + "Version": "1.10.2", + "Source": "Bioconductor", + "Requirements": [ + "BiocGenerics", + "BiocParallel", + "DelayedArray", + "DelayedMatrixStats", + "GenomicRanges", + "Matrix", + "Rcpp", + "S4Vectors", + "SingleCellExperiment", + "SummarizedExperiment", + "beachmat", + "methods", + "stats", + "utils" + ], + "Hash": "c81a27288455b3d22465df1e9cfc9dc0" + }, "selectr": { "Package": "selectr", "Version": "0.4-2", @@ -1648,6 +1954,17 @@ ], "Hash": "3838071b66e0c566d55cc26bd6e27bf4" }, + "sitmo": { + "Package": "sitmo", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "Rcpp" + ], + "Hash": "c956d93f6768a9789edbc13072b70c78" + }, "snow": { "Package": "snow", "Version": "0.4-4", @@ -1659,6 +1976,31 @@ ], "Hash": "40b74690debd20c57d93d8c246b305d4" }, + "sparseMatrixStats": { + "Package": "sparseMatrixStats", + "Version": "1.12.2", + "Source": "Bioconductor", + "Requirements": [ + "Matrix", + "MatrixGenerics", + "Rcpp", + "matrixStats", + "methods" + ], + "Hash": "4392d3abdce514b427a1389b7e3d2514" + }, + "statmod": { + "Package": "statmod", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "graphics", + "stats" + ], + "Hash": "26e158d12052c279bdd4ba858b80fb1f" + }, "stringi": { "Package": "stringi", "Version": "1.7.12",