{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" }, "toc": "true" }, "source": [ "# Table of Contents\n", "

1  PEB Belgrade - Bioconductor workshop
1.1  Requirements
1.2  Which libraries are we installing?
2  The Annotation packages in Bioconductor
3  The Homo.sapiens package
3.1  Gene symbols and IDs: the org.Hs.eg.db package
3.1.1  Entrez and symbols
3.1.1.1  Exercise 1: symbol and Ensembl
3.1.1.2  Exercise 2- Gene Ontology
3.1.2  Gene Ontology Enrichment with DOSE and clusterProfiler
3.2  Enrichment using other ontologies
3.3  Getting gene coordinates: the TxDB packages
4  Calculating Enrichment
5  Annotation Hub
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# PEB Belgrade - Bioconductor workshop\n", "\n", "Giovanni M. Dall'Olio, GlaxoSmithKline. http://bioinfoblog.it\n", "\n", "Welcome to the Bioconductor / Data Integration workshop.\n", "\n", "This workshop is heavily inspired by the Coursera Bioconductor course. See here for materials: http://kasperdanielhansen.github.io/genbioconductor/\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Requirements\n", "\n", "Course materials: http://dalloliogm.github.io\n", "\n", "This workshop requires several bioconductor libraries, which take a while to install.\n", "\n", "Please start their installation by copying&pasting the commands below. We'll continue the lecture while they get installed:\n", "\n", "```\n", "# bioconductor\n", "source(\"http://bioconductor.org/biocLite.R\")\n", "biocLite(\"Homo.sapiens\")\n", "biocLite(\"rtracklayer\")\n", "biocLite(\"DOSE\")\n", "biocLite(\"clusterProfiler\")\n", "biocLite(\"AnnotationHub\")\n", "\n", "# dplyr\n", "install.packages(c(\"dplyr\"))\n", "\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# What is Bioconductor?\n", "\n", "Bioconductor is the biggest repository of bioinformatics libraries for R. It contains code for dealing with genomic coordinates, calculating differential expression, converting gene symbols and ids, and much more.\n", "\n", "To be included in bioconductor, a library must:\n", "\n", "- have documentation in the form of a vignette()\n", "- include a battery of tests to make sure that each new version is working\n", "- be citable, using citation() and possibly be described in a bioinformatics journal" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## How to get Bioconductor Packages\n", "\n", "First, run the following:\n", "```\n", "source(\"http://bioconductor.org/biocLite.R\")\n", "```\n", "\n", "At this point you can run the biocLite function to install any package available at http://bioconductor.org/packages/release/BiocViews.html#___Software\n", "\n", "For example:\n", "```\n", "biocLite(\"limma\")\n", "```\n", "will install the library limma (a popular library for diff. expression analysis) \n", "\n", "Tip: The next time you run R, you can use library(BiocInstaller) instead of source(\"http://bioconductor.org/biocLite.R\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "# How to get help on a Bioconductor package\n", "\n", "Overview of a package:\n", "```\n", "library(help=Homo.sapiens)\n", "ls(\"package:Homo.sapiens\")\n", "```\n", "\n", "Vignettes\n", "```\n", "library(Homo.sapiens)\n", "vignette()\n", "```\n", "Given a function from a Bioconductor package, get a list of all the objects objects to which it can be applied:\n", "\n", "```\n", "showMethods(\"findOverlaps\")\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# The Annotation packages in Bioconductor\n", "\n", "Apart from analysis functions, Bioconductor contains several data packages (https://www.bioconductor.org/packages/release/data/annotation/), assembled from datasets of common interest for multiple organisms.\n", "\n", "Some examples:\n", "\n", "- **TxDB** objects: coordinates for genes, transcripts, exons...\n", "- **BSGenome**: genome sequences\n", "- **microarray ids** (e.g. hgu133): conversions probe to genes for Affymetrix and Illumina arrays\n", "- **org.\\*.eg.db**: gene symbol to id conversion (entrez, ensembl, GO, ..)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "In addition two packages allow to access large dataset repositories:\n", "\n", "- **biomaRt**: any biomart installation, e.g. ensembl, hgnc, (see http://www.biomart.org/)\n", "- **AnnotationHub**: access to several resources, e.g. any track in the UCSC browser, and more\n", "\n", "In this tutorial we will see some of these (TxDB, org.eg.db, AnnotationHub)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Are Bioconductor Annotation packages up to date?\n", "\n", "Most data packages are annotated regularly, with different frequency depending on the data type, from 6 months to 2 years.\n", "\n", "This is a good compromise between reproducibility of analysis, efforts needed to maintain the packages, and getting recent data.\n", "\n", "## My species is not present or the data is outdated.\n", "\n", "If your species is not present or you need more recent data, you can create a package on your own.\n", "\n", "The procedure is well documented and usually require just a table as input. It's an easy way to become a Bioconductor developer and good for CV :-)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "## Which libraries are we installing?\n", "\n", "- **Homo.sapiens**: Wrapper containing several H.sapiens-related packages:\n", " - **TxDB**: coordinates for genes, transcripts, exons...\n", " - **org.Hs.eg.db**: Gene symbols\n", " - **GenomicRanges**: allows to work with gene coordinates\n", "- **rtracklayer**: allows to import BED files and other formats\n", "- **DOSE** and **clusterProfiler**: for ontology enrichment (GO, Disease Ontology, Reactome)\n", "- **AnnotationHub**: allows to download data from UCSC and many other sources" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# The Homo.sapiens package\n", "\n", "Let's load the Homo.sapiens package. You will see that it will load several other packages:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": {}, "metadata": {}, "output_type": "display_data" } ], "source": [ "library(Homo.sapiens)\n", "library(help=\"Homo.sapiens\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bioconductor contains similar wrapper packages for the most common model species (e.g. mouse, rat). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Gene symbols and IDs: the org.Hs.eg.db package\n", "\n", "The org.\\*.eg.db packages allow to retrieve gene symbols and ids relative to a species (see [list of all packages](https://www.bioconductor.org/packages/release/data/annotation/)). The data is updated every two years, which is a good compromise between reproducibility and getting recent data.\n", "\n", "If no org.eg.db package is available for your species, you may consider creating one yourself. You only require a table of genes/symbols, and following a [tutorial](https://www.bioconductor.org/packages/devel/bioc/vignettes/AnnotationForge/inst/doc/SQLForge.pdf)\n", "\n", "To see which data is included in the human package, we can open its help page:\n", "```\n", "library(help=org.Hs.eg.db)\n", "```\n", "In alternative, we can use the columns() function:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'ENTREZID'
  2. \n", "\t
  3. 'PFAM'
  4. \n", "\t
  5. 'IPI'
  6. \n", "\t
  7. 'PROSITE'
  8. \n", "\t
  9. 'ACCNUM'
  10. \n", "\t
  11. 'ALIAS'
  12. \n", "\t
  13. 'CHR'
  14. \n", "\t
  15. 'CHRLOC'
  16. \n", "\t
  17. 'CHRLOCEND'
  18. \n", "\t
  19. 'ENZYME'
  20. \n", "\t
  21. 'MAP'
  22. \n", "\t
  23. 'PATH'
  24. \n", "\t
  25. 'PMID'
  26. \n", "\t
  27. 'REFSEQ'
  28. \n", "\t
  29. 'SYMBOL'
  30. \n", "\t
  31. 'UNIGENE'
  32. \n", "\t
  33. 'ENSEMBL'
  34. \n", "\t
  35. 'ENSEMBLPROT'
  36. \n", "\t
  37. 'ENSEMBLTRANS'
  38. \n", "\t
  39. 'GENENAME'
  40. \n", "\t
  41. 'UNIPROT'
  42. \n", "\t
  43. 'GO'
  44. \n", "\t
  45. 'EVIDENCE'
  46. \n", "\t
  47. 'ONTOLOGY'
  48. \n", "\t
  49. 'GOALL'
  50. \n", "\t
  51. 'EVIDENCEALL'
  52. \n", "\t
  53. 'ONTOLOGYALL'
  54. \n", "\t
  55. 'OMIM'
  56. \n", "\t
  57. 'UCSCKG'
  58. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'ENTREZID'\n", "\\item 'PFAM'\n", "\\item 'IPI'\n", "\\item 'PROSITE'\n", "\\item 'ACCNUM'\n", "\\item 'ALIAS'\n", "\\item 'CHR'\n", "\\item 'CHRLOC'\n", "\\item 'CHRLOCEND'\n", "\\item 'ENZYME'\n", "\\item 'MAP'\n", "\\item 'PATH'\n", "\\item 'PMID'\n", "\\item 'REFSEQ'\n", "\\item 'SYMBOL'\n", "\\item 'UNIGENE'\n", "\\item 'ENSEMBL'\n", "\\item 'ENSEMBLPROT'\n", "\\item 'ENSEMBLTRANS'\n", "\\item 'GENENAME'\n", "\\item 'UNIPROT'\n", "\\item 'GO'\n", "\\item 'EVIDENCE'\n", "\\item 'ONTOLOGY'\n", "\\item 'GOALL'\n", "\\item 'EVIDENCEALL'\n", "\\item 'ONTOLOGYALL'\n", "\\item 'OMIM'\n", "\\item 'UCSCKG'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'ENTREZID'\n", "2. 'PFAM'\n", "3. 'IPI'\n", "4. 'PROSITE'\n", "5. 'ACCNUM'\n", "6. 'ALIAS'\n", "7. 'CHR'\n", "8. 'CHRLOC'\n", "9. 'CHRLOCEND'\n", "10. 'ENZYME'\n", "11. 'MAP'\n", "12. 'PATH'\n", "13. 'PMID'\n", "14. 'REFSEQ'\n", "15. 'SYMBOL'\n", "16. 'UNIGENE'\n", "17. 'ENSEMBL'\n", "18. 'ENSEMBLPROT'\n", "19. 'ENSEMBLTRANS'\n", "20. 'GENENAME'\n", "21. 'UNIPROT'\n", "22. 'GO'\n", "23. 'EVIDENCE'\n", "24. 'ONTOLOGY'\n", "25. 'GOALL'\n", "26. 'EVIDENCEALL'\n", "27. 'ONTOLOGYALL'\n", "28. 'OMIM'\n", "29. 'UCSCKG'\n", "\n", "\n" ], "text/plain": [ " [1] \"ENTREZID\" \"PFAM\" \"IPI\" \"PROSITE\" \"ACCNUM\" \n", " [6] \"ALIAS\" \"CHR\" \"CHRLOC\" \"CHRLOCEND\" \"ENZYME\" \n", "[11] \"MAP\" \"PATH\" \"PMID\" \"REFSEQ\" \"SYMBOL\" \n", "[16] \"UNIGENE\" \"ENSEMBL\" \"ENSEMBLPROT\" \"ENSEMBLTRANS\" \"GENENAME\" \n", "[21] \"UNIPROT\" \"GO\" \"EVIDENCE\" \"ONTOLOGY\" \"GOALL\" \n", "[26] \"EVIDENCEALL\" \"ONTOLOGYALL\" \"OMIM\" \"UCSCKG\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "columns(org.Hs.eg.db)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This means that the org.Hs.eg.db package contains mapping between Entrez IDs, PFAM, Prosite, Genenames, GO, etc... for all human genes.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Visualizing a bimap as a table\n", "\n", "The BiMaps in a library can also be accessed as variable. For example, org.Hs.eg.db contains many variables starting with \"org.Hs.eg\":" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'org.Hs.eg'
  2. \n", "\t
  3. 'org.Hs.egACCNUM'
  4. \n", "\t
  5. 'org.Hs.egACCNUM2EG'
  6. \n", "\t
  7. 'org.Hs.egALIAS2EG'
  8. \n", "\t
  9. 'org.Hs.egCHR'
  10. \n", "\t
  11. 'org.Hs.egCHRLENGTHS'
  12. \n", "\t
  13. 'org.Hs.egCHRLOC'
  14. \n", "\t
  15. 'org.Hs.egCHRLOCEND'
  16. \n", "\t
  17. 'org.Hs.eg.db'
  18. \n", "\t
  19. 'org.Hs.eg_dbconn'
  20. \n", "\t
  21. 'org.Hs.eg_dbfile'
  22. \n", "\t
  23. 'org.Hs.eg_dbInfo'
  24. \n", "\t
  25. 'org.Hs.eg_dbschema'
  26. \n", "\t
  27. 'org.Hs.egENSEMBL'
  28. \n", "\t
  29. 'org.Hs.egENSEMBL2EG'
  30. \n", "\t
  31. 'org.Hs.egENSEMBLPROT'
  32. \n", "\t
  33. 'org.Hs.egENSEMBLPROT2EG'
  34. \n", "\t
  35. 'org.Hs.egENSEMBLTRANS'
  36. \n", "\t
  37. 'org.Hs.egENSEMBLTRANS2EG'
  38. \n", "\t
  39. 'org.Hs.egENZYME'
  40. \n", "\t
  41. 'org.Hs.egENZYME2EG'
  42. \n", "\t
  43. 'org.Hs.egGENENAME'
  44. \n", "\t
  45. 'org.Hs.egGO'
  46. \n", "\t
  47. 'org.Hs.egGO2ALLEGS'
  48. \n", "\t
  49. 'org.Hs.egGO2EG'
  50. \n", "\t
  51. 'org.Hs.egMAP'
  52. \n", "\t
  53. 'org.Hs.egMAP2EG'
  54. \n", "\t
  55. 'org.Hs.egMAPCOUNTS'
  56. \n", "\t
  57. 'org.Hs.egOMIM'
  58. \n", "\t
  59. 'org.Hs.egOMIM2EG'
  60. \n", "\t
  61. 'org.Hs.egORGANISM'
  62. \n", "\t
  63. 'org.Hs.egPATH'
  64. \n", "\t
  65. 'org.Hs.egPATH2EG'
  66. \n", "\t
  67. 'org.Hs.egPFAM'
  68. \n", "\t
  69. 'org.Hs.egPMID'
  70. \n", "\t
  71. 'org.Hs.egPMID2EG'
  72. \n", "\t
  73. 'org.Hs.egPROSITE'
  74. \n", "\t
  75. 'org.Hs.egREFSEQ'
  76. \n", "\t
  77. 'org.Hs.egREFSEQ2EG'
  78. \n", "\t
  79. 'org.Hs.egSYMBOL'
  80. \n", "\t
  81. 'org.Hs.egSYMBOL2EG'
  82. \n", "\t
  83. 'org.Hs.egUCSCKG'
  84. \n", "\t
  85. 'org.Hs.egUNIGENE'
  86. \n", "\t
  87. 'org.Hs.egUNIGENE2EG'
  88. \n", "\t
  89. 'org.Hs.egUNIPROT'
  90. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'org.Hs.eg'\n", "\\item 'org.Hs.egACCNUM'\n", "\\item 'org.Hs.egACCNUM2EG'\n", "\\item 'org.Hs.egALIAS2EG'\n", "\\item 'org.Hs.egCHR'\n", "\\item 'org.Hs.egCHRLENGTHS'\n", "\\item 'org.Hs.egCHRLOC'\n", "\\item 'org.Hs.egCHRLOCEND'\n", "\\item 'org.Hs.eg.db'\n", "\\item 'org.Hs.eg\\_dbconn'\n", "\\item 'org.Hs.eg\\_dbfile'\n", "\\item 'org.Hs.eg\\_dbInfo'\n", "\\item 'org.Hs.eg\\_dbschema'\n", "\\item 'org.Hs.egENSEMBL'\n", "\\item 'org.Hs.egENSEMBL2EG'\n", "\\item 'org.Hs.egENSEMBLPROT'\n", "\\item 'org.Hs.egENSEMBLPROT2EG'\n", "\\item 'org.Hs.egENSEMBLTRANS'\n", "\\item 'org.Hs.egENSEMBLTRANS2EG'\n", "\\item 'org.Hs.egENZYME'\n", "\\item 'org.Hs.egENZYME2EG'\n", "\\item 'org.Hs.egGENENAME'\n", "\\item 'org.Hs.egGO'\n", "\\item 'org.Hs.egGO2ALLEGS'\n", "\\item 'org.Hs.egGO2EG'\n", "\\item 'org.Hs.egMAP'\n", "\\item 'org.Hs.egMAP2EG'\n", "\\item 'org.Hs.egMAPCOUNTS'\n", "\\item 'org.Hs.egOMIM'\n", "\\item 'org.Hs.egOMIM2EG'\n", "\\item 'org.Hs.egORGANISM'\n", "\\item 'org.Hs.egPATH'\n", "\\item 'org.Hs.egPATH2EG'\n", "\\item 'org.Hs.egPFAM'\n", "\\item 'org.Hs.egPMID'\n", "\\item 'org.Hs.egPMID2EG'\n", "\\item 'org.Hs.egPROSITE'\n", "\\item 'org.Hs.egREFSEQ'\n", "\\item 'org.Hs.egREFSEQ2EG'\n", "\\item 'org.Hs.egSYMBOL'\n", "\\item 'org.Hs.egSYMBOL2EG'\n", "\\item 'org.Hs.egUCSCKG'\n", "\\item 'org.Hs.egUNIGENE'\n", "\\item 'org.Hs.egUNIGENE2EG'\n", "\\item 'org.Hs.egUNIPROT'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'org.Hs.eg'\n", "2. 'org.Hs.egACCNUM'\n", "3. 'org.Hs.egACCNUM2EG'\n", "4. 'org.Hs.egALIAS2EG'\n", "5. 'org.Hs.egCHR'\n", "6. 'org.Hs.egCHRLENGTHS'\n", "7. 'org.Hs.egCHRLOC'\n", "8. 'org.Hs.egCHRLOCEND'\n", "9. 'org.Hs.eg.db'\n", "10. 'org.Hs.eg_dbconn'\n", "11. 'org.Hs.eg_dbfile'\n", "12. 'org.Hs.eg_dbInfo'\n", "13. 'org.Hs.eg_dbschema'\n", "14. 'org.Hs.egENSEMBL'\n", "15. 'org.Hs.egENSEMBL2EG'\n", "16. 'org.Hs.egENSEMBLPROT'\n", "17. 'org.Hs.egENSEMBLPROT2EG'\n", "18. 'org.Hs.egENSEMBLTRANS'\n", "19. 'org.Hs.egENSEMBLTRANS2EG'\n", "20. 'org.Hs.egENZYME'\n", "21. 'org.Hs.egENZYME2EG'\n", "22. 'org.Hs.egGENENAME'\n", "23. 'org.Hs.egGO'\n", "24. 'org.Hs.egGO2ALLEGS'\n", "25. 'org.Hs.egGO2EG'\n", "26. 'org.Hs.egMAP'\n", "27. 'org.Hs.egMAP2EG'\n", "28. 'org.Hs.egMAPCOUNTS'\n", "29. 'org.Hs.egOMIM'\n", "30. 'org.Hs.egOMIM2EG'\n", "31. 'org.Hs.egORGANISM'\n", "32. 'org.Hs.egPATH'\n", "33. 'org.Hs.egPATH2EG'\n", "34. 'org.Hs.egPFAM'\n", "35. 'org.Hs.egPMID'\n", "36. 'org.Hs.egPMID2EG'\n", "37. 'org.Hs.egPROSITE'\n", "38. 'org.Hs.egREFSEQ'\n", "39. 'org.Hs.egREFSEQ2EG'\n", "40. 'org.Hs.egSYMBOL'\n", "41. 'org.Hs.egSYMBOL2EG'\n", "42. 'org.Hs.egUCSCKG'\n", "43. 'org.Hs.egUNIGENE'\n", "44. 'org.Hs.egUNIGENE2EG'\n", "45. 'org.Hs.egUNIPROT'\n", "\n", "\n" ], "text/plain": [ " [1] \"org.Hs.eg\" \"org.Hs.egACCNUM\" \n", " [3] \"org.Hs.egACCNUM2EG\" \"org.Hs.egALIAS2EG\" \n", " [5] \"org.Hs.egCHR\" \"org.Hs.egCHRLENGTHS\" \n", " [7] \"org.Hs.egCHRLOC\" \"org.Hs.egCHRLOCEND\" \n", " [9] \"org.Hs.eg.db\" \"org.Hs.eg_dbconn\" \n", "[11] \"org.Hs.eg_dbfile\" \"org.Hs.eg_dbInfo\" \n", "[13] \"org.Hs.eg_dbschema\" \"org.Hs.egENSEMBL\" \n", "[15] \"org.Hs.egENSEMBL2EG\" \"org.Hs.egENSEMBLPROT\" \n", "[17] \"org.Hs.egENSEMBLPROT2EG\" \"org.Hs.egENSEMBLTRANS\" \n", "[19] \"org.Hs.egENSEMBLTRANS2EG\" \"org.Hs.egENZYME\" \n", "[21] \"org.Hs.egENZYME2EG\" \"org.Hs.egGENENAME\" \n", "[23] \"org.Hs.egGO\" \"org.Hs.egGO2ALLEGS\" \n", "[25] \"org.Hs.egGO2EG\" \"org.Hs.egMAP\" \n", "[27] \"org.Hs.egMAP2EG\" \"org.Hs.egMAPCOUNTS\" \n", "[29] \"org.Hs.egOMIM\" \"org.Hs.egOMIM2EG\" \n", "[31] \"org.Hs.egORGANISM\" \"org.Hs.egPATH\" \n", "[33] \"org.Hs.egPATH2EG\" \"org.Hs.egPFAM\" \n", "[35] \"org.Hs.egPMID\" \"org.Hs.egPMID2EG\" \n", "[37] \"org.Hs.egPROSITE\" \"org.Hs.egREFSEQ\" \n", "[39] \"org.Hs.egREFSEQ2EG\" \"org.Hs.egSYMBOL\" \n", "[41] \"org.Hs.egSYMBOL2EG\" \"org.Hs.egUCSCKG\" \n", "[43] \"org.Hs.egUNIGENE\" \"org.Hs.egUNIGENE2EG\" \n", "[45] \"org.Hs.egUNIPROT\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ls(\"package:org.Hs.eg.db\")\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "These can be converted to table using as.data.frame or toTable. For example the following gets a dataframe of all KEGG pathways to Entrez:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
gene_idpath_id
2 04610
9 00232
9 00983
9 01100
10 00232
10 00983
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " gene\\_id & path\\_id\\\\\n", "\\hline\n", "\t 2 & 04610\\\\\n", "\t 9 & 00232\\\\\n", "\t 9 & 00983\\\\\n", "\t 9 & 01100\\\\\n", "\t 10 & 00232\\\\\n", "\t 10 & 00983\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " gene_id path_id\n", "1 2 04610 \n", "2 9 00232 \n", "3 9 00983 \n", "4 9 01100 \n", "5 10 00232 \n", "6 10 00983 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "head(toTable(org.Hs.egPATH2EG))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get the name and description of these KEGG pathways, we would have to load the KEGG.db data package." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These packages also allows to get more documentation:\n", "\n", "```\n", "?org.Hs.egPATH2EG\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Entrez and symbols\n", "\n", "The basic way to get data from these BiMap objects is the select() function from AnnotationDbi.\n", "\n", "For example, here is how to get entrez and description of genes MGAT2 and MGAT3:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "
SYMBOLENTREZIDGENENAME
MGAT2 4247 mannosyl (alpha-1,6-)-glycoprotein beta-1,2-N-acetylglucosaminyltransferase
MGAT3 4248 mannosyl (beta-1,4-)-glycoprotein beta-1,4-N-acetylglucosaminyltransferase
\n" ], "text/latex": [ "\\begin{tabular}{r|lll}\n", " SYMBOL & ENTREZID & GENENAME\\\\\n", "\\hline\n", "\t MGAT2 & 4247 & mannosyl (alpha-1,6-)-glycoprotein beta-1,2-N-acetylglucosaminyltransferase\\\\\n", "\t MGAT3 & 4248 & mannosyl (beta-1,4-)-glycoprotein beta-1,4-N-acetylglucosaminyltransferase \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " SYMBOL ENTREZID\n", "1 MGAT2 4247 \n", "2 MGAT3 4248 \n", " GENENAME \n", "1 mannosyl (alpha-1,6-)-glycoprotein beta-1,2-N-acetylglucosaminyltransferase\n", "2 mannosyl (beta-1,4-)-glycoprotein beta-1,4-N-acetylglucosaminyltransferase " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "AnnotationDbi::select(org.Hs.eg.db, keys=as.character(c(\"MGAT2\", \"MGAT3\")), keytype='SYMBOL', columns=c('ENTREZID','GENENAME'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The \"keys\" argument defines the symbols that we want to search. The \"keytype\" and \"columns\" define the type of input and output. Use the functions keytypes(org.Hs.eg.db) and columns(org.Hs.eg.db) to see which values are supported. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### Exercise 1: symbol and Ensembl\n", "\n", "What is the name and the Ensembl ID of the gene with Entrez ID 1234? " ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\n", "
ENTREZIDSYMBOLENSEMBL
1234 CCR5 ENSG00000160791
\n" ], "text/latex": [ "\\begin{tabular}{r|lll}\n", " ENTREZID & SYMBOL & ENSEMBL\\\\\n", "\\hline\n", "\t 1234 & CCR5 & ENSG00000160791\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " ENTREZID SYMBOL ENSEMBL \n", "1 1234 CCR5 ENSG00000160791" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "AnnotationDbi::select(org.Hs.eg.db, keys=as.character(c(\"1234\")), keytype='ENTREZID', columns=c('SYMBOL','ENSEMBL'))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### Exercise 2- Gene Ontology\n", "\n", "The Gene Ontology database annotates terms related to the biological process, molecular function, and cellular compartment for every gene.\n", "\n", "Can you get all the Gene Ontology (GO) terms associated to PTEN?" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
SYMBOLGOEVIDENCEONTOLOGY
PTEN GO:0000079TAS BP
PTEN GO:0000287IEA MF
PTEN GO:0001525IEA BP
PTEN GO:0001933IDA BP
PTEN GO:0002902IEA BP
PTEN GO:0004438IDA MF
\n" ], "text/latex": [ "\\begin{tabular}{r|llll}\n", " SYMBOL & GO & EVIDENCE & ONTOLOGY\\\\\n", "\\hline\n", "\t PTEN & GO:0000079 & TAS & BP \\\\\n", "\t PTEN & GO:0000287 & IEA & MF \\\\\n", "\t PTEN & GO:0001525 & IEA & BP \\\\\n", "\t PTEN & GO:0001933 & IDA & BP \\\\\n", "\t PTEN & GO:0002902 & IEA & BP \\\\\n", "\t PTEN & GO:0004438 & IDA & MF \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " SYMBOL GO EVIDENCE ONTOLOGY\n", "1 PTEN GO:0000079 TAS BP \n", "2 PTEN GO:0000287 IEA MF \n", "3 PTEN GO:0001525 IEA BP \n", "4 PTEN GO:0001933 IDA BP \n", "5 PTEN GO:0002902 IEA BP \n", "6 PTEN GO:0004438 IDA MF " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "head(select(org.Hs.eg.db, keys='PTEN', keytype='SYMBOL', columns='GO'))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "To get the definition of these GO ids, we can use the GO.db database:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
SYMBOLGOEVIDENCEONTOLOGYTERM
PTEN GO:0000079 TAS BP regulation of cyclin-dependent protein serine/threonine kinase activity
PTEN GO:0000287 IEA MF magnesium ion binding
PTEN GO:0001525 IEA BP angiogenesis
PTEN GO:0001933 IDA BP negative regulation of protein phosphorylation
PTEN GO:0002902 IEA BP regulation of B cell apoptotic process
PTEN GO:0004438 IDA MF phosphatidylinositol-3-phosphatase activity
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " SYMBOL & GO & EVIDENCE & ONTOLOGY & TERM\\\\\n", "\\hline\n", "\t PTEN & GO:0000079 & TAS & BP & regulation of cyclin-dependent protein serine/threonine kinase activity\\\\\n", "\t PTEN & GO:0000287 & IEA & MF & magnesium ion binding \\\\\n", "\t PTEN & GO:0001525 & IEA & BP & angiogenesis \\\\\n", "\t PTEN & GO:0001933 & IDA & BP & negative regulation of protein phosphorylation \\\\\n", "\t PTEN & GO:0002902 & IEA & BP & regulation of B cell apoptotic process \\\\\n", "\t PTEN & GO:0004438 & IDA & MF & phosphatidylinositol-3-phosphatase activity \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " SYMBOL GO EVIDENCE ONTOLOGY\n", "1 PTEN GO:0000079 TAS BP \n", "2 PTEN GO:0000287 IEA MF \n", "3 PTEN GO:0001525 IEA BP \n", "4 PTEN GO:0001933 IDA BP \n", "5 PTEN GO:0002902 IEA BP \n", "6 PTEN GO:0004438 IDA MF \n", " TERM \n", "1 regulation of cyclin-dependent protein serine/threonine kinase activity\n", "2 magnesium ion binding \n", "3 angiogenesis \n", "4 negative regulation of protein phosphorylation \n", "5 regulation of B cell apoptotic process \n", "6 phosphatidylinositol-3-phosphatase activity " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "PTEN.go = select(org.Hs.eg.db, keys='PTEN', keytype='SYMBOL', columns='GO')\n", "PTEN.go$TERM = AnnotationDbi::select(GO.db, keys=as.character(PTEN.go$GO), columns=\"TERM\")$TERM\n", "head(PTEN.go)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Gene Ontology Enrichment with DOSE and clusterProfiler\n", "\n", "When we have a long list of genes, listing all the Gene Ontology terms associated to each gene produces a very verbose output, which is difficult to use.\n", "\n", "It is more useful to do an Ontology Enrichment analysis, to see which are the most represented terms in the list.\n", "\n", "There are several functions to do enrichment analysis in BiocConductor, but today we will use the enrichGO function from clusterProfiler:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " [1] 23450 5160 7126 27118 8452 3675 6624 3638 9918 123\n" ] } ], "source": [ "library(clusterProfiler)\n", "library(DOSE)\n", "\n", "mygenes = c(23450, 5160, 7126, 27118, 8452, 3675, 6624, 3638, 9918, 123, 213, 3383,1869,890,1871,9134,9928,1029,3479,6573,3757,332)\n", "print(mygenes[1:10])\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
IDDescriptionGeneRatioBgRatiopvaluep.adjustqvaluegeneIDCount
GO:0019899GO:0019899 enzyme binding 9/20 1481/18585 9.460737e-06 0.001712393 0.001145247 1029/213/332/3675/3757/7126/8452/890/9928 9
GO:0005178GO:0005178 integrin binding 3/20 104/18585 1.810737e-04 0.009349881 0.006253192 3383/3479/3675 3
GO:0032403GO:0032403 protein complex binding 6/20 852/18585 2.032337e-04 0.009349881 0.006253192 332/3383/3479/3675/6624/9928 6
GO:0016538GO:0016538 cyclin-dependent protein serine/threonine kinase regulator activity2/20 20/18585 2.066272e-04 0.009349881 0.006253192 1029/9134 2
GO:0019904GO:0019904 protein domain specific binding 5/20 588/18585 3.255709e-04 0.011785666 0.007882242 3675/3757/7126/8452/9928 5
GO:0050839GO:0050839 cell adhesion molecule binding 3/20 171/18585 7.775958e-04 0.023457474 0.015688337 3383/3479/3675 3
\n" ], "text/latex": [ "\\begin{tabular}{r|lllllllll}\n", " & ID & Description & GeneRatio & BgRatio & pvalue & p.adjust & qvalue & geneID & Count\\\\\n", "\\hline\n", "\tGO:0019899 & GO:0019899 & enzyme binding & 9/20 & 1481/18585 & 9.460737e-06 & 0.001712393 & 0.001145247 & 1029/213/332/3675/3757/7126/8452/890/9928 & 9 \\\\\n", "\tGO:0005178 & GO:0005178 & integrin binding & 3/20 & 104/18585 & 1.810737e-04 & 0.009349881 & 0.006253192 & 3383/3479/3675 & 3 \\\\\n", "\tGO:0032403 & GO:0032403 & protein complex binding & 6/20 & 852/18585 & 2.032337e-04 & 0.009349881 & 0.006253192 & 332/3383/3479/3675/6624/9928 & 6 \\\\\n", "\tGO:0016538 & GO:0016538 & cyclin-dependent protein serine/threonine kinase regulator activity & 2/20 & 20/18585 & 2.066272e-04 & 0.009349881 & 0.006253192 & 1029/9134 & 2 \\\\\n", "\tGO:0019904 & GO:0019904 & protein domain specific binding & 5/20 & 588/18585 & 3.255709e-04 & 0.011785666 & 0.007882242 & 3675/3757/7126/8452/9928 & 5 \\\\\n", "\tGO:0050839 & GO:0050839 & cell adhesion molecule binding & 3/20 & 171/18585 & 7.775958e-04 & 0.023457474 & 0.015688337 & 3383/3479/3675 & 3 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " ID \n", "GO:0019899 GO:0019899\n", "GO:0005178 GO:0005178\n", "GO:0032403 GO:0032403\n", "GO:0016538 GO:0016538\n", "GO:0019904 GO:0019904\n", "GO:0050839 GO:0050839\n", " Description \n", "GO:0019899 enzyme binding \n", "GO:0005178 integrin binding \n", "GO:0032403 protein complex binding \n", "GO:0016538 cyclin-dependent protein serine/threonine kinase regulator activity\n", "GO:0019904 protein domain specific binding \n", "GO:0050839 cell adhesion molecule binding \n", " GeneRatio BgRatio pvalue p.adjust qvalue \n", "GO:0019899 9/20 1481/18585 9.460737e-06 0.001712393 0.001145247\n", "GO:0005178 3/20 104/18585 1.810737e-04 0.009349881 0.006253192\n", "GO:0032403 6/20 852/18585 2.032337e-04 0.009349881 0.006253192\n", "GO:0016538 2/20 20/18585 2.066272e-04 0.009349881 0.006253192\n", "GO:0019904 5/20 588/18585 3.255709e-04 0.011785666 0.007882242\n", "GO:0050839 3/20 171/18585 7.775958e-04 0.023457474 0.015688337\n", " geneID Count\n", "GO:0019899 1029/213/332/3675/3757/7126/8452/890/9928 9 \n", "GO:0005178 3383/3479/3675 3 \n", "GO:0032403 332/3383/3479/3675/6624/9928 6 \n", "GO:0016538 1029/9134 2 \n", "GO:0019904 3675/3757/7126/8452/9928 5 \n", "GO:0050839 3383/3479/3675 3 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Let's calculate the enrichment\n", "myenrich = enrichGO(mygenes, \"human\", ont=\"MF\", readable=F)\n", "head(summary(myenrich))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Behind the lines, enrichGO retrieves the GO annotations from the org.Hs.eg.db package, and calculates the enrichment.\n", "\n", "The output can be plot in several ways. For example as a graph, using cnetplot:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAIAAAByhViMAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOzdd3gc9YE//s9sl7RaabUrrXq3JKtbtlxk4yZ3MIEQynEkkMCdaUmAQBLC\nkwJcCAcHd0nuG19I6D9CL3HvBVfJWLZlybIkq6/KSlppe9+Z3x8jRuNVta3m8fv1PDzP7OzM\nzmd2jPftT6UYhiEAAAAAcP0TTXcBAAAAAGBiINgBAAAACASCHQAAAIBAINgBAAAACASCHQAA\nAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAA\nCASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBA\nINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASC\nHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgB\nAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAA\nAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAA\nCASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBA\nINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASC\nHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgB\nAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAA\nAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAA\nCASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBA\nINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASC\nHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgB\nAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAA\nAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAA\nCASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBA\nINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASC\nHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgB\nAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAA\nAIBAINgBAAAACASCHQAAAIBAINgBAAAACASCHQAAAIBASKa7AAAAMAaaph0Oh9vtFovFCoVC\noVBMd4kAYIZCsAMAmDo+n6+9vb2pqamxsbGjo+PJJ58MCQkZ5eDKysrz58+3tbVZLJZFixZJ\npVJCSHBwsE6nS01NDQoKmsKyA8B1gGIYZrrLAAAgfD09Pfv37z9+/LjH45k3b97cuXNzcnJk\nMtlIB+/cubOsrMzn88XGxsbGxkZFRYnFYv4xPp+vq6urr6+vq6tLo9EkJCSsW7cuNjZ2PIXZ\nv3//J598Qgj50Y9+tGDBgmu/OwCYIVBjBwAwuXw+344dO3bv3u3z+aKion74wx+mpqaO5+CQ\nkJCFCxeq1eqhh/X09FRUVHg8HvZlR0dHR0fHqVOnvve975WWlo5envr6+s8+++xa7ggAZiwE\nOwCASWS32zdv3lxfX08IyczMfOyxx+Ry+XgO1mq1xcXFEskwf0ubzeZTp075/f6A/TRNf/rp\npykpKaMER4vF8sYbb9A0fZX3AwAzG0bFAgBMFqPR+PLLL7NBTaVSPfTQQ6OkOv7Bcrm8qKho\n2FRH0/SpU6ekUumsWbNyc3Pj4+PZjncshmG2bt060iVomv7b3/5msViu6a4AYAZDjR0AwKTw\n+/1vvPFGd3c3+/L+++9XqVTjPLiwsHCkCKjX6xUKxYIFC7g8Z7FYTpw4wTXLtrS0MAxDUdTQ\n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\n5ubeeuutCoVi/F9dS0vL119/XVtba7VapVIp+0XNnz9fIrns7/PR791jbj9yvvvAmS7+Kf92\n8yyNSnasqqe6xWy2eYLkkswE1eqiaLlMTAipaTUfr+419DuD5OKEyJBVRdHhShl74rnG/q+O\ntvE/6vYliXHaoH2nO5sNdp+f1obJC9MiijM1ItF4Q5jHR5dd6L3Qauq3et3egQxqbDu9cc2C\n+fPyt/zzq7f/sot/vEgkysjIePLJJz/55JMTJ06wHdQUCsXjjz8+a9asgA8fZaBMQ0PDzp07\nW1paPB5PQkLC0qVLi4uLuT8wk/Gs7Xb7li1bDh8+zP7rYuvWrUMLzDp29PCJnQNXrz1OCCE/\nXJeWGBVyvsn0xZHLVoS7fUlibnLYiZrecw39/VZPWIi0MF1d2djv8wf+A8ZkMu3fv7+hoaGn\np8fhcPBjFt/UDBPhux4HJM0Q4t/97nfTXQYAuOHExcVlZWWdPn3a7x/4zU5KSnr//fdpmhaL\nxVar1WKxVFdX19fXz507l40sCoWitLS0tra2v39g/dC0tDS9Xv/ee++ZzWaaps1mc0NDw7Jl\nywghHo/n7bff/uKLLzo7Ox988MEf/OAHCQkJW7duLS8vb25uzs/Pl0qlhBCxWJyVlVVfX+9y\nDbTxrV27dt26dfPnz4+Pj2ev29XV9corr5w5cyY2NvbZZ59dtmzZqVOnDh8+fPHixcLCQplM\nlpqampeXd/To4DS/ixcvjoiIiI2Nzc/PLy8v5+4xLy/viy++OHLkiM1mo2nabrc3NTVVV1cv\nWbJkPD29/H7/p59++t577+n1+vvuu++BBx5wu90nT548d+6cXq8vKipig+Z47t3a9k18OJ0e\nqzzbYOI+f3ZS2GeHW2paLU63n2GIx0d3Gp0t3Y6CNPX+iq5dpzosDi9NM24v3WNynW3oL0hV\ny6ViQoguXJESE3qhxeynB3JDrCZo64l2miFiEbG7/Dan71KHtcVgz04OF/Oy3deV3VzQmJeh\nUX67wkSv2f3WroaaVnNkmOK7SxNP1/Vxp8xKT05PS5s9e3Z4eHhlZSW3f8mSJZs2bSKE5OTk\nxMbGnjp1auHChU8//XRkZGDHMoZhPvjgg/Pnz8+bNy8mJubgwYPcvxYcDsexY8ciIiKMRqPD\n4ejr6ztz5kxPT09BQQH7gCb8WXd1db388su1tZf1d+zq6rJYLFzGKikp0Wg0w159TnpEWIgs\n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\nQpKkXbt2VVZWuuXdR2mUxbe0tKh/DdfV1bmmLLdy70KdOXNGnrjnnnvkicE+o4jwqb4+Psqf\nLdcKmk2HLHVX7D2d8iOdXbaPD5o6OnuEECsX3pUUGzrWxbuW5/SuiIiI4W5ePKf4CS4pKWmw\n3d7DNa439UMabOlc0pMdz0TbDYvR0Ltq7R2ugoKCY8eOueWtR2+UxU+dOlU5ruHj4zN37lwX\n1eVO7l2o06dPCyFCQ0NjY2PlRwb6jKTOhpK6M3+VJJvyUE97vaX+anPZ4brTO1oqjnZ1tn+a\nZzK3WoUQi+ZFLhiHw0t4Tu/S6XRG4/AuN/Gc4ic4o9Hoqq+Gcb2pH9JgS+eSnux4JtpuWIyG\ne67yO3v27K5du9zy1qM3+uL1ev3LL7+cn5/f1dW1ePHi0NBxtk9oQG5cqFu3bt28eVOojsP2\n/4yk3h5z6UHr7WuDzUSS7B23LrbcKu3tiBciaE582DgdXmJc965xXTz6G9eb+iE5WDqX9GQH\nM9F2w2KU3BDsTpw4sWPHDvUJ7OOIq4r38/O79957XVKS53DXQvU5Dtv/M5LstsaLn/W01w85\nK6Pozo4qKe25O2tZzNgUeyeM6941rouH2rje1A9pyKVzSU8ecCbabliM3hDBrqur69ChQ0VF\nRY2NjV5eXtOnT09LS1u5cqVerxdCnDp16r333lM/f8uWLQsXLszLyyssLGxsbAwNDZ03b96G\nDRt8fb+7VcSlS5fef/999Uv+/Oc/yxOvv/56ZGTkgGWcOHGiz6u2bNkSExPzySeflJaW9vT0\nREZGLlu2bOXKlQaDQX5Cc3PzG2+80dHRobxkzZo1jz766Llz5/bu3Xvr1q2oqKinnnpKfanX\nlStXCgoKysrKOjs7fXx8YmNjly9fnpqaqhyScLJ4x4126NCh3bt3q2ciX5g5gsZ0rK2tLTc3\nt7S01Gw2d3Z2Ko//27/928yZM5U/HVfrZDOWlpa6fKEcF6b27bffCiHCwsJmzpzp4DP68UNJ\nU4J9RD/dNntBcX3xteb2TltokPe8mMkZacX27tl632DnW0DpSM6XPWR/G0HrjUXvcn6JnGGz\n2bZv315dXa18LQUHBz/11FMpKSkuL16SpJKSkoKCgpqampaWlt7e3tDQ0IiIiIyMjLlz5/Y5\n1OiS9WUwY9SLmpubDx06VF5e3tDQYLFYbDab+L8eeeQRb2/vPleCb9u2LSws7ODBg/v371eX\n9Pjjj+fk5DhYimG1qvOb+iFXhBFszEdctlpVVdU333xTUlLS1tbm5eUlf8ukp6cbjUbHS3fp\n0qUBe/KlS5feffddi8WiPK7X62NiYl588cWgoKBt27bV1NTYbDadTvfoo4/qdLrBZuLgrU0m\nU58rmg0GQ2xs7NatW1tbW3/3u9/V1dXZ7XaDwfDCCy/cfffdDloM45chPT1d2RwsW7YsLCxM\n+V9tbe2bb7559uzZqKiof/3Xf125cuXp06ePHj169erV+fPne3t7R0VFpaamnjp1qre3V35J\nSkrKJ598kp+f397ebrfbOzo6rl27dunSpYyMDHnNMRgMycnJJpPJarXKL7n33nvXrVuXnp4e\nHR092Bk506dPT05OPnPmjPJGM2fO/OCDD+QO2tbW1traeunSJZPJdM8998gz8fX1zcnJKSkp\nMZvN8kvi4+Orq6t37tzZ0tJit9tbWlrKy8tXrlwphOju7n7//fc/+eSTW7duPffcc08//fRd\nd931xRdfnDp1qrKyMjU11cvLy8nih2y0uLi4lJSUgoICZemWL18eGho6gsZ0oL6+/te//rXJ\nZHr44Yeff/75nJwco9FYVlYmhFixYsXkyZOd/IidbMZnn33WtQs1ZGHKM2/evJmbmyuEyMzM\nnDNnTv/PaHXW0sVxxpTYyRGhkwx6nRCi4GJDb+9333MJUYGfFty4cr3F2t1rl6QOq+1abXtj\nsyUpUjdp6qzhdiQny3ayv42g9Vzeu5z/IAZ08ODBrq4ueXrJkiVTp07V6/WZmZmBgYHFxcXB\nwcHPPffck08+GRER4fLi7Xb7Bx988NFHH4WGhj733HMbN25MTU09c+aMyWQ6depURUXFwoUL\nlZzkqvVlsHYYi16Un5//xz/+0WQyGQyGX/7ylxs3buzq6rp27buTDdLT05OTk2fNmrVw4cIZ\nM2bIJ6HKcnJy/Pz84uPjs7Kyjh07pnxAc+fOjYuLU562d+9eJQ5mZmYGBwcPq1Wd2Vo6uSIM\nq/UGNKzOIITo7e396KOPdu7cWV1d/eSTT27evLmrq+vEiRPnz5+vrq5esGCBl5eXg6VLTEwc\nsCeHh4enpaUdPXpUeTw9Pf2ll17y8fGRe1pQUNCFCxd+/OMfL126dLDVwXHDxsXFRUVFyb91\nZffff/+zzz4rhPDx8cnKyurs7KysrHz11Ve5tZmG6ZXO0UdnZ+cf//jHpqYmIcR9993n6+vr\n7++/Zs0aIUR5eflnn30mhNDpdDNnzpQ3yrK9e/dOmzZt+/btb7zxRlDQdzeJuHHjxokTJ+Tp\nsLCw1NRUH9VliTExMampqX0e7EOn0yUmJk6fPl155MCBA08++eSrr776xhtvpKenyw+WlpZ+\n+eWXynOMRqP6FmWXLl06duzYgw8+qMTH+vp6SZIkSXr33XflDd+iRYtSU1P1ev2cOXOWLFki\nhLh48eKf/vQnu93uTPHONJr8qv4LO4LGdGDHjh0WiyUsLGzZsmU6nc7Pz2/Dhg2PPvqo+jlO\nVutkM7pwoZwsTKZswhYuXCgG+ozCfS2J0UGzooO8BxoNLPdETWrc5F9umrtlXbwyCOylyuay\nksvKoVsnW8DJsp3vbyNrPXd9EM6z2WwFBQVhYWFbt25NS0tT50gXFn/ixInjx48LIYxGY1hY\nmE6nmz59+v333y//9/Lly3v27FGe7ML1ZTCu7UVXrlz58MMP5d/kWVlZoaGhRqPx/vvvV9KJ\nzWZ7/PHHk5OThRDx8fEDluTj4zPYQZLBON+qQ24tnV8RnG+90ZctF/bhhx8ePnxYCJGdnb1g\nwQK9Xq+04YULF65cuTLk0g3Yk4UQ06ZNmz9/vvJnWVmZuuz6+vrExMTU1FRlnv1nMuRbp6Wl\nqT/W8vJy9csbGhqWLFkSFRU1WFtBA/SDxam8vDx54yKEUI5EhISEyBP5+fnKf5Wjn0KIlJSU\nJ554IiQkJCIiYsGCBcrjyu/I0VDvz1u6dKm8G1mn0ynrp1x2a2ur8qe6ttra2p/85CcPPPDA\n5s2b5UcWL16s0+lOnjx5/vx5+RH1D1ZlWt6B70yFzjfaYAduXNKYVqu1oqJCCGE2m6uqqpTH\nV61apT79dmQf8WDN6MKFcr4wSZLkYKe+fKwPW2ezg92b2fMjMuaFT/Ix3BXuHxPhrzxe3Wjp\nbDQNuAiDtYCTZQ+3v42gS9z5D8J5Npvt7bfftlqtW7dunTp1av8nuKp45aZf586dU+4TER4e\nrjzh4sWL8oTL15fBuLAXHTt2TAkE06ZNkyf8/f3l/WpCiKKiIuWAsoNrk4d7PN35Vh3SaFYE\nB1uh0ZddXFysXG2q3D5JfSzLyW4/WNuqz5lramoqKSmRpyVJOnv2bHZ2tjMzcUCn061du1b5\ns6SkRPlO7OnpKSkpycjIGO48Mb4YjUajsiteIUmS0rO9vLyU8KcckpAkqaqqSt3XZeovV2UT\nI4RQdqG7ivorISIiIiAgoL29XQjR3d1dXFy8fPny/i+Ji4uTC160aFFsbGxra6t8a4wDBw4o\nz1H/0FFP5+XlZWZmOi5pxI02mBE3Znt7u7zRt9vtb775Zk5Ozvr16ydNmqTX61966SX5S2LE\n1Q7WjK5aqGEVVlNTI2+m1fclHpbI0EnKdMCk77//Wjt6rObrQTHOdiTnyx5Nf3Ph+uXaD8JJ\nvb297777bkVFxWuvvabsaRsBZ9pBiTsGg0H5dlR/TSpPHtP1ZTCj7EXy7bhl6jML1dP19fXq\nswNdwvlWHdJoVoThboWGVfZXX32lTCvhLyIiIj09/eLFi3FxcfI+xRGLjY1NSkpS8lx+fr68\nY/Xq1atdXV3q/Xkjtnjx4j179rS0tAgh7HZ7YWGhnCaLi4uDgoLUMRqaNPAvuebmZqWj9/T0\n/PSnP5Wn1TuN5VMNHMx6ZOdWj4BOp5s8ebIc7MTgt4JUfwFMmTJlypQpQoiWlpaamhrlcfX+\nS/V0XV3d7du3HV+y7pJGG8ywGjMsLCw4OFheq20221dffVVQULB69ers7GxlD/yIqx2wGUdm\nwIUaVmF9jsOOUp9o2NvVNuDTBmwBs9nsTNnx8fGu6m8uXL9G/0E4w263v/fee2fPnhVCXLt2\nLS0tbVRF/3+DtcOaNWuCg4ObmppSUlLk34FWq3XAAQDGdH0ZzGh60YIFC8LDw2/duiU/ov5l\nrj61Rv0WruJ8qzo2yg3vcLdCzpdtsVjUxy79/b/bi6/T6Z577rkhl8tJa9euVYLduXPn2tvb\nAwIC8vPzV6xYod4xOWJGozE7O1s5cF9QULB27VqdTnfq1Cn5ZIPRvwU82aDBTv3nSy+91H8b\n4eS1mXfGpEnf73eprx/4rhYD9ubbt2+r/5TP1ZX1ORXamWCn/tONjabT6Z588kn1GSodHR17\n9uw5fPjwCy+8kJSUNJpqx3qj4HxhkiTJNzqJiIhQn3/pIpLU2yPZe3X6vtvZAVvAybL7HMQZ\nTX8bay7vz7t3766trZWnd+7c+dprr41F8lDo9Xp5z4rFYiksLCwqKjKZTAOeWjSm68tgRtOL\nhBD33nuvchyzrq5OvnVtZ2enHE+FEElJScp+PhdyvlUdG+WGd7hbIefLbmpqUsdoi8USEBAw\nrPdyxty5c6dMmdLY2CiEsNlsJ06cSE9Pv3DhwmOPPeaqt1i+fPnnn38ud+n6+vqysrLo6OiL\nFy9u2rTJVW8BjzVwsFOvZkIIvV6vPh3BA6nXc+U3ljP6/NxX/1oa7h4Rj2q01NTUl19+eceO\nHfK2Q9bW1vaHP/zh1VdfjYqK8qhq1ZwvrLq6Wg7x99xzzxjETZ3O4NU/1Q3GybL7HKgaTX8b\nay7vIWFhYZIkyTvU29vb33///Z/+9Kdj+juhvb09Ly/v66+/tlqtGRkZ27Zta2ho2LZtW/9n\nesj64vy7xMfHP/XUU3/72996e3uPHDmycOHCgICA/fv3y1/kERERzzzzjMvLkznfqg64cMPr\nJCfL7unpUf9pNpvHItjpdLqVK1d+/PHH8p/5+fk2m23OnDnKyZSjFxQUtGDBAuWYRkFBQVJS\nUkJCggvfAh5r4FUoPDxcvcFtaGi4U/WMkPrOQMPa4Pbp5eq1us+ph0PuPvG0RktMTHzjjTc2\nb96sPk5ht9vlM0g8rVqF84Upd3BwyXHY/gzew9igO1m2C/vbWHN5D1mzZs2WLVuUr+0rV67k\n5eWNcp4O3L59e/v27fv377darUuWLHnqqaccD1zrCevLsN4lIyPjjTfeSE1Nraure+211371\nq1+dOXMmISHhiSeeeOWVV4Z17qPzhtuqg7nDK4LzZfc59fP69eujf/cBLVu2TLmopba2dv/+\n/Q5u1zIyK1asUKbPnDmTn5+/bNky174FPNPAwc7b21u9OhUVFfV5gt1u73/JhbtIkqQcgBCq\n82SdERQUFB39/chR6oVST0dERAy5ffGcRquoqJBvWWkwGJYuXfr6668/9thjynEieZeJ51Tb\nh5OFKcdhp02bNkaX7vuEzHD+yU6W7cL+NtbGoofExMQ88MADyp+ffvrpjRs3RlPkYOx2+x/+\n8AclGDm+8slz1pdhvUtHR8fnn39eUlLys5/97Pe///22bdt++9vfbt26NTs728Gto0ZjWK3q\n2J1cEYZVdlhYmPoQ9tGjR8dogIeAgAD1L9LAwMA5c+a49i2SkpKU3Rw9PT03b950yZUZ8Hx6\n9VqknGIiVJd5CyGKi4tNpu9v/dDb2/uXv/xFfU3TaMj3E5fvtO78q9TnCFdXV7e1fXeee0RE\nxLx584ZVwKpVq5Rp9SlQ6p/Lq1evHvC1fYq/Y43mmM1mO3v2rHLUz2g0rl69+oUXXpD/VH7K\ne0i1/TlT2PXr1+WjZkMeh+0SvkKIbpv9xJVGB0/rb1LYwHf/Gk3ZYnT97Q4bix6yfv165QJG\n+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\nQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbAD\nAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQ\nCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIId\nAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACA\nRhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDs\nAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAA\nNIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJg\nBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAA\noBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEE\nOwAAAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAA\nAI0g2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g\n2AEAAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEA\nAGgEwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgE\nwQ4AAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4A\nAEAjCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAj\nCHYAAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI0g2AEAAGgEwQ4AAEAjCHYA\nAAAaQbADAADQCIIdAACARhDsAAAANIJgBwAAoBEEOwAAAI34f2Df7rvCWAOuAAAAAElFTkSu\nQmCC", "text/plain": [ "Plot with title “”" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cnetplot(myenrich)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Enrichment using other ontologies\n", "\n", "We can also do an enrichment using other ontologies.\n", "\n", "### What is an Ontology?\n", "\n", "An ontology is a controlled dictionary for a category of terms. They allow to avoid ambigueties and misunderstandings, by defining the standard name of a term (e.g. epilepsy) and annotating all the possible synonyms (e.g. epilepsy syndrome)\n", "\n", "In bioinformatics the most famous ontology is GO, but there are many others. For example MeSH annotates medical terms, and Disease Ontology (subset of MeSH) annotates disease names.\n", "\n", "When an Ontology is provided with mappings between terms and genes, we can use it to calculate enrichment. For example, we can use Disease Ontology to see which diseases are enriched in our list:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false }, "scrolled": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
IDDescriptionGeneRatioBgRatiopvaluep.adjustqvaluegeneIDCount
DOID:0060116DOID:0060116 sensory system cancer 11/18 139/8018 8.183720e-16 2.168686e-13 8.011431e-14 3383/1869/890/1871/9134/9928/1029/3479/6573/3757/332 11
DOID:2174DOID:2174 ocular cancer 11/18 139/8018 8.183720e-16 2.168686e-13 8.011431e-14 3383/1869/890/1871/9134/9928/1029/3479/6573/3757/332 11
DOID:768DOID:768 retinoblastoma 10/18 116/8018 1.076659e-14 1.360963e-12 5.027589e-13 1869/890/1871/9134/9928/1029/3479/6573/3757/332 10
DOID:771DOID:771 retinal cell cancer 10/18 116/8018 1.076659e-14 1.360963e-12 5.027589e-13 1869/890/1871/9134/9928/1029/3479/6573/3757/332 10
DOID:4645DOID:4645 retinal cancer 10/18 118/8018 1.283927e-14 1.360963e-12 5.027589e-13 1869/890/1871/9134/9928/1029/3479/6573/3757/332 10
DOID:5679DOID:5679 retinal disease 12/18 455/8018 1.316791e-11 1.163165e-09 4.296896e-10 123/3383/1869/890/1871/9134/9928/1029/3479/6573/3757/33212
\n" ], "text/latex": [ "\\begin{tabular}{r|lllllllll}\n", " & ID & Description & GeneRatio & BgRatio & pvalue & p.adjust & qvalue & geneID & Count\\\\\n", "\\hline\n", "\tDOID:0060116 & DOID:0060116 & sensory system cancer & 11/18 & 139/8018 & 8.183720e-16 & 2.168686e-13 & 8.011431e-14 & 3383/1869/890/1871/9134/9928/1029/3479/6573/3757/332 & 11 \\\\\n", "\tDOID:2174 & DOID:2174 & ocular cancer & 11/18 & 139/8018 & 8.183720e-16 & 2.168686e-13 & 8.011431e-14 & 3383/1869/890/1871/9134/9928/1029/3479/6573/3757/332 & 11 \\\\\n", "\tDOID:768 & DOID:768 & retinoblastoma & 10/18 & 116/8018 & 1.076659e-14 & 1.360963e-12 & 5.027589e-13 & 1869/890/1871/9134/9928/1029/3479/6573/3757/332 & 10 \\\\\n", "\tDOID:771 & DOID:771 & retinal cell cancer & 10/18 & 116/8018 & 1.076659e-14 & 1.360963e-12 & 5.027589e-13 & 1869/890/1871/9134/9928/1029/3479/6573/3757/332 & 10 \\\\\n", "\tDOID:4645 & DOID:4645 & retinal cancer & 10/18 & 118/8018 & 1.283927e-14 & 1.360963e-12 & 5.027589e-13 & 1869/890/1871/9134/9928/1029/3479/6573/3757/332 & 10 \\\\\n", "\tDOID:5679 & DOID:5679 & retinal disease & 12/18 & 455/8018 & 1.316791e-11 & 1.163165e-09 & 4.296896e-10 & 123/3383/1869/890/1871/9134/9928/1029/3479/6573/3757/332 & 12 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " ID Description GeneRatio BgRatio pvalue \n", "DOID:0060116 DOID:0060116 sensory system cancer 11/18 139/8018 8.183720e-16\n", "DOID:2174 DOID:2174 ocular cancer 11/18 139/8018 8.183720e-16\n", "DOID:768 DOID:768 retinoblastoma 10/18 116/8018 1.076659e-14\n", "DOID:771 DOID:771 retinal cell cancer 10/18 116/8018 1.076659e-14\n", "DOID:4645 DOID:4645 retinal cancer 10/18 118/8018 1.283927e-14\n", "DOID:5679 DOID:5679 retinal disease 12/18 455/8018 1.316791e-11\n", " p.adjust qvalue \n", "DOID:0060116 2.168686e-13 8.011431e-14\n", "DOID:2174 2.168686e-13 8.011431e-14\n", "DOID:768 1.360963e-12 5.027589e-13\n", "DOID:771 1.360963e-12 5.027589e-13\n", "DOID:4645 1.360963e-12 5.027589e-13\n", "DOID:5679 1.163165e-09 4.296896e-10\n", " geneID Count\n", "DOID:0060116 3383/1869/890/1871/9134/9928/1029/3479/6573/3757/332 11 \n", "DOID:2174 3383/1869/890/1871/9134/9928/1029/3479/6573/3757/332 11 \n", "DOID:768 1869/890/1871/9134/9928/1029/3479/6573/3757/332 10 \n", "DOID:771 1869/890/1871/9134/9928/1029/3479/6573/3757/332 10 \n", "DOID:4645 1869/890/1871/9134/9928/1029/3479/6573/3757/332 10 \n", "DOID:5679 123/3383/1869/890/1871/9134/9928/1029/3479/6573/3757/332 12 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "library(DOSE)\n", "myenrich.do = enrichDO(mygenes)\n", "head(summary(myenrich.do))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "You can also plot the output of the enrichment.\n", "\n", "NOTE: due to a bug in the current version of clusterProfiler, the following plot does not currently work. (will try to fix it next week)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Warning message in data.matrix(x):\n", "“NAs introduced by coercion”Warning message in data.matrix(x):\n", "“NAs introduced by coercion”Warning message in min(x):\n", "“no non-missing arguments to min; returning Inf”Warning message in max(x):\n", "“no non-missing arguments to max; returning -Inf”Warning message in min(x):\n", "“no non-missing arguments to min; returning Inf”Warning message in max(x):\n", "“no non-missing arguments to max; returning -Inf”" ] }, { "ename": "ERROR", "evalue": "Error in plot.window(...): need finite 'xlim' values\n", "output_type": "error", "traceback": [ "Error in plot.window(...): need finite 'xlim' values\nTraceback:\n", "1. plot(summary(myenrich.do))", "2. plot(summary(myenrich.do))", "3. plot.data.frame(summary(myenrich.do))", "4. pairs(data.matrix(x), ...)", "5. pairs.default(data.matrix(x), ...)", "6. localPlot(x[, j], x[, i], xlab = \"\", ylab = \"\", axes = FALSE, \n . type = \"n\", ..., log = l)", "7. plot(...)", "8. plot.default(...)", "9. localWindow(xlim, ylim, log, asp, ...)", "10. plot.window(...)" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAA1BMVEX///+nxBvIAAAACXBI\nWXMAABJ0AAASdAHeZh94AAACw0lEQVR4nO3BgQAAAADDoPlTH+ECVQEAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA3yB4AAXYzOhIAAAAASUVORK5CYII=", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(summary(myenrich.do))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "## Getting gene coordinates: the TxDB packages\n", "\n", "Another package loaded with Homo.sapiens is a TxDb object, named TxDb.Hsapiens.UCSC.hg19.knownGene.\n", "\n", "This contains coordinates of genes, transcripts and exons in the human genome.\n", "\n", "We can get the gene coordinates using the genes() function:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GRanges object with 23056 ranges and 1 metadata column:\n", " seqnames ranges strand | gene_id\n", " | \n", " 1 chr19 [ 58858172, 58874214] - | 1\n", " 10 chr8 [ 18248755, 18258723] + | 10\n", " 100 chr20 [ 43248163, 43280376] - | 100\n", " 1000 chr18 [ 25530930, 25757445] - | 1000\n", " 10000 chr1 [243651535, 244006886] - | 10000\n", " ... ... ... ... ... ...\n", " 9991 chr9 [114979995, 115095944] - | 9991\n", " 9992 chr21 [ 35736323, 35743440] + | 9992\n", " 9993 chr22 [ 19023795, 19109967] - | 9993\n", " 9994 chr6 [ 90539619, 90584155] + | 9994\n", " 9997 chr22 [ 50961997, 50964905] - | 9997\n", " -------\n", " seqinfo: 93 sequences (1 circular) from hg19 genome" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "genes(TxDb.Hsapiens.UCSC.hg19.knownGene)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Getting promoters, cds, transcripts and exons\n", "\n", "Apart from genes, we can extract coordinates of transcripts(), exons(), cds(), and promoters(), using the homonymous function.\n", "\n", "The output of these functions can be customized to include additional columns, e.g. you may want to print both the exon and gene id:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GRanges object with 289969 ranges and 1 metadata column:\n", " seqnames ranges strand | exon_id\n", " | \n", " [1] chr1 [11874, 12227] + | 1\n", " [2] chr1 [12595, 12721] + | 2\n", " [3] chr1 [12613, 12721] + | 3\n", " [4] chr1 [12646, 12697] + | 4\n", " [5] chr1 [13221, 14409] + | 5\n", " ... ... ... ... ... ...\n", " [289965] chrY [27607404, 27607432] - | 277746\n", " [289966] chrY [27635919, 27635954] - | 277747\n", " [289967] chrY [59358329, 59359508] - | 277748\n", " [289968] chrY [59360007, 59360115] - | 277749\n", " [289969] chrY [59360501, 59360854] - | 277750\n", " -------\n", " seqinfo: 93 sequences (1 circular) from hg19 genome" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "exons(TxDb.Hsapiens.UCSC.hg19.knownGene)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GRanges object with 289969 ranges and 2 metadata columns:\n", " seqnames ranges strand | exon_id gene_id\n", " | \n", " [1] chr1 [11874, 12227] + | 1 100287102\n", " [2] chr1 [12595, 12721] + | 2 100287102\n", " [3] chr1 [12613, 12721] + | 3 100287102\n", " [4] chr1 [12646, 12697] + | 4 100287102\n", " [5] chr1 [13221, 14409] + | 5 100287102\n", " ... ... ... ... ... ... ...\n", " [289965] chrY [27607404, 27607432] - | 277746 NA\n", " [289966] chrY [27635919, 27635954] - | 277747 NA\n", " [289967] chrY [59358329, 59359508] - | 277748 NA\n", " [289968] chrY [59360007, 59360115] - | 277749 NA\n", " [289969] chrY [59360501, 59360854] - | 277750 NA\n", " -------\n", " seqinfo: 93 sequences (1 circular) from hg19 genome" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "exons(TxDb.Hsapiens.UCSC.hg19.knownGene, columns=c(\"exon_id\", \"gene_id\"))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "To get the list of all possible additional columns, we can use the columns() function as for the org.Hs.eg.db package:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'CDSID'
  2. \n", "\t
  3. 'CDSNAME'
  4. \n", "\t
  5. 'CDSCHROM'
  6. \n", "\t
  7. 'CDSSTRAND'
  8. \n", "\t
  9. 'CDSSTART'
  10. \n", "\t
  11. 'CDSEND'
  12. \n", "\t
  13. 'EXONID'
  14. \n", "\t
  15. 'EXONNAME'
  16. \n", "\t
  17. 'EXONCHROM'
  18. \n", "\t
  19. 'EXONSTRAND'
  20. \n", "\t
  21. 'EXONSTART'
  22. \n", "\t
  23. 'EXONEND'
  24. \n", "\t
  25. 'GENEID'
  26. \n", "\t
  27. 'TXID'
  28. \n", "\t
  29. 'EXONRANK'
  30. \n", "\t
  31. 'TXNAME'
  32. \n", "\t
  33. 'TXTYPE'
  34. \n", "\t
  35. 'TXCHROM'
  36. \n", "\t
  37. 'TXSTRAND'
  38. \n", "\t
  39. 'TXSTART'
  40. \n", "\t
  41. 'TXEND'
  42. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'CDSID'\n", "\\item 'CDSNAME'\n", "\\item 'CDSCHROM'\n", "\\item 'CDSSTRAND'\n", "\\item 'CDSSTART'\n", "\\item 'CDSEND'\n", "\\item 'EXONID'\n", "\\item 'EXONNAME'\n", "\\item 'EXONCHROM'\n", "\\item 'EXONSTRAND'\n", "\\item 'EXONSTART'\n", "\\item 'EXONEND'\n", "\\item 'GENEID'\n", "\\item 'TXID'\n", "\\item 'EXONRANK'\n", "\\item 'TXNAME'\n", "\\item 'TXTYPE'\n", "\\item 'TXCHROM'\n", "\\item 'TXSTRAND'\n", "\\item 'TXSTART'\n", "\\item 'TXEND'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'CDSID'\n", "2. 'CDSNAME'\n", "3. 'CDSCHROM'\n", "4. 'CDSSTRAND'\n", "5. 'CDSSTART'\n", "6. 'CDSEND'\n", "7. 'EXONID'\n", "8. 'EXONNAME'\n", "9. 'EXONCHROM'\n", "10. 'EXONSTRAND'\n", "11. 'EXONSTART'\n", "12. 'EXONEND'\n", "13. 'GENEID'\n", "14. 'TXID'\n", "15. 'EXONRANK'\n", "16. 'TXNAME'\n", "17. 'TXTYPE'\n", "18. 'TXCHROM'\n", "19. 'TXSTRAND'\n", "20. 'TXSTART'\n", "21. 'TXEND'\n", "\n", "\n" ], "text/plain": [ " [1] \"CDSID\" \"CDSNAME\" \"CDSCHROM\" \"CDSSTRAND\" \"CDSSTART\" \n", " [6] \"CDSEND\" \"EXONID\" \"EXONNAME\" \"EXONCHROM\" \"EXONSTRAND\"\n", "[11] \"EXONSTART\" \"EXONEND\" \"GENEID\" \"TXID\" \"EXONRANK\" \n", "[16] \"TXNAME\" \"TXTYPE\" \"TXCHROM\" \"TXSTRAND\" \"TXSTART\" \n", "[21] \"TXEND\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "columns(TxDb.Hsapiens.UCSC.hg19.knownGene)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Subsetting a GenomicRanges object\n", "\n", "GenomicRanges object can be subsetted like normal data frames, using the subset function.\n", "\n", "Chromosome names must be referred as \"seqnames\":" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GRanges object with 569 ranges and 1 metadata column:\n", " seqnames ranges strand | exon_id\n", " | \n", " [1] chr6 [10412551, 10412600] + | 86074\n", " [2] chr6 [10414300, 10415284] + | 86075\n", " [3] chr6 [10414914, 10415284] + | 86076\n", " [4] chr6 [10415520, 10415613] + | 86077\n", " [5] chr6 [10415520, 10416402] + | 86078\n", " ... ... ... ... ... ...\n", " [565] chr6 [19180383, 19180711] - | 93064\n", " [566] chr6 [19642656, 19642760] - | 93065\n", " [567] chr6 [19802395, 19804141] - | 93066\n", " [568] chr6 [19804402, 19804508] - | 93067\n", " [569] chr6 [19804906, 19804981] - | 93068\n", " -------\n", " seqinfo: 93 sequences (1 circular) from hg19 genome" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "subset(exons(TxDb.Hsapiens.UCSC.hg19.knownGene), \n", " seqnames==\"chr6\" & start>10000000 & end<20000000)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Importing a BED file\n", "\n", "BED and other formats (GFF, bigwig, etc..) can be imported using the import() function from rtracklayer.\n", "\n", "Let's import a simple BED file:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GRanges object with 2 ranges and 2 metadata columns:\n", " seqnames ranges strand | name score\n", " | \n", " [1] chr8 [145701383, 145702686] + | mark1 12\n", " [2] chr20 [ 33850820, 33852880] - | mark2 52\n", " -------\n", " seqinfo: 2 sequences from an unspecified genome; no seqlengths" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "library(rtracklayer)\n", "marks = import(\"https://raw.githubusercontent.com/dalloliogm/belgrade_unix_intro/master/data/genes/example.bed\",\n", " format=\"bed\")\n", "marks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you have trouble downloading the file, just copy these contents and save it to a file called example.bed:\n", "\n", "```\n", "chr8\t145701382\t145702686\tmark1\t12\t+\n", "chr20\t33850819\t33852880\tmark2\t52\t-\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Operations on GenomicRanges: nearest\n", "\n", "The BED file just imported contains coordinates of two regions.\n", "\n", "We can use the nearest() function to find the genes that are closer to these regions:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GRanges object with 2 ranges and 2 metadata columns:\n", " seqnames ranges strand | gene_id mark\n", " | \n", " 90990 chr8 [145691738, 145699499] + | 90990 mark1\n", " 55741 chr20 [ 33703160, 33865960] - | 55741 mark2\n", " -------\n", " seqinfo: 93 sequences (1 circular) from hg19 genome" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "human.genes = genes(TxDb.Hsapiens.UCSC.hg19.knownGene)\n", "closest.genes = human.genes[nearest(marks, human.genes)]\n", "closest.genes$mark = marks$name\n", "closest.genes" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Annotation Hub\n", "\n", "AnnotationHub is a recently introduced library, which allows to download data from several sources, directly into R:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "AnnotationHub with 35306 records\n", "# snapshotDate(): 2016-08-15 \n", "# $dataprovider: BroadInstitute, UCSC, Ensembl, NCBI, Haemcode, Inparanoid8,...\n", "# $species: Homo sapiens, Mus musculus, Bos taurus, Pan troglodytes, Danio r...\n", "# $rdataclass: GRanges, FaFile, BigWigFile, OrgDb, ChainFile, Inparanoid8Db,...\n", "# additional mcols(): taxonomyid, genome, description, tags, sourceurl,\n", "# sourcetype \n", "# retrieve records with, e.g., 'object[[\"AH2\"]]' \n", "\n", " title \n", " AH2 | Ailuropoda_melanoleuca.ailMel1.69.dna.toplevel.fa \n", " AH3 | Ailuropoda_melanoleuca.ailMel1.69.dna_rm.toplevel.fa\n", " AH4 | Ailuropoda_melanoleuca.ailMel1.69.dna_sm.toplevel.fa\n", " AH5 | Ailuropoda_melanoleuca.ailMel1.69.ncrna.fa \n", " AH6 | Ailuropoda_melanoleuca.ailMel1.69.pep.all.fa \n", " ... ... \n", " AH49436 | Xiphophorus_maculatus.Xipmac4.4.2.dna_rm.toplevel.fa\n", " AH49437 | Xiphophorus_maculatus.Xipmac4.4.2.dna_sm.toplevel.fa\n", " AH49438 | Xiphophorus_maculatus.Xipmac4.4.2.dna.toplevel.fa \n", " AH49439 | Xiphophorus_maculatus.Xipmac4.4.2.ncrna.fa \n", " AH49440 | Xiphophorus_maculatus.Xipmac4.4.2.pep.all.fa " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "library(AnnotationHub)\n", "ahub = AnnotationHub()\n", "ahub\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Getting data with AnnotationHub\n", "\n", "For an overview of the data available via AnnotationHub, we can run the display function:\n", "\n", "```\n", "ahub = AnnotationHub()\n", "display(ahub)\n", "```\n", "\n", "In alternative, we can use the subset function:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "AnnotationHub with 5958 records\n", "# snapshotDate(): 2016-08-15 \n", "# $dataprovider: UCSC\n", "# $species: Homo sapiens\n", "# $rdataclass: GRanges, ChainFile, TwoBitFile\n", "# additional mcols(): taxonomyid, genome, description, tags, sourceurl,\n", "# sourcetype \n", "# retrieve records with, e.g., 'object[[\"AH5012\"]]' \n", "\n", " title \n", " AH5012 | Chromosome Band \n", " AH5013 | STS Markers \n", " AH5014 | FISH Clones \n", " AH5015 | Recomb Rate \n", " AH5016 | ENCODE Pilot \n", " ... ... \n", " AH27618 | wgEncodeUwTfbsWerirb1CtcfStdPkRep2.narrowPeak.gz \n", " AH27619 | wgEncodeUwTfbsWi38CtcfStdHotspotsRep1.broadPeak.gz\n", " AH27620 | wgEncodeUwTfbsWi38CtcfStdHotspotsRep2.broadPeak.gz\n", " AH27621 | wgEncodeUwTfbsWi38CtcfStdPkRep1.narrowPeak.gz \n", " AH27622 | wgEncodeUwTfbsWi38CtcfStdPkRep2.narrowPeak.gz " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "subset(ahub, species == \"Homo sapiens\" & dataprovider == \"UCSC\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "For more complex queries, we can also use query(): " ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "AnnotationHub with 3 records\n", "# snapshotDate(): 2016-08-15 \n", "# $dataprovider: UCSC\n", "# $species: Homo sapiens\n", "# $rdataclass: GRanges\n", "# additional mcols(): taxonomyid, genome, description, tags, sourceurl,\n", "# sourcetype \n", "# retrieve records with, e.g., 'object[[\"AH5224\"]]' \n", "\n", " title \n", " AH5224 | 28-Way Most Cons\n", " AH5225 | 17-Way Most Cons\n", " AH5354 | Most Conserved " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "query(subset(ahub, species == \"Homo sapiens\" & dataprovider == \"UCSC\"), \"Most cons\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Download a dataset from AnnotationHub\n", "\n", "To download a dataset, we can use double square brackets, and the id of the dataset:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GRanges object with 2040420 ranges and 2 metadata columns:\n", " seqnames ranges strand | name score\n", " | \n", " [1] chr1 [25165820, 25165859] * | lod=22 299\n", " [2] chr1 [28311541, 28311557] * | lod=14 244\n", " [3] chr1 [29360118, 29360136] * | lod=14 244\n", " [4] chr1 [71303152, 71303427] * | lod=462 674\n", " [5] chr1 [88080377, 88080627] * | lod=485 680\n", " ... ... ... ... ... ... ...\n", " [2040416] chr6_qbl_hap2 [4564430, 4564669] * | lod=40 373\n", " [2040417] chr6_qbl_hap2 [4564824, 4564899] * | lod=26 320\n", " [2040418] chr6_qbl_hap2 [4564975, 4565246] * | lod=93 477\n", " [2040419] chr6_qbl_hap2 [4565271, 4565538] * | lod=102 488\n", " [2040420] chr6_qbl_hap2 [4565616, 4565661] * | lod=15 252\n", " -------\n", " seqinfo: 49 sequences from hg18 genome" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "multi.24 = ahub[[\"AH5224\"]]\n", "multi.24" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Getting conservation scores for custom intervals\n", "\n", "Now that we have conservation scores from the UCSC-Multiz table, we can get the scores for the marks bed file we imported earlier:\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GRanges object with 10 ranges and 2 metadata columns:\n", " seqnames ranges strand | name score\n", " | \n", " [1] chr8 [145701434, 145701456] * | lod=19 281\n", " [2] chr8 [145701503, 145701510] * | lod=13 235\n", " [3] chr8 [145701542, 145701585] * | lod=35 357\n", " [4] chr8 [145701653, 145701678] * | lod=24 310\n", " [5] chr8 [145702037, 145702121] * | lod=36 360\n", " [6] chr8 [145702184, 145702262] * | lod=65 433\n", " [7] chr8 [145702272, 145702329] * | lod=36 360\n", " [8] chr8 [145702421, 145702512] * | lod=46 390\n", " [9] chr20 [ 33852458, 33852471] * | lod=15 252\n", " [10] chr20 [ 33852712, 33852970] * | lod=428 665\n", " -------\n", " seqinfo: 49 sequences from hg18 genome" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "subsetByOverlaps(multi.24, marks)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another useful function is mergeByOverlaps, which combines information from both ranges:\n" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "DataFrame with 10 rows and 6 columns\n", " marks name score\n", " \n", "1 chr8:+:[145701383, 145702686] mark1 12\n", "2 chr8:+:[145701383, 145702686] mark1 12\n", "3 chr8:+:[145701383, 145702686] mark1 12\n", "4 chr8:+:[145701383, 145702686] mark1 12\n", "5 chr8:+:[145701383, 145702686] mark1 12\n", "6 chr8:+:[145701383, 145702686] mark1 12\n", "7 chr8:+:[145701383, 145702686] mark1 12\n", "8 chr8:+:[145701383, 145702686] mark1 12\n", "9 chr20:-:[ 33850820, 33852880] mark2 52\n", "10 chr20:-:[ 33850820, 33852880] mark2 52\n", " multi.24 name.1 score.1\n", " \n", "1 chr8:*:[145701434, 145701456] lod=19 281\n", "2 chr8:*:[145701503, 145701510] lod=13 235\n", "3 chr8:*:[145701542, 145701585] lod=35 357\n", "4 chr8:*:[145701653, 145701678] lod=24 310\n", "5 chr8:*:[145702037, 145702121] lod=36 360\n", "6 chr8:*:[145702184, 145702262] lod=65 433\n", "7 chr8:*:[145702272, 145702329] lod=36 360\n", "8 chr8:*:[145702421, 145702512] lod=46 390\n", "9 chr20:*:[ 33852458, 33852471] lod=15 252\n", "10 chr20:*:[ 33852712, 33852970] lod=428 665" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mergeByOverlaps(marks, multi.24) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This can be used to calculate the average conservation by region. In this case we will use the dplyr library for the aggregation:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "
marks.seqnamesmean
chr8 340.75
chr20 458.50
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " marks.seqnames & mean\\\\\n", "\\hline\n", "\t chr8 & 340.75\\\\\n", "\t chr20 & 458.50\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " marks.seqnames mean \n", "1 chr8 340.75\n", "2 chr20 458.50" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "library(dplyr)\n", "select = AnnotationDbi::select\n", "\n", "mergeByOverlaps(marks, multi.24) %>% as.data.frame %>% group_by(marks.seqnames) %>% summarise(mean=mean(score.1))\n" ] } ], "metadata": { "celltoolbar": "Slideshow", "hide_input": false, "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "3.3.1" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": true, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }