[
  {
    "objectID": "index.html",
    "href": "index.html",
    "title": "Orchestrating Spatial Transcriptomics Analysis with Bioconductor",
    "section": "",
    "text": "OSTA v1.1.10, compiled on 13 Mar 2026, using Bioconductor v3.23 with R v4.6.0. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPrevoius\n\n\n\nNext\n\n\n\n\n\nWelcome\nThis is the website for the online book Orchestrating Spatial Transcriptomics Analysis with Bioconductor.\nThis book provides reproducible examples and discussion on computational analysis workflows for spatial omics data using Bioconductor in R. The book contains chapters describing individual analysis steps as well as extended workflows, each with examples including R code and datasets. In some examples, R code is also integrated with Python tools.\nThe book is organized into several parts, consisting of introductory materials, and analysis steps and workflows for the two main streams of spatial omics data: sequencing-based and imaging-based.\nAdditional materials on analysis workflows for single-cell (non-spatial) data, as well as further introductory materials on R and Bioconductor, can be found in the related book Orchestrating Single-Cell Analysis with Bioconductor (OSCA).\n\n\n Back to top",
    "crumbs": [
      "Welcome"
    ]
  },
  {
    "objectID": "pages/bkg-introduction.html",
    "href": "pages/bkg-introduction.html",
    "title": "1  Introduction",
    "section": "",
    "text": "1.1 Introduction\nThis book provides reproducible examples and discussion on computational analysis workflows for spatial omics data using Bioconductor in R. The book contains chapters describing individual analysis steps as well as extended workflows, each with examples including R code and datasets. In some examples, R code is also integrated with Python tools.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>1</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/bkg-introduction.html#contents",
    "href": "pages/bkg-introduction.html#contents",
    "title": "1  Introduction",
    "section": "\n1.2 Contents",
    "text": "1.2 Contents\nBook chapters are organized into several parts:\n\nBackground: introduction and background on spatial omics, data representations, related R/Bioconductor infrastructure, and interoperability with Python\nSequencing-based platforms: analysis steps and workflows for data from sequencing-based platforms\nImaging-based platforms: analysis steps and workflows for data from imaging-based platforms\nPlatform-independent analyses: downstream analyses and workflows that are applicable to data from both types of platforms\nMultiple-sample analyses: analyses and workflows applicable to datasets consisting of multiple samples (e.g. multiple tissue sections)\nCross-platform analyses: downstream analyses and workflows to integrate or combine information across platforms\nAppendices: acknowledgments, related resources, and session information",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>1</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/bkg-introduction.html#scope-and-who-this-book-is-for",
    "href": "pages/bkg-introduction.html#scope-and-who-this-book-is-for",
    "title": "1  Introduction",
    "section": "\n1.3 Scope and who this book is for",
    "text": "1.3 Scope and who this book is for\nThe aim of this book is to demonstrate key principles of computational analysis workflows for spatial omics data through examples and discussion, including reproducible R code and a variety of datasets. We assume some familiarity with R programming and an understanding of the types of biological questions that single-cell and spatial omics can be used to answer. Previous experience with Bioconductor is not required.\nThe book covers both preprocessing and downstream analyses, so the starting point can be either raw spatial omics data, or processed spot/cell-level expression matrices and sets of spatial coordinates as the main inputs. Since preprocessing procedures vary from platform to platform, we cover some key examples only.\nFor most analysis steps, multiple methods are available to choose from. In general, we showcase methods that we have found to work well and are computationally scalable, with a preference for methods available through Bioconductor. The book is not intended to provide a comprehensive listing of all available methods.\nThe code examples will only include methods available as software packages from either Bioconductor or CRAN (in R) or PyPI (in Python). This restriction helps ensure long-term stability and maintainability, enables regular testing via the Bioconductor build system, and makes it easier for readers to adapt the examples to integrate new methods or build extended Bioconductor-based workflows. Methods available from GitHub are also discussed in the text, but are not included in the code examples.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>1</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/bkg-introduction.html#bioconductor",
    "href": "pages/bkg-introduction.html#bioconductor",
    "title": "1  Introduction",
    "section": "\n1.4 Bioconductor",
    "text": "1.4 Bioconductor\nBioconductor is an “open source and open development” project providing a cohesive and flexible framework for rigorous and reproducible analyses of high-throughput genomic data in R (Carey 2025; Huber et al. 2015; Gentleman et al. 2004). Bioconductor provides access to more than 2,000 contributed R packages, as well as infrastructure maintained by the Bioconductor Core Team, providing a rich analysis environment for users.\nA key strength of the Bioconductor framework is the modularity and open development philosophy. Packages are contributed by numerous research groups, with the Bioconductor Core Team coordinating the overall project and maintaining infrastructure, build testing, and development guidelines. Contributed packages use consistent data structures, enabling users to connect packages developed by different research groups to build analysis workflows that include the latest state-of-the-art methods. Bioconductor packages also include comprehensive documentation, including extended tutorials and package vignettes.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>1</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/bkg-introduction.html#additional-introductory-resources",
    "href": "pages/bkg-introduction.html#additional-introductory-resources",
    "title": "1  Introduction",
    "section": "\n1.5 Additional introductory resources",
    "text": "1.5 Additional introductory resources\nFor readers who are new to R and/or Bioconductor, additional useful resources include:\n\nThe Orchestrating Single-Cell Analysis with Bioconductor (OSCA) online book (Amezquita et al. 2020), which contains comprehensive materials on analysis workflows for single-cell (non-spatial) data, as well as further introductory materials on R and Bioconductor.\nR for Data Science (2e) (online book) provides an excellent introduction to R. Additional related books include Advanced R and ggplot2: Elegant Graphics for Data Analysis (3e).\nData Carpentry and Software Carpentry provide online lesson materials on scientific computing skills including R programming, Python programming, the Unix shell, and version control.\nThe R/Bioconductor Data Science Team at the Lieber Institute for Brain Development has a detailed guide of free resources and videos to learn more about R and Bioconductor, as well as YouTube videos, including some of the basics of Bioconductor and infrastructure for storing gene expression data, and a wide range of topics in genomics.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>1</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/bkg-introduction.html#feedback-and-suggestions",
    "href": "pages/bkg-introduction.html#feedback-and-suggestions",
    "title": "1  Introduction",
    "section": "\n1.6 Feedback and suggestions",
    "text": "1.6 Feedback and suggestions\nWe welcome feedback, suggestions, and contributions from readers in the research community. These may be provided as GitHub issues for further discussion with the developers. Note that all methods used within code examples must be available as packages from either Bioconductor or CRAN (in R) or PyPI (in Python), as discussed above.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>1</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/bkg-introduction.html#appendix",
    "href": "pages/bkg-introduction.html#appendix",
    "title": "1  Introduction",
    "section": "\n1.7 Appendix",
    "text": "1.7 Appendix\nReferences\n\n\n\n\nAmezquita, Robert A., Aaron T. L. Lun, Etienne Becht, Vince J. Carey, Lindsay N. Carpp, Ludwig Geistlinger, Federico Marini, et al. 2020. “Orchestrating Single-Cell Analysis with Bioconductor.” Nature Methods 17: 137–45. https://doi.org/10.1038/s41592-019-0654-x.\n\n\nCarey, Vincent J. 2025. “Bioconductor: Planning a Third Decade of Comprehensive Support for Genomic Data Science.” Patterns 6 (101319, 7). https://doi.org/10.1016/j.patter.2025.101319.\n\n\nGentleman, Robert C., Vincent J. Carey, Ben Bolstad Douglas M Bates, Marcel Dettling, Sandrine Dudoit, Byron Ellis, Laurent Gautier, et al. 2004. “Bioconductor: Open Software Development for Computational Biology and Bioinformatics.” Genome Biology 5 (R80). https://doi.org/10.1186/gb-2004-5-10-r80.\n\n\nHuber, Wolfgang, Vincent J. Carey, Robert Gentleman, Simon Anders, Marc Carlson, Benilton S. Carvalho, Hector Corrada Bravo, et al. 2015. “Orchestrating High-Throughput Genomic Analysis with Bioconductor.” Nature Methods 12: 115–21. https://doi.org/10.1038/nmeth.3252.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>1</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/bkg-spatial-omics.html",
    "href": "pages/bkg-spatial-omics.html",
    "title": "2  Spatial omics",
    "section": "",
    "text": "2.1 Introduction\nSpatial omics (or spatially-resolved omics) refers to a set of recently-developed technologies that enable molecular measurements (e.g. gene expression) with spatial resolution. Spatially-resolved transcriptomics and spatial proteomics were named the Method of the Year 2020 (“Method of the Year 2020: Spatially Resolved Transcriptomics” 2021) and Method of the Year 2024 (“Method of the Year 2024: Spatial Proteomics” 2024) by the journal Nature Methods, and have each become widely applied in a range of biological contexts.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>2</span>  <span class='chapter-title'>Spatial omics</span>"
    ]
  },
  {
    "objectID": "pages/bkg-spatial-omics.html#introduction",
    "href": "pages/bkg-spatial-omics.html#introduction",
    "title": "2  Spatial omics",
    "section": "",
    "text": "2.1.1 Data modalities and technological platforms\nIn general, there are now a wide variety of data modalities that can be measured (e.g. gene expression, chromatin accessibility, histone modifications, and antibody-based protein abundance), with diverse measurement streams (e.g. high-throughput sequencing, imaging, and mass spectrometry), all of which give molecular measurements in a spatial context for a given tissue area.\nTechnological platforms differ drastically in terms of the experimental procedures used (sequence or ion counts versus fluorescence intensities), the feature space (dozens of proteins in imaging mass cytometry, to full transcriptome in Visium or Visium HD, to genome-wide assessments of chromatin accessibility), and spatial resolution (e.g. single-cell resolution, or multiple cells per measurement location). In general, this also means there are tradeoffs between the spatial resolution, number of features, and sensitivity of the assays.\nPlatforms may be broadly grouped into “sequencing-based” and “imaging-based” technologies; some of the latter can be further classified into “molecule-based” or not. The main platforms are described in more detail below. Sequencing-based platforms tend to provide higher gene coverage (e.g. full transcriptome), while imaging-based platforms tend to provide higher spatial resolution (e.g. single-cell or subcellular resolution).\n\n2.1.2 Commercially available platforms\nIn this book, we focus on commercially available platforms, since these are the most widely used and accessible. However, the data representations are often similar for other related platforms. The initial chapters of this book are split into separate parts for sequencing-based and imaging-based platforms, since several analysis techniques are specific to each of these, followed by chapters for platform-independent and other analyses.\nIn the sections below, we give a brief overview of several commercially available platforms. For more in-depth background, several recent reviews are available, covering available platforms, analysis methods, outstanding challenges, and additional topics (Bressan, Battistoni, and Hannon 2023; Moses and Pachter 2022; Tian, Chen, and Macosko 2023; Lundberg and Borner 2019; Gulati et al. 2025; Paul et al. 2021; Mund, Brunner, and Mann 2022; Palla et al. 2022; Moffitt, Lundberg, and Heyn 2022; Rao et al. 2021; Cheng et al. 2023).",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>2</span>  <span class='chapter-title'>Spatial omics</span>"
    ]
  },
  {
    "objectID": "pages/bkg-spatial-omics.html#sequencing-based-spatial-transcriptomics",
    "href": "pages/bkg-spatial-omics.html#sequencing-based-spatial-transcriptomics",
    "title": "2  Spatial omics",
    "section": "\n2.2 Sequencing-based spatial transcriptomics",
    "text": "2.2 Sequencing-based spatial transcriptomics\nSequencing-based platforms capture molecular information (which could represent gene expression, DNA binding, antibody-conjugated tags, etc.) at a set of spatial measurement locations for a tissue section placed on a slide. The spatial location is tagged via a unique barcode for each measurement location, and reads are summarized (e.g. as counts) according to features such as genes or bins.\nThe advantage of sequencing is that typically the features represent an untargeted set of molecular entities, thus not requiring panel selection and optimization. In practice, many spatial assays still require panels (e.g. spatial variants of CITE-seq (Liu et al. 2023)), and assays such as Visium (v2 WT) and Visium HD (WT) use transcriptome-wide gene capture panels, and thus cannot always be applied to non-model organisms.\nSpatial resolution varies between platforms, and depends on the size and spacing between the spatial measurement locations. Depending on the spatial resolution and tissue cell density in a given biological sample, each spatial measurement location may contain zero, one, or multiple cells. For these platforms, the spatial measurement locations are often referred to as “spots”, “beads”, or “bins”.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>2</span>  <span class='chapter-title'>Spatial omics</span>"
    ]
  },
  {
    "objectID": "pages/bkg-spatial-omics.html#imaging-based-spatial-transcriptomics",
    "href": "pages/bkg-spatial-omics.html#imaging-based-spatial-transcriptomics",
    "title": "2  Spatial omics",
    "section": "\n2.3 Imaging-based spatial transcriptomics",
    "text": "2.3 Imaging-based spatial transcriptomics\nImaging-based platforms (or molecule-based platforms) identify the spatial locations of individual RNA molecules by sequential in situ hybridization (ISH) or in situ sequencing (ISS), for targeted panels of up to hundreds or thousands of genes. Since transcripts are individually identified, the raw data is collected at subcellular spatial resolution.\nImage segmentation is used to identify the boundaries of individual cells or nuclei, and assign RNA molecules to cells or nuclei during preprocessing. Segmentation into cells is challenging, especially due to overlapping cells (i.e. cells have 3-dimensional organization and the plane that a tissue section represents may have material from multiple cells at a given x/y location). After segmentation, gene counts may be aggregated to the cell level, or analyses may be performed directly at the molecule level. Cell-level analyses may re-use methods developed for spot-level spatial transcriptomics data or single-cell data.\nThe selection of targeted sets of biologically informative genes for an experiment, referred to as panel design, is a key consideration during experimental design (Baran and Doğan 2023; Kuemmerle et al. 2024; Y. Zhang et al. 2024). Several commercially available options for targeted gene sets suitable for certain biological contexts are available.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>2</span>  <span class='chapter-title'>Spatial omics</span>"
    ]
  },
  {
    "objectID": "pages/bkg-spatial-omics.html#other-types-of-spatial-omics-data",
    "href": "pages/bkg-spatial-omics.html#other-types-of-spatial-omics-data",
    "title": "2  Spatial omics",
    "section": "\n2.4 Other types of spatial omics data",
    "text": "2.4 Other types of spatial omics data\n\n2.4.1 Spatial proteomics\nImaging-based proteomics, also called multiplexed imaging, represents a broad array of spatial detection technologies, the vast majority of which are antibody-based. Semba and Ishimoto (2024) categorize these antibody-based technologies into either “single-shot” (e.g. imaging mass cytometry; IMC) or “multicycle” (e.g. Lunaphore) imaging approaches. Single-shot refers to the set of, for example, heavy metal ions (representing protein presence), resulting from a laser ablation of a pre-stained sample. Multicycle approaches refer to sets of antibodies that are sequentially stained and stripped, with an imaging step at each cycle. The two most common single-shot spatial proteomics platforms are IMC and MIBIscope, with maximum pixel resolution of 0.4 µm and 1 µm, respectively, and each platform measuring upwards of 40 channels (proteins) (Semba and Ishimoto 2024).\n\n2.4.2 Other modalities\nWhile the focus of the data analyses in this book is primarily on spatially-resolved gene and protein expression, here we also mention other modalities or data structures that are adjacent or emerging. These will not be directly covered in the data examples in the book, but some of the analysis steps discussed in the chapters may have applications to these other contexts.\nTissues are three-dimensional (3D) entities that are represented as 2D slices for many of the analyses discussed here. However, there will be various emerging datasets that have measurements made along a third dimension (Schott et al. 2024; Vickovic et al. 2022), whether this is directly measured (e.g. 3D imaging) or indirectly reconstructed from multiple per-slice measurements (Schott et al. 2025). In some cases, the analyses discussed in this book will either still apply, or can be applied successively on multiple slices.\nMulti-omics datasets (e.g. RNA expression and protein abundance, or RNA expression and chomatin accessibility) that are collected in a spatial context are now emerging (e.g. (Liu et al. 2023; D. Zhang et al. 2023)). Epigenomic modalities, in particular, may require alternative preprocessing steps, but some of the analyses mentioned in the chapters here could be re-used (e.g. clustering given a low-dimensional embedding) or adapted.\nAnother emerging modality within a spatial context is the measurement of metabolites, lipids, or proteins via mass spectrometry imaging (MSI), such as MALDI-MSI (H. Zhang et al. 2024); these assays are sometimes known as imaging mass spectrometry. MSI typically involves coating tissues with a matrix layer that promotes the ionization of analytes of interest (e.g. glycans; (Palomino and Muddiman 2025)). Integration of MSI with other spatial modalities (e.g. to reveal cell types) may also be promising.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>2</span>  <span class='chapter-title'>Spatial omics</span>"
    ]
  },
  {
    "objectID": "pages/bkg-spatial-omics.html#appendix",
    "href": "pages/bkg-spatial-omics.html#appendix",
    "title": "2  Spatial omics",
    "section": "\n2.5 Appendix",
    "text": "2.5 Appendix\nReferences\n\n\n\n\nBaran, Yusuf, and Berat Doğan. 2023. “scMAGS: Marker Gene Selection from scRNA-Seq Data for Spatial Transcriptomics Studies.” Computers in Biology and Medicine 155 (106634). https://doi.org/10.1016/j.compbiomed.2023.106634.\n\n\nBressan, Dario, Giorgia Battistoni, and Gregory J. Hannon. 2023. “The Dawn of Spatial Omics.” Science 381. https://doi.org/10.1126/science.abq4964.\n\n\nCheng, Mengnan, Yujia Jiang, Jiangshan Xu, Alexios-Fotios A. Mentis, Shuai Wang, Huiwen Zheng, Sunil Kumar Sahu, Longqi Liu, and Xun Xu. 2023. “Spatially Resolved Transcriptomics: A Comprehensive Review of Their Technological Advances, Applications, and Challenges.” Journal of Genetics and Genomics 50: 625–40. https://doi.org/10.1016/j.jgg.2023.03.011.\n\n\nGulati, Gunsagar S., Jeremy Philip D’Silva, Yunhe Liu, Linghua Wang, and Aaron M. Newman. 2025. “Profiling Cell Identity and Tissue Architecture with Single-Cell and Spatial Transcriptomics.” Nature Reviews Molecular Cell Biology 26: 11–31. https://doi.org/10.1038/s41580-024-00768-2.\n\n\nKuemmerle, Louis B., Malte D. Luecken, Alexandra B. Firsova, Lisa Barros de Andrade e Sousa, Lena Straßer, Ilhem Isra Mekki, Francesco Campi, et al. 2024. “Probe Set Selection for Targeted Spatial Transcriptomics.” Nature Methods 21: 2260–70. https://doi.org/10.1038/s41592-024-02496-z.\n\n\nLiu, Yang, Marcello DiStasio, Graham Su, Hiromitsu Asashima, Archibald Enninful, Xiaoyu Qin, Yanxiang Deng, et al. 2023. “High-Plex Protein and Whole Transcriptome Co-Mapping at Cellular Resolution with Spatial CITE-Seq.” Nature Biotechnology 41: 1405–9. https://doi.org/10.1038/s41587-023-01676-0.\n\n\nLundberg, Emma, and Georg H. H. Borner. 2019. “Spatial Proteomics: A Powerful Discovery Tool for Cell Biology.” Nature Reviews Molecular Cell Biology 20: 285–302. https://doi.org/10.1038/s41580-018-0094-y.\n\n\n“Method of the Year 2020: Spatially Resolved Transcriptomics.” 2021. Nature Methods 18: 1. https://doi.org/10.1038/s41592-020-01042-x.\n\n\n“Method of the Year 2024: Spatial Proteomics.” 2024. Nature Methods 21: 2195–96. https://doi.org/10.1038/s41592-024-02565-3.\n\n\nMoffitt, Jeffrey R., Emma Lundberg, and Holger Heyn. 2022. “The Emerging Landscape of Spatial Profiling Technologies.” Nature Reviews Genetics 23: 741–59. https://doi.org/10.1038/s41576-022-00515-3.\n\n\nMoses, Lambda, and Lior Pachter. 2022. “Museum of Spatial Transcriptomics.” Nature Methods 19: 534–46. https://doi.org/10.1038/s41592-022-01409-2.\n\n\nMund, Andreas, Andreas-David Brunner, and Matthias Mann. 2022. “Unbiased Spatial Proteomics with Single-Cell Resolution in Tissues.” Molecular Cell 82: 2335–49. https://doi.org/10.1016/j.molcel.2022.05.022.\n\n\nPalla, Giovanni, David S. Fischer, Aviv Regev, and Fabian J. Theis. 2022. “Spatial Components of Molecular Tissue Biology.” Nature Biotechnology 40: 308–18. https://doi.org/10.1038/s41587-021-01182-1.\n\n\nPalomino, Tana V., and David C. Muddiman. 2025. “Mass Spectrometry Imaging of n-Linked Glycans: Fundamentals and Recent Advances.” Mass Spectrometry Reviews, 1–25. https://doi.org/10.1002/mas.21895.\n\n\nPaul, Indranil, Carl White, Isabella Turcinovic, and Andrew Emili. 2021. “Imaging the Future: The Emerging Era of Single-Cell Spatial Proteomics.” The FEBS Journal 288: 6990–7001. https://doi.org/10.1111/febs.15685.\n\n\nRao, Anjali, Dalia Barkley, Gustavo S. França, and Itai Yanai. 2021. “Exploring Tissue Architecture Using Spatial Transcriptomics.” Nature 596: 211–20. https://doi.org/https://doi.org/10.1038/s41586-021-03634-9.\n\n\nSchott, Marie, Daniel León-Periñán, Elena Splendiani, Elisabetta Ferretti, Giuseppe Macino, Nikos Karaiskos, and Nikolaus Rajewsky. 2025. “Protocol for High-Resolution 3D Spatial Transcriptomics Using Open-ST.” STAR Protocols 6 (103521, 1). https://doi.org/10.1016/j.xpro.2024.103521.\n\n\nSchott, Marie, Daniel León-Periñán, Elena Splendiani, Leon Strenger, Jan Robin Licha, Tancredi Massimo Pentimalli, Simon Schallenberg, et al. 2024. “Open-ST: High-Resolution Spatial Transcriptomics in 3D.” Cell 187: 3953–72. https://doi.org/10.1016/j.cell.2024.05.055.\n\n\nSemba, Takashi, and Takatsugu Ishimoto. 2024. “Spatial Analysis by Current Multiplexed Imaging Technologies for the Molecular Characterisation of Cancer Tissues.” British Journal of Cancer 131: 1737–47. https://doi.org/10.1038/s41416-024-02882-6.\n\n\nTian, Luyi, Fei Chen, and Evan Z. Macosko. 2023. “The Expanding Vistas of Spatial Transcriptomics.” Nature Biotechnology 41: 773–82. https://doi.org/10.1038/s41587-022-01448-2.\n\n\nVickovic, Sanja, Denis Schapiro, Konstantin Carlberg, Britta Lötstedt, Ludvig Larsson, Franziska Hildebrandt, Marina Korotkova, et al. 2022. “Three-Dimensional Spatial Transcriptomics Uncovers Cell Type Localizations in the Human Rheumatoid Arthritis Synovium.” Communications Biology 5 (129). https://doi.org/10.1038/s42003-022-03050-3.\n\n\nZhang, Di, Yanxiang Deng, Petra Kukanja, Eneritz Agirre, Marek Bartosovic, Mingze Dong, Cong Ma, et al. 2023. “Spatial Epigenome–Transcriptome Co-Profiling of Mammalian Tissues.” Nature 616: 113–22. https://doi.org/10.1038/s41586-023-05795-1.\n\n\nZhang, Hua, Kelly H. Lu, Malik Ebbini, Penghsuan Huang, Haiyan Lu, and Lingjun Li. 2024. “Mass Spectrometry Imaging for Spatially Resolved Multi-Omics Molecular Mapping.” Npj Imaging 2 (20). https://doi.org/10.1038/s44303-024-00025-3.\n\n\nZhang, Yida, Viktor Petukhov, Evan Biederstedt, Richard Que, Kun Zhang, and Peter V. Kharchenko. 2024. “Gene Panel Selection for Targeted Spatial Transcriptomics.” Genome Biology 25 (35). https://doi.org/10.1186/s13059-024-03174-1.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>2</span>  <span class='chapter-title'>Spatial omics</span>"
    ]
  },
  {
    "objectID": "pages/bkg-infrastructure.html",
    "href": "pages/bkg-infrastructure.html",
    "title": "3  Infrastructure",
    "section": "",
    "text": "3.1 Introduction\nBioconductor provides several data classes for storing and manipulating spatial (transcript)omics datasets. By relying on these consistent data structures, we can easily connect methods and packages developed by different research groups to build comprehensive analysis workflows.\nBelow, we describe the Bioconductor data classes used in this book.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>3</span>  <span class='chapter-title'>Infrastructure</span>"
    ]
  },
  {
    "objectID": "pages/bkg-infrastructure.html#file-formats",
    "href": "pages/bkg-infrastructure.html#file-formats",
    "title": "3  Infrastructure",
    "section": "\n3.2 File formats",
    "text": "3.2 File formats\nSpatial (transcript)omics assays and the data acquired through them are diverse. In addition, different vendors provide different file formats upon data distribution. Here, we give an overview of frequently encountered file formats and their handling in R.\n\n3.2.1 Count data\nData from sequencing-based assays typically include cell or spot barcodes and metadata, and a matrix where rows/columns correspond to features/observations. These are typically provided as a set of .csv and .mtx files, or compressed versions of these (e.g. .gz). For data from 10x Genomics, count data can be read into R using the DropletUtils read10xCounts() function. Data from other providers can also be imported using provided R readers.\nFor large-scale datasets (say, 100,000s of cells or spots), .h5 files allow for out-of-memory representation of count matrices, represented as DelayedArray objects in R (see HDF5Array).\n\n3.2.2 .parquet\n\nTabular data (e.g. segmentation boundaries, molecule locations) may arrive in the form of .parquet files. These may be interfaced with using arrow. Notably, arrow’s read_parquet() functions allows for delayed dplyr style operations, such as filter() and select(), allowing to query the data in a delayed fashion in order to, e.g., import only relevant parts into memory.\n\n3.2.3 .zarr\n\n.zarr stores can be used to store N-dimensional arrays as a grid of “chunks”, enabling parallelizable accession. For (bio)imaging data, different image scales (or resolutions) can be stored as different layers of a “pyramid”, where the base/tip represents the full/lowest resolution. R interfaces to .zarr are provided through Bioconductor’s Rarr package (Smith and Gruson 2023), and pizzarr.\n\n3.2.4 alabaster\n\nalabaster.base (Lun 2023) aims to save Bioconductor data structures into programming language agnostic file artifacts, and load them back into memory. This is a more robust and portable alternative to serialization of such objects into .rds files. Each artifact is associated with metadata for further interpretation, which may be enriched with context-specific properties by downstream applications. Notable derivatives of the package include the following. (See next section for more details on these classes.)\n\n\nalabaster.se for SummarizedExperiments\n\nalabaster.sce for SingleCellExperiments\n\nalabaster.spatial for SpatialExperimentss",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>3</span>  <span class='chapter-title'>Infrastructure</span>"
    ]
  },
  {
    "objectID": "pages/bkg-infrastructure.html#data-classes",
    "href": "pages/bkg-infrastructure.html#data-classes",
    "title": "3  Infrastructure",
    "section": "\n3.3 Data classes",
    "text": "3.3 Data classes\nIn sequencing-based spatial transcriptomics data, measurements come in the form of a transcripts-by-spots count matrix, where each spot is additionally associated with spatial coordinates.\nBy contrast, imaging-based technologies yield molecule-level data that are typically provided as long-format tables where each row corresponds to an observation, and columns contain information about transcript identity, spatial location, and experimental metadata (e.g. sample of origin). Upon segmentation of cell boundaries and subsequent transcript-to-cell mapping, these data can be reshaped into a transcripts-by-cells count matrix that is analogous to data from single-cell technologies.\nFor both types of data, observations are associated with additional metadata such as area size of spots or of segmented cells and, for the latter, centroid locations and polygonal boundaries from segmentation.\n\n3.3.1 Bioconductor-based\n\n3.3.1.1 SingleCellExperiment\nSingle-cell RNA-seq and analogous technologies quantify transcripts at single-cell resolution, yielding a transcripts-by-cells count matrix. In Bioconductor, the primary class for data from single-cell experiments is SingleCellExperiment (Amezquita et al. 2020) (SCE).\nSCE extends the SummarizedExperiment (SE) class by a series of characteristics specific to single-cell data. For instance, reducedDims for low-dimensional embeddings of observations such as PCA, t-SNE, and UMAP; row- and colPairs for relationships between genes (e.g. gene-to-gene correlations) and cells (e.g. cell-to-cell distances), respectively; and, data on alternative features from the same cells, such as those obtained via multi-modal assays, are stored as altExps (for “alternative experiments”).\n\n3.3.1.2 SpatialExperiment\nSpatialExperiment (SPE) (Righelli et al. 2022) is the core data class used in this book. This class allows us to store datasets at the spot or cell level, i.e. data from sequencing-based platforms at the spot level, or data from imaging-based platforms aggregated to the cell level.\nSPE extends SCE with additional customizations to store spatial information, such as spatial coordinates and image files. A schematic of the SpatialExperiment object structure is shown in Figure 3.1. Briefly, a SPE object consists of (i) assays containing expression counts, (ii) rowData containing information on features, i.e. genes, (iii) colData containing information on spots or cells, including non-spatial and spatial metadata, (iv) spatialCoords containing spatial coordinates, and (v) imgData containing image data. For spot-based data, a single assay named counts is used.\n\n\n\n\n\n\n\nFigure 3.1: Overview of the SpatialExperiment data class for storing and manipulating spatial transcriptomics datasets within the Bioconductor framework.\n\n\n\n\n\n3.3.1.3 SpatialFeatureExperiment\nSPE has been extended through SpatialFeatureExperiment (SFE) (Moses et al. 2023), which can additionally accommodate observation- and feature-level graphs (e.g. of cell/spot neighborhoods) and geometries (e.g. segmentation and tissue boundaries, or histological regions annotated by a pathologist). Because these are represented as sf (geometries) and spdep (graphs) objects (Pebesma 2018; Pebesma and Bivand 2005), SFE directly gives access to a range of geometry operations (e.g. intersecting and buffering) and spatial dependency calculations (e.g. Moran’s I and Geary’s C).\n\n3.3.1.4 MoleculeExperiment\nMoleculeExperiment (ME) (Peters Couto et al. 2023) is an extension to SPE designed for imaging-based spatial transcriptomics data. For each sample, ME stores a list of molecules (e.g. transcript identities and coordinates), and boundaries (e.g. cell identities and polygon coordinates). The latter can, in principle, contain alternative segmentations that may stem from, e.g., cell membrane, body, or nucleus stainings. In this way, different count matrices may be obtained by allocating molecules to a given set of boundaries. Analyses at the aggregated cell level may, in turn, be carried out using an ME-derived SPE (the ME package provides a wrapper for this).\n\n3.3.2 Non-Bioconductor-based\nThere are several other frameworks outside Bioconductor that support spatially-aware analysis for both sequencing- and imaging-based platforms.\nIn particular, Seurat (Hao et al. 2023) and Scanpy (Wolf, Angerer, and Theis 2018) provide comprehensive single-cell analysis pipelines in R and Python, respectively, and incorporate features to visualize and analyze spatial omics datasets. Packages including Giotto (Chen et al. 2025; Dries et al. 2021) and VoltRon (Manukyan et al. 2023) (R), as well as Squidpy (Palla et al. 2022) (Python) support all-in-one frameworks for analyzing spatial omics data and contain extensive sets of spatially-aware algorithms.\n\n3.3.2.1 Giotto\nGiotto (or Giotto Suite) (Chen et al. 2025; Dries et al. 2021) provides tools to process, analyze and visualize spatial multi-omics data at multiple scales and resolutions. The package supports the analysis of an extensive set of sequencing- and imaging-based platforms with either transcriptomics and proteomics modalities such as Xenium, Visium HD, and CODEX (Akoya). Giotto provides utilities to manipulate spatial objects and images, detect spatial patterns and spatially-aware clusters, and support database-based backend data using dbverse for scalability.\n\n3.3.2.2 VoltRon\nThe VoltRon (Manukyan et al. 2023) package incorporates a framework that allows spatially-aware alignment between datasets with observations that span across regions of interest (ROIs) and image tiles in addition to cells, spots, and molecules. Shiny applications are provided to conduct both automated and manual spatial alignment across adjacent tissue sections where users can interactively manage images and choose landmark points for co-registration. VoltRon is also an end-to-end spatial omics analysis package, and support on-disk representations of spatially-resolved datasets using .zarr and .h5 backed DelayedArray objects.\n\n3.3.2.3 spatialGE\nspatialGE (Ospina et al. 2022) relies on a custom class (STlist) to store data and results from multiple tissue sections. The framework includes methods for visualization, spatial autocorrelation, tissue domain/niche detection, spatial gene set enrichment, spatial gene expression gradients, spatially-aware differential gene expression, etc. spatialGE also provides a point-and-click web application that allows for use without coding/scripting.\n\n3.3.2.4 SpatialData\nThe SpatialData (Marconato et al. 2025) framework (Figure 3.2) offers a suite of modules for loading, handling, as well as (static and interactive) visualization of diverse spatial omics data (spanning imaging- and sequencing-based data and different modalities).\nThe container relies on 5 types of elements (images, labels, shapes, points, and tables), which are represented on-disk using standardized, OME-NGFF compliant file formats (.zarr for images, labels, and tables; .parquet for shapes and polygons), enabling unified and memory-efficient data representation and handling.\n\n\n\n\n\n\n\nFigure 3.2: Overview of the scverse/Python SpatialData framework.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>3</span>  <span class='chapter-title'>Infrastructure</span>"
    ]
  },
  {
    "objectID": "pages/bkg-infrastructure.html#commercial-solutions",
    "href": "pages/bkg-infrastructure.html#commercial-solutions",
    "title": "3  Infrastructure",
    "section": "\n3.4 Commercial solutions",
    "text": "3.4 Commercial solutions\n\nBruker’s AtoMx is a cloud-based platform for both interactive visualization and GUI-based analysis. AtoMx can execute pipelines built from both custom and pre-configured modules, and incorporates Bruker’s multi-modal segmentation algorithm. The platform is integrated with CosMx SMI instruments, so data is available through AtoMx upon acquisition.\n10x Genomics’s Loupe Browser is a visualization software application for Visium, Visium HD, and other single-cell and multiome data by 10x Genomics. The complementary loupeR package allows for coercion of Seurat objects (and, in turn, Bioconductor’s SummarizedExperiment derived classes) into Loupe Browser-compliant files. Histopathological annotation of CytAssist images is also supported.\n10x Genomics’s Xenium Explorer is a desktop application (for Mac and Windows) that enables interactive visualization; can incorporate third-party results (e.g. cell metadata, other segmentations); annotating and exporting regions of interest; and, registering post-Xenium images. The application is limited to data generated by the Xenium Analyzer instrument.\nVizgen’s Visualizer software is included with the MERSCOPE instrument purchase. It allows for interactive visualization of segmentation boundaries, transcripts, and proteins; can incorporate external analysis results (e.g. clustering, dimensionality reduction); and, supports annotating and exporting regions of interest for downstream analysis.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>3</span>  <span class='chapter-title'>Infrastructure</span>"
    ]
  },
  {
    "objectID": "pages/bkg-infrastructure.html#interactive-visualization",
    "href": "pages/bkg-infrastructure.html#interactive-visualization",
    "title": "3  Infrastructure",
    "section": "\n3.5 Interactive visualization",
    "text": "3.5 Interactive visualization\n\nnapari (Sofroniew et al. 2025) is a fast, interactive, multi-dimensional image viewer for Python, which is designed for browsing, annotating, and analyzing large multi-dimensional images. It is built on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the scientific Python stack (numpy, scipy). \n\niSEE (Rue-Albrecht et al. 2018), for “Interactive SummarizedExperiment (SE) Explorer”, is not (yet) designed for spatial data, but provides a Shiny-based interface to visualize SE and SE-derived objects, which includes SingleCellExperiment and Spatial(Feature)Experiments. iSEE pays special attention to single-cell data with visualization of dimensionality reduction results, so that spatial coordinates could be stored as a reducedDim entry to render spatial plots. There is support for:\n\ninteractive or programmatic initialization\ntransmission of selections between panels\ncode tracking and preservation of app state\nextensibility to custom panel types\ndeployment using Shiny Server\n\n\nFor CosMx data, see also Bruker’s CosMx Analysis Scratch Space for tutorials on working with the napari-cosmx plugin.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>3</span>  <span class='chapter-title'>Infrastructure</span>"
    ]
  },
  {
    "objectID": "pages/bkg-infrastructure.html#appendix",
    "href": "pages/bkg-infrastructure.html#appendix",
    "title": "3  Infrastructure",
    "section": "\n3.6 Appendix",
    "text": "3.6 Appendix\nReferences\n\n\n\n\nAmezquita, Robert A., Aaron T. L. Lun, Etienne Becht, Vince J. Carey, Lindsay N. Carpp, Ludwig Geistlinger, Federico Marini, et al. 2020. “Orchestrating Single-Cell Analysis with Bioconductor.” Nature Methods 17: 137–45. https://doi.org/10.1038/s41592-019-0654-x.\n\n\nChen, Jiaji G, Joselyn C Chávez-Fuentes, Matthew O’Brien, Junxiang Xu, Edward C Ruiz, Wen Wang, Iqra Amin, et al. 2025. “Giotto Suite: A Multiscale and Technology-Agnostic Spatial Multiomics Analysis Ecosystem.” Nature Methods, 1–13. https://doi.org/10.1038/s41592-025-02817-w.\n\n\nDries, Ruben, Qian Zhu, Rui Dong, Chee-Huat Linus Eng, Huipeng Li, Kan Liu, Yuntian Fu, et al. 2021. “Giotto: A Toolbox for Integrative Analysis and Visualization of Spatial Expression Data.” Genome Biology 22 (78). https://doi.org/10.1186/s13059-021-02286-2.\n\n\nHao, Yuhan, Tim Stuart, Madeline H Kowalski, Saket Choudhary, Paul Hoffman, Austin Hartman, Avi Srivastava, et al. 2023. “Dictionary Learning for Integrative, Multimodal and Scalable Single-Cell Analysis.” Nature Biotechnology. https://doi.org/10.1038/s41587-023-01767-y.\n\n\nLun, Aaron. 2023. “Alabaster.base: Save Bioconductor Objects to File.” R Package. https://doi.org/10.18129/B9.bioc.alabaster.base.\n\n\nManukyan, Artür, Ella Bahry, Emanuel Wyler, Erik Becher, Anna Pascual-Reguant, Izabela Plumbom, Hasan Onur Dikmen, et al. 2023. “VoltRon: A Spatial Omics Analysis Platform for Multi-Resolution and Multi-Omics Integration Using Image Registration.” bioRxiv. https://doi.org/10.1101/2023.12.15.571667.\n\n\nMarconato, Luca, Giovanni Palla, Kevin A. Yamauchi, Isaac Virshup, Elyas Heidari, Tim Treis, Wouter-Michiel Vierdag, et al. 2025. “SpatialData: An Open and Universal Data Framework for Spatial Omics.” Nature Methods 22: 58–62. https://doi.org/10.1038/s41592-024-02212-x.\n\n\nMoses, Lambda, Pétur Helgi Einarsson, Kayla Jackson, Laura Luebbert, A. Sina Booeshaghi, Sindri Antonsson, Nicolas Bray, Páll Melsted, and Lior Pachter. 2023. “Voyager: Exploratory Single-Cell Genomics Data Analysis with Geospatial Statistics.” bioRxiv. https://doi.org/10.1101/2023.07.20.549945.\n\n\nOspina, Oscar E, Christopher M Wilson, Alex C Soupir, Anders Berglund, Inna Smalley, Kenneth Y Tsai, and Brooke L Fridley. 2022. “spatialGE: Quantification and Visualization of the Tumor Microenvironment Heterogeneity Using Spatial Transcriptomics.” Bioinformatics 38 (9): 2645–47. https://doi.org/10.1093/bioinformatics/btac145.\n\n\nPalla, Giovanni, Hannah Spitzer, Michal Klein, David Fischer, Anna Christina Schaar, Louis Benedikt Kuemmerle, Sergei Rybakov, et al. 2022. “Squidpy: A Scalable Framework for Spatial Omics Analysis.” Nature Methods 19: 171–78. https://doi.org/10.1038/s41592-021-01358-2.\n\n\nPebesma, Edzer. 2018. “Simple Features for R: Standardized Support for Spatial Vector Data.” The R Journal 10 (1): 439–46. https://doi.org/10.32614/rj-2018-009.\n\n\nPebesma, Edzer, and Roger S Bivand. 2005. “Classes and Methods for Spatial Data: The Sp Package.” The Newsletter of the R Project 5 (2).\n\n\nPeters Couto, Bárbara Zita, Nicholas Robertson, Ellis Patrick, and Shila Ghazanfar. 2023. “MoleculeExperiment Enables Consistent Infrastructure for Molecule-Resolved Spatial Omics Data in Bioconductor.” Bioinformatics 39 (btad550, 9). https://doi.org/10.1093/bioinformatics/btad550.\n\n\nRighelli, Dario, Lukas M Weber, Helena L Crowell, Brenda Pardo, Leonardo Collado-Torres, Shila Ghazanfar, Aaron T L Lun, Stephanie C Hicks, and Davide Risso. 2022. “SpatialExperiment: Infrastructure for Spatially-Resolved Transcriptomics Data in r Using Bioconductor.” Bioinformatics 38: 3128–31. https://doi.org/10.1093/bioinformatics/btac299.\n\n\nRue-Albrecht, Kevin, Federico Marini, Charlotte Soneson, and Aaron T. L. Lun. 2018. “iSEE: Interactive SummarizedExperiment Explorer.” F1000Research 7 (741). https://doi.org/10.12688/f1000research.14966.1.\n\n\nSmith, Mike, and Hugo Gruson. 2023. “Rarr: Read Zarr Files in r.” R Package. https://doi.org/10.18129/B9.bioc.Rarr.\n\n\nSofroniew, Nicholas, Talley Lambert, Grzegorz Bokota, Juan Nunez-Iglesias, Peter Sobolewski, Andrew Sweet, Lorenzo Gaifas, et al. 2025. “Napari: A Multi-Dimensional Image Viewer for Python.” Zenodo. https://doi.org/10.5281/zenodo.16883660.\n\n\nWolf, F. Alexander, Philipp Angerer, and Fabian J. Theis. 2018. “SCANPY: Large-Scale Single-Cell Gene Expression Data Analysis.” Genome Biology 19 (15). https://doi.org/10.1186/s13059-017-1382-0.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>3</span>  <span class='chapter-title'>Infrastructure</span>"
    ]
  },
  {
    "objectID": "pages/bkg-ecosystem.html",
    "href": "pages/bkg-ecosystem.html",
    "title": "4  Ecosystem",
    "section": "",
    "text": "4.1 Introduction\nThis chapter provides additional background about the Bioconductor ecosystem by exploring the space of packages that revolve around spatial and single cell omics data. We deliberately include the latter, since many tools developed for single cell data are either directly applicable to, or lay the foundation for tools developed for spatial data.\nHere, we will rely on biocViews (Carey et al. 2025) that are provided in the DESCRIPTION of each package. These may be browsed online – in a non-programmatic manner – on the Bioconductor BiocViews website.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>4</span>  <span class='chapter-title'>Ecosystem</span>"
    ]
  },
  {
    "objectID": "pages/bkg-ecosystem.html#introduction",
    "href": "pages/bkg-ecosystem.html#introduction",
    "title": "4  Ecosystem",
    "section": "",
    "text": "Note that the data reported herein may be inaccurate, since packages might provide inaccurate/incomplete biocViews. Especially the “Spatial” term relied upon here was added fairly recently and might be missing from older packages.\n\n4.1.1 Exploratory\nThe BiocPkgTools package (Su et al. 2025) provides tools to access and explore Bioconductor package metadata in R, including their details (e.g., authors) and (monthly) download statistics.\nbiocExplore() provides an interactive way to explore the package space:\n\nCodelibrary(BiocPkgTools)\nbiocExplore()\n\n\n\n\n\nbiocPkgList() retrieves the full Bioconductor software package listing (at the time of calling the function), including associated metadata. These include biocViews, which we can use to identify packages of interest:\n\nCode# retrieve current package record\ndf &lt;- biocPkgList()\n# helper function to get indices of packages\n# that contain 'biocViews' specified by 'x'\n.f &lt;- \\(x, y=df) vapply(y$biocViews, \\(.) all(x %in% .), logical(1))\n# view \"Spatial\" packages\ndf$Package[.f(\"Spatial\")]\n\n##   [1] \"alabaster.sfe\"            \"Banksy\"                   \"BatchSVG\"                \n##   [4] \"Battlefield\"              \"betaHMM\"                  \"BulkSignalR\"             \n##   [7] \"CARDspa\"                  \"CatsCradle\"               \"clustSIGNAL\"             \n##  [10] \"concordexR\"               \"CTSV\"                     \"cytoviewer\"              \n##  [13] \"DenoIST\"                  \"DESpace\"                  \"escheR\"                  \n##  [16] \"FuseSOM\"                  \"GeomxTools\"               \"ggsc\"                    \n##  [19] \"ggspavis\"                 \"HiCPotts\"                 \"hoodscanR\"               \n##  [22] \"HuBMAPR\"                  \"imcRtools\"                \"jazzPanda\"               \n##  [25] \"knowYourCG\"               \"lisaClust\"                \"miRspongeR\"              \n##  [28] \"mistyR\"                   \"mitology\"                 \"MoleculeExperiment\"      \n##  [31] \"nnSVG\"                    \"OSTA.data\"                \"pengls\"                  \n##  [34] \"poem\"                     \"RegionalST\"               \"retrofit\"                \n##  [37] \"scatterHatch\"             \"sccomp\"                   \"scDesign3\"               \n##  [40] \"scFeatures\"               \"scider\"                   \"SEraster\"                \n##  [43] \"shinyDSP\"                 \"signifinder\"              \"simpleSeg\"               \n##  [46] \"smoothclust\"              \"smoppix\"                  \"sosta\"                   \n##  [49] \"SpaceMarkers\"             \"SpaceTrooper\"             \"spacexr\"                 \n##  [52] \"SpaNorm\"                  \"spARI\"                    \"spaSim\"                  \n##  [55] \"SpatialDecon\"             \"SpatialExperiment\"        \"SpatialExperimentIO\"     \n##  [58] \"spatialFDA\"               \"SpatialFeatureExperiment\" \"spatialHeatmap\"          \n##  [61] \"SpatialOmicsOverlay\"      \"spatialSimGP\"             \"SPIAT\"                   \n##  [64] \"spicyR\"                   \"spoon\"                    \"SpotClean\"               \n##  [67] \"SPOTlight\"                \"SpotSweeper\"              \"standR\"                  \n##  [70] \"Statial\"                  \"stJoincount\"              \"stPipe\"                  \n##  [73] \"SVP\"                      \"tidySpatialExperiment\"    \"tomoda\"                  \n##  [76] \"tomoseqr\"                 \"tpSVG\"                    \"VisiumIO\"                \n##  [79] \"visiumStitched\"           \"Voyager\"                  \"XeniumIO\"\n\n\nWe can also browse for packages that also include more specific terms, for example:\n\nCode# view \"Spatial Clustering\" packages\ndf$Package[.f(c(\"Spatial\", \"Clustering\"))]\n\n##   [1] \"Banksy\"         \"clustSIGNAL\"    \"concordexR\"     \"FuseSOM\"       \n##   [5] \"hoodscanR\"      \"imcRtools\"      \"poem\"           \"smoothclust\"   \n##   [9] \"spARI\"          \"spatialHeatmap\" \"SPIAT\"          \"stJoincount\"   \n##  [13] \"stPipe\"         \"tomoda\"\n\n\n\n4.1.2 Metrics\nWe will now have a look at the package ecosystem in a more quantitative manner. Specifically, we will investigate how the number of available packages evolves over time, and how long individual packages remain available (their “lifetime”). Lastly, we will quantify the number of times more specific subterms (co-)occur.\n\n4.1.2.1 Number of packages\nLet’s first summarize the number of packages available over time, focusing specifically on “SingleCell” and “Spatial” packages.\n\n\nNote that we here rely on the first and last date at which a package was available through Bioconductor; some packages might have been deprecated at one point or another.\n\nCode# dependencies\nlibrary(dplyr)\nlibrary(ggplot2)\n# specify 'biocViews' of interest\nnames(ids) &lt;- ids &lt;- c(\"SingleCell\", \"Spatial\")\nnow &lt;- as.Date(format(Sys.Date(), \"%Y-%m-%d\"))\ngg &lt;- lapply(ids, \\(id) {\n    # get metadata & simplify naming\n    nm &lt;- df$Package[.f(id)]\n    ys &lt;- getPkgYearsInBioc(nm) |&gt;\n        mutate(first=first_version_release_date) |&gt;\n        mutate(last=last_version_release_date) |&gt;\n        mutate(last=case_when(is.na(last)~now, TRUE~last)) |&gt;\n        filter(!is.na(first))\n    # complete months between first/last dates\n    ys &lt;- lapply(split(ys, ys$package), \\(.) {\n        data.frame(\n            package=.$package, \n            date=seq(.$first, .$last))\n    }) |&gt; do.call(what=rbind) \n    # get cumulative number of packages available each month\n    ys |&gt; group_by(date) |&gt; count()\n}) |&gt; bind_rows(.id=\"biocViews\")\n\n\n\nCodeggplot(gg, aes(date, n, col=biocViews)) + \n    geom_line(linewidth=0.8) +\n    geom_smooth(data=filter(gg, n &gt;= 5), \n        method=\"lm\", se=FALSE, linewidth=1) +\n    scale_x_date(date_breaks = \"1 year\", date_labels = \"%Y\") +\n    labs(x=NULL, y=\"# packages\") +\n    theme_bw() + theme(\n        aspect.ratio=1, \n        panel.grid.minor=element_blank(),\n        axis.text.x=element_text(angle=45, hjust=1))\n\n\n\n\n\n\n\nTo get an idea of the project’s “growth” in this space, we can regress the number of packages against time using a linear model (LM). We here skip dates at which very few packages were availabile/being developed:\n\nCode# fit linear model where x = 'date', y = # packages\n# (starting at 'date' where at least 5 packages exist)\ndy &lt;- round(as.integer(diff(slice_min(group_by(.gg, biocViews), date)$date))/365, 2)\n(bs &lt;- .gg |&gt;\n    group_by(biocViews) |&gt;\n    group_split() |&gt;\n    # return coefficients = # packages \n    # added each month (on average)\n    sapply(\\(.) coef(lm(n~date, .))[[2]]) |&gt;\n    setNames(sort(unique(gg$biocViews))))\n\n##  SingleCell    Spatial \n##  0.08171547 0.02897627\n\n\nThe resulting coefficients tell us that about 0.98 single cell and 0.35 spatial packages are being added each year (on average), and there is a delay of about 4.49 years between them.\n\n4.1.2.2 Package lifetimes\nWe can further inspect the “lifetime” of packages, i.e., how long they remain (installable) on Bioconductor:\n\n\nA package will be deprecated if it fails to build and/or pass checks on the Bioconductor Build System (BBS), provided its maintainer is unresponsive and does not take action to fix the package before the next (six-monthly) release.\n\nCodegg &lt;- lapply(ids, \\(id) {\n    nm &lt;- df$Package[.f(id)]\n    ys &lt;- BiocPkgTools:::getPkgYearsInBioc(nm)\n}) |&gt; bind_rows(.id=\"biocViews\") |&gt;\n    mutate(years=approx_years_in) |&gt;\n    filter(!is.na(years))\nmu &lt;- gg |&gt;\n    group_by(biocViews) |&gt;\n    summarise_at(\"years\", mean)\n# print\ncat(\"years in Bioconductor:\\n\")\nsummary(gg$approx_years_in)\n# plot\nggplot(gg, aes(years, fill=biocViews)) + \n    geom_histogram(alpha=1/3, binwidth=0.5) +\n    geom_vline(\n        linewidth=1, data=mu,\n        aes(xintercept=years, col=biocViews)) +\n    scale_x_continuous(breaks=seq(0, 100, 2)) +\n    labs(x=\"lifetime (years)\", y=\"# packages\") +\n    theme_bw() + theme(\n        aspect.ratio=1, \n        panel.grid.minor=element_blank(),\n        axis.text.x=element_text(angle=45, hjust=1))\n\n\n\n\n\n\n\n##  years in Bioconductor:\n##     Min. 1st Qu.  Median    Mean 3rd Qu.    Max. \n##    0.500   2.500   4.500   4.694   6.000  17.500\n\n\n\n4.1.2.3 Subterms\nFinally, let’s investigate more specific biocViews, e.g., the type of work tasks different packages cover. We will first count the number of packages that list specific terms that might be of interest in the context of single cell and spatial omics data analysis. Secondly, we will visualize their co-occurence.\n\n\nNote that packages can list an arbitary number of terms so that packages can be counted in more than one category; e.g., “Visualization” appears in most.\n\nCodei &lt;- c(\"SingleCell\", \"Spatial\")\nj &lt;- c(\n    \"BatchEffect\", \"Normalization\", \"QualityControl\", \"Visualization\", # WorkflowStep\n    \"Clustering\", \"DimensionReduction\", \"FeatureExtraction\", # StatisticalMethod\n    \"DifferentialExpression\", \"GeneSetEnrichment\") # BiologicalQuestion\nnames(i) &lt;- i; names(j) &lt;- j\n# count packages for each pair of terms\ngg &lt;- mapply(\n    i=i, j=rep(j, each=2), \n    SIMPLIFY=FALSE, \\(i, j) {\n        n &lt;- sum(.f(c(i, j)))\n        data.frame(i, j, n)\n    }) |&gt; do.call(what=rbind)\n# order x-axis by total\nxo &lt;- gg |&gt;\n    group_by(j) |&gt;\n    summarise_at(\"n\", sum) |&gt;\n    arrange(n) |&gt;\n    pull(j)\nggplot(gg, aes(j, n, fill=i)) + \n    scale_x_discrete(limits=xo) +\n    geom_col(position=\"dodge\", alpha=2/3) +\n    labs(x=NULL, y=\"# packages\", fill=\"biocViews\") +\n    theme_bw() + theme(\n        aspect.ratio=1, \n        panel.grid.minor=element_blank(),\n        axis.text.x=element_text(angle=45, hjust=1))\n\n\n\n\n\n\n\nBecause there are yet very few “Spatial” packages, we will pool “Spatial” and “SingleCell” tools when counting the number of times different terms appear together; i.e., biocViews contain “Spatial” OR “SingleCell”, together with “Clustering” AND “Visualization”, etc. (For concise labeling, we abbreviate biocViews to capital letters only; e.g., “BatchEffects” becomes “BE”.)\n\nCodegg &lt;- lapply(i, \\(i) {\n    lapply(seq_along(j), \\(n) {\n        js &lt;- combn(j, n, simplify=FALSE)\n        lapply(js, \\(j) {\n            n &lt;- sum(.f(c(i, j)))\n            j &lt;- gsub(\"[a-z]\", \"\", j)\n            j &lt;- paste(j, collapse=\"+\")\n            data.frame(i, j, n)\n        }) |&gt; do.call(what=rbind)\n    }) |&gt; do.call(what=rbind)\n}) |&gt; do.call(what=rbind) |&gt;\n    group_by(j) |&gt;\n    summarize_at(\"n\", sum) |&gt;\n    slice_max(n, n=30)\nyo &lt;- gg$j[order(gg$n)]\nggplot(gg, aes(n, j)) + \n    geom_col(alpha=1/3, fill=\"blue\") +\n    labs(y=NULL, x=\"# packages\") +\n    scale_y_discrete(limits=yo) +\n    theme_bw() + theme(\n        aspect.ratio=1, \n        panel.grid.minor=element_blank(),\n        axis.text.x=element_text(angle=45, hjust=1))",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>4</span>  <span class='chapter-title'>Ecosystem</span>"
    ]
  },
  {
    "objectID": "pages/bkg-ecosystem.html#appendix",
    "href": "pages/bkg-ecosystem.html#appendix",
    "title": "4  Ecosystem",
    "section": "\n4.2 Appendix",
    "text": "4.2 Appendix\nReferences\n\n\n\n\nCarey, V. J., B. J. Harshfield, S. Falcon, S. Arora, and L. Shepherd. 2025. “biocViews: Categorized Views of r Package Repositories.” R Package. https://doi.org/10.18129/B9.bioc.biocViews.\n\n\nSu, Shian, Lori Shepherd, Marcel Ramos, Felix G. M. Ernst, Jennifer Wokaty, Charlotte Soneson, Martin Morgan, Vince Carey, and Sean Davis. 2025. “BiocPkgTools: Collection of Simple Tools for Learning about Bioconductor Packages.” R Package. https://doi.org/10.18129/B9.bioc.BiocPkgTools.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>4</span>  <span class='chapter-title'>Ecosystem</span>"
    ]
  },
  {
    "objectID": "pages/bkg-importing-data.html",
    "href": "pages/bkg-importing-data.html",
    "title": "5  Importing data",
    "section": "",
    "text": "5.1 Introduction\nThis chapter provides details on how to import data into R as Bioconductor-based data classes (Chapter 3). First, we provide an overview of the raw data structure, followed by an explanation of how to read the raw data into R.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>5</span>  <span class='chapter-title'>Importing data</span>"
    ]
  },
  {
    "objectID": "pages/bkg-importing-data.html#flat-file-structure",
    "href": "pages/bkg-importing-data.html#flat-file-structure",
    "title": "5  Importing data",
    "section": "\n5.2 Flat file structure",
    "text": "5.2 Flat file structure\nAt present, the file structure and formats of data from spatial transcriptomics platforms varies between commercial providers. Nevertheless, all data are similar in their essence, e.g.: sequencing-based data include spatial locations of array spots (or other spatial locations) and a count matrix; imaging-based data include transcript locations (from spot-calling), polygon boundaries (from segmentation), and a count matrix (from allocating transcripts to cells), etc.\nHere, we provide a summary for several commercially available data types.\n\n5.2.1 Visium (10x Genomics)\nRunning Space Ranger (the data processing software provided by 10x Genomics) on Visium data creates a set of standardized output files. These comprise raw measurement data (similar to scRNA-seq but including, e.g., spot-level coordinates, potential images), as well as results from a standard analysis pipeline that includes standard quality control, dimension reduction (PCA, t-SNE, and UMAP), graph-based clustering, etc.\nThe resulting outputs are described by 10x Genomics here; briefly:\n\nCodeVisium\n  └── outs\n    ├── spatial\n      ├── tissue_positions[_list].csv      # spot locations\n      ├── scalefactors_json.json           # scaling factor \n      └── tissue_[hi/low]res_image.png     # same-section H&E\n    └── filtered_feature_bc_matrix         # in-tissue matrix files\n    └── raw_feature_bc_matrix              # unfiltered matrix files\n         ├── barcodes.tsv # spot barcodes (i.e., sequences)\n         ├── features.tsv # gene metadata (e.g., Ensembl IDs)\n         └── matrix.mtx   # (gene x spot) count matrix\n\n\n\n5.2.2 Visium HD (10x Genomics)\nRunning Space Ranger on Visium HD data generates outputs similar to the above, but by default includes outputs binned at a resolution of 2, 8, and 16 µm. Thus, outputs have a hierarchical structure where each binned_outputs/ subdirectory contains files analogous to the outs/ directory for Visium; e.g.:\n\nCodeVisiumHD\n  └── binned_outputs\n    └─── square_002um\n      ├── filtered_feature_bc_matrix.h5\n      └── filtered_feature_bc_matrix\n        ├── barcodes.tsv.gz\n        ├── features.tsv.gz\n        └── matrix.mtx.gz\n      ├── raw_feature_bc_matrix.h5\n      └── raw_feature_bc_matrix\n        └── ...\n      └── spatial\n        ├── tissue_positions.parquet\n        ├── scalefactors_json.json           \n        └── tissue_[hi/low]res_image.png\n    └── square_*\n  └── segmented_outputs\n    ├── cell_segmentations.geojson\n    ├── nucleus_segmentations.geojson\n    ├── filtered_feature_cell_matrix.h5\n    ├── raw_feature_cell_matrix.h5\n    └── spatial\n      ├── scalefactors_json.json           \n      └── tissue_[hi/low]res_image.png\n\n\n\n5.2.3 Xenium (10x Genomics)\nRunning Xenium Ranger reduces raw data generated from Xenium runs to an output bundle with standardized file structure and contents. Notably, 10x Genomics provides a variety of output file formats (for example, both .csv and .parquet for gene / cell metadata), facilitating interoperability with a variety of frameworks.\nAll outputs are described by 10x Genomics in detail here; briefly:\n\nCodeXenium\n  └── outs \n    ├── cells.parquet          # cell metadata (e.g., area)\n    ├── cell_feature_matrix.h5 # compressed format of the below \n    └── cell_feature_matrix    # segmentation-derived matrix files\n      ├── barcodes.tsv # cell barcodes (i.e., sequences)\n      ├── features.tsv # gene metadata (e.g., target type)\n      └── matrix.mtx   # (gene x cell) count matrix\n    ├── transcripts.parquet        # molecule locations\n    ├── cell_boundaries.parquet    # membrane segmentation\n    ├── nucleus_boundaries.parquet # nuclear segmentation \n    └── experiment.xenium # experiment-wide metadata (in .json format)\n\n\n\n5.2.4 CosMx (Bruker)\nThrough custom module scripts, the AtoMx Spatial Informatics Portal (SIP) allows exporting different types of objects and, importantly, “flat” (human-readable) file formats. Unlike raw data (e.g. images prior to spot-calling), these represent processed outputs (e.g. spatial locations of segmentation boundary vertices and molecules, segmentation-derived count matrix, etc.).\nA detailed description of these files is given here; briefly:\n\nCodeCosMx\n  ├── exprMat_file.csv       # (gene x cell) counts\n  ├── fov_positions_file.csv # FOV corner positions\n  ├── metadata_file.csv      # cell-level metadata\n  ├── polygons.csv           # segmentation boundaries\n  └── tx_file.csv            # molecule locations",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>5</span>  <span class='chapter-title'>Importing data</span>"
    ]
  },
  {
    "objectID": "pages/bkg-importing-data.html#reading-into-r",
    "href": "pages/bkg-importing-data.html#reading-into-r",
    "title": "5  Importing data",
    "section": "\n5.3 Reading into R",
    "text": "5.3 Reading into R\n\n5.3.1 Bioconductor packages\nReader functions from several Bioconductor packages can be used to import data from raw files into a SpatialExperiment object (or derivatives thereof; see Chapter 3) in R, including:\n\nVisiumIO provides readers for spatial data from the 10x Genomics Space Ranger pipeline, i.e. Visium and Visium HD. This includes support for .mtx, .tar.gz, and .h5 file formats, and for reading in multiple samples at once. Data are read into a SpatialExperiment object.\nXeniumIO provides functions to import 10x Genomics Xenium data into R. Notably, there is support for multiple file formats (e.g. .h5 and .mtx for count data, .parquet and .csv for polygons and molecules, etc.), as well as automated distinction between RNA targets and other barcodes (e.g. negative probes, blank codes, etc.).\nSpatialExperimentIO provides readers for a variety of imaging-based spatial transcriptomics platforms, including CosMx (Bruker), Xenium (10x Genomics), MERSCOPE (Vizgen), and seqFISH (Spatial Genomics). Data may be read into a SingleCellExperiment or SpatialExperiment object.\nSpatialFeatureExperiment provides functions to read CosMx, Xenium, MERSCOPE, and Visium(HD) as SpatialFeatureExperiment objects.\n\n5.3.2 Examples\nExamples showing how to read in raw data into R using functions from the Bioconductor packages listed above are included in the workflow chapters in this book (e.g. Chapter 14, Chapter 16, Chapter 24, and Chapter 38). The datasets are described in more detail in Chapter 6.\nIn addition, the STexampleData package provides access to pre-formatted datasets from several platforms in SpatialExperiment and SingleCellExperiment formats, which are used in several examples in this book.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>5</span>  <span class='chapter-title'>Importing data</span>"
    ]
  },
  {
    "objectID": "pages/bkg-example-datasets.html",
    "href": "pages/bkg-example-datasets.html",
    "title": "6  Example datasets",
    "section": "",
    "text": "6.1 Introduction\nFor the examples in this book, we will rely on a set of publicly available datasets that cover different sequencing-based and imaging-based platforms, namely: Visium, Visium HD, Xenium (10x Genomics), and CosMx (Bruker).\nThis chapter provides an overview of the example datasets used in the code examples in the later chapters.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>6</span>  <span class='chapter-title'>Example datasets</span>"
    ]
  },
  {
    "objectID": "pages/bkg-example-datasets.html#distribution",
    "href": "pages/bkg-example-datasets.html#distribution",
    "title": "6  Example datasets",
    "section": "\n6.2 Distribution",
    "text": "6.2 Distribution\n\n6.2.1 OSF repository and OSTA.data\nThese datasets have been deposited in an Open Storage Framework (OSF) repository here, and can be easily queried and downloaded using functions from the osfr CRAN package. For convenience, we have implemented the OSTA.data Bioconductor package to:\n\n\n\n\n\n\n\n\nNotecache invalidation\n\n\n\n\n\nIt can happen that we change, add, or remove data from the OSF repositorying underlying OSTA.data. Should you ever run into any issues that might be related to this, we suggest removing affected cache resource(s) as follows, and retrieving these data anew.\n\nCodelibrary(BiocFileCache)\nbfc &lt;- BiocFileCache()\n# specify dataset identifier\nid &lt;- \"Xenium_HumanColon_Oliveira\"    \n# query cached files for 'id'\nque &lt;- bfcquery(bfc, id) \n# clear matching resource\nbfcremove(bfc, que$rid)   \n# retrieve current dataset\nOSTA.data_load(id)\n\n\n\n\n\n\nlist and retrieve datasets available through our OSF node\ncache data as a .zip archive using BiocFileCache\n\nexpose logical scalars polygons and molecules to skip these data\n\nThe following datasets are currently available:\n\nCodelibrary(OSTA.data)\nOSTA.data_list()\n\n##   [1] \"Chromium_HumanBreast_Janesick\" \"Chromium_HumanColon_Oliveira\" \n##   [3] \"CosMx1k_MouseBrain1\"           \"CosMx1k_MouseBrain2\"          \n##   [5] \"CosMx6k_HumanBrain\"            \"VisiumHD_HumanColon_Oliveira\" \n##   [7] \"Visium_HumanBreast_Janesick\"   \"Visium_HumanColon_Oliveira\"   \n##   [9] \"Xenium_HumanBreast1_Janesick\"  \"Xenium_HumanColon_Oliveira\"\n\n\n\n6.2.2 STexampleData\nIn addition, several datasets are available from the STexampleData Bioconductor package as pre-formatted SpatialExperiment and SingleCellExperiment formats. These data objects are stored on Bioconductor’s ExperimentHub resource, and can be loaded in R by querying ExperimentHub or using loader functions provided in the STexampleData package.\n\nCodelibrary(STexampleData)\n\n# show help file listing datasets\n# ?STexampleData\n\n\n\n6.2.3 BiocFileCache\nData files downloaded with the packages above are stored and managed in a temporary directory using BiocFileCache. Sometimes, these temporary files may need to be deleted manually, for example if there has been a recent change to files stored in the OSF repository. The code example below shows how to remove the temporary files for one of these datasets. Alternatively, you can also find the temporary directory on your system with BiocFileCache::BiocFileCache() and delete files individually.\n\nCode# locate and delete files in BiocFileCache directory\nid &lt;- \"VisiumHD_HumanColon_Oliveira\"\nbfc &lt;- BiocFileCache::BiocFileCache()\nqid &lt;- BiocFileCache::bfcquery(bfc, id)$rid\nBiocFileCache::bfcremove(bfc, qid)",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>6</span>  <span class='chapter-title'>Example datasets</span>"
    ]
  },
  {
    "objectID": "pages/bkg-example-datasets.html#datasets",
    "href": "pages/bkg-example-datasets.html#datasets",
    "title": "6  Example datasets",
    "section": "\n6.3 Datasets",
    "text": "6.3 Datasets\nBelow, we briefly summarize the characteristics of several key datasets, and note across which parts of the book these are being used.\n\n6.3.1 HumanBreast_Janesick\nIn the underlying paper (Janesick et al. 2023), the Xenium data (2 replicates) were accompanied by consecutive slices of Chromium and Visium data. Therefore, these replicates are expected to have nearly identical biological findings. By transferring Chromium cell type labels to spatial technologies, such as Visium (with full transcriptome) and Xenium (at single-cell resolution), we can combine analytical insights from different platforms.\n\nreference: Janesick et al. (2023)\n\nsource: 10x Genomics\n\nannotations: cell type worksheet (all platforms)\n\nChromium\n\nsource: GSM7782698\n\n18,082 genes x 30,365 cells\n\n\n\nVisium\n\nsource: GSM7782699\n\n18,085 genes x 4,992 spots\n\n\n\nXenium\n\nsource: GSM7780153, GSM7780154\n\nreplicate 1: 313 RNA targets x 167,780 cells\nreplicate 2: 313 RNA targets x 118,752 cells\n\n\n\n6.3.2 HumanColon_Oliveira\nIn the underlying paper, there are both normal adjacent tissue (NAT) and colorectal carcinoma (CRC) samples from 5 patients. The Visium HD data (P2 CRC) were accompanied by consecutive slices of Chromium, Visium, and Xenium data. Therefore, we can jointly analyze these modalities.\n\nreference: de Oliveira et al. (2025)\n\nsource: 10x Genomics\n\nannotations: repository (Chromium & VisiumHD deconvolution)\n\nChromium\n\n18,082 genes x 279,609 cells\n\nP2, P3, P5 NAT\nP1-5 CRC\n\n\n\n\nP2 CRC:\n\n\nVisium\n\n18,085 genes x 4,269 spots\n\n\n\nVisiumHD\n\n18,085 genes x\n\n8,731,400 bins (2µm)\n545,913 bins (8µm)\n137,051 bins (16µm)\n\n\n\n\n\nXenium\n\n422 RNA targets x 340,837 cells\n\n\n\n\n\n6.3.3 CosMx1k_MouseBrain1/2\nThere are two sections from the CosMx mouse brain sample, namely “coronal hemisphere” (sample 1) and “coronal hippocampus and cortex” (sample 2).\n\nsource: Bruker\n\n950 RNA targets x\n\n48,556 cells (coronal hemisphere)\n38,996 cells (coronal hippocampus and cortex)\n\n\n\n6.3.4 CosMx6k_HumanBrain\nThe CosMx human prefrontal cortex sample has a larger gene panel of ~6,000 RNA targets.\n\nsource: Bruker\n\n6,278 RNA targets x 188,686 cells",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>6</span>  <span class='chapter-title'>Example datasets</span>"
    ]
  },
  {
    "objectID": "pages/bkg-example-datasets.html#appendix",
    "href": "pages/bkg-example-datasets.html#appendix",
    "title": "6  Example datasets",
    "section": "\n6.4 Appendix",
    "text": "6.4 Appendix\nReferences\n\n\n\n\nde Oliveira, Michelli Faria, Juan Pablo Romero, Meii Chung, Stephen R. Williams, Andrew D. Gottscho, Anushka Gupta, Susan E. Pilipauskas, et al. 2025. “High-Definition Spatial Transcriptomic Profiling of Immune Cell Populations in Colorectal Cancer.” Nature Genetics 57: 1512–23. https://doi.org/10.1038/s41588-025-02193-3.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>6</span>  <span class='chapter-title'>Example datasets</span>"
    ]
  },
  {
    "objectID": "pages/bkg-python-interoperability.html",
    "href": "pages/bkg-python-interoperability.html",
    "title": "7  Python interoperability",
    "section": "",
    "text": "7.1 Introduction\nMethods discussed in this book are usually available as either R or Python packages. Ideally, users should be able to leverage the full range of available tools for their analyses. Methods should be selected based on scientific merit (ideally demonstrated by neutral benchmarks), and independent of having been implemented in a given programming language (R or Python) or framework (e.g. Bioconductor or Seurat).\nDifferent data structures, although standardized within a given framework, make switching between languages and tools somewhat cumbersome. In the realm of single-cell and spatial omics, all Bioconductor tools are built around SummarizedExperiment-derived classes, while Seurat (Hao et al. 2023), Giotto (Chen et al. 2025), and VoltRon each rely on their own object definitions. In Python, Scanpy (Wolf, Angerer, and Theis 2018) and Squidpy (Palla et al. 2022) use AnnData. Attempts to alleviate the problem are being made – e.g. zellkonverter, anndataR (Deconinck et al. 2025), and functions from Seurat allow for conversion between Python’s AnnData and R/Bioconductor’s SingleCellExperiment or SpatialExperiment.\nIn this chapter, we demonstrate examples showing how to set up Python environments and interact with anndata objects in R, using either a virtual or Conda environment, together with reticulate or basilisk and anndataR.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>7</span>  <span class='chapter-title'>Python interoperability</span>"
    ]
  },
  {
    "objectID": "pages/bkg-python-interoperability.html#introduction",
    "href": "pages/bkg-python-interoperability.html#introduction",
    "title": "7  Python interoperability",
    "section": "",
    "text": "For single-cell and spatial omics data analysis, being able to leverage different ecosystems is especially powerful. On the one hand, Python offers superb infrastructure for image analysis and machine learning-based approaches. On the other hand, the R programming language has been historically dedicated to statistical computing; as a result, many modern R methods for spatial omics data build on a solid foundation of tools for spatial statistics and statistical modeling in general.R’s application to statistical analysis of spatial data dates back decades, primarily in epidemiological and geospatial research. As a result, various tools for spatial analyses have been established. For example, sp provides a “coherent set of classes and methods for […] points, lines, polygons, and grids”; spatstat and, more recently, sf provide tools for spatial point pattern and vector data, respectively.\n\n On a higher level, tools that enable interoperability between programming languages have become available. For example, reticulate provides an R interface to Python, including support to translate between objects from both languages; basilisk facilitates Python environment management within the Bioconductor ecosystem, and can also be interfaced with reticulate; and Quarto can generate dynamic reports from code in different languages.Quarto is the successor to R Markdown (by Posit, formerly known as RStudio). Similar to .Rmd files, .qmd files can include scientific content (e.g. cross-referencing, LaTeX-based equations), and can be published in multiple output formats (HTML, PDF, etc.). This book is built using Quarto.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>7</span>  <span class='chapter-title'>Python interoperability</span>"
    ]
  },
  {
    "objectID": "pages/bkg-python-interoperability.html#dependencies",
    "href": "pages/bkg-python-interoperability.html#dependencies",
    "title": "7  Python interoperability",
    "section": "\n7.2 Dependencies",
    "text": "7.2 Dependencies\n\nlibrary(anndataR)\nlibrary(basilisk)\nlibrary(jsonlite)\nlibrary(VisiumIO)\nlibrary(OSTA.data)\nlibrary(reticulate)\nlibrary(SpatialExperiment)",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>7</span>  <span class='chapter-title'>Python interoperability</span>"
    ]
  },
  {
    "objectID": "pages/bkg-python-interoperability.html#python-environment-and-reticulate",
    "href": "pages/bkg-python-interoperability.html#python-environment-and-reticulate",
    "title": "7  Python interoperability",
    "section": "\n7.3 Python environment and reticulate",
    "text": "7.3 Python environment and reticulate\nWe here set up a virtual environment to interact with Python anndata objects in R. In order to build this book programmatically, we install Python and pip dependencies from scratch using reticulate.\nHowever, if you are following this example on a laptop or another system, it may be easier to specify an existing Python installation to use instead. This will avoid cluttering your system with additional Python installations; see the below section to, e.g., activate an existing Conda environment.\n\n7.3.1 Set up virtual environment\nFirst, we create a virtual environment, installing Python dependencies required in this chapter, as well as Chapter 22.\n\nCodereq &lt;- c('access==1.1.9', 'affine==2.4.0', 'anndata==0.9.2', 'anndata2ri==1.3.1', 'attrs==23.1.0', 'backports.zoneinfo==0.2.1', 'beautifulsoup4==4.12.2', 'certifi==2023.11.17', 'cffi==1.16.0', 'charset-normalizer==3.3.2', 'click==8.1.7', 'click-plugins==1.1.1', 'cligj==0.7.2', 'commot==0.0.3', 'contourpy==1.1.1', 'cycler==0.12.1', 'decorator==4.4.2', 'deprecation==2.1.0', 'esda==2.4.3', 'fiona==1.9.5', 'fonttools==4.45.1', 'gensim==4.3.2', 'geopandas==0.13.2', 'get-annotations==0.1.2', 'giddy==2.3.4', 'h5py==3.10.0', 'idna==3.4', 'igraph==0.10.8', 'importlib-metadata==6.8.0', 'importlib-resources==6.1.1', 'inequality==1.0.0', 'Jinja2==3.1.2', 'joblib==1.3.2', 'karateclub==1.3.3', 'kiwisolver==1.4.5', 'leidenalg==0.10.1', 'Levenshtein==0.23.0', 'libpysal==4.7.0', 'llvmlite==0.41.1', 'mapclassify==2.6.0', 'MarkupSafe==2.1.3', 'matplotlib==3.7.4', 'mgwr==2.1.2', 'momepy==0.6.0', 'mpmath==1.3.0', 'natsort==8.4.0', 'networkx==2.6.3', 'numba==0.58.1', 'numpy==1.22.4', 'packaging==23.2', 'pandas==1.3.5', 'patsy==0.5.3', 'Pillow==10.1.0', 'platformdirs==4.0.0', 'plotly==5.18.0', 'pointpats==2.4.0', 'POT==0.9.1', 'PuLP==2.7.0', 'pycparser==2.21', 'pygeos==0.14', 'PyGSP==0.5.1', 'pynndescent==0.5.11', 'pyparsing==3.1.1', 'pyproj==3.5.0', 'pysal==23.7', 'python-dateutil==2.8.2', 'python-igraph==0.10.8', 'python-Levenshtein==0.23.0', 'python-louvain==0.16', 'pytz==2023.3.post1', 'quantecon==0.7.1', 'rapidfuzz==3.5.2', 'rasterio==1.3.9', 'rasterstats==0.19.0', 'requests==2.31.0', 'rpy2==3.5.14', 'Rtree==1.1.0', 'scanpy==1.9.6', 'scikit-learn==1.3.2', 'scipy==1.10.1', 'seaborn==0.12.2', 'segregation==2.5', 'session-info==1.0.0', 'setuptools==68.2.2', 'shapely==2.0.2', 'simplejson==3.19.2', 'six==1.16.0', 'smart-open==6.4.0', 'snuggs==1.4.7', 'soupsieve==2.5', 'spaghetti==1.7.4', 'spglm==1.0.8', 'spint==1.0.7', 'splot==1.1.5.post1', 'spopt==0.5.0', 'spreg==1.4', 'spvcm==0.3.0', 'statsmodels==0.14.0', 'stdlib-list==0.10.0', 'sympy==1.12', 'tenacity==8.2.3', 'texttable==1.7.0', 'threadpoolctl==3.2.0', 'tobler==0.9.0', 'tqdm==4.66.1', 'tzlocal==5.2', 'umap-learn==0.5.5', 'urllib3==2.1.0', 'zipp==3.17.0')\ninstall_python(version=ver &lt;- \"3.8.18\")\nvirtualenv_create(envname=env &lt;- \"OSTA\", python=ver, packages=req)\nuse_virtualenv(env, required=TRUE)\n\n\n\n7.3.2 Using Conda\nAlternatively, an existing Conda environment – including the corresponding Python installation and software dependencies – could be used as follows:\n\nCode# path to Conda binary\nbin &lt;- \".../bin/conda\" \noptions(reticulate.conda_binary=bin)\n# activate environment\nuse_condaenv(\"&lt;name&gt;\")\n\n\n\n7.3.3 Using basilisk\n\nAlternatively, we can use basilisk to install and manage Python environments. This is an alternative to setting up a Conda environment with an existing Python installation. Using basilisk provides a self-contained environment, which helps avoid problems due to interactions with other environments on your system, and provides a higher level of reproducibility. This is especially useful for package development by advanced users. However, setup may be more challenging in some cases. A minimal example is provided here for completeness:\n\nCode# set up environment using 'basilisk'\nenv &lt;- BasiliskEnvironment(\n    pkgname=\"base\", \n    envname=\"basilisk\", \n    pip=\"numpy==2.4.0\",\n    packages=\"python=3.12\")\n# activate virtual environment\nuse_virtualenv(obtainEnvironmentPath(env))",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>7</span>  <span class='chapter-title'>Python interoperability</span>"
    ]
  },
  {
    "objectID": "pages/bkg-python-interoperability.html#interfacing-between-languages",
    "href": "pages/bkg-python-interoperability.html#interfacing-between-languages",
    "title": "7  Python interoperability",
    "section": "\n7.4 Interfacing between languages",
    "text": "7.4 Interfacing between languages\n\n7.4.1 SingleCellExperiment\n\n7.4.1.1 Calling Python\nAfter configuring Python, R commands can now be run using reticulate; for more details on syntax, see here. Note that running code in this way comes with a small overhead of starting up a Python session in the background. But this is typically small compared to the runtime required to run computation-heavy methods, or when analyzing large-scale single-cell and spatial data (hundreds of thousands of cells or more).\n\nCodeimport scanpy\nid = \"V1_Mouse_Brain_Sagittal_Posterior\"\nad = scanpy.datasets.visium_sge(sample_id=id)\n\n##  \n  0%|          | 0.00/9.26M [00:00&lt;?, ?B/s]\n 48%|####7     | 4.44M/9.26M [00:00&lt;00:00, 46.5MB/s]\n 91%|######### | 8.40M/9.26M [00:00&lt;00:00, 43.6MB/s]\n100%|##########| 9.26M/9.26M [00:00&lt;00:00, 46.2MB/s]\n##  \n  0%|          | 0.00/20.1M [00:00&lt;?, ?B/s]\n 19%|#8        | 3.73M/20.1M [00:00&lt;00:00, 36.0MB/s]\n 45%|####4     | 8.95M/20.1M [00:00&lt;00:00, 46.7MB/s]\n 65%|######4   | 13.1M/20.1M [00:00&lt;00:00, 45.0MB/s]\n100%|##########| 20.1M/20.1M [00:00&lt;00:00, 52.8MB/s]\n\nCodead.var_names_make_unique()\nad\n\n##  AnnData object with n_obs × n_vars = 3355 × 32285\n##      obs: 'in_tissue', 'array_row', 'array_col'\n##      var: 'gene_ids', 'feature_types', 'genome'\n##      uns: 'spatial'\n##      obsm: 'spatial'\n\n\n\n7.4.1.2 Continuing in R\nWe can access any of the variables above in R. For basic outputs, this works out of the box:\n\nCoderange(py$ad$obs$array_row)\n\n##  [1]  6 72\n\n\nreticulate also supports a few direct type conversions (e.g. dictionary \\(\\leftrightarrow\\) named list). In the example demonstrated here, we use anndataR to convert from AnnData to SingleCellExperiment:\n\nCode(sce &lt;- py$ad$as_SingleCellExperiment(x_mapping=\"counts\"))\n\n##  class: SingleCellExperiment \n##  dim: 32285 3355 \n##  metadata(1): spatial\n##  assays(1): counts\n##  rownames(32285): Xkr4 Gm1992 ... AC234645.1 AC149090.1\n##  rowData names(3): gene_ids feature_types genome\n##  colnames(3355): AAACAAGTATCTCCCA-1 AAACACCAATAACTGC-1 ...\n##    TTGTTTCATTAGTCTA-1 TTGTTTCCATACAACT-1\n##  colData names(3): in_tissue array_row array_col\n##  reducedDimNames(1): spatial\n##  mainExpName: NULL\n##  altExpNames(0):\n\n\n\n7.4.1.3 Back to Python\nWe can also do the reverse, i.e., go from R’s SingleCellExperiment to Python’s AnnData:\n\nCode(ad &lt;- as_AnnData(sce, x_mapping=\"counts\"))\n\n##  InMemoryAnnData object with n_obs × n_vars = 3355 × 32285\n##      obs: 'in_tissue', 'array_row', 'array_col'\n##      var: 'gene_ids', 'feature_types', 'genome'\n##      uns: 'spatial'\n##      obsm: 'spatial'\n\n\n\n7.4.2 SpatialExperiment\nSince the SpatialExperiment class extends SingleCellExperiment (see Chapter 3), conversion operations discussed above are also applicable to SpatialExperiment. However, to accomplish a full conversion from the AnnData object, we need to manually insert the spatial information using reticulate directly.\n\n7.4.2.1 Starting in R\nFor this use case with SpatialExperiment, we will use the dataset from Janesick et al. (2023), which includes Visium measurements on human breast cancer tissue.\n\nCodeid &lt;- \"Visium_HumanBreast_Janesick\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir = td)\nobj &lt;- TENxVisium(\n    spacerangerOut=file.path(td, \"outs\"), \n    format=\"h5\", \n    images=\"lowres\")\n(spe &lt;- VisiumIO::import(obj))\n\n\nWe also need to parse the original scaling information (i.e., scale factor) for spots and images available in the standard Visium output. We will use this later during conversion.\n\nCodefnm &lt;- \"scalefactors_json.json\"\nfnm &lt;- file.path(td, \"outs\", \"spatial\", fnm)\nsfs &lt;- read_json(fnm)\n\n\nWe again use the as_AnnData function from anndataR from the previous example, and convert the SingleCellExperiment-relevant components of the SpatialExperiment object to an AnnData object.\n\nCodemtx &lt;- as(assay(spe), \"dgCMatrix\")\nassay(spe) &lt;- mtx\n(ad &lt;- as_AnnData(spe))\n\n##  InMemoryAnnData object with n_obs × n_vars = 4992 × 18085\n##      obs: 'in_tissue', 'array_row', 'array_col', 'sample_id'\n##      var: 'ID', 'Symbol', 'Type'\n##      uns: 'resources', 'spatialList'\n##      layers: 'counts'\n\n\nWe can now populate the uns and obsm components of the AnnData object with spatial coordinates and images. We start with the coordinates.\n\nCodespatialCoordsNames(spe) &lt;- c(\"x\", \"y\")\nobsm &lt;- list(spatial=spatialCoords(spe))\n\n\nNow, let’s create the uns component. The list of uns should be composed of as many samples as the images in the SpatialExperiment object. Also, each sample entry in the list should have two elements, one for the image and the other for the scaling information.\n\nCode# get image metadata\nimgdata &lt;- imgData(spe)\n\n# get image\nimg &lt;- imgRaster(spe)\nimg &lt;- apply(img, c(1, 2), \\(x) col2rgb(x))\nimg &lt;- aperm(img, perm=c(2, 3, 1))\nimg &lt;- img / 255\n\n# create uns\nuns &lt;- list(images=list(lowres=img), scalefactors=sfs)\nuns &lt;- list(spatial=setNames(list(uns), imgdata$sample_id))\n\n\nNow let’s insert the components to the AnnData object, and write back to an .h5ad file.\n\nCodead$obs$library_id &lt;- imgdata$sample_id\nad$obsm &lt;- obsm\nad$uns &lt;- uns\nad$write_h5ad(\"spe.h5ad\")\n\n\n\n7.4.2.2 Calling Python\nNow that we have converted the SpatialExperiment object to AnnData format, we can run Python code per usual (e.g., continue analysis using squidpy). As a proof of concept, we here visualize an exemplary gene’s counts spatially:\n\nCodeimport anndata\nimport matplotlib\nimport matplotlib.pyplot as plt\n\nad = anndata.read_h5ad(\"spe.h5ad\")\nad.var_names = ad.var[\"Symbol\"].astype(str)\n\nxy = ad.obsm[\"spatial\"]\nz = ad[:,\"ERBB2\"].layers[\"counts\"].toarray()\n\nplt.scatter(xy[:,0], xy[:,1], c=z, s=5, cmap=\"turbo\")\nplt.gca().set_aspect(\"equal\")\nplt.title(\"ERBB2\")",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>7</span>  <span class='chapter-title'>Python interoperability</span>"
    ]
  },
  {
    "objectID": "pages/bkg-python-interoperability.html#appendix",
    "href": "pages/bkg-python-interoperability.html#appendix",
    "title": "7  Python interoperability",
    "section": "\n7.5 Appendix",
    "text": "7.5 Appendix\nFollowing are links to several key packages and tools relating to R-Python interoperability, which were mentioned in the sections above:\n\nanndataR (Deconinck et al. 2025): R package and community project to work with AnnData objects in R, including conversion to and from SingleCell/SpatialExperiment and Seurat objects\nzellkonverter (Zappia et al. 2020): R package to convert between AnnData and SingleCellExperiment objects, as well as reading from and writing to H5AD\nreticulate (Ushey, Allaire, and Tang 2017): R package and framework to call Python and run Python code in R, translate between R and Python objects, and manage virtual and Conda environments\nbasilisk (Lun 2022): R package to install and manage Python environments in R packages and sessions\n\nReferences\n\n\n\n\nChen, Jiaji G, Joselyn C Chávez-Fuentes, Matthew O’Brien, Junxiang Xu, Edward C Ruiz, Wen Wang, Iqra Amin, et al. 2025. “Giotto Suite: A Multiscale and Technology-Agnostic Spatial Multiomics Analysis Ecosystem.” Nature Methods, 1–13. https://doi.org/10.1038/s41592-025-02817-w.\n\n\nDeconinck, Louise, Luke Zappia, Robrecht Cannoodt, Martin Morgan, scverse core, Isaac Virshup, Chananchida Sang-Aram, et al. 2025. “anndataR Improves Interoperability Between r and Python in Single-Cell Transcriptomics.” bioRxiv. https://doi.org/10.1101/2025.08.18.669052.\n\n\nHao, Yuhan, Tim Stuart, Madeline H Kowalski, Saket Choudhary, Paul Hoffman, Austin Hartman, Avi Srivastava, et al. 2023. “Dictionary Learning for Integrative, Multimodal and Scalable Single-Cell Analysis.” Nature Biotechnology. https://doi.org/10.1038/s41587-023-01767-y.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.\n\n\nLun, Aaron. 2022. “Basilisk: A Bioconductor Package for Managing Python Environments.” Journal of Open Source Software 7. https://doi.org/10.21105/joss.04742.\n\n\nPalla, Giovanni, Hannah Spitzer, Michal Klein, David Fischer, Anna Christina Schaar, Louis Benedikt Kuemmerle, Sergei Rybakov, et al. 2022. “Squidpy: A Scalable Framework for Spatial Omics Analysis.” Nature Methods 19: 171–78. https://doi.org/10.1038/s41592-021-01358-2.\n\n\nUshey, Kevin, Joseph J. Allaire, and Yuan Tang. 2017. “Reticulate: Interface to ’Python’.” R Package. https://doi.org/10.32614/CRAN.package.reticulate.\n\n\nWolf, F. Alexander, Philipp Angerer, and Fabian J. Theis. 2018. “SCANPY: Large-Scale Single-Cell Gene Expression Data Analysis.” Genome Biology 19 (15). https://doi.org/10.1186/s13059-017-1382-0.\n\n\nZappia, Luke, Aaron Lun, Jack Kamm, Robrecht Cannoodt, Gabriel Hoffman, and Marek Cmero. 2020. “anndataR Improves Interoperability Between r and Python in Single-Cell Transcriptomics.” R Package. https://doi.org/10.18129/B9.bioc.zellkonverter.",
    "crumbs": [
      "Background",
      "<span class='chapter-number'>7</span>  <span class='chapter-title'>Python interoperability</span>"
    ]
  },
  {
    "objectID": "pages/seq-introduction.html",
    "href": "pages/seq-introduction.html",
    "title": "8  Introduction",
    "section": "",
    "text": "8.1 Introduction to sequencing-based ST\nSequencing-based spatial transcriptomics (ST) platforms combine high-throughput gene expression profiling from high-throughput sequencing assays with spatial information derived from unique barcodes that are location-specific. Thus, gene expression patterns can be profiled while retaining spatial arrangement.\nSeveral steps are involved, including tissue preparation, RNA capture, reverse transcription, and high-throughput sequencing. Bioinformatically, reads are mapped to reference transcriptomes (or annotated genomes) and reads are further parsed to determine their original spatial origin.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>8</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/seq-introduction.html#platforms",
    "href": "pages/seq-introduction.html#platforms",
    "title": "8  Introduction",
    "section": "\n8.2 Platforms",
    "text": "8.2 Platforms\n\n8.2.1 10x Genomics Visium\nThe 10x Genomics Visium platform measures transcriptome-scale gene expression at a hexagonal grid of spatial locations (referred to as spots) on a tissue capture area on a slide. Either fresh-frozen or formalin-fixed paraffin-embedded (FFPE) tissue may be used. Each spot contains millions of spatially-barcoded capture oligonucleotides, which bind to mRNAs from the tissue. A cDNA library is then generated for sequencing, which includes the spatial barcodes, allowing reads to be mapped back to their spatial locations.\nThe array dimensions are 6.5 x 6.5 mm, with around 5000 barcoded spots. Spots are 55 µm in diameter and spaced 100 µm center-to-center in a hexagonal (honeycomb) grid arrangement. The number of cells overlapping with each spot depends on the tissue cell density, e.g. around 0-10 for human brain tissue or ~50 for mouse brain tissue. Each Visium slide contains four tissue capture areas. The following figure provides an illustration.\n\n\n\n\nSchematic illustrating the 10x Genomics Visium platform. Source: 10x Genomics Visium\n\n\n\nHistology images generated from hematoxylin and eosin (H&E) staining can be used to identify anatomical and cell morphological features for each sample, including the number of cells per spot.\nAn earlier version of the platform was originally developed by Ståhl et al. (2016), which was subsequently improved and commercialized as the 10x Genomics Visium platform.\nThe Visium CytAssist instrument provides streamlined experimental procedures, making the platform more accessible to new research labs.\n\n8.2.2 10x Genomics Visium HD\nThe 10x Genomics Visium HD platform provides higher spatial resolution. Capture area dimensions are 6.5 x 6.5 mm, with a continuous “lawn” of capture oligonucleotides arranged into a grid of 2 x 2 µm barcoded squares, which can be aggregated into 8 x 8 µm and 16 x 16 µm bins, or cells based on cell boundary polygon coordinates (e.g. using methods such as Bin2cell (Polański et al. 2024)) for downstream analyses. There are no gaps between the grid squares, and there are two capture areas per slide.\nThe high spatial resolution of the barcoded squares provides near-single-cell resolution, while the use of sequencing provides transcriptome-scale gene coverage. With its higher resolution and data coverage, increased sparsity is expected. Therefore, new computational challenges, such as quality control, imputation and denoising techniques, and longer computational time, should be considered when performing the analysis.\nA paper describing the platform and its application to human colorectal cancer samples is available from 10x Genomics (de Oliveira et al. 2025).\n\n\n8.2.3 Curio Seeker\nThe Curio Seeker platform is a commercially available implementation and extension of the Slide-seqV2 platform originally developed by Stickels et al. (2021).\nThe Curio Seeker platform captures mRNA molecules at a set of randomly placed spatial measurement locations (referred to as “beads”) on a tissue slide (referred to as a “tile”) at high spatial resolution. The tile dimensions are 3 mm x 3 mm, and the spatial resolution consists of tightly packed 10 µm diameter beads.\n\n8.2.4 STOmics Stereo-seq\nThe STOmics Stereo-seq platform provides a large field of view and high spatial resolution. Chip sizes are currently available in either 5 mm x 5 mm or 10mm x 10mm sizes, with customized larger sizes also possible, making it possible to measure transcriptome-scale expression across large continuous tissue areas. The high spatial resolution of 500 nm enables both cellular and subcellular-level analyses.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>8</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/seq-introduction.html#appendix",
    "href": "pages/seq-introduction.html#appendix",
    "title": "8  Introduction",
    "section": "\n8.3 Appendix",
    "text": "8.3 Appendix\nResources\nDatasets available from commercial providers of the platforms:\n\n\n10x Genomics (includes Visium and Visium HD)\nReferences\n\n\n\n\nde Oliveira, Michelli Faria, Juan Pablo Romero, Meii Chung, Stephen R. Williams, Andrew D. Gottscho, Anushka Gupta, Susan E. Pilipauskas, et al. 2025. “High-Definition Spatial Transcriptomic Profiling of Immune Cell Populations in Colorectal Cancer.” Nature Genetics 57: 1512–23. https://doi.org/10.1038/s41588-025-02193-3.\n\n\nPolański, Krzysztof, Raquel Bartolomé-Casado, Ioannis Sarropoulos, Chuan Xu, Nick England, Frode L Jahnsen, Sarah A Teichmann, and Nadav Yayon. 2024. “Bin2cell Reconstructs Cells from High Resolution Visium HD Data.” Bioinformatics 40 (btae546, 9). https://doi.org/10.1093/bioinformatics/btae546.\n\n\nStåhl, Patrik L., Fredrik Salmén, Sanja Vickovic, Anna Lundmark, José Fernández Navarro, Jens Magnusson, Stefania Giacomello, et al. 2016. “Visualization and Analysis of Gene Expression in Tissue Sections by Spatial Transcriptomics.” Science 353: 78–82. https://doi.org/10.1126/science.aaf2403.\n\n\nStickels, Robert R., Evan Murray, Pawan Kumar, Jilong Li, Jamie L. Marshall, Daniela J. Di Bella, Paola Arlotta, Evan Z. Macosko, and Fei Chen. 2021. “Highly Sensitive Spatial Transcriptomics at Near-Cellular Resolution with Slide-seqV2.” Nature Biotechnology 39: 313–19. https://doi.org/10.1038/s41587-020-0739-1.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>8</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/seq-reads-to-counts.html",
    "href": "pages/seq-reads-to-counts.html",
    "title": "9  Reads to counts",
    "section": "",
    "text": "9.1 Background\nSequencing-based Spatial Transcriptomics (sST) platforms employ next-generation sequencing (NGS) to quantify gene expression across spatial locations on a tissue based on spatial barcodes. The spatial location information is encoded during platform manufacture and sample preparation, and associated with transcripts measured during sequencing. This association is present within the structure of the reads sequenced by an NGS platform.\nTo perform spatial data analysis, several preprocessing steps are needed to convert raw sequencing data into a useful format, often a count matrix, from which we can analyse gene expression across a tissue of interest. These steps differ from platform to platform but all start from a series of ‘reads’ and end with one of the several spatial data formats used with downstream analysis tools like Squidpy, Seurat, or Bioconductor workflows using SpatialExperiment objects.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>9</span>  <span class='chapter-title'>Reads to counts</span>"
    ]
  },
  {
    "objectID": "pages/seq-reads-to-counts.html#introduction-to-reads-and-sequencing",
    "href": "pages/seq-reads-to-counts.html#introduction-to-reads-and-sequencing",
    "title": "9  Reads to counts",
    "section": "\n9.2 Introduction to Reads and Sequencing",
    "text": "9.2 Introduction to Reads and Sequencing\nWhen we talk about ‘reads’ in transcriptomics, we’re referring to a sequence of nucleotides (bases) that represent a cDNA fragment, which is reverse transcribed from an RNA molecule. The abundance of these transcripts is a corollary to gene expression, which is what we’re trying to measure in transcriptomics analysis. The benefit to spatial transcriptomics data is the ability to associate reads with locations on the tissue where the RNA molecule, and thus the expression of the corresponding gene, originated. The process of generating reads generally involves the following steps:\n\nRNA Extraction\nReverse Transcription\ncDNA Fragmentation\nAdapter Ligation\nPCR Amplification\n\nBecause of the PCR Amplification step, and the imperfect nature of RNA Extraction, we can only consider read abundance as a relative measure of gene expression, and it should never be treated as an absolute measure. Additionally, this means that steps need to be taken to normalize the data before analyses such as Differential Expression (DE) analysis can be performed. However, well before the point in analysis where we might perform normalization, reads first need to be pre-processed through a number of methods to construct a count matrix or equivalent data structure, which we would normally use in downstream analysis. The rest of this chapter aims to address these pre-processing steps and provide some examples to help when pre-processing in your own analysis.\n\n9.2.1 Read Structure\nFor the majority of sequencing based spatial technologies, reads are recorded as ‘paired end’ where both ends of the DNA fragment are sequenced into different files, often .fastq files. One of these files (often read 1) contains barcode sequences, and depending on whether reads have been trimmed first, may also include linking or other structural sequences. The other file will contain the sequence containing the transcript (or probe) that we intend to align to a reference genome or transcriptome (or probe-set) to determine the gene expressed.\nAn example read structure from the BGI STOmics Stereo-seq user manual is given below:\n\n\n\n\n\nFigure 9.1: Read structure of Stereo-seq Spatial Transcriptomics library construction. Demonstrating paired-end next gen sequencing (NGS) reads.\n\n\nHere, we see that Read 1 constitutes the first 50bp from the left end of the sequence and Read 2 the last 100bp starting from the right end of the sequence.\nRead 1 contains 25bp of the Coordinate ID (CID), a fixed linking sequence 15bp long, and a 10bp Molecule ID (MID).\nRead 2 only contains a fragment of the transcript captured (100bp long).\nAnother example, this time from the 10X Visium CytAssist kit is provided to demonstrate the structure of a probe based library:\n\n\nExample read structure from 10X Genomics User Guide | Visium CytAssist Spatial Gene Expression Reagent Kits. In this example, the 16bp spatial barcode and the 12bp UMI are located at the start of Read 1, and Read 2 contains the 50bp Ligated Probe Insert.\n\nEach read in a .fastq file also has an associated read header and quality score. An example (also from the BGI STOmics Stereo-seq user manuals) is provided for demonstration:\n\n\n\n\n\nFigure 9.2: FASTQ file format details from the BGI STOmics Stereo-seq user manuals. Here, both Read 1 and Read 2 are shown while for real data these would be in two separate files as described above.\n\n\nThe first line of both reads is the read ‘header’ or ‘name’ and is used to uniquely identify each read and potentially details such as the sequencer lane the read is from. The header is also where tools can insert their own additional metadata for the read as ‘comments’. The second line contains the bases of the sequenced transcript as described earlier. Line three is a spacer line and often just contains a single ‘+’ character although occasionally the read identifier and comments from the header are duplicated here. Line four contains the read quality scores for each base of the sequence. The quality scale differs depending on the sequencer version and whether Q4 or Q40 files are used. Q-scores are a logarithmic measure of confidence in base calling given by a p-value. The exact calculation of this p-value and the threshold at which reads are rejected differs platform to platform, so it’s always worth checking the tools you’re using if these statistics are important to your analysis.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>9</span>  <span class='chapter-title'>Reads to counts</span>"
    ]
  },
  {
    "objectID": "pages/seq-reads-to-counts.html#from-reads-to-counts",
    "href": "pages/seq-reads-to-counts.html#from-reads-to-counts",
    "title": "9  Reads to counts",
    "section": "\n9.3 From Reads to Counts",
    "text": "9.3 From Reads to Counts\nThe process of converting a series of reads into a count matrix generally follows a consistent overall structure. This can be broken down into a series of steps which all workflows in some form perform:\n\nBarcode Deconvolution\nRead Alignment\nFiltering and QC\nCounting and Binning\n\nAfter these steps, further QC and processing is performed at the count matrix level including:\n\nSpot level Filtering and Quality Control (QC)\nNormalization\nFeature Selection\n\n\n\n\n\n\n\nNote\n\n\n\nSee the chapters on Quality Control (#seq-quality-control), and Processing (#seq-processing).\n\n\n\n9.3.1 Barcode Deconvolution\nAlthough reads contain most of the information, we need to construct a count matrix, a ‘mapping’ file to interpret the Coordinate IDs (CIDs) in Read 1 is often needed to resolve the spatial localisation of the recorded gene expression. For some sST platforms,the mapping from barcodes to locations is fixed, such as for 10X Visium, and the mapping file will be fixed for the protocol version while for others the mapping is random and the vendor will have provided a file for this mapping specific to your chips. When the mapping file is fixed, most tools (e.g. Space Ranger) will be able to fetch the mapping file automatically given the chip ID, however when the mapping file is chip specific, this will need to be handled by the user.\nThe process of mapping reads based on their CIDs to spatial locations is known as barcode deconvolution and is often the first step in sST data preprocessing. As this is also the step that differs most platform to platform and across protocol/data versions, it is also the most important step to understand at a lower level than the rest of the steps.\n\n9.3.2 Read Alignment\nThe sequences that correspond to transcripts are not particularly useful as is; for useful data analysis to be performed, the transcripts need to be mapped back to the genes that “expressed” them This is done by aligning the sequences to a reference genome annotated with the locations of genes.\nAlignment is performed by a software aligner such as STAR (Dobin et al. 2013), or Rsubread (Liao, Smyth, and Shi 2019). SpaceRanger and SAW are vendor pipelines for Visium and Stereo-seq, respectively, and both make use of STAR for alignment.\n\n9.3.3 Filtering and QC\nAt the read level, filtering and QC is performed based on information from all of the previous preprocessing steps: reads with low Quality Scores are filtered out, reads with barcodes that didn’t map to known CIDs or MID/UMIs are filtered out, and finally reads that didn’t align to the reference genome, aligned to multiple regions ambiguously, or aligned to intronic regions are all likely to be filtered out depending slightly on the tool/pipeline and parameters thereof.\nOnce filtering has been performed, Quality Control metrics can be used to fine-tune additional filtering performed on the data either at the read level, or later at the spot level. Some commonly used metrics and plots are as follow:\n\nQuality Score distribution/density plots: Can help identify any clear patterning in Q-scores that might indicate contaminants or rna degradation.\nRead mapping statistics: Useful to check that the aligner is configured correctly as well as the quality of the mapping\nUMI Duplication distribution: Can help to check that PCR amplification was successful and to empirically evaluate sequencing depth.\n\n(An example of the last two plots from stPipe’s HTML report is given in Fig 3)\n\n\n\n\n\n\n\n\n\n(a) Read Mapping Plot\n\n\n\n\n\n\n\n\n\n(b) UMI Duplication Distribution\n\n\n\n\n\n\nFigure 9.3: Two QC plots from stPipe’s automatically generated HTML report. The first shows Read Mapping Statistics; The second shows the UMI Duplication distribution\n\n\n\n9.3.4 Counting and Binning\nOnce all read level steps have been performed and reads have been associated with spatial locations using the deconvolved CIDs, a matrix of genes by spots (location) can be constructed and each read counted based on CID and the gene annotated at the aligned region.\nMost platforms at this stage will ‘bin’ the spots to a lower resolution by combining the counts of an n by n square of spots (often 20, 50, 100, or 200 depending on the base spot size) to reduce sparsity and make the data easier to analyse.\nBinning can also be done to cellular resolution if the platform in question has spots smaller than the cell types composing the tissue. For cell binning, the high resolution microscopy images and the DAPI stain (if available) can be used to find cell boundaries and spots within those boundaries are combined into a single object like with square binning.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>9</span>  <span class='chapter-title'>Reads to counts</span>"
    ]
  },
  {
    "objectID": "pages/seq-reads-to-counts.html#preprocessing-tools",
    "href": "pages/seq-reads-to-counts.html#preprocessing-tools",
    "title": "9  Reads to counts",
    "section": "\n9.4 Preprocessing Tools",
    "text": "9.4 Preprocessing Tools\n\n9.4.1 Vendor Tools\n\n\nSpace Ranger\n\nSpace Ranger is a popular bioinformatics pipelines developed by 10X Genomics for their Visium platform. Newer versions of Space Ranger also support Visium HD data processing. The Space Ranger can be divided into two main parts: (1) read processing and (2) image processing. The former involves the following steps:\n\n\n\n\nRead trimming\nAssay alignment\nBarcode correction\nProfile filtering\nUMI counting\nSpot binning\n\n\n\n\nSAW (Gong et al. 2024)\n\n\nThe Stereo-seq Analysis Workflow (SAW) is a preprocessing pipeline designed by BGI to handle the complexities of spatial transcriptomics data from the Stereo-seq technology. SAW requires a reference genome, CID mapping file(s) (often hdf5 format), FASTQ files, and optionally tissue images for cell segmentation. The specific workflow of SAW includes the following steps:\n\n\n\n\nData reformatting\nCID Mapping error counting\nGenome Alignment\nClustering and Feature Selection\nMID Correction\nSpatial Visualization and Tissue Region Extraction\n\n\n\nCurio Seeker Bioinformatic Pipeline\n\nThe Curio Seeker bioinformatics pipeline developed by Curio Bioscience processes sST data from the Curio Seeker spatial mapping kit, it is written in Nextflow, and both Singularity and Docker can execute it. The pipeline requires paired end FASTQ files, bead barcode locations, and a reference genome. The Curio Seeker pipeline involves barcode extraction and mapping, read alignment with STAR, and UMI deduplication with UMItools. Curio Seeker follows a similar workflow pattern to the other tools mentioned, but with some notable differences due to the bead distribution used for spatial barcoding:\n\n\n\n\nBead Barcode extraction and read trimming\nRead Filtering\nBarcode matching\nRead alignment\nFeature extraction\nUMI deduplication\n\n9.4.2 stPipe: A Platform Agnostic R-based Solution\nstPipe (Xu et al. 2025) is a sST data preprocessing tool designed to be platform agnostic, and to unify the preprocessing of sST data from a wide variety of spatial technology solutions such as 10x Visium, BGI Stereo-seq, and Curio Slide-seq.\nThe stPipe workflow (Fig 4) begins with the function Run_ST, which streamlines multiple steps into one cohesive process, including FASTQ or BAM file reformatting, read alignment, barcode demultiplexing, and gene counting.\nAfter these preprocessing steps, stPipe allows the user to export the data as one of several types of downstream object, which are compatible with all major spatial data analysis tools. Additionally, the user can choose to perform interactive data analysis and sampling using the stPipe package through the RunInteractive function.\n\n\n\n\n\nFigure 9.4: Workflow diagram for stPipe including function calls and data objects with downstream analysis options highlighted.\n\n\nA vignette demonstrating the workflow of stPipe for some example Visium data is provided below: https://github.com/mritchielab/stPipe/blob/main/vignettes/stPipe-vignette.Rmd",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>9</span>  <span class='chapter-title'>Reads to counts</span>"
    ]
  },
  {
    "objectID": "pages/seq-reads-to-counts.html#appendix",
    "href": "pages/seq-reads-to-counts.html#appendix",
    "title": "9  Reads to counts",
    "section": "\n9.5 Appendix",
    "text": "9.5 Appendix\nReferences\n\n\n\n\nDobin, Alexander, Carrie A. Davis, Felix Schlesinger, Jorg Drenkow, Chris Zaleski, Sonali Jha, Philippe Batut, Mark Chaisson, and Thomas R. Gingeras. 2013. “STAR: Ultrafast Universal RNA-Seq Aligner.” Bioinformatics 29: 15–21. https://doi.org/10.1093/bioinformatics/bts635.\n\n\nGong, Chun, Shengkang Li, Leying Wang, Fuxiang Zhao, Shuangsang Fang, Dong Yuan, Zijian Zhao, et al. 2024. “SAW: An Efficient and Accurate Data Analysis Workflow for Stereo-Seq Spatial Transcriptomics.” Gigabyte, 1–12. https://doi.org/10.46471/gigabyte.111.\n\n\nLiao, Yang, Gordon K Smyth, and Wei Shi. 2019. “The r Package Rsubread Is Easier, Faster, Cheaper and Better for Alignment and Quantification of RNA Sequencing Reads.” Nucleic Acids Research 47: e47. https://doi.org/10.1093/nar/gkz114.\n\n\nXu, Yang, Callum J. Sargeant, Yue You, Yupei You, Shian Su, Changqing Wang, Luyi Tian, Yunshun Chen, and Matthew E. Ritchie. 2025. “stPipe: A Flexible and Streamlined r/Bioconductor Pipeline for Preprocessing Sequencing-Based Spatial Transcriptomics Data.” bioRxiv. https://doi.org/10.1101/2025.04.16.649254.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>9</span>  <span class='chapter-title'>Reads to counts</span>"
    ]
  },
  {
    "objectID": "pages/seq-quality-control.html",
    "href": "pages/seq-quality-control.html",
    "title": "10  Quality control",
    "section": "",
    "text": "10.1 Preamble",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>10</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/seq-quality-control.html#preamble",
    "href": "pages/seq-quality-control.html#preamble",
    "title": "10  Quality control",
    "section": "",
    "text": "10.1.1 Introduction\n\n“Quality is everyone’s responsibility.” - W. Edwards Deming\n\nQuality control (QC) procedures aim to remove low-quality spots or technical artifacts before further analysis. Low-quality spots can occur due to problems during library preparation or other experimental procedures.  To prevent introducing unnecessary bias into downstream analysis, low-quality spots are usually removed prior to further analysis. \nLow-quality spots can be identified according to several characteristics, including:\n\nlibrary size (i.e. total unique molecular identifier (UMI) counts per spot)\nnumber of expressed features (i.e. number of genes with non-zero UMI counts per spot)\nproportion of reads mapping to mitochondrial genes (a high proportion indicates cell damage)\nnumber of cells per spot (unusually high values can indicate problems due to unsuccessful cell segmentation as a computational step, or tissue damage)  \n\nLow library size or low number of expressed features can indicate poor mRNA capture rates, e.g. due to cell damage and missing mRNAs, or low reaction efficiency. A high proportion of mitochondrial reads can be indicative of cell damage, e.g. partial cell lysis leading to leakage and missing cytoplasmic mRNAs, with the resulting reads therefore concentrated on the remaining mitochondrial mRNAs that are relatively protected inside the mitochondrial membrane. Unusually high numbers of cells per spot can indicate problems during cell segmentation.\n\n10.1.2 QC challenges in sequencing-based ST\nThe first three characteristics listed above are the standard QC metrics used in scRNA-seq data, and they are often valid for ST data as well. However, caution must be taken in interpreting these metrics as they tend to be confounded by biology in sequencing-based ST data (Bhuva et al. 2024; Totty, Hicks, and Guo 2025).\nFor example, in the brain, neuronal cell bodies reside in gray matter, whereas white matter is made up almost entirely of neuronal processes. This naturally leads to regions of gray matter containing much higher numbers of genes detected and overall transcripts captured relative to white matter. Moreover, white matter tends to show a higher proportion of mitochondrial reads than gray matter. Without this biological context, one might mistakenly assume that the white matter regions are of low quality and should be removed before downstream analyses.\n\n10.1.3 Structure of this chapter\nIn this chapter, we will start with introducing some methods to identify low-quality spots using various strategies, including 1) standard methods developed for single-nucleus RNA-seq (snRNA-seq) via global thresholding, and 2) more recent methods that aim to mediate bias in QC attributed to spatial confounding. Diagnostic visualizations and strategies are further introduced in Section 10.3 and Section 10.4.\nIn the advanced topics section (Section 10.6), we will visit some novel and unique challenges in QC of ST data, including identifying histological artifacts, i.e. regional artifacts and QC based on number of cells identified in each spot. While these methods are very useful, these procedures are not necessary for all datasets.\nTo note, the current chapter focuses on QC at the spot level. In some datasets, it may also be appropriate to apply QC procedures or filtering at the gene level. For example, certain genes may be biologically irrelevant for downstream analyses. However, here we make a distinction between QC and feature selection. Removing biologically uninteresting genes (such as mitochondrial genes) may also be considered as part of feature selection, since there is no underlying experimental procedure that has failed. Therefore, we will discuss gene-level filtering in Chapter 11..\n\n10.1.4 Dependencies\nIn this chapter, we will rely on the following packages:\n\nCodelibrary(STexampleData)\nlibrary(ggspavis)\nlibrary(scater)\nlibrary(scuttle)\nlibrary(SpotSweeper)\nlibrary(GenomeInfoDb)\nlibrary(patchwork)\n\n\n\n10.1.5 Data import\nNext, we import a 10x Genomics Visium dataset that will be used in several of the following chapters. This dataset has previously been preprocessed using data preprocessing procedures with tools outside R and saved in SpatialExperiment format, and is available for download from the STexampleData package.\nThe dataset consists of one sample (Visium capture area) from one donor, consisting of postmortem human brain tissue from the dorsolateral prefrontal cortex (DLPFC) brain region; it is described in Maynard et al. (2021).\n\nCode(spe &lt;- Visium_humanDLPFC())\n\n##  class: SpatialExperiment \n##  dim: 33538 4992 \n##  metadata(0):\n##  assays(1): counts\n##  rownames(33538): ENSG00000243485 ENSG00000237613 ... ENSG00000277475\n##    ENSG00000268674\n##  rowData names(3): gene_id gene_name feature_type\n##  colnames(4992): AAACAACGAATAGTTC-1 AAACAAGTATCTCCCA-1 ...\n##    TTGTTTGTATTACACG-1 TTGTTTGTGTAAATTC-1\n##  colData names(8): barcode_id sample_id ... reference cell_count\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres\n##  imgData names(4): sample_id image_id data scaleFactor",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>10</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/seq-quality-control.html#calculate-qc-metrics",
    "href": "pages/seq-quality-control.html#calculate-qc-metrics",
    "title": "10  Quality control",
    "section": "\n10.2 Calculate QC metrics",
    "text": "10.2 Calculate QC metrics\nWe calculate the QC metrics described above with a combination of methods from the scater (McCarthy et al. 2017) package (for metrics that are also used for scRNA-seq data, where we treat spots as equivalent to cells) and our own functions. We can then use these metrics to identify low-quality spots.\nThe QC metrics from scater can be calculated and added to the SpatialExperiment object’s column data using the addPerCellQC function. The sum column contains the total number of unique molecular identifiers (UMIs) for each spot, the detected column contains the number of unique genes detected per spot, and subsets_mito_percent contains the percentage (or proportion) of transcripts mapping to mitochondrial genes per spot.\nFirst, we subset the object to keep only spots covered by the tissue section. The remaining spots are background spots, which we are not interested in as they will contain almost entirely mitochondrial genes and transcripts from cellular debris.\n\nCode# subset to keep only spots over tissue\nspe &lt;- spe[, spe$in_tissue == 1]\ndim(spe)\n\n##  [1] 33538  3639\n\n\n\nCode# identify mitochondrial genes\nis_mito &lt;- grepl(\"(^MT-)|(^mt-)\", rowData(spe)$gene_name)\ntable(is_mito)\n\n##  is_mito\n##  FALSE  TRUE \n##  33525    13\n\nCoderowData(spe)$gene_name[is_mito]\n\n##   [1] \"MT-ND1\"  \"MT-ND2\"  \"MT-CO1\"  \"MT-CO2\"  \"MT-ATP8\" \"MT-ATP6\" \"MT-CO3\" \n##   [8] \"MT-ND3\"  \"MT-ND4L\" \"MT-ND4\"  \"MT-ND5\"  \"MT-ND6\"  \"MT-CYB\"\n\nCode# calculate per-spot QC metrics and store in colData\nspe &lt;- addPerCellQC(spe, subsets=list(mito=is_mito))\nhead(colData(spe))\n\n##  DataFrame with 6 rows and 14 columns\n##                             barcode_id     sample_id in_tissue array_row\n##                            &lt;character&gt;   &lt;character&gt; &lt;integer&gt; &lt;integer&gt;\n##  AAACAAGTATCTCCCA-1 AAACAAGTATCTCCCA-1 sample_151673         1        50\n##  AAACAATCTACTAGCA-1 AAACAATCTACTAGCA-1 sample_151673         1         3\n##  AAACACCAATAACTGC-1 AAACACCAATAACTGC-1 sample_151673         1        59\n##  AAACAGAGCGACTCCT-1 AAACAGAGCGACTCCT-1 sample_151673         1        14\n##  AAACAGCTTTCAGAAG-1 AAACAGCTTTCAGAAG-1 sample_151673         1        43\n##  AAACAGGGTCTATATT-1 AAACAGGGTCTATATT-1 sample_151673         1        47\n##                     array_col ground_truth   reference cell_count       sum\n##                     &lt;integer&gt;  &lt;character&gt; &lt;character&gt;  &lt;integer&gt; &lt;numeric&gt;\n##  AAACAAGTATCTCCCA-1       102       Layer3      Layer3          6      8458\n##  AAACAATCTACTAGCA-1        43       Layer1      Layer1         16      1667\n##  AAACACCAATAACTGC-1        19           WM          WM          5      3769\n##  AAACAGAGCGACTCCT-1        94       Layer3      Layer3          2      5433\n##  AAACAGCTTTCAGAAG-1         9       Layer5      Layer5          4      4278\n##  AAACAGGGTCTATATT-1        13       Layer6      Layer6          6      4004\n##                      detected subsets_mito_sum subsets_mito_detected\n##                     &lt;integer&gt;        &lt;numeric&gt;             &lt;integer&gt;\n##  AAACAAGTATCTCCCA-1      3586             1407                    13\n##  AAACAATCTACTAGCA-1      1150              204                    11\n##  AAACACCAATAACTGC-1      1960              430                    13\n##  AAACAGAGCGACTCCT-1      2424             1316                    13\n##  AAACAGCTTTCAGAAG-1      2264              651                    12\n##  AAACAGGGTCTATATT-1      2178              621                    13\n##                     subsets_mito_percent     total\n##                                &lt;numeric&gt; &lt;numeric&gt;\n##  AAACAAGTATCTCCCA-1              16.6351      8458\n##  AAACAATCTACTAGCA-1              12.2376      1667\n##  AAACACCAATAACTGC-1              11.4089      3769\n##  AAACAGAGCGACTCCT-1              24.2223      5433\n##  AAACAGCTTTCAGAAG-1              15.2174      4278\n##  AAACAGGGTCTATATT-1              15.5095      4004\n\n\n\nCode# keep copy of object to save later\nspe_save &lt;- spe",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>10</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/seq-quality-control.html#sec-seq-quality-control-global",
    "href": "pages/seq-quality-control.html#sec-seq-quality-control-global",
    "title": "10  Quality control",
    "section": "\n10.3 Global outlier detection",
    "text": "10.3 Global outlier detection\nMany commonly used QC methods currently applied to ST were adapted from snRNA-seq workflows, such as global outlier detection. The simplest option for identifying potential low-quality spots is to apply fixed thresholds to each QC metric across the entire sample, and remove any spots that do not meet the thresholds for one or more metrics.\nFor example, we might consider spots to be of low-qualty if they have library sizes below 600 UMI or mitochondrial propotion above 30%. These cutoffs are somewhat arbitrary and often require knowledge of the tissue type and dataset at hand. In particular, exploratory visualizations can be used to help select appropriate thresholds, which may differ depending on the dataset.\nHere, we use visualizations to select thresholds for several QC metrics in our human DLPFC dataset: (i) library size, (ii) number of expressed genes, (iii) proportion of mitochondrial reads, and (iv) number of cells per spot.\n\nCodepar(mfrow=c(1, 4))\nhist(spe$sum, xlab=\"sum\", main=\"UMIs per spot\")\nhist(spe$detected, xlab=\"detected\", main=\"Genes per spot\")\nhist(spe$subsets_mito_percent, xlab=\"pct mito\", main=\"Percent mito UMIs\")\nhist(spe$cell_count, xlab=\"no. cells\", main=\"No. cells per spot\")\n\n\n\n\n\n\n\nThe distributions are relatively smooth, and there are no obvious issues such as a spike at very low library sizes.\nWe can also plot QC metrics together, such as the library size or mitochondrial proportion against the number of cells per spot. This can help us determine an optimal threshold while also checking that we are not inadvertently removing a biologically meaningful group of spots. The horizontal line (argument threshold) shows our first guesses at possible filtering thresholds for library size and mitochondrial proportion.\n\nCode# plot library size vs. number of cells per spot\np1 &lt;- plotObsQC(spe, \n    plot_type=\"scatter\", \n    x_metric=\"cell_count\", \n    y_metric=\"sum\",\n    y_threshold=600) + \n    ggtitle(\"Library size vs. cells per spot\")\n\n# plot mito proportion vs. number of cells per spot\np2 &lt;- plotObsQC(spe, \n    plot_type=\"scatter\", \n    x_metric=\"cell_count\", \n    y_metric=\"subsets_mito_percent\", \n    y_threshold=30) + \n    ggtitle(\"Mito proportion vs. cells per spot\")\n\np1 | p2\n\n\n\n\n\n\n\nThe plot shows that these filtering thresholds do not appear to select for any obvious biologically consistent group of spots and will not result in removing an excessive number of observations. We can further verify this by checking the exact number of spots excluded.\n\nCode# select QC thresholds for library size, \n# detected features & mito. proportion\nspe$qc_lib_size &lt;- spe$sum &lt; 600\nspe$qc_detected &lt;- spe$detected &lt; 400\nspe$qc_mito_prop &lt;- spe$subsets_mito_percent &gt; 30\n\n# tabulate number of cells kept/flagged by each\nqc &lt;- grep(\"^qc\", names(colData(spe)))\nsapply(colData(spe)[qc], table)\n\n##        qc_lib_size qc_detected qc_mito_prop\n##  FALSE        3631        3632         3636\n##  TRUE            8           7            3\n\n\nFinally, we also check that the discarded spots do not have any obvious spatial pattern that correlates with known biological features. Otherwise, removing these spots could indicate that we have set the threshold too high, and are removing biologically informative spots.\n\nCode# check spatial pattern of discarded spots\np1 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", annotate=\"qc_lib_size\") + \n    ggtitle(\"Library size (&lt; 600 UMI)\")\n\np2 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", annotate=\"qc_detected\") + \n    ggtitle(\"Detected genes (&lt; 400 genes)\")\n\np3 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", annotate=\"qc_mito_prop\") + \n    ggtitle(\"Mito proportion (&gt; 30%)\")\n\np1 | p2 | p3\n\n\n\n\n\n\n\nAs an aside, here we can also illustrate what happens if we set the threshold too high. For example, if we set the threshold to 2000 UMI counts per spot – which may also seem like a reasonable value based on the histogram and scatterplot – then we see a possible spatial pattern in the discarded spots, matching known cortical layers. This illustrates the importance of interactively checking exploratory visualizations when choosing these thresholds. To illustrate this point, we can plot the manually annotated reference (“ground truth”) DLPFC layers here for reference.\n\nCode# check spatial pattern of discarded spots if threshold is too high\nspe$qc_lib_size_2000 &lt;- spe$sum &lt; 2000\n\n# plot the spots flagged with the high threshold\np1 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", annotate=\"qc_lib_size_2000\") + \n    ggtitle(\"Library size (&lt; 2000 UMI)\")\n\n# plot manually annotated reference layers\np2 &lt;- plotCoords(spe, \n    annotate=\"ground_truth\", pal=\"libd_layer_colors\") + \n    ggtitle(\"Manually annotated layers\")\n\n# plot library size by manual annotation\np3 &lt;- plotColData(spe, \n    x=\"ground_truth\", y=\"sum\", colour_by=\"ground_truth\") + \n    theme(axis.text.x=element_text(angle=45, hjust=1)) +\n    ggtitle(\"Library size by layer\") + xlab(\"\")\n  \np1 | p2 | p3\n\n\n\n\n\n\n\nLooking at the flagged spots versus the manually annotated layers, it is clear that setting a library size threshold of 2000 UMIs is flagging more spots in layers 1 and 6 relative to other layers or spatial domains. In other words, library size is confounded with biology, as has been previously demonstrated (Bhuva et al. 2024; Totty, Hicks, and Guo 2025).\nWe can additionally use violin plots to visualize the distribution of the QC metrics, with outliers annotated. This can help us determine if the thresholds we have chosen are appropriate or are excluding too many spots.\n\nCode# library size and outliers\np1 &lt;- plotObsQC(spe, \n    plot_type=\"violin\", x_metric=\"sum\", \n    annotate=\"qc_lib_size\", point_size=0.5) + \n    xlab(\"Library size\")\n\n# detected genes and outliers\np2 &lt;- plotObsQC(spe, \n    plot_type=\"violin\", x_metric=\"detected\", \n    annotate=\"qc_detected\", point_size=0.5) + \n    xlab(\"Detected genes\") \n\n# mito proportion and outliers\np3 &lt;- plotObsQC(spe, \n    plot_type=\"violin\", x_metric=\"subsets_mito_percent\", \n    annotate=\"qc_mito_prop\", point_size=0.5) + \n    xlab(\"Mito proportion\")\n\np1 | p2 | p3",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>10</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/seq-quality-control.html#sec-seq-quality-control-local",
    "href": "pages/seq-quality-control.html#sec-seq-quality-control-local",
    "title": "10  Quality control",
    "section": "\n10.4 Local outlier detection",
    "text": "10.4 Local outlier detection\nOne of the key assumptions of global outlier detection in single cell and spatial transcriptomics is that the QC metrics are independent of natural biology. Otherwise, cell or spots with naturally low library size or higher mitochondrial ratio will be more likely to be removed as outliers. For snRNA-seq, this assumption is rarely or only mildly violated, resulting in negligible impacts on downstream analyses. However, as demonstrated above, this assumption is more commonly violated in sequencing-based ST due to the biological heterogeneity in the tissue being sampled for each spot.\nOne strategy to address this issue is to look for outliers within their local biological neighborhood. Here, we will implement local outlier detection using the localOutliers() function from the SpotSweeper Bioconductor package (Totty, Hicks, and Guo 2025). This function detects local outliers by comparing the number of unique detected genes, total library size, and mitochondrial percentage of each spot to that of its nearest neighbors. By default, localOutliers() uses k = 36 nearest neighbors, which equates to third-order neighbors (i.e. three concentric rings of neighbors around each spot) in Visium’s hexagonal spot arrangement. However, for sequencing-based methods that uses square grid arrangements (e.g. STOmics), third-order neighbors would be k = 48.\nSimilar to the adaptive thresholds used above, these methods assume a normal distribution, so we will use the log-transformed sum of the total counts and the log-transformed number of detected genes. We will not log-transform the mitochondrial percentage as it tends to follow a normal distribution.\n\nCode# detect local outliers based on library size, unique genes, mito. percentage\nspe &lt;- localOutliers(spe, metric=\"sum\", direction=\"lower\", log=TRUE)\nspe &lt;- localOutliers(spe, metric=\"detected\", direction=\"lower\", log=TRUE)\nspe &lt;- localOutliers(spe, metric=\"subsets_mito_percent\", direction=\"higher\", log=FALSE)\n\n\nSimilar to scater’s addPerCellQC() function, the localOutliers() function adds several columns to the colData slot of the SpatialExperiment object. The X_outlier column contains a logical vector indicating whether the spot is an outlier for the respective metric and the X_z column returns the local z-transformed QC metric. If log = TRUE, an additional X_log column will return the log-transformed metric.\nWe can then visually confirm that the local outliers detected indeed appear to be outliers by using spot plots of the QC metrics. To do this, we will visualize the output log2-transformed data (or un-transformed mitochondrial proportion) next to the detected local outliers.\n\nCode# spot plot of log-transformed library size\np1 &lt;- plotCoords(spe, \n    annotate=\"sum_log\") + \n    ggtitle(\"log2(Library Size)\")\n\np2 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", in_tissue=\"in_tissue\", \n    annotate=\"sum_outliers\", point_size=0.2) + \n    ggtitle(\"Local Outliers (Library Size)\")\n\n# spot plot of log-transformed detected genes\np3 &lt;- plotCoords(spe, \n    annotate=\"detected_log\") + \n    ggtitle(\"log2(Detected)\")\n\np4 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", in_tissue=\"in_tissue\", \n    annotate=\"detected_outliers\", point_size=0.2) + \n    ggtitle(\"Local Outliers (Detected)\")\n\n# spot plot of mitochondrial proportion\np5 &lt;- plotCoords(spe, \n    annotate=\"subsets_mito_percent\") + \n    ggtitle(\"Mito Proportion\")\n\np6 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", in_tissue=\"in_tissue\", \n    annotate=\"subsets_mito_percent_outliers\", point_size=0.2) + \n    ggtitle(\"Local Outliers (Mito Prop)\")\n\n# plot using patchwork\n(p1 / p2) | (p3 / p4) | (p5 / p6)\n\n\n\n\n\n\n\nIt is particularly evident in the log-transformed library size and detected genes that there are clear outliers in the bottom right corner of the tissue area. We can additionally see that these spots were successfully identified in the bottom row. This “eye test” is a good diagnostic for confirming that local outliers are being accurately detected. We can alternatively visualize the spots that were detected as outliers by visualizing the z-transformed metrics for each spot using violin plots.\n\nCode# z-transformed library size and outliers\np1 &lt;- plotObsQC(spe, \n    plot_type=\"violin\", x_metric=\"sum_z\", \n    annotate=\"sum_outliers\", point_size=0.5) + \n    xlab(\"sum_outliers\")\n\n# z-transformed detected genes and outliers\np2 &lt;- plotObsQC(spe, \n    plot_type=\"violin\", x_metric=\"detected_z\", \n    annotate=\"detected_outliers\", point_size=0.5) + \n    xlab(\"detected_outliers\")\n\n# z-transformed mito percent and outliers\np3 &lt;- plotObsQC(spe, \n    plot_type=\"violin\", x_metric=\"subsets_mito_percent_z\", \n    annotate=\"subsets_mito_percent_outliers\", point_size=0.5) + \n    xlab(\"mito_outliers\")\n\np1 | p2 | p3",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>10</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/seq-quality-control.html#remove-low-quality-spots",
    "href": "pages/seq-quality-control.html#remove-low-quality-spots",
    "title": "10  Quality control",
    "section": "\n10.5 Remove low-quality spots",
    "text": "10.5 Remove low-quality spots\nNow that we have calculated several QC metrics and selected thresholds for each one, we can combine the sets of low-quality spots, and remove them from our object.\nWe also check again that the combined set of discarded spots does not correspond to any obvious biologically relevant group of spots.\nWe also select a slightly updated global threshold for the mitochondrial percentage.\n\nCode# select updated threshold for mito percent\nspe$qc_mito &lt;- spe$subsets_mito_percent &gt; 28\ntable(spe$qc_mito)\n\n##  \n##  FALSE  TRUE \n##   3622    17\n\n\n\nCode# combine global/local outliers\nspe$global_outliers &lt;- \n    spe$qc_lib_size | \n    spe$qc_detected | \n    spe$qc_mito\nspe$local_outliers &lt;- \n    spe$sum_outliers | \n    spe$detected_outliers | \n    spe$subsets_mito_percent_outliers\n\nrbind( # tabulate kept/flagged cells\n    global=table(spe$global_outliers),\n    local=table(spe$local_outliers))\n\n##         FALSE TRUE\n##  global  3614   25\n##  local   3628   11\n\n\n\nCode# check spatial pattern of combined set of discarded spots\nplotObsQC(spe, plot_type=\"spot\", annotate=\"global_outliers\") +\nplotObsQC(spe, plot_type=\"spot\", annotate=\"local_outliers\")\n\n\n\n\n\n\n\n\nCode# combine local and global outliers &\n# remove combined set of low-quality spots\nspe$discard &lt;- \n    spe$global_outliers | \n    spe$local_outliers\nspe &lt;- spe[, !spe$discard]\n\n# remove features with all 0 counts\nspe &lt;- spe[rowSums(counts(spe)) &gt; 0, ]\ndim(spe)\n\n##  [1] 21833  3607",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>10</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/seq-quality-control.html#sec-seq-quality-control-adv-topic",
    "href": "pages/seq-quality-control.html#sec-seq-quality-control-adv-topic",
    "title": "10  Quality control",
    "section": "\n10.6 Advanced topics",
    "text": "10.6 Advanced topics\n\n10.6.1 Histological artifact detection\n\n10.6.1.1 Hangnail artifact detection\nWhen working with ST datasets, ensuring high-quality data is essential for accurate downstream analyses. One common issue researchers face is the presence of technical artifacts. Here, we will demonstrate how to detect and remove “hangnail” artifacts from Visium datasets.\nHangnails artifacts arise during tissue preparation, and most commonly occur when smaller areas, such as distinct brain regions, are dissected from larger structures like whole human brain sections Totty, Hicks, and Guo (2025). Tissue dissection can cause mechanical damage, leading to areas with artificially low biological heterogeneity. This manifests as regions with low variance in QC metrics such as mitochondrial percentage. Such artifacts can significantly impact downstream analyses, such as spatial domain detection, if not properly identified and addressed Totty, Hicks, and Guo (2025).\n\n10.6.1.2 Loading data and adding QC metrics\nWe start by loading an example Visium dataset from the SpotSweeper package containing a known hangnail artifact, and then calculate per-spot QC metrics, such as mitochondrial percentage, as shown above.\n\nCode# load DLPFC artifact samples from SpotSweeper package\ndata(DLPFC_artifact)\nspe.hangnail &lt;- DLPFC_artifact\n\n# identify mitochondrial genes\nis_mito &lt;- grepl(\"(^MT-)|(^mt-)\", rowData(spe.hangnail)$gene_name)\ntable(is_mito)\nrowData(spe.hangnail)$gene_name[is_mito]\n\n# calculate per-spot QC metrics and store in colData\nspe.hangnail &lt;- addPerCellQC(spe.hangnail, subsets=list(mito = is_mito))\nhead(colData(spe.hangnail))\n\n\n\n10.6.1.3 Identifying hangnail artifacts via local variance\nAs a note, SpotSweeper’s findArtifacts() function assumes that an artifact is present in the sample being analyzed. This means that if no artifact is present, the function will arbitrarily label half of the sample as an “artifact”. Therefore, confirming the presence of a hangnail artifact prior to artifact detection is essential.\nHangnail artifacts are best identified by plotting QC metrics for all samples, as they appear as regions with unusually smooth or low variance in mitochondrial percentage. We can observe this in the example below, as the oblong piece of tissue on the right side has an usually smooth or “smudged” appearance in the mitochondrial percentage (subsets_mito_percent) on the right, but not in the library size (sum) on the left.\n\nCodeplotCoords(spe.hangnail, annotate=\"sum\") |\nplotCoords(spe.hangnail, annotate=\"subsets_mito_percent\")\n\n\n\n\n\n\n\nA complementary strategy to confirm that existence of an artifact prior to removal is to quantify the local variance in mitochondrial percentage. Here, we will do this using the localVariance() function in SpotSweeper, specifying the QC metric (subsets_mito_percent) and the number of neighbors to consider. The default neighbor size of n_neighbors = 36 works well in our experience.\n\nCodespe.hangnail &lt;- localVariance(spe.hangnail, \n    n_neighbors=36, \n    metric=\"subsets_mito_percent\", \n    name=\"local_mito_variance_k36\")\n\nplotCoords(spe.hangnail, annotate=\"local_mito_variance_k36\", point_size=1)\n\n\n\n\n\n\n\nAnother way to confirm the presence of a hangnail artifact is via the distribution of the local variance in mitochondrial percentage. Samples affected by hangnails often exhibit a long-tailed or bimodal distribution towards lower variance, reflecting regions with abnormal mitochondrial signal variation. We will demonstrate this here by comparing the distribution of local mitochondrial variance in ths hangnail sample to the distribution in a normal sample.\n\nCode# get local mito ratio variance of a normal sample\nspe &lt;- localVariance(spe, \n    n_neighbors=36, \n    metric=\"subsets_mito_percent\", \n    name=\"local_mito_variance_k36\")\n\n# plot distribution of local variance in mitochondrial percentage\nhangnail_sample &lt;- data.frame(x=spe.hangnail$local_mito_variance_k36)\nnormal_sample &lt;- data.frame(x=spe$local_mito_variance_k36)\n\np1 &lt;- ggplot(hangnail_sample, aes(x)) + ggtitle(\"Hangnail Sample\")\np2 &lt;- ggplot(normal_sample, aes(x)) + ggtitle(\"Normal Sample\")\n\n(p1 | p2) & \n    geom_density(fill=\"gray\", alpha=0.5) &\n    xlab(\"local mitochondrial variance\")\n\n\n\n\n\n\n\n\n10.6.1.4 Classifying artifacts using multiscale local variance\nAfter confirming that our sample contains a hangnail artifact with low local variance, we can move on to artifact clarification using the findArtifacts() function. This function calculates the local variance (subsets_mito_ratio) at multiple scales (n_order) to accurately detect hangnail artifacts. Visium spots form hexagonal grids, so we specify shape = \"hexagonal\" to ensure the correct number of neighbors are used for each order. Use shape = \"square\" for datasets with square grid arrangements, such as STEREO-seq or Visium HD.\n\nCodespe.hangnail &lt;- findArtifacts(spe.hangnail, \n    mito_percent=\"expr_chrM_ratio\", \n    mito_sum=\"expr_chrM\", n_order=7, \n    shape=\"hexagonal\", name=\"artifact\")\n\nplotObsQC(spe.hangnail, plot_type=\"spot\", annotate=\"artifact\")\n\n\n\n\n\n\nCode# removing hangnail artifacts prior to downstream analyses\nspe.hangnail &lt;- spe.hangnail[, !spe.hangnail$artifact]\n\n\n\n10.6.2 Assessing spot quality via cell segmentation\nThe number of cells per spot depends on the tissue type and organism. Here, we check for any outlier values that could indicate problems during cell segmentation.\n\nCode# histogram of cell counts\nhist(spe$cell_count, breaks=20)\n\n\n\n\n\n\nCode# distribution of cells per spot\n(tbl_cells_per_spot &lt;- table(spe$cell_count))\n\n##  \n##    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18 \n##   79 207 476 621 614 537 417 285 139  92  50  25  18  10   9   3   8   2   1 \n##   19  20  21  22  23  25  26  27 \n##    2   3   2   1   1   2   2   1\n\n\nWe see a tail of very high values, which could indicate problems for these spots. These values are also visible on the scatterplots. Here, we again plot the number of expressed genes vs. cell counts, with an added trend.\n\nCode# plot number of expressed genes vs. number of cells per spot\nplotObsQC(spe, \n    plot_type=\"scatter\", x_threshold=10,\n    x_metric=\"cell_count\", y_metric=\"detected\")\n\n\n\n\n\n\n\nIn particular, we see that the spots with very high cell counts also have low numbers of expressed genes. This indicates that the experiments may have failed for these spots, and they should be removed.\nWe select a threshold of 10 cells per spot. The number of spots above this threshold is relatively small, and there is a clear downward trend in the number of expressed genes above this threshold.\n\nCode# select QC threshold for number of cells per spot\nspe$qc_cell_count &lt;- spe$cell_count &gt; 10\ntable(spe$qc_cell_count)\n\n##  \n##  FALSE  TRUE \n##   3517    90\n\nCode# check spatial pattern of discarded spots\nplotObsQC(spe, plot_type=\"spot\", annotate=\"qc_cell_count\")\n\n\n\n\n\n\n\nWhile there is a spatial pattern to the discarded spots, it does not appear to be correlated with the known biological features (cortical layers). The discarded spots are all on the edges of the tissue. It seems plausible that there may have been experimental issues and/or issues with computational cell segmentation at the edges of the images, so it makes sense to remove these spots.\n\n10.6.3 Zero-cell and single-cell spots\nA particular characteristic of Visium data is that spots can contain zero, one, or multiple cells.\nWe could also imagine other filtering procedures such as (i) removing spots with zero cells, or (ii) restricting the analysis to spots containing a single cell (which would make the data more similar to scRNA-seq).\nHowever, this would discard a large amount of biological information. Below, we show the distribution of cells per spot again (up to a filtering threshold of 12 cells per spot).\n\nCode# distribution of cells per spot\n(ns &lt;- tbl_cells_per_spot)[seq(12)]\n\n##  \n##    0   1   2   3   4   5   6   7   8   9  10  11 \n##   79 207 476 621 614 537 417 285 139  92  50  25\n\nCode# as proportions\nround(100*ns/sum(ns), 2)[seq(12)]\n\n##  \n##      0     1     2     3     4     5     6     7     8     9    10    11 \n##   2.19  5.74 13.20 17.22 17.02 14.89 11.56  7.90  3.85  2.55  1.39  0.69\n\n\nOnly 6% of spots contain a single cell. If we restricted the analysis to these spots only, we would be discarding most of the data.\nRemoving the spots containing zero cells (2% of spots) would also be problematic, since these spots can also contain biologically meaningful information. For example, in this brain dataset, the regions between cell bodies consists of neuropil (dense networks of axons and dendrites). In Maynard et al. (2021), the authors explored the transcriptomic profile of these neuropil spots.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>10</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/seq-quality-control.html#appendix",
    "href": "pages/seq-quality-control.html#appendix",
    "title": "10  Quality control",
    "section": "\n10.7 Appendix",
    "text": "10.7 Appendix\nSave data\nSave data object for re-use within later chapters.\n\nCode# filter genes: remove zeros\nex &lt;- rowSums(counts(spe_save)) != 0\nspe_save &lt;- spe_save[ex, ]\n# save object\nsaveRDS(spe_save, \"seq-spe_qc.rds\")\n\n\nReferences\n\n\n\n\nBhuva, Dharmesh D., Chin Wee Tan, Agus Salim, Claire Marceaux, Marie A. Pickering, Jinjin Chen, Malvika Kharbanda, et al. 2024. “Library Size Confounds Biology in Spatial Transcriptomics Data.” Genome Biology 25 (99). https://doi.org/10.1186/s13059-024-03241-7.\n\n\nMaynard, Kristen R., Leonardo Collado-Torres, Lukas M. Weber, Cedric Uytingco, Brianna K. Barry, Stephen R. Williams, Joseph L. Catallini II, et al. 2021. “Transcriptome-Scale Spatial Gene Expression in the Human Dorsolateral Prefrontal Cortex.” Nature Neuroscience 24: 425–36. https://doi.org/10.1038/s41593-020-00787-0.\n\n\nMcCarthy, Davis J, Kieran R Campbell, Aaron T L Lun, and Quin F Wills. 2017. “Scater: Pre-Processing, Quality Control, Normalization and Visualization of Single-Cell RNA-Seq Data in r.” Bioinformatics 33: 1179–86. https://doi.org/10.1093/bioinformatics/btw777.\n\n\nTotty, Michael, Stephanie C. Hicks, and Boyi Guo. 2025. “SpotSweeper: Spatially Aware Quality Control for Spatial Transcriptomics.” Nature Methods 22: 1520–30. https://doi.org/10.1038/s41592-025-02713-3.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>10</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html",
    "href": "pages/seq-intermediate-processing.html",
    "title": "11  Intermediate processing",
    "section": "",
    "text": "11.1 Preamble",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html#preamble",
    "href": "pages/seq-intermediate-processing.html#preamble",
    "title": "11  Intermediate processing",
    "section": "",
    "text": "11.1.1 Introduction\nThis chapter demonstrates methods for several intermediate processing steps – normalization, feature selection, and dimensionality reduction – that are required before downstream analysis methods can be applied.\nWe use methods from the scater (McCarthy et al. 2017) and scran (Lun, McCarthy, and Marioni 2016) Bioconductor packages, which were originally developed for scRNA-seq data, with the (simplified) assumption that these methods can be applied to spot-based ST data by treating spots as equivalent to cells. In addition, we discuss alternative spatially-aware methods, and provide links to later parts of the book where these methods are described in more detail.\nFollowing the processing steps, this chapter also includes short demonstrations for subsequent steps, including clustering and identification of marker genes. For more details on these steps, see the later analysis chapters or workflow chapters.\n\n11.1.2 Dependencies\n\nCodelibrary(scran)\nlibrary(scater)\nlibrary(ggspavis)\nlibrary(pheatmap)\nlibrary(patchwork)\nlibrary(BayesSpace)\nlibrary(SpatialExperiment)\n\n\n\nCode# set seed for reproducibility\nset.seed(100)\n\n\n\n11.1.3 Load data\nHere, we load 10x Genomics Visium data from one postmortem human brain tissue section from the dorsolateral prefrontal cortex (DLPFC) brain region (Maynard et al. 2021), which has previously undergone quality control and filtering (see also Chapter 10).\n\n\nCode# load data\n(spe &lt;- readRDS(\"seq-spe_qc.rds\"))\n\n##  class: SpatialExperiment \n##  dim: 21842 3639 \n##  metadata(0):\n##  assays(1): counts\n##  rownames(21842): ENSG00000243485 ENSG00000238009 ... ENSG00000271254\n##    ENSG00000268674\n##  rowData names(4): gene_id gene_name feature_type subsets_mito\n##  colnames(3639): AAACAAGTATCTCCCA-1 AAACAATCTACTAGCA-1 ...\n##    TTGTTTGTATTACACG-1 TTGTTTGTGTAAATTC-1\n##  colData names(14): barcode_id sample_id ... subsets_mito_percent\n##    total\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres\n##  imgData names(4): sample_id image_id data scaleFactor",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html#sec-seq-intermediate-processing-norm",
    "href": "pages/seq-intermediate-processing.html#sec-seq-intermediate-processing-norm",
    "title": "11  Intermediate processing",
    "section": "\n11.2 Normalization",
    "text": "11.2 Normalization\n\n11.2.1 Library size normalization\nA simple and fast approach for normalization is “library size normalization”, which consists of calculating log-transformed normalized counts (“logcounts”) using library size factors, treating each spot as equivalent to a single cell. This method is simple, fast, and generally provides a good baseline. It can be calculated using the scater (McCarthy et al. 2017) and scran (Lun, McCarthy, and Marioni 2016) packages. See also Chapter 26.\nHowever, library size normalization does not make use of any spatial information. In some datasets, the simplified assumption that each spot can be treated as equivalent to a single cell is not appropriate, and can create problems during analysis. (“Library size confounds biology in spatial transcriptomics data” (Bhuva et al. 2024).)\nSome alternative non-spatial methods from scRNA-seq workflows (e.g. normalization by deconvolution) are also less appropriate for spot-based ST data, since spots can contain multiple cells from one or more cell types, and datasets can contain multiple samples (e.g. multiple tissue sections), which may result in sample-specific clustering.\n\nCode# calculate library size factors\nspe &lt;- computeLibraryFactors(spe)\n\nsummary(sizeFactors(spe))\n\n##     Min. 1st Qu.  Median    Mean 3rd Qu.    Max. \n##  0.04576 0.63035 0.89770 1.00000 1.29000 3.79953\n\nCodehist(sizeFactors(spe), breaks = 50, main = \"Histogram of size factors\")\n\n\n\n\n\n\nCode# calculate logcounts and store in new assay\nspe &lt;- logNormCounts(spe)\n\nassayNames(spe)\n\n##  [1] \"counts\"    \"logcounts\"\n\n\n\n11.2.2 Spatially-aware normalization\nSpaNorm (Salim et al. 2025) was developed for ST data, using a gene-wise model (e.g. negative binomial) in which variation is decomposed into a library size-dependent (technical) and -independent (biological) component.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html#feature-selection",
    "href": "pages/seq-intermediate-processing.html#feature-selection",
    "title": "11  Intermediate processing",
    "section": "\n11.3 Feature selection",
    "text": "11.3 Feature selection\n\n11.3.1 Highly variable genes (HVGs)\nIdentifying a set of top “highly variable genes” (HVGs) is a standard step for feature selection in many scRNA-seq workflows, which can also be used as a simple and fast baseline approach in spot-based ST data. This makes the simplified assumption that spots can be treated as equivalent to cells.\nHere, we take a standard approach for selecting HVGs; see Section 29.2.1 for more details. We first remove mitochondrial genes, since these tend to be very highly expressed and are not of main biological interest.\n\nCode# identify mitochondrial genes\nnm &lt;- rowData(spe)$gene_name\nmt &lt;- grepl(\"^MT-\", nm, ignore.case = TRUE)\ntable(mt)\n# remove them\nspe &lt;- spe[!mt, ]\n\n##  mt\n##  FALSE  TRUE \n##  21829    13\n\n\nNext, apply methods from scran. This gives a list of top HVGs, which can be used as the input for subsequent steps. The parameter prop defines the proportion of HVGs to select – for example, prop = 0.1 returns the top 10%. (Alternatively, argument n can be used to selected a fixed number of top HVGs, say 1000 or 2000.)\n\nCode# fit mean-variance relationship\ndec &lt;- modelGeneVar(spe)\n# plot\nplot(dec$mean, dec$total, xlab = \"mean (logexpr)\", ylab = \"variance (logexpr)\")\ncurve(metadata(dec)$trend(x), add = TRUE, col = \"dodgerblue\")\n\n\n\n\n\n\nCode# select top HVGs\nsel &lt;- getTopHVGs(dec, prop = 0.1)\n# number of HVGs selected\nlength(sel)\n\n##  [1] 1420\n\n\n\n11.3.2 Spatially variable genes (SVGs)\nAlternatively, spatially-aware methods can be used to identify a set of “spatially variable genes” (SVGs). These methods take the spatial coordinates of the measurements into account, which can generate a more biologically informative ranking of genes associated with biological structure within the tissue area. The set of SVGs may then be used either instead of or complementary to HVGs in subsequent steps.\nA number of methods have been developed to identify SVGs. For more details and examples, see Section 29.3.1.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html#dimensionality-reduction",
    "href": "pages/seq-intermediate-processing.html#dimensionality-reduction",
    "title": "11  Intermediate processing",
    "section": "\n11.4 Dimensionality reduction",
    "text": "11.4 Dimensionality reduction\nA standard next step is to perform dimensionality reduction using principal component analysis (PCA), applied to the set of top HVGs (or SVGs). The set of top principal components (PCs) can then be used as the input for subsequent steps. See Chapter 27 for more details.\nNote that we have set a random seed at the start of the chapter for reproducibility, since the fast implementation in scater::runPCA() uses a random initialization.\n\nCodespe &lt;- runPCA(spe, subset_row = sel)\n\n##  using unknown matrix fallback for ' dgTMatrix '\n\n\nIn addition, we can perform nonlinear dimensionality reduction using the UMAP algorithm, applied to the set of top PCs (default 50). The first two UMAP dimensions can be used for visualization purposes by plotting them on the x and y axes.\n\nCodespe &lt;- runUMAP(spe, dimred = \"PCA\")",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html#sec-seq-intermediate-processing-clustering",
    "href": "pages/seq-intermediate-processing.html#sec-seq-intermediate-processing-clustering",
    "title": "11  Intermediate processing",
    "section": "\n11.5 Clustering",
    "text": "11.5 Clustering\n\nAfter completing the intermediate processing steps above, we next demonstrate some short examples of downstream analysis steps.\nHere, we run a spatially-aware clustering algorithm, BayesSpace (Zhao et al. 2021), to identify spatial domains. BayesSpace was developed for sequencing-based ST data, and takes the spatial coordinates of the measurements into account.\nFor more details on clustering, see Chapter 28.\n\nCode# run BayesSpace clustering\n.spe &lt;- spatialPreprocess(spe, skip.PCA = TRUE)\n.spe &lt;- spatialCluster(.spe, nrep = 1000, burn.in = 100, q = 10, d = 20)\n\n# cluster labels\ntable(spe$BayesSpace &lt;- factor(.spe$spatial.cluster))\n\n##  \n##    1   2   3   4   5   6   7   8   9  10 \n##   35 672 250 527 378 492 316 274 494 201",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html#visualizations",
    "href": "pages/seq-intermediate-processing.html#visualizations",
    "title": "11  Intermediate processing",
    "section": "\n11.6 Visualizations",
    "text": "11.6 Visualizations\nWe can visualize the cluster labels in x-y space as spatial domains, alongside the manually annotated reference labels (ground_truth) available for this dataset.\n\nCode# using plotting functions from ggspavis package\n# and formatting using patchwork package\nplotCoords(spe, annotate = \"ground_truth\") + \nplotCoords(spe, annotate = \"BayesSpace\") + \n  plot_layout() & \n  theme(legend.key.size = unit(0, \"lines\")) & \n  scale_color_manual(values = unname(pals::trubetskoy()))\n\n\n\n\n\n\nCodetable(spe$BayesSpace, spe$ground_truth, useNA = \"ifany\")\n\n##      \n##       Layer1 Layer2 Layer3 Layer4 Layer5 Layer6  WM &lt;NA&gt;\n##    1       3      0      0      0      1     30   0    1\n##    2       0      0      4     63    562     43   0    0\n##    3       0      0      0      0      0     38 212    0\n##    4       0      4    500      0      1      2   0   20\n##    5       3    209    165      0      0      1   0    0\n##    6       0      0    318    155     19      0   0    0\n##    7     265     40      2      0      1      1   0    7\n##    8       0      0      0      0      0      1 273    0\n##    9       0      0      0      0     88    406   0    0\n##    10      2      0      0      0      1    170  28    0\n\n\nInspecting the spatial distribution of the top PCs, we can observe that the main driver of expression variability is the distinction between white matter (WM) and non-WM cortical layers.\n\nCodepcs &lt;- reducedDim(spe, \"PCA\")\npcs &lt;- pcs[, seq_len(4)]\nlapply(colnames(pcs), \\(.) {\n    spe[[.]] &lt;- pcs[, .]\n    plotCoords(spe, annotate = .)\n}) |&gt; \n    wrap_plots(nrow = 1) & coord_equal() & \n    geom_point(shape = 16, stroke = 0, size = 0.2) & \n    scale_color_gradientn(colors = pals::jet(), n.breaks = 3) & \n    theme_void() & theme(\n        plot.title = element_text(hjust = 0.5), \n        legend.key.width = unit(0.2, \"lines\"), \n        legend.key.height = unit(0.8, \"lines\"))\n##  Coordinate system already present.\n##  ℹ Adding new coordinate system, which will replace the existing one.\n##  Coordinate system already present.\n##  ℹ Adding new coordinate system, which will replace the existing one.\n##  Coordinate system already present.\n##  ℹ Adding new coordinate system, which will replace the existing one.\n##  Coordinate system already present.\n##  ℹ Adding new coordinate system, which will replace the existing one.\n##  Scale for colour is already present.\n##  Adding another scale for colour, which will replace the existing scale.\n##  Scale for colour is already present.\n##  Adding another scale for colour, which will replace the existing scale.\n##  Scale for colour is already present.\n##  Adding another scale for colour, which will replace the existing scale.\n##  Scale for colour is already present.\n##  Adding another scale for colour, which will replace the existing scale.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html#differential-expression",
    "href": "pages/seq-intermediate-processing.html#differential-expression",
    "title": "11  Intermediate processing",
    "section": "\n11.7 Differential expression",
    "text": "11.7 Differential expression\nHaving clustered our spots to identify spatial domains, we can test for genes that are differentially expressed (DE) between spatial domains, which can be interpreted as marker genes for the spatial domains; see also Section 29.2.2.\nHere, we will use pairwise t-tests and specifically test for upregulation (as opposed to downregulation), i.e. expression should be higher in the cluster for which a gene is reported to be a marker. See Chapter 28 for additional details. Alternatively, we could also test for spatially variable genes (SVGs) within domains to identify genes with spatial expression patterns that vary independently of the spatial arrangement of domains; see Section 29.3.1 for details.\n\nCode# using scran package\nmgs &lt;- findMarkers(spe, groups = spe$BayesSpace, direction = \"up\")\ntop &lt;- lapply(mgs, \\(df) rownames(df)[df$Top &lt;= 2])\nlength(top &lt;- unique(unlist(top)))\n\n##  [1] 40\n\n\nWe can visualize selected markers as a heatmap (of cluster-wise expression means):\n\nCode# compute cluster-wise averages\npbs &lt;- aggregateAcrossCells(spe, \n    ids = spe$BayesSpace, subset.row = top, \n    use.assay.type = \"logcounts\", statistics = \"mean\")\n# use gene symbols as feature names\nmtx &lt;- t(assay(pbs))\ncolnames(mtx) &lt;- rowData(pbs)$gene_name\n# using pheatmap package\npheatmap(mat = mtx, scale = \"column\")\n\n\n\n\n\n\n\nOr spatial plots (of spot-level expression values):\n\nCode# gene-wise spatial plots\ngs &lt;- c(\"MBP\", \"PLP1\", \"NRGN\", \"SNAP25\", \"NEFL\", \"HPCAL1\")\nps &lt;- lapply(gs, \\(.) {\n    plotCoords(spe, \n        annotate = ., \n        feature_names = \"gene_name\", \n        assay_name = \"logcounts\") })\n# figure arrangement\nwrap_plots(ps, nrow = 2) & \n  theme(legend.key.width = unit(0.4, \"lines\"), \n        legend.key.height = unit(0.8, \"lines\")) & \n  scale_color_gradientn(colors = rev(hcl.colors(9, \"Rocket\")))",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-intermediate-processing.html#appendix",
    "href": "pages/seq-intermediate-processing.html#appendix",
    "title": "11  Intermediate processing",
    "section": "\n11.8 Appendix",
    "text": "11.8 Appendix\nSave data\nSave data object for re-use within later chapters.\n\nCodecolLabels(spe) &lt;- spe$BayesSpace\nsaveRDS(spe, \"seq-spe_cl.rds\")\n\n\nReferences\n\n\n\n\nBhuva, Dharmesh D., Chin Wee Tan, Agus Salim, Claire Marceaux, Marie A. Pickering, Jinjin Chen, Malvika Kharbanda, et al. 2024. “Library Size Confounds Biology in Spatial Transcriptomics Data.” Genome Biology 25 (99). https://doi.org/10.1186/s13059-024-03241-7.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Research 5 (2122). https://doi.org/10.12688/f1000research.9501.2.\n\n\nMaynard, Kristen R., Leonardo Collado-Torres, Lukas M. Weber, Cedric Uytingco, Brianna K. Barry, Stephen R. Williams, Joseph L. Catallini II, et al. 2021. “Transcriptome-Scale Spatial Gene Expression in the Human Dorsolateral Prefrontal Cortex.” Nature Neuroscience 24: 425–36. https://doi.org/10.1038/s41593-020-00787-0.\n\n\nMcCarthy, Davis J, Kieran R Campbell, Aaron T L Lun, and Quin F Wills. 2017. “Scater: Pre-Processing, Quality Control, Normalization and Visualization of Single-Cell RNA-Seq Data in r.” Bioinformatics 33: 1179–86. https://doi.org/10.1093/bioinformatics/btw777.\n\n\nSalim, Agus, Dharmesh D. Bhuva, Carissa Chen, Chin Wee Tan, Pengyi Yang, Melissa J. Davis, and Jean Y. H. Yang. 2025. “SpaNorm: Spatially-Aware Normalization for Spatial Transcriptomics Data.” Genome Biology 26 (109). https://doi.org/10.1186/s13059-025-03565-y.\n\n\nZhao, Edward, Matthew R. Stone, Xing Ren, Jamie Guenthoer, Kimberly S. Smythe, Thomas Pulliam, Stephen R. Williams, et al. 2021. “Spatial Transcriptomics at Subspot Resolution with BayesSpace.” Nature Biotechnology 39: 1375–84. https://doi.org/10.1038/s41587-021-00935-2.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>11</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/seq-deconvolution.html",
    "href": "pages/seq-deconvolution.html",
    "title": "12  Deconvolution",
    "section": "",
    "text": "12.1 Introduction\nSequencing-based ST data can contain zero to multiple cells per spot, which might be fully or only partially covered by cells, depending on the spatial resolution of the platform and the tissue cell density (see also Chapter 8 and the schematic Figure below). This aspect of the data implies that there may be a mixture of cell types in a spot and thus a mixture of transcriptional programs.\nSchematic illustrating multiple cells in a 10x Genomics Visium spot (diameter of 55µm; purple line) overlaying the hematoxylin and eosin (H&E) stained image. The center-to-center distance between spots is 100µm (yellow line), and a typical immune cell’s diameter is around 10µm (cyan line).\nTo help understand these mixtures, at least 20 deconvolution techniques have been proposed for spot-level ST data. Some methods require borrowing insights from a scRNA-seq reference dataset, while others can be reference-free. Based on their underlying algorithms, Li et al. (2023) have grouped methods into five categories:\nAmong these, std-poisson, STdeconvolve, and SpiceMix are reference-free methods. Methods that incorporate spatial location information are CARD, DSTG, SD2, Tangram, cell2location, DestVI, std-poisson, and SpiceMix.\nIn this section, we will demonstrate deconvolution of cell types per spot, using RCTD on Visium and Visium HD datasets.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>12</span>  <span class='chapter-title'>Deconvolution</span>"
    ]
  },
  {
    "objectID": "pages/seq-deconvolution.html#introduction",
    "href": "pages/seq-deconvolution.html#introduction",
    "title": "12  Deconvolution",
    "section": "",
    "text": "probabilistic-based: use Bayesian inference, likelihood estimation, or probabilistic modeling to estimate cell type compositions while incorporating uncertainty. Available tools include\n\n\nCARDspa (Ma and Zhou 2022)\n\n\nspacexr’s RCTD (Cable et al. 2022)\n\n\nSpatialDecon (Danaher et al. 2022)\n\n\nSTdeconvolve (Miller et al. 2022) in R, and\n\ncell2location (Kleshchevnikov et al. 2022)\n\n\nscvi-tools’s DestVI (Lopez et al. 2022)\n\n\nstd-poisson (Berglund et al. 2018)\n\n\nstereoscope (Andersson et al. 2020)\n\n\nSTRIDE (Sun et al. 2022) in Python.\n\n\n\nnon-negative matrix factorization (NMF)-based: decompose gene expression data into latent components representing different cell types. Available tools include Giotto’s SpatialDWLS (Chen et al. 2025) and SPOTlight (Elosua-Bayes et al. 2021) in R, and NMFreg_tutorial in Python.\n\ngraph-based: use graph neural networks or graph-based optimization to model spatial relationships. Available tools include SD2 (Li et al. 2022) in R, and DSTG (Song and Su 2021) and SpiceMIx (Chidester et al. 2023) in Python.\n\noptimal transport (OT)-based: infer spatial gene expression distributions by mapping scRNA-seq and ST data. Available tools include SpaOTsc (Cang and Nie 2020) and novosparc (Nitzan et al. 2019) in Python.\n\ndeep learning-based: align and integrate single-cell and spatial transcriptomics data with neural networks. For example, Tangram (Biancalani et al. 2021) in Python.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>12</span>  <span class='chapter-title'>Deconvolution</span>"
    ]
  },
  {
    "objectID": "pages/seq-deconvolution.html#sec-seq-deconvolution-load-data",
    "href": "pages/seq-deconvolution.html#sec-seq-deconvolution-load-data",
    "title": "12  Deconvolution",
    "section": "\n12.2 Dependencies",
    "text": "12.2 Dependencies\n\nCodelibrary(BiocParallel)\nlibrary(CARDspa)\nlibrary(DropletUtils)\nlibrary(ggplot2)\nlibrary(ggspavis)\nlibrary(OSTA.data)\nlibrary(patchwork)\nlibrary(pheatmap)\nlibrary(scran)\nlibrary(scater)\nlibrary(spacexr)\nlibrary(SpatialExperiment)\nlibrary(VisiumIO)\n\n\nIn this example of Visium breast cancer data (Janesick et al. 2023), we perform cell type deconvolution without a single-cell (Chromium) reference and compare the concordance with the provided Visium annotation provided by 10x Genomics.\n\nCode# retrieve dataset from OSF repository\nid &lt;- \"Visium_HumanBreast_Janesick\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n\n# read into 'SpatialExperiment'\nvis &lt;- TENxVisium(\n    spacerangerOut=file.path(td, \"outs\"), \n    processing=\"filtered\", \n    format=\"h5\", \n    images=\"lowres\") |&gt; \n    import()\n\n# retrieve spot annotations & add as metadata\ndf &lt;- read.csv(file.path(td, \"annotation.csv\"))\ncs &lt;- match(colnames(vis), df$Barcode)\nvis$anno &lt;- factor(df$Annotation[cs])\n\n# set gene symbols as feature names\nrownames(vis) &lt;- make.unique(rowData(vis)$Symbol)\nvis\n\n##  class: SpatialExperiment \n##  dim: 18085 4992 \n##  metadata(2): resources spatialList\n##  assays(1): counts\n##  rownames(18085): SAMD11 NOC2L ... MT-ND6 MT-CYB\n##  rowData names(3): ID Symbol Type\n##  colnames(4992): AACACCTACTATCGAA-1 AACACGTGCATCGCAC-1 ...\n##    TGTTGGCCAGACCTAC-1 TGTTGGCCTACACGTG-1\n##  colData names(5): in_tissue array_row array_col sample_id anno\n##  reducedDimNames(0):\n##  mainExpName: Gene Expression\n##  altExpNames(0):\n##  spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres\n##  imgData names(4): sample_id image_id data scaleFactor\n\n\n\nCodexy &lt;- spatialCoords(vis) * scaleFactors(vis)\nys &lt;- nrow(imgRaster(vis)) - range(xy[, 2])\nxs &lt;- range(xy[, 1])\nbox &lt;- geom_rect(\n    xmin=xs[1], xmax=xs[2], ymin=ys[1], ymax=ys[2], \n    col=\"black\", fill=NA, linetype=2, linewidth=2/3)\nplotVisium(vis, spots=FALSE, point_size=1) + box + \n    plotVisium(vis, point_size=1, zoom=TRUE) + \n    plot_layout(nrow=1) & facet_null()\n\n\n\n\n\n\n\nDeconvolution is performed after quality control, as detailed in Chapter 10, and is usually performed on unnormalized and untransformed (i.e. raw) counts. Here, we quickly check some typically spot-level metrics.\n\nCodesub &lt;- list(mt=grep(\"^MT-\", rownames(vis)))\nvis &lt;- addPerCellQCMetrics(vis, subsets=sub)\n\n\n\nCodevis$log_sum &lt;- log1p(vis$sum)\nplotCoords(vis, \n    annotate=\"log_sum\") + \n    ggtitle(\"log library size\") + \nplotCoords(vis, \n    annotate=\"subsets_mt_percent\") + \n    ggtitle(\"% mitochondrial\") + \nggplot(\n    data.frame(colData(vis)), \n    aes(x=sum, y=subsets_mt_percent)) + \n    geom_point() + geom_density_2d() +\n    scale_x_log10() + scale_y_sqrt() +\n    theme(aspect.ratio=2/3) +\nplot_layout(nrow=1) & theme(\n    legend.key.width=unit(0.5, \"lines\"), \n    legend.key.height=unit(1, \"lines\")) & \n    scale_color_gradientn(colors=pals::jet())\n\n\n\n\n\n\n\nA few spots have low library sizes, and can be removed.\n\nCodevis &lt;- vis[, vis$sum &gt; 1000]\n\n\nWe first visualize the spot-level cell type annotation provided by 10x Genomics.\n\nCodeplotCoords(vis, \n    annotate=\"anno\", point_size=1, \n    pal=unname(pals::trubetskoy())) + \n    theme(legend.key.size=unit(0, \"lines\"))\n\n\n\n\n\n\n\nNow, we load the single-cell (Chromium) reference data for the Visium dataset. To streamline the demonstration, we consolidate some of the cell type annotations provided by 10x Genomics (i.e. Annotation) into more generalized categories (i.e. Annogrp).\n\nCode# retrieve dataset from OSF repo\nid &lt;- \"Chromium_HumanBreast_Janesick\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n\n# read into 'SingleCellExperiment'\nfs &lt;- list.files(td, full.names=TRUE)\nh5 &lt;- grep(\"h5$\", fs, value=TRUE)\nsce &lt;- read10xCounts(h5, col.names=TRUE)\n\n# use gene symbols as feature names\nrownames(sce) &lt;- make.unique(rowData(sce)$Symbol)\n\n# retrieve cell type labels\ncsv &lt;- grep(\"csv$\", fs, value=TRUE)\ncd &lt;- read.csv(csv, row.names=1)\n\n# ignore mixtures\nlab &lt;- cd$Annotation\nlab[grepl(\"Hyb\", lab)] &lt;- NA \n\n# simplify annotations\npat &lt;- c(\n    \"B Cell\"=\"B\", \"T Cell\"=\"T\", \"Mac\"=\"macro\", \"Mast\"=\"mast\", \n    \"DCs\"=\"dendritic\", \"Peri\"=\"perivas\", \"End\"=\"endo\", \n    \"Str\"=\"stromal\", \"Inv\"=\"tumor\", \"Myo\"=\"myoepi\")\nfor (. in names(pat)) \n    lab[grep(., lab)] &lt;- pat[.]\nlab &lt;- gsub(\"\\\\s\", \"\", lab)\n\n# add as cell metadata\ntable(cd$Annogrp &lt;- lab)\n\n##  \n##          B     DCIS1     DCIS2         T dendritic      endo     macro \n##       1463      1863      2159      4742       313      1055      3724 \n##       mast    myoepi   perivas   stromal     tumor \n##         92      1839       285      2611      5897\n\nCodecolData(sce)[names(cd)] &lt;- cd[colnames(sce), ]\n\n\nWe only keep the Chromium data with an annotation and are not labeled as “Hybrid”, as these correspond to mixed subpopulations.\n\nCodesce &lt;- sce[, !is.na(sce$Annogrp)]\ndim(sce)\n\n##  [1] 18082 26031",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>12</span>  <span class='chapter-title'>Deconvolution</span>"
    ]
  },
  {
    "objectID": "pages/seq-deconvolution.html#rctd",
    "href": "pages/seq-deconvolution.html#rctd",
    "title": "12  Deconvolution",
    "section": "\n12.3 RCTD",
    "text": "12.3 RCTD\nNext, we perform deconvolution with spacexr (also known as RCTD)(Cable et al. 2022).  By default, runRctd()’s rctd_mode = \"doublet\" specifies at most two subpopulations coexist in a data unit (i.e. within a spot); here, we set rctd_mode = \"full\" in order to allow for an arbitrary number of subpopulations to be fit instead.Note that RCTD can also be adapted to Visium HD data with rctd_mode = \"doublet\", as demonstrated by (de Oliveira et al. 2025) and Chapter 16.\n\nCoderctd_data &lt;- createRctd(vis, sce, cell_type_col=\"Annogrp\")\n(res &lt;- runRctd(rctd_data, max_cores=4, rctd_mode=\"full\"))\n\n##  class: SpatialExperiment \n##  dim: 12 4962 \n##  metadata(4): spatial_rna config cell_type_info internal_vars\n##  assays(1): weights\n##  rownames(12): B DCIS1 ... stromal tumor\n##  rowData names(0):\n##  colnames(4962): AACACCTACTATCGAA-1 AACACGTGCATCGCAC-1 ...\n##    TGTTGGCCAGACCTAC-1 TGTTGGCCTACACGTG-1\n##  colData names(1): sample_id\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : x y\n##  imgData names(0):\n\n\nWeights inferred by RCTD should be normalized such that proportions of cell types sum to 1 for each spot:\n\nCode# scale weights such that they sum to 1\nws &lt;- assay(res)\nws &lt;- sweep(ws, 2, colSums(ws), `/`)\n\nws_rctd &lt;- data.frame(t(as.matrix(ws)))\nround(ws_rctd[1:5, 1:5], 2)\n\n##                        B DCIS1 DCIS2    T dendritic\n##  AACACCTACTATCGAA-1 0.00  0.00  0.00 0.00      0.01\n##  AACACGTGCATCGCAC-1 0.04  0.01  0.00 0.04      0.00\n##  AACACTTGGCAAGGAA-1 0.00  0.00  0.03 0.01      0.01\n##  AACAGGAAGAGCATAG-1 0.03  0.00  0.00 0.08      0.03\n##  AACAGGATTCATAGTT-1 0.00  0.00  0.01 0.00      0.00\n\nCode# add proportion estimates to colData\ncolData(vis)[names(ws_rctd)] &lt;- ws_rctd[colnames(vis), ]",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>12</span>  <span class='chapter-title'>Deconvolution</span>"
    ]
  },
  {
    "objectID": "pages/seq-deconvolution.html#card",
    "href": "pages/seq-deconvolution.html#card",
    "title": "12  Deconvolution",
    "section": "\n12.4 CARD",
    "text": "12.4 CARD\nAnother method that can be used is CARD. First, we rename the columns of spatial coordinates for CARD.\n\n\nCode# realize delayed matrices, as CARD does \n# not yet support delayed matrix handling\ncounts(sce) &lt;- as(counts(sce), \"sparseMatrix\")\ncounts(vis) &lt;- as(counts(vis), \"sparseMatrix\")\ncolnames(spatialCoords(vis)) &lt;- c(\"x\", \"y\")\n\n\nNext, we perform the CARD deconvolution. Here, we demonstrate CARD’s interoperability with SingleCellExperiment and SpatialExperiment.  The deconvolution result matrix is already normalized such that the sum of cell type proportions for each spot is equal to 1.Note: CARD can also take a reference matrix, a reference cell type annotation column, a spatial count matrix, and a spatial coordinates data frame as separate items in sc_count, sc_meta, spatial_count, and spatial_location, respectively. However, we encourage simplifying the process by using existing Bioconductor classes.\n\nCodeset.seed(2025)\nCARD_obj &lt;- CARD_deconvolution(\n    spe=vis,\n    sce=sce,\n    sc_count=NULL,\n    sc_meta=NULL,\n    spatial_count=NULL,\n    spatial_location=NULL,\n    ct_varname=\"Annogrp\",\n    ct_select=NULL,      # use all 'sce$Annogrp' cell types\n    sample_varname=NULL, # use all 'sce' as one 'ref' sample \n    mincountgene=100,\n    mincountspot=5)\nws_card &lt;- CARD_obj$Proportion_CARD\n\n# order cell type names alphabetically, as for RCTD\nws_card &lt;- data.frame(ws_card[, colnames(ws_rctd)])\nround(ws_card[1:5, 1:5], 2)\n\n##                     B DCIS1 DCIS2    T dendritic\n##  AACACCTACTATCGAA-1 0     0     0 0.00         0\n##  AACACGTGCATCGCAC-1 0     0     0 0.00         0\n##  AACACTTGGCAAGGAA-1 0     0     0 0.01         0\n##  AACAGGAAGAGCATAG-1 0     0     0 0.02         0\n##  AACAGGATTCATAGTT-1 0     0     0 0.00         0",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>12</span>  <span class='chapter-title'>Deconvolution</span>"
    ]
  },
  {
    "objectID": "pages/seq-deconvolution.html#visualization",
    "href": "pages/seq-deconvolution.html#visualization",
    "title": "12  Deconvolution",
    "section": "\n12.5 Visualization",
    "text": "12.5 Visualization\nFirst, we define a couple accessory functions.\n\nCode.plt_xy &lt;- \\(ws, vis, col, point_size) {\n    xy &lt;- spatialCoords(vis)[rownames(ws), ]\n    colnames(xy) &lt;- c(\"x\", \"y\")\n    df &lt;- cbind(ws, xy)\n    ggplot(df, aes(x, y, col=.data[[col]])) + \n        coord_equal() + theme_void() + \n        geom_point(size=point_size)\n}\n\n.plt_decon &lt;- \\(ws, vis) {\n    ps &lt;- lapply(names(ws), \\(.) .plt_xy(ws, vis, col=., point_size=0.3))\n    ps |&gt; wrap_plots(nrow=3) & theme(\n        legend.key.width=unit(0.5, \"lines\"),\n        legend.key.height=unit(1, \"lines\")) &\n        scale_color_gradientn(colors=pals::jet())\n}\n\n\nWe can visualize deconvolution weights in x-y space, i.e., coloring by the proportion of a given cell type estimated to fall within a given spot:\n\n\nRCTD\nCARD\n\n\n\n\nCode.plt_decon(ws=ws_rctd, vis)\n\n\n\n\n\n\n\n\n\n\nCode.plt_decon(ws=ws_card, vis)\n\n\n\n\n\n\n\n\n\n\nThe deconvolution results can also be viewed as a heatmap, where rows = cells and columns = clusters:\nCodeplot_heat_ws &lt;- \\(ws, string){\n    p &lt;- pheatmap(ws, \n        show_rownames=FALSE, show_colnames=TRUE, main=string,\n        cellwidth=12, treeheight_row=5, treeheight_col=5)\n    return(p)\n}\nplot_heat_ws(ws_rctd, string=\"RCTD\") \nplot_heat_ws(ws_card, string=\"CARD\")\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nIn both methods, we see that more than half of the spots are estimated to have a stromal proportion of more than 50%. Few spots have an intense and distinct signal for cancerous subpopulations, DCIS1 and DCIS2. For the following analysis, we focus on RCTD as an example.\nFor comparison with spot annotations provided by 10x Genomics, we include majority voted cell type from deconvolution by RCTD. Note that, because stromal cells show broad signals across the entire tissue, to better investigate immune cell signals, we remove stromal from the majority vote calculation for an alternative label: RCTD_no_stroma.\n\nCodews &lt;- ws_rctd\n# derive majority vote label\nids &lt;- names(ws)[apply(ws, 1, which.max)]\nnames(ids) &lt;- rownames(ws)\nvis$RCTD &lt;- factor(ids[colnames(vis)])\n\n# derive majority vote excluding stromal cells\nws_no_stroma &lt;- ws[, colnames(ws) != \"stromal\"]\nids_no_stroma &lt;- names(ws_no_stroma)[apply(ws_no_stroma, 1, which.max)]\nnames(ids_no_stroma) &lt;- rownames(ws)\nvis$RCTD_no_stroma &lt;- factor(ids_no_stroma[colnames(vis)])\n\n\nWe can visualize these three annotations spatially:\n\nCodelapply(\n    c(\"anno\", \"RCTD\", \"RCTD_no_stroma\"), \n    \\(.) plotCoords(vis, annotate=.)) |&gt;\n    wrap_plots(nrow=1) &\n    theme(legend.key.size=unit(0, \"lines\")) &\n    scale_color_manual(values=unname(pals::trubetskoy()))\n\n\n\n\n\n\n\nNote the strong stromal signals and macrophages being the second most common cell type for stromal cells. To help characterize subpopulations from deconvolution, we can view their distribution against the provided annotation:\n\nCodecd &lt;- data.frame(colData(vis))\ndf &lt;- as.data.frame(with(cd, table(RCTD, anno)))\nfd &lt;- as.data.frame(with(cd, table(RCTD_no_stroma, anno)))\nggplot(df, \n    aes(Freq, RCTD, fill=anno)) + \n    ggtitle(\"RCTD\") +\nggplot(fd, \n    aes(Freq, RCTD_no_stroma, fill=anno)) + \n    ggtitle(\"RCTD_no_stroma\") +\nplot_layout(nrow=1, guides=\"collect\") &\n    labs(x=\"Proportion\", y=NULL) &\n    coord_cartesian(expand=FALSE) &\n    geom_col(width=1, col=\"white\", position=\"fill\") &\n    scale_fill_manual(values=unname(pals::trubetskoy())) &\n    theme_minimal() & theme(\n        aspect.ratio=1,\n        legend.key.size=unit(2/3, \"lines\"),\n        plot.title=element_text(hjust=0.5))\n\n\n\n\n\n\n\nNext, we can investigate the agreement between the provided annotation against the two deconvolution majority vote labels.\nCodehm &lt;- \\(mat, string) pheatmap(\n    mat, show_rownames=TRUE, show_colnames=TRUE, main=string,\n    cellwidth=10, cellheight=10, treeheight_row=5, treeheight_col=5)\nhm(prop.table(table(vis$anno, vis$RCTD), 2), string=\"RCTD\")\nhm(prop.table(table(vis$anno, vis$RCTD_no_stroma), 2), string=\"RCTD_no_stroma\")\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nOverall, we observe agreement between the provided spot labels and the RCTD deconvolution derived annotations. Before cleaning up stromal, some immune cell types, such as dendritic and mast, never had a chance to have the highest cell type proportion. On the left panel, among among all the spots annotated by RCTD as T cells, nearly all of them are from the “immune” type in the provided annotation. Strong agreements are also observed for spots with cell type of “DCIS1”, “DCIS2”, and “Invasive tumor”.\n\n\n\n\n\n\nNotePC regression\n\n\n\n\n\nNext, we prepare the principal components (PCs) needed to perform PC regression:\n\nCode# log-library size normalization\nvis &lt;- logNormCounts(vis)\n# feature selection \ndec &lt;- modelGeneVar(vis)\nhvg &lt;- getTopHVGs(dec, prop=0.1)\n# dimension reduction \nset.seed(1234)\nvis &lt;- runPCA(vis, ncomponents=20, subset_row=hvg)\n\n\nWe fit the deconvolution result of each cell type against the first 10 PCs to obtain 10 regressions.\n\nCodeidx &lt;- rownames(ws)\nids &lt;- colnames(ws)\npcs &lt;- reducedDim(vis, \"PCA\")\npcs &lt;- pcs[idx, seq_len(10)]\npcr &lt;- lapply(ids, \\(id) {\n    fit &lt;- summary(lm(pcs ~ ws[[id]]))\n    r2 &lt;- sapply(fit, \\(.) .$adj.r.squared)\n    data.frame(id, pc=seq_along(r2), r2)\n}) |&gt; do.call(what=rbind)\n\n\nHere we plot the coefficient of determination of the first 10 PCs for each cell type.\n\nCodepcr$id &lt;- factor(pcr$id, ids)\npal &lt;- pals::trubetskoy()\nggplot(pcr, aes(pc, r2, col=id)) +\n    geom_line(show.legend=FALSE) + geom_point() +\n    scale_color_manual(\"predictor\", values=unname(pal)) +\n    scale_x_continuous(breaks=c(1, seq(5, 20, 5))) +\n    scale_y_continuous(limits=c(0, 1), breaks=seq(0, 1, 0.2)) +\n    labs(x=\"principal component\", y=\"coeff. of determination\") +\n    guides(col=guide_legend(override.aes=list(size=2))) +\n    coord_cartesian(xlim=c(1, 10)) +\n    theme_minimal() + theme(\n      panel.grid.minor=element_blank(),\n      legend.key.size=unit(0, \"lines\"))\n\n\n\n\n\n\n\nLet’s inspect the key drivers of (expression) variability in terms of PCs. Considering deconvolution results from above, we can see that, e.g.:\n\nPC1 distinguishes stromal, tumor, macrophage from the rest of the tissue\nPC3, PC4 and PC5 separate DCIS1, T and endothelial cells, respectively\n\n\nCode# retrieve top-10 PCs\npcs &lt;- reducedDim(vis, \"PCA\")\npcs &lt;- pcs[rownames(ws), seq_len(10)]\n# specify subpopulations & PCs to visualize\nvar &lt;- c(\"DCIS1\", \"T\", \"endo\")\nvar &lt;- c(var, colnames(pcs)[3:5])\n# visualize deconvolution weights alongside PCs\nlapply(var, \\(.) {\n    .plt_xy(\n        cbind(ws, pcs), vis, col=., point_size=0.3) +\n        scale_color_gradientn(., colors=pals::jet())\n}) |&gt;\n    wrap_plots(nrow=2) & theme(\n        plot.title=element_blank(),\n        legend.key.width=unit(0.5, \"lines\"),\n        legend.key.height=unit(1, \"lines\"))\n\n\n\n\n\n\n\nNote that the direction of each PC is irrelevant from how much variation it explains.\n\n\n\nIn conclusion, deconvolution-based cell type proportion estimates are able to recapitulate PCs and, in turn, expression variability. Apart from being a tool for spot deconvolution, RCTD can be used as a label transfer tool to annotate imaging-based ST data, such as for Xenium and MERSCOPE. For this, the default doublet_mode = \"doublet\" should be used, and a certainty score would be returned to indicate doublets with two predicted cell types.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>12</span>  <span class='chapter-title'>Deconvolution</span>"
    ]
  },
  {
    "objectID": "pages/seq-deconvolution.html#appendix",
    "href": "pages/seq-deconvolution.html#appendix",
    "title": "12  Deconvolution",
    "section": "\n12.6 Appendix",
    "text": "12.6 Appendix\nBenchmarks\nBenchmarking studies of deconvolution methods often require generating synthetic spots to establish a ground truth for cell type proportions. This process involves either simulating artificial tissue patterns or aggregating counts from scRNA-seq or imaging-based spatial transcriptomics data into spots. However, it is equally important to evaluate how these methods perform in tissues with highly spatially-heterogeneous cell type compositions, such as real cancer samples. Below are three comprehensive benchmarking studies, two of which that incorporate both artificial and real datasets.\n\nSang-aram et al. (2023) developed a pipeline to benchmark 11 deconvolution methods, including RCTD, across 63 synthetic, 3 binned, and 2 real datasets. RCTD and cell2location were the most recommended methods. Figure 2 gives an overview of the benchmarking results.\nLi et al. (2023) benchmarked 18 deconvolution methods, including RCTD, across 50 simulated and real datasets. Among these methods, CARD, cell2location, and Tangram are highly recommended. Figure 1 summarizes the method performance, and Figure 4 gives a flowchart of how to decide on which method to use.\nGaspard-Boulinc et al. (2025) review and compare available cell-type deconvolution methods, and provide a continuously updated web-based summary table.\nReferences\n\n\n\n\nAndersson, Alma, Joseph Bergenstråhle, Michaela Asp, Ludvig Bergenstråhle, Aleksandra Jurek, José Fernández Navarro, and Joakim Lundeberg. 2020. “Single-Cell and Spatial Transcriptomics Enables Probabilistic Inference of Cell Type Topography.” Communications Biology 3 (1): 565. https://doi.org/10.1038/s42003-020-01247-y.\n\n\nBerglund, Emelie, Jonas Maaskola, Niklas Schultz, Stefanie Friedrich, Maja Marklund, Joseph Bergenstråhle, Firas Tarish, et al. 2018. “Spatial Maps of Prostate Cancer Transcriptomes Reveal an Unexplored Landscape of Heterogeneity.” Nature Communications 9 (1): 2419. https://doi.org/10.1038/s41467-018-04724-5.\n\n\nBiancalani, Tommaso, Gabriele Scalia, Lorenzo Buffoni, Raghav Avasthi, Ziqing Lu, Aman Sanger, Neriman Tokcan, et al. 2021. “Deep Learning and Alignment of Spatially Resolved Single-Cell Transcriptomes with Tangram.” Nature Methods 18: 1352–62. https://doi.org/10.1038/s41592-021-01264-7.\n\n\nCable, Dylan M., Evan Murray, Luli S. Zou, Aleksandrina Goeva, Evan Z. Macosko, Fei Chen, and Rafael A. Irizarry. 2022. “Robust Decomposition of Cell Type Mixtures in Spatial Transcriptomics.” Nature Biotechnology 40: 517–26. https://doi.org/10.1038/s41587-021-00830-w.\n\n\nCang, Zixuan, and Qing Nie. 2020. “Inferring Spatial and Signaling Relationships Between Cells from Single Cell Transcriptomic Data.” Nature Communications 11 (2084). https://doi.org/10.1038/s41467-020-15968-5.\n\n\nChen, Jiaji G, Joselyn C Chávez-Fuentes, Matthew O’Brien, Junxiang Xu, Edward C Ruiz, Wen Wang, Iqra Amin, et al. 2025. “Giotto Suite: A Multiscale and Technology-Agnostic Spatial Multiomics Analysis Ecosystem.” Nature Methods, 1–13. https://doi.org/10.1038/s41592-025-02817-w.\n\n\nChidester, Benjamin, Tianming Zhou, Shahul Alam, and Jian Ma. 2023. “SpiceMix Enables Integrative Single-Cell Spatial Modeling of Cell Identity.” Nat. Genet. 55 (1): 78–88. https://doi.org/10.1038/s41588-022-01256-z.\n\n\nDanaher, Patrick, Youngmi Kim, Brenn Nelson, Maddy Griswold, Zhi Yang, Erin Piazza, and Joseph M Beechem. 2022. “Advances in Mixed Cell Deconvolution Enable Quantification of Cell Types in Spatial Transcriptomic Data.” Nature Communications 13 (1): 385. https://doi.org/10.1038/s41467-022-28020-5.\n\n\nde Oliveira, Michelli Faria, Juan Pablo Romero, Meii Chung, Stephen R. Williams, Andrew D. Gottscho, Anushka Gupta, Susan E. Pilipauskas, et al. 2025. “High-Definition Spatial Transcriptomic Profiling of Immune Cell Populations in Colorectal Cancer.” Nature Genetics 57: 1512–23. https://doi.org/10.1038/s41588-025-02193-3.\n\n\nElosua-Bayes, Marc, Paula Nieto, Elisabetta Mereu, Ivo Gut, and Holger Heyn. 2021. “SPOTlight: Seeded NMF Regression to Deconvolute Spatial Transcriptomics Spots with Single-Cell Transcriptomes.” Nucleic Acids Research 49 (9): e50. https://doi.org/10.1093/nar/gkab043.\n\n\nGaspard-Boulinc, Lucie C., Luca Gortana, Thomas Walter, Emmanuel Barillot, and Florence M. G. Cavalli. 2025. “Cell-Type Deconvolution Methods for Spatial Transcriptomics.” Nature Reviews Genetics. https://doi.org/https://doi.org/10.1038/s41576-025-00845-y.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.\n\n\nKleshchevnikov, Vitalii, Artem Shmatko, Emma Dann, Alexander Aivazidis, Hamish W King, Tong Li, Rasa Elmentaite, et al. 2022. “Cell2location Maps Fine-Grained Cell Types in Spatial Transcriptomics.” Nature Biotechnology 40: 661–71. https://doi.org/10.1038/s41587-021-01139-4.\n\n\nLi, Haoyang, Hanmin Li, Juexiao Zhou, and Xin Gao. 2022. “SD2: Spatially Resolved Transcriptomics Deconvolution Through Integration of Dropout and Spatial Information.” Bioinformatics 38 (21): 4878–84. https://doi.org/10.1093/bioinformatics/btac605.\n\n\nLi, Haoyang, Juexiao Zhou, Zhongxiao Li, Siyuan Chen, Xingyu Liao, Bin Zhang, Ruochi Zhang, Yu Wang, Shiwei Sun, and Xin Gao. 2023. “A Comprehensive Benchmarking with Practical Guidelines for Cellular Deconvolution of Spatial Transcriptomics.” Nature Communications 14 (1548). https://doi.org/10.1038/s41467-023-37168-7.\n\n\nLopez, Romain, Baoguo Li, Hadas Keren-Shaul, Pierre Boyeau, Merav Kedmi, David Pilzer, Adam Jelinski, et al. 2022. “DestVI Identifies Continuums of Cell Types in Spatial Transcriptomics Data.” Nature Biotechnology 40: 1360–69. https://doi.org/10.1038/s41587-022-01272-8.\n\n\nMa, Ying, and Xiang Zhou. 2022. “Spatially Informed Cell-Type Deconvolution for Spatial Transcriptomics.” Nature Biotechnology 40 (9): 1349–59. https://doi.org/10.1038/s41587-022-01273-7.\n\n\nMiller, Brendan F, Feiyang Huang, Lyla Atta, Arpan Sahoo, and Jean Fan. 2022. “Reference-Free Cell Type Deconvolution of Multi-Cellular Pixel-Resolution Spatially Resolved Transcriptomics Data.” Nature Communications 13 (1): 2339. https://doi.org/10.1038/s41467-022-30033-z.\n\n\nNitzan, Mor, Nikos Karaiskos, Nir Friedman, and Nikolaus Rajewsky. 2019. “Gene Expression Cartography.” Nature 576: 132–37. https://doi.org/10.1038/s41586-019-1773-3.\n\n\nSang-aram, Chananchida, Robin Browaeys, Ruth Seurinck, and Yvan Saeys. 2023. “Spotless, a Reproducible Pipeline for Benchmarking Cell Type Deconvolution in Spatial Transcriptomics.” eLife 12 (RP88431). https://doi.org/10.7554/eLife.88431.\n\n\nSong, Qianqian, and Jing Su. 2021. “DSTG: Deconvoluting Spatial Transcriptomics Data Through Graph-Based Artificial Intelligence.” Briefings in Bioinformatics 22 (5): bbaa414. https://doi.org/10.1093/bib/bbaa414.\n\n\nSun, Dongqing, Zhaoyang Liu, Taiwen Li, Qiu Wu, and Chenfei Wang. 2022. “STRIDE: Accurately Decomposing and Integrating Spatial Transcriptomics Using Single-Cell RNA Sequencing.” Nucleic Acids Research 50 (7): e42. https://doi.org/10.1093/nar/gkac150.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>12</span>  <span class='chapter-title'>Deconvolution</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-dlpfc.html",
    "href": "pages/seq-workflow-dlpfc.html",
    "title": "13  Workflow: Visium DLPFC",
    "section": "",
    "text": "13.1 Preamble",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>13</span>  <span class='chapter-title'>Workflow: Visium DLPFC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-dlpfc.html#preamble",
    "href": "pages/seq-workflow-dlpfc.html#preamble",
    "title": "13  Workflow: Visium DLPFC",
    "section": "",
    "text": "13.1.1 Introduction\nThis workflow analyzes a 10x Genomics Visium dataset consisting of one sample (Visium capture area) of postmortem human brain tissue from the dorsolateral prefrontal cortex (DLPFC) region, originally described by Maynard et al. (2021).\nThe original full dataset contains 12 samples in total, from 3 donors, with 2 pairs of spatially adjacent replicates (serial sections) per donor (4 samples per donor). Each sample spans several cortical layers plus white matter in a tissue section. The examples in this workflow use a single representative sample, labeled 151673, which is often illustrated in various method papers in spatial omics data analysis.\nFor more details on the dataset, see Maynard et al. (2021). The full dataset is publicly available through the spatialLIBD Bioconductor package (Pardo et al. 2022). The dataset can also be explored interactively through the spatialLIBD Shiny web app.\n\n13.1.2 Dependencies\n\nCodelibrary(SpatialExperiment)\nlibrary(STexampleData)\nlibrary(ggspavis)\nlibrary(patchwork)\nlibrary(scater)\nlibrary(scran)\nlibrary(pheatmap)",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>13</span>  <span class='chapter-title'>Workflow: Visium DLPFC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-dlpfc.html#sec-seq-workflow-dlpfc-workflow",
    "href": "pages/seq-workflow-dlpfc.html#sec-seq-workflow-dlpfc-workflow",
    "title": "13  Workflow: Visium DLPFC",
    "section": "\n13.2 Workflow",
    "text": "13.2 Workflow\n\n13.2.1 Load data\nLoad sample 151673 from the DLPFC dataset. This sample is available as a SpatialExperiment object from the STexampleData package.\n\nCodespe &lt;- Visium_humanDLPFC()\ndim(spe)\n\n##  [1] 33538  4992\n\n\n\n13.2.2 Plot data\nAs an initial check, plot the spatial coordinates (spots) in x-y dimensions, to check that the object has loaded correctly. We use plotting functions from the ggspavis package.\n\nCodeplotCoords(spe)\n\n\n\n\n\n\n\n\n13.2.3 Quality control (QC)\nWe calculate quality control (QC) metrics using the scater package (McCarthy et al. 2017), and apply simple global thresholding-based QC methods to identify any low-quality spots, as described in Section 10.3. More details, including more advanced QC approaches, are described in Chapter 10.\n\nCode# subset to keep only spots over tissue\nspe &lt;- spe[, spe$in_tissue == 1]\ndim(spe)\n\n##  [1] 33538  3639\n\n\n\nCode# identify mitochondrial genes\nnms &lt;- rowData(spe)$gene_name\nis_mito &lt;- grepl(\"(^MT-)|(^mt-)\", nms)\ntable(is_mito)\n\n##  is_mito\n##  FALSE  TRUE \n##  33525    13\n\nCodenms[is_mito]\n\n##   [1] \"MT-ND1\"  \"MT-ND2\"  \"MT-CO1\"  \"MT-CO2\"  \"MT-ATP8\" \"MT-ATP6\" \"MT-CO3\" \n##   [8] \"MT-ND3\"  \"MT-ND4L\" \"MT-ND4\"  \"MT-ND5\"  \"MT-ND6\"  \"MT-CYB\"\n\n\nCalculate QC metrics using scater (McCarthy et al. 2017).\n\nCode# calculate per-spot QC metrics and store in colData\nspe &lt;- addPerCellQC(spe, subsets=list(mito=is_mito))\nnames(colData(spe))\n\n##   [1] \"barcode_id\"            \"sample_id\"             \"in_tissue\"            \n##   [4] \"array_row\"             \"array_col\"             \"ground_truth\"         \n##   [7] \"reference\"             \"cell_count\"            \"sum\"                  \n##  [10] \"detected\"              \"subsets_mito_sum\"      \"subsets_mito_detected\"\n##  [13] \"subsets_mito_percent\"  \"total\"\n\n\nSelect global filtering thresholds for the QC metrics by examining distributions using histograms.\n\nCodepar(mfrow=c(1, 4))\nhist(spe$sum, xlab=\"sum\", main=\"UMIs per spot\")\nhist(spe$detected, xlab=\"detected\", main=\"Genes per spot\")\nhist(spe$subsets_mito_percent, xlab=\"pct mito\", main=\"Percent mito UMIs\")\nhist(spe$cell_count, xlab=\"no. cells\", main=\"No. cells per spot\")\n\n\n\n\n\n\n\n\nCode# select global QC thresholds\nspe$qc_lib_size &lt;- spe$sum &lt; 600\nspe$qc_detected &lt;- spe$detected &lt; 400\nspe$qc_mito &lt;- spe$subsets_mito_percent &gt; 28\n\n# tabulate flagged cells\ncd &lt;- colData(spe)\nqc &lt;- grep(\"^qc\", names(cd))\nsapply(cd[qc], table)\n\n##        qc_lib_size qc_detected qc_mito\n##  FALSE        3631        3632    3622\n##  TRUE            8           7      17\n\n\nPlot the spatial distributions of the potentially identified low-quality spots, to ensure that they are not concentrated within biologically meaningful regions (which could suggest that the selected thresholds were too stringent).\n\nCode# plot spatial distributions of discarded spots\np1 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", \n    annotate=\"qc_lib_size\") + \n    ggtitle(\"Library size (&lt; threshold)\")\np2 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", \n    annotate=\"qc_detected\") +\n    ggtitle(\"Detected genes (&lt; threshold)\")\np3 &lt;- plotObsQC(spe, \n    plot_type=\"spot\", \n    annotate=\"qc_mito\") + \n    ggtitle(\"Mito proportion (&gt; threshold)\")\n\nwrap_plots(p1, p2, p3, nrow=1, guides=\"collect\") & labs(col=\"discard\")\n\n\n\n\n\n\n\nSelect spots to discard by combining the sets of identified low-quality spots according to each metric.\n\nCode# number of identifed spots for each metric\nex &lt;- cbind(spe$qc_lib_size, spe$qc_detected, spe$qc_mito)\napply(ex, 2, sum)\n\n##  [1]  8  7 17\n\nCode# combined set of identified spots\nspe$discard &lt;- rowAnys(ex)\ntable(spe$discard)\n\n##  \n##  FALSE  TRUE \n##   3614    25\n\n\nPlot the spatial distribution of the combined set of identified low-quality spots to discard, to again confirm that they do not correspond to any clearly biologically meaningful regions, which could indicate that we are removing biologically informative spots. Specifically, in this dataset, we want to ensure that the discarded spots do not correspond to a single cortical layer.\n\nCode# check spatial pattern of discarded spots\nplotObsQC(spe, plot_type=\"spot\", annotate=\"discard\")\n\n\n\n\n\n\n\nFilter out the low-quality spots.\n\nCode# filter out low-quality spots\nspe &lt;- spe[, !spe$discard]\ndim(spe)\n\n##  [1] 33538  3614\n\n\n\n13.2.4 Normalization\nCalculate log-transformed normalized counts (logcounts) using library size normalization, as described in Section 11.2. We use methods from the scater (McCarthy et al. 2017) and scran (Lun, McCarthy, and Marioni 2016) packages, making the simplified assumption that spots can be treated as equivalent to single cells. For more details and other options, see Chapter 11.\n\nCode# calculate library size factors\nspe &lt;- computeLibraryFactors(spe)\nsummary(sf &lt;- sizeFactors(spe))\n\n##     Min. 1st Qu.  Median    Mean 3rd Qu.    Max. \n##   0.1330  0.6329  0.8978  1.0000  1.2872  3.7820\n\nCodehist(sf, breaks=20, main=\"Histogram of size factors\")\n\n\n\n\n\n\nCode# calculate 'logcounts'\nspe &lt;- logNormCounts(spe)\nassayNames(spe)\n\n##  [1] \"counts\"    \"logcounts\"\n\n\n\n13.2.5 Feature selection (HVGs)\nApply feature selection methods to identify a set of top highly variable genes (HVGs). We use methods from the scran (Lun, McCarthy, and Marioni 2016) package, again making the simplified assumption that spots can be treated as equivalent to single cells. We also first remove mitochondrial genes, since these tend to be very highly expressed and are not of main biological interest. For more details, see Chapter 11.\nFor details on alternative feature selection methods to identify spatially variable genes (SVGs) instead of HVGs, for example using the nnSVG (Weber et al. 2023) or other packages, see Section 29.3.1.\n\nCode# remove mitochondrial genes\nspe &lt;- spe[!is_mito, ]\ndim(spe)\n\n##  [1] 33525  3614\n\n\n\nCode# fit mean-variance relationship, decomposing \n# variance into technical & biological components\ndec &lt;- modelGeneVar(spe)\n\n# select top HVGs\nhvg &lt;- getTopHVGs(dec, prop=0.1)\nlength(hvg)\n\n##  [1] 1424\n\n\n\n13.2.6 Dimensionality reduction\nNext, we perform dimensionality reduction using principal component analysis (PCA), applied to the set of top HVGs. We retain the top 50 principal components (PCs) for further downstream analyses. This is done both to reduce noise and to improve computational efficiency. We also run UMAP on the set of top 50 PCs and retain the top 2 UMAP components for visualization purposes.\nWe use the computationally efficient implementation of PCA from the scater package (McCarthy et al. 2017), which uses randomization and therefore requires setting a random seed for reproducibility.\nSee Chapter 11 and Chapter 27 for more details.\n\nCode# using 'scater' package\nset.seed(123)\nspe &lt;- runPCA(spe, subset_row=hvg)\n\n##  using unknown matrix fallback for ' dgTMatrix '\n\nCodespe &lt;- runUMAP(spe, dimred=\"PCA\")\ncolnames(reducedDim(spe, \"UMAP\")) &lt;- paste0(\"UMAP\", 1:2)\n\n# embeddings are matrices with\n# rows = cells, columns = dims.\nsapply(reducedDims(spe), dim)\n\n##        PCA UMAP\n##  [1,] 3614 3614\n##  [2,]   50    2\n\n\n\n13.2.7 Clustering\n\nNext, we apply a clustering algorithm to identify cell types or spatial domains. Note that we are using only molecular features (gene expression) as the input for clustering in this example. Alternatively, we could use a spatially-aware clustering algorithm, as demonstrated in the example in Section 11.5.\nHere, we use graph-based clustering using the Walktrap method implemented in scran, applied to the top 50 PCs calculated on the set of top HVGs from above.\nFor more details on clustering, see Chapter 28.\n\nCode# graph-based clustering\nset.seed(123)\ng &lt;- buildSNNGraph(spe, k=10, use.dimred=\"PCA\")\ng_walk &lt;- igraph::cluster_walktrap(g)\ntable(kid &lt;- g_walk$membership)\n\n##  \n##    1   2   3   4   5   6   7 \n##  365 765 875 803 198 370 238\n\nCode# store cluster labels in column 'label' in colData\ncolLabels(spe) &lt;- factor(kid)\n\n\nVisualize the cluster labels by plotting in x-y space, alongside the manually annotated reference labels (ground_truth) available for this dataset.\n\nCode# plot cluster labels & annotated reference labels in space\nplotCoords(spe, annotate=\"label\", pal=\"libd_layer_colors\") +\nplotCoords(spe, annotate=\"ground_truth\", pal=\"libd_layer_colors\")\n\n\n\n\n\n\n\nWe can also plot the cluster labels in the top 2 UMAP dimensions.\n\nCode# plot clusters labels in UMAP dimensions\nplotDimRed(spe, plot_type=\"UMAP\", annotate=\"label\", pal=\"libd_layer_colors\")\n\n\n\n\n\n\n\n\n13.2.8 Differential expression\n\nIdentify marker genes for each cluster or spatial domain by testing for differentially expressed genes using pairwise t-tests, specifically testing for upregulation for each cluster or spatial domain.\nWe use the scran package (Lun, McCarthy, and Marioni 2016) to calculate the differential tests. We use a binomial test, which is a more stringent test than the default pairwise t-tests, and tends to select genes that are easier to interpret and validate experimentally.\nSee Chapter 11 or Chapter 28 for more details.\n\nCode# using scran package\nmgs &lt;- findMarkers(spe, groups=spe$label, test=\"binom\", direction=\"up\")\ntop &lt;- lapply(mgs, \\(df) rownames(df)[df$Top &lt;= 2])\nlength(top &lt;- unique(unlist(top)))\n\n##  [1] 49\n\n\nVisualize the marker genes using a heatmap.\n\nCodepbs &lt;- aggregateAcrossCells(spe, \n    ids=spe$label, subset.row=top,\n    use.assay.type=\"logcounts\", statistics=\"mean\")\n\n# use gene symbols as feature names\nmtx &lt;- t(assay(pbs))\ncolnames(mtx) &lt;- rowData(pbs)$gene_name\n\n# plot using pheatmap package\npheatmap(mat=mtx, scale=\"column\")",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>13</span>  <span class='chapter-title'>Workflow: Visium DLPFC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-dlpfc.html#spatiallibd",
    "href": "pages/seq-workflow-dlpfc.html#spatiallibd",
    "title": "13  Workflow: Visium DLPFC",
    "section": "\n13.3 spatialLIBD",
    "text": "13.3 spatialLIBD\nThe examples above demonstrated a streamlined analysis workflow for the Visium DLPFC dataset (Maynard et al. 2021). In this section, we will use the spatialLIBD package (Pardo et al. 2022) to continue analyzing this dataset by creating an interactive Shiny website to visualize the data.\n\n\n\n\n\n\nNoteWhy use spatialLIBD?\n\n\n\n\n\nThe spatialLIBD package has a function, spatialLIBD::run_app(spe), which will create an interactive website using a SpatialExperiment object (spe). The interactive website it creates has several features that were initially designed for the DLPFC dataset (Maynard et al. 2021) and later made flexible for any dataset (Pardo et al. 2022). These features include panels to visualize Visium spots:\n\nfor one tissue section at a time, either with interactive or static versions\nfor multiple tissue sections at a time, either interactively or statically\n\nBoth options work with continuous and discrete variables such as the gene expression and clusters, respectively. The interactive version for discrete variables such as clusters is useful if you want to manually annotate Visium spots, as in Maynard et al. (2021). spatialLIBD allows users to download the annotated spots and resume your spot annotation work later.\n\n\n\n\nScreenshot of the ‘clusters (interactive)’ section of the ‘spot-level data’ panel created with the full spatialLIBD dataset. The website was created with spatialLIBD::run_app(spatialLIBD::fetch_data('spe')) version 1.4.0 and then using the lasso selection, we selected a set of spots in the UMAP interactive plot colored by the estimated number of cells per spot (cell_count) on the bottom left, which automatically updated the other three plots.\n\n\n\nVisualizing genes or clusters across multiple tissue sections can be useful. For example, here we show the expression levels of PCP4 across two sets of spatially adjacent replicates. PCP4 is a marker gene for layer 5 in the gray matter of the DLPFC in the human brain. Spatially adjacent replicates are about 10 μm apart from each other and visualizations like the one below help assess the technical variability in the Visium technology.\n\n\n\n\nScreenshot of the ‘gene grid (static)’ section of the ‘spot-level data’ panel created with the full spatialLIBD dataset. The website was created with spatialLIBD::run_app(spatialLIBD::fetch_data('spe')) version 1.4.0, selecting the PCP4 gene, selecting the paper gene color scale, changing the number of rows and columns in the grid 2, selecting two pairs of spatially adjacent replicate samples (151507, 151508, 151673, and 151674), and clicking on the upgrade grid plot button. Note that the default viridis gene color scale is color-blind friendly.\n\n\n\nYou can try out a spatialLIBD-powered website yourself by opening it on your browser. \n\n\n\nCheck https://github.com/LieberInstitute/spatialLIBD#shiny-website-mirrors in case you need to use a mirror. shiny-powered websites work best on browsers such as Google Chrome and Mozilla Firefox, among others.\n13.3.1 Code prerequisites\nFor this demo, we will re-use the spe object (in SpatialExperiment format) created in the example DLPFC workflow above. If you are starting from here, you can re-build the object by running the code in section Section 13.2 above.\nWe also load some additional dependency packages.\n\nCodelibrary(BiocFileCache)  # for downloading and storing data\nlibrary(rtracklayer)  # for importing gene annotation files\n\n\nIn addition, we will modify the final step of the workflow above, where we identified marker genes per cluster by differential expression testing. We will modify this step to summarize the results of the differential expression testing in a different way, and store this information in the spe object.\n\nCode# identify interesting markers for each cluster\ninteresting &lt;- sapply(mgs, function(x) x$Top &lt;= 5)\ncolnames(interesting) &lt;- paste0(\"gene_interest_\", seq_len(length(mgs)))\nrowData(spe) &lt;- cbind(rowData(spe), interesting)\n\n\n\n13.3.2 Prepare for spatialLIBD\nWe also need to modify the spe object, similar to steps we need to carry out when using spatialLIBD with 10x Genomics public datasets.\n\n13.3.2.1 Basic information\n\nCode# add some information used by spatialLIBD\nspe$key &lt;- paste0(spe$sample_id, \"_\", colnames(spe))\nspe$sum_umi &lt;- colSums(counts(spe))\nspe$sum_gene &lt;- colSums(counts(spe) &gt; 0)\n\n\n\n13.3.2.2 Gene annotation\nSince the gene information is missing, we will add gene annotation data from Gencode. Alternatively, ideally you would add this information from the same gene annotation used for originally running Space Ranger.\n\n\nIt can happen that bfcrpath() fails to connect with the Gencode database. If this is the case, we disable consecutive code evaluations for the purpose of this book’s stability. Outputs typically reappear with the next build.\n\nCode# download Gencode v32 GTF file and cache it\nnms &lt;- paste0(\n  \"ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/\",\n  \"release_32/gencode.v32.annotation.gtf.gz\")\nbfc &lt;- BiocFileCache()\ngtf_cache &lt;- bfcrpath(bfc, nms)\n\n\n\nCode# show GTF cache location\ngtf_cache\n\n##                                                                                BFC169 \n##  \"/home/biocbuild/.cache/R/BiocFileCache/79a3c2ec84482_gencode.v32.annotation.gtf.gz\"\n\nCode# import into R (takes ~1 min)\ngtf &lt;- rtracklayer::import(gtf_cache)\n\n# subset to genes only\ngtf &lt;- gtf[gtf$type == \"gene\"]\n\n# remove the .x part of the gene IDs\ngtf$gene_id &lt;- gsub(\"\\\\..*\", \"\", gtf$gene_id)\n\n# set the names to be the gene IDs\nnames(gtf) &lt;- gtf$gene_id\n\n# match the genes\nmatch_genes &lt;- match(rowData(spe)$gene_id, gtf$gene_id)\ntable(is.na(match_genes))\n\n##  \n##  FALSE  TRUE \n##  33267   258\n\nCode# drop the few genes for which we don't have information\nspe &lt;- spe[!is.na(match_genes), ]\nmatch_genes &lt;- match_genes[!is.na(match_genes)]\n\n# keep only some columns from the gtf\nmcols(gtf) &lt;- mcols(gtf)[, c(\"source\", \"type\", \"gene_id\", \"gene_name\", \"gene_type\")]\n\n# save the \"interesting\" columns from our original spe object\ninteresting &lt;- rowData(spe)[, grepl(\"interest\", colnames(rowData(spe)))]\n\n# add gene info to spe object\nrowRanges(spe) &lt;- gtf[match_genes]\n\n# add back the \"interesting\" columns\nrowData(spe) &lt;- cbind(rowData(spe), interesting)\n\n# inspect the gene annotation data we added\nhead(rowRanges(spe))\n\n##  GRanges object with 6 ranges and 12 metadata columns:\n##                    seqnames        ranges strand |   source     type\n##                       &lt;Rle&gt;     &lt;IRanges&gt;  &lt;Rle&gt; | &lt;factor&gt; &lt;factor&gt;\n##    ENSG00000243485     chr1   29554-31109      + |   HAVANA     gene\n##    ENSG00000237613     chr1   34554-36081      - |   HAVANA     gene\n##    ENSG00000186092     chr1   65419-71585      + |   HAVANA     gene\n##    ENSG00000238009     chr1  89295-133723      - |   HAVANA     gene\n##    ENSG00000239945     chr1   89551-91105      - |   HAVANA     gene\n##    ENSG00000239906     chr1 139790-140339      - |   HAVANA     gene\n##                            gene_id   gene_name      gene_type gene_interest_1\n##                        &lt;character&gt; &lt;character&gt;    &lt;character&gt;       &lt;logical&gt;\n##    ENSG00000243485 ENSG00000243485 MIR1302-2HG         lncRNA            TRUE\n##    ENSG00000237613 ENSG00000237613     FAM138A         lncRNA            TRUE\n##    ENSG00000186092 ENSG00000186092       OR4F5 protein_coding            TRUE\n##    ENSG00000238009 ENSG00000238009  AL627309.1         lncRNA            TRUE\n##    ENSG00000239945 ENSG00000239945  AL627309.3         lncRNA            TRUE\n##    ENSG00000239906 ENSG00000239906  AL627309.2         lncRNA            TRUE\n##                    gene_interest_2 gene_interest_3 gene_interest_4\n##                          &lt;logical&gt;       &lt;logical&gt;       &lt;logical&gt;\n##    ENSG00000243485            TRUE            TRUE            TRUE\n##    ENSG00000237613            TRUE            TRUE            TRUE\n##    ENSG00000186092            TRUE            TRUE            TRUE\n##    ENSG00000238009            TRUE            TRUE            TRUE\n##    ENSG00000239945            TRUE            TRUE            TRUE\n##    ENSG00000239906            TRUE            TRUE            TRUE\n##                    gene_interest_5 gene_interest_6 gene_interest_7\n##                          &lt;logical&gt;       &lt;logical&gt;       &lt;logical&gt;\n##    ENSG00000243485            TRUE            TRUE            TRUE\n##    ENSG00000237613            TRUE            TRUE            TRUE\n##    ENSG00000186092            TRUE            TRUE            TRUE\n##    ENSG00000238009            TRUE            TRUE            TRUE\n##    ENSG00000239945            TRUE            TRUE            TRUE\n##    ENSG00000239906            TRUE            TRUE            TRUE\n##    -------\n##    seqinfo: 25 sequences from an unspecified genome; no seqlengths\n\n\nNow that we have the gene annotation information, we can use it to add a few more pieces to our spe object that spatialLIBD will use. For example, we want to enable users to search genes by either their gene symbol or their Ensembl ID. We would also like to visualize the amount and percent of the mitochondrial gene expression.\n\nCode# add information used by spatialLIBD\nrowData(spe)$gene_search &lt;- with(rowData(spe), \n    paste(gene_name, gene_id, sep=\"; \"))\n\n# compute chrM expression and chrM expression ratio\nis_mito &lt;- which(seqnames(spe) == \"chrM\")\nspe$expr_chrM &lt;- colSums(counts(spe)[is_mito, , drop=FALSE])\nspe$expr_chrM_ratio &lt;- spe$expr_chrM / spe$sum_umi\n\n\n\n13.3.2.3 Extra information and filtering\nNow that we have the full gene annotation information we need, we can proceed to add some last touches as well as filter the object to reduce the memory required for visualizing the data.\n\nCode# add a variable for saving the manual annotations\nspe$ManualAnnotation &lt;- \"NA\"\n\n# remove genes with no data\nno_expr &lt;- which(rowSums(counts(spe)) == 0)\n\n# number of genes with no counts\nlength(no_expr)\n\n##  [1] 11547\n\nCode# compute percent of genes with no counts\nlength(no_expr) / nrow(spe) * 100\n\n##  [1] 34.71007\n\nCodespe &lt;- spe[-no_expr, , drop=FALSE]\n\n# remove spots without counts\nsummary(spe$sum_umi)\n\n##     Min. 1st Qu.  Median    Mean 3rd Qu.    Max. \n##      537    2400    3442    3849    4921   15862\n\nCode# if we had spots with no counts, we would remove them\nif (any(spe$sum_umi == 0)) {\n    spots_no_counts &lt;- which(spe$sum_umi == 0)\n    # number of spots with no counts\n    print(length(spots_no_counts))\n    # percent of spots with no counts\n    print(length(spots_no_counts) / ncol(spe) * 100)\n    spe &lt;- spe[, -spots_no_counts, drop=FALSE]\n}\n\n\nWe should now be ready to proceed to making our interactive website. To confirm, we can use the spatialLIBD::check_spe() to verify that everything is set up correctly. If not, this function will tell us what we missed.\n\nCode# run check_spe() function\nspatialLIBD::check_spe(spe)\n\n##  class: SpatialExperiment \n##  dim: 21720 3614 \n##  metadata(0):\n##  assays(2): counts logcounts\n##  rownames(21720): ENSG00000243485 ENSG00000238009 ... ENSG00000160307\n##    ENSG00000160310\n##  rowData names(13): source type ... gene_interest_7 gene_search\n##  colnames(3614): AAACAAGTATCTCCCA-1 AAACAATCTACTAGCA-1 ...\n##    TTGTTTGTATTACACG-1 TTGTTTGTGTAAATTC-1\n##  colData names(26): barcode_id sample_id ... expr_chrM_ratio\n##    ManualAnnotation\n##  reducedDimNames(2): PCA UMAP\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres\n##  imgData names(4): sample_id image_id data scaleFactor\n\n\n\n13.3.3 Explore the data\nIn order to visualize the data, we can then use spatialLIBD::vis_gene(). This is also a useful final check before we try launching our interactive website.\n\nCode# sum of UMI\nspatialLIBD::vis_gene(spe, sampleid=\"sample_151673\", geneid=\"sum_umi\")\n\n\n\n\n\n\nCode# PCP4 (layer 5 marker gene)\ngid &lt;- rowData(spe)$gene_search[which(rowData(spe)$gene_name == \"PCP4\")]\nspatialLIBD::vis_gene(spe, sampleid=\"sample_151673\", geneid=gid)\n\n\n\n\n\n\n\nNow, let’s proceed to visualize the data interactively with a spatialLIBD-powered website. We have a number of variables to choose from. We will specify which are the continuous and discrete variables in our spatialLIBD::run_app() call.\n\nCode# run our shiny app\nif (interactive()) {\n    spatialLIBD::run_app(\n        spe,\n        sce_layer=NULL,\n        modeling_results=NULL,\n        sig_genes=NULL,\n        title=\"OSTA spatialLIBD workflow example\",\n        spe_discrete_vars=c(\"ground_truth\", \"label\", \"ManualAnnotation\"),\n        spe_continuous_vars=c(\n            \"cell_count\",\n            \"sum_umi\",\n            \"sum_gene\",\n            \"expr_chrM\",\n            \"expr_chrM_ratio\",\n            \"sum\",\n            \"detected\",\n            \"subsets_mito_sum\",\n            \"subsets_mito_detected\",\n            \"subsets_mito_percent\",\n            \"total\",\n            \"sizeFactor\"\n        ),\n        default_cluster=\"label\"\n    )\n}\n\n\n\n\n\n\nScreenshot of the ‘clusters (interactive)’ section of the ‘spot-level data’ panel created with with the data from this workflow.\n\n\n\n\n\n\n\n\n\nNoteSharing your website\n\n\n\n\n\nNow that you have created a spatialLIBD-powered website, you might be interested in sharing it. To do so, it will be useful to save a small spe object using saveRDS(), containing the data to share. The smaller the object, the better in terms of performance. For example, you may want to remove lowly expressed genes to save space. You can check the object size in R with object.size().\n\nCode# object size\nformat(object.size(spe), units=\"MB\")\n\n##  [1] \"308.1 Mb\"\n\n\nIf your data is small enough, you might want to share your website by hosting on shinyapps.io by Posit (the company that develops RStudio), which you can try for free. Once you have created your account, you need to create an app.R file like the one we have on the spatialLIBD_demo directory.\n\n\n##  library(\"spatialLIBD\")\n##   library(\"markdown\") # for shinyapps.io\n##   \n##   ## spatialLIBD uses golem\n##   options(\"golem.app.prod\" = TRUE)\n##   \n##   ## You need this to enable shinyapps to install Bioconductor packages\n##   options(repos = BiocManager::repositories())\n##   \n##   ## Load the data\n##   spe &lt;- readRDS(\"spe_workflow_Visium_spatialLIBD.rds\")\n##   \n##   ## Deploy the website\n##   spatialLIBD::run_app(\n##       spe,\n##       sce_layer = NULL,\n##       modeling_results = NULL,\n##       sig_genes = NULL,\n##       title = \"OSTA spatialLIBD workflow example\",\n##       spe_discrete_vars = c(\"ground_truth\", \"label\", \"ManualAnnotation\"),\n##       spe_continuous_vars = c(\n##           \"cell_count\",\n##           \"sum_umi\",\n##           \"sum_gene\",\n##           \"expr_chrM\",\n##           \"expr_chrM_ratio\",\n##           \"sum\",\n##           \"detected\",\n##           \"subsets_mito_sum\",\n##           \"subsets_mito_detected\",\n##           \"subsets_mito_percent\",\n##           \"total\",\n##           \"sizeFactor\"\n##       ),\n##       default_cluster = \"label\",\n##       docs_path = \"www\"\n##   )\n\n\nYou can then open R in a new session in the same directory where you saved the app.R file, run the code and click on the “publish” blue button at the top right of your RStudio window. You will then need to upload the app.R file, your .rds file containing the spe object, and the files under the www directory which enable you to customize your spatialLIBD website.\n\n\n\n\nScreenshot of the RStudio window for publishing your spatialLIBD-powered website to shinyapps.io\n\n\n\nThe RStudio prompts will guide you along the process for authenticating to your shinyapps.io account, which will involve copy-pasting some code that starts with rsconnect::setAccountInfo(). Alternatively, you can create a deploy.R script and write the code for uploading your files to shinyapps.io as shown below.\n\n\n##  library('rsconnect')\n##   \n##   ## Or you can go to your shinyapps.io account and copy this\n##   ## Here we do this to keep our information hidden.\n##   # load(\".deploy_info.Rdata\")\n##   # rsconnect::setAccountInfo(\n##   #     name = deploy_info$name,\n##   #     token = deploy_info$token,\n##   #     secret = deploy_info$secret\n##   # )\n##   \n##   ## You need this to enable shinyapps to install Bioconductor packages\n##   options(repos = BiocManager::repositories())\n##   \n##   ## Deploy the app, that is, upload it to shinyapps.io\n##   rsconnect::deployApp(\n##       appFiles = c(\n##           \"app.R\",\n##           \"spe_workflow_Visium_spatialLIBD.rds\",\n##           dir(\"www\", full.names = TRUE)\n##       ),\n##       appName = 'OSTA_spatialLIBD_demo',\n##       account = 'libd',\n##       server = 'shinyapps.io'\n##   )\n\n\nNote that we have copied the default www directory files from the spatialLIBD repository and adapted them. We then use these files with spatialLIBD::run_app(docs_path) in our app.R script. These files help us control portions of our spatialLIBD-powered website and customize it.\nIf you follow this workflow, you will end up with a website just like this one. In our case, we further configured our website through the shinyapps.io dashboard. We selected the following options:\n\n\nGeneral Instance Size: 3X-Large (8GB)\n\nAdvanced Max Worker Processes: 1\n\nAdvanced Max Connections: 15\n\nThe Max Worker Processes determines how many R sessions are open per instance. Then Max Connections specifies the number of connections to each R session. The Instance Size determines the memory available. In this case, 8000 / 300 is approximately 27, but we decided to be conservative and set the total number of users per instance to 15. This is why it can be important to reduce the size of your spe object before sharing the website. Alternatively, you can rent an AWS Instance and deploy your app there, which is how http://spatial.libd.org/spatialLIBD is hosted along with these error configuration files.\n\n\n\n\n13.3.4 Wrapping up\nThank you for reading this far! In this section we showed you:\n\nwhy you might be interested in using spatialLIBD,\nwe re-used the spe object from the DLPFC workflow (Section 13.2),\nwe adapted the spe object to make it compatible with spatialLIBD,\nwe created an interactive website on our laptops,\nwe shared the website with others using shinyapps.io.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>13</span>  <span class='chapter-title'>Workflow: Visium DLPFC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-dlpfc.html#appendix",
    "href": "pages/seq-workflow-dlpfc.html#appendix",
    "title": "13  Workflow: Visium DLPFC",
    "section": "\n13.4 Appendix",
    "text": "13.4 Appendix\nFor more details about spatialLIBD, please check the spatialLIBD Bioconductor landing page or the pkgdown documentation website. In particular, we have two vignettes:\n\nIntroduction to spatialLIBD\nUsing spatialLIBD with 10x Genomics public datasets\n\nYou can also read more about spatialLIBD in the associated publication Pardo et al. (2022).\nIf you prefer to watch videos, recorded presentations related to the dataset (Maynard et al. 2021) and spatialLIBD (Pardo et al. 2022) are also available here.\nReferences\n\n\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Research 5 (2122). https://doi.org/10.12688/f1000research.9501.2.\n\n\nMaynard, Kristen R., Leonardo Collado-Torres, Lukas M. Weber, Cedric Uytingco, Brianna K. Barry, Stephen R. Williams, Joseph L. Catallini II, et al. 2021. “Transcriptome-Scale Spatial Gene Expression in the Human Dorsolateral Prefrontal Cortex.” Nature Neuroscience 24: 425–36. https://doi.org/10.1038/s41593-020-00787-0.\n\n\nMcCarthy, Davis J, Kieran R Campbell, Aaron T L Lun, and Quin F Wills. 2017. “Scater: Pre-Processing, Quality Control, Normalization and Visualization of Single-Cell RNA-Seq Data in r.” Bioinformatics 33: 1179–86. https://doi.org/10.1093/bioinformatics/btw777.\n\n\nPardo, Brenda, Abby Spangler, Lukas M. Weber, Stephanie C. Page, Stephanie C. Hicks, Andrew E. Jaffe, Keri Martinowich, Kristen R. Maynard, and Leonardo Collado-Torres. 2022. “spatialLIBD: An r/Bioconductor Package to Visualize Spatially-Resolved Transcriptomics Data.” BMC Genomics 23 (434). https://doi.org/10.1186/s12864-022-08601-w.\n\n\nWeber, Lukas M., Arkajyoti Saha, Abhirup Datta, Kasper D. Hansen, and Stephanie C. Hicks. 2023. “nnSVG for the Scalable Identification of Spatially Variable Genes Using Nearest-Neighbor Gaussian Processes.” Nature Communications 14 (4059). https://doi.org/10.1038/s41467-023-39748-z.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>13</span>  <span class='chapter-title'>Workflow: Visium DLPFC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html",
    "href": "pages/seq-workflow-visium-crc.html",
    "title": "14  Workflow: Visium CRC",
    "section": "",
    "text": "14.1 Preamble",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#preamble",
    "href": "pages/seq-workflow-visium-crc.html#preamble",
    "title": "14  Workflow: Visium CRC",
    "section": "",
    "text": "14.1.1 Introduction\nIn this demo, we will be analyzing Visium data on a human colorectal cancer biopsy from de Oliveira et al. (2025). Rather than recapitulating all possible analyses, our goal is to highlight those that might be of particular interest in the context of these data.\n\n14.1.2 Dependencies\n\nCodelibrary(osfr)\nlibrary(scran)\nlibrary(scater)\nlibrary(igraph)\nlibrary(AUCell)\nlibrary(scuttle)\nlibrary(spacexr)\nlibrary(msigdbr)\nlibrary(VisiumIO)\nlibrary(jsonlite)\nlibrary(ggspavis)\nlibrary(pheatmap)\nlibrary(patchwork)\nlibrary(OSTA.data)\nlibrary(BiocParallel)\nlibrary(DropletUtils)\nlibrary(SpatialExperiment)\n# specify whether/how to \n# perform parallelization\nbp &lt;- MulticoreParam(th &lt;- 4)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(194849)",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#sec-seq-workflow-visium-crc-load-data",
    "href": "pages/seq-workflow-visium-crc.html#sec-seq-workflow-visium-crc-load-data",
    "title": "14  Workflow: Visium CRC",
    "section": "\n14.2 Data import",
    "text": "14.2 Data import\n\nCode# retrieve dataset from OSF repo\nid &lt;- \"Visium_HumanColon_Oliveira\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n\n\n\nCode# read into 'SpatialExperiment'\nobj &lt;- TENxVisium(\n    spacerangerOut=file.path(td, \"outs\"), \n    format=\"h5\", \n    images=\"lowres\")\n(spe &lt;- import(obj))\n\n##  class: SpatialExperiment \n##  dim: 18085 4269 \n##  metadata(2): resources spatialList\n##  assays(1): counts\n##  rownames(18085): ENSG00000187634 ENSG00000188976 ... ENSG00000198695\n##    ENSG00000198727\n##  rowData names(3): ID Symbol Type\n##  colnames(4269): AACAATGTGCTCCGAG-1 AACACCATTCGCATAC-1 ...\n##    TGTTGGTGCGGAATCA-1 TGTTGGTGGACTCAGG-1\n##  colData names(4): in_tissue array_row array_col sample_id\n##  reducedDimNames(0):\n##  mainExpName: Gene Expression\n##  altExpNames(0):\n##  spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres\n##  imgData names(4): sample_id image_id data scaleFactor",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#quality-control",
    "href": "pages/seq-workflow-visium-crc.html#quality-control",
    "title": "14  Workflow: Visium CRC",
    "section": "\n14.3 Quality control",
    "text": "14.3 Quality control\n\nCode# use gene symbols as feature names\nrownames(spe) &lt;- make.unique(rowData(spe)$Symbol)\n# add per-cell quality control metrics\nsub &lt;- list(mt=grep(\"^MT-\", rownames(spe)))\nspe &lt;- addPerCellQCMetrics(spe, subsets=sub)\n\n\n\n\n\n\n\n\n\n\n\nCode# determine outliers via thresholding on MAD from the median\nol &lt;- perCellQCFilters(spe, sub.fields=\"subsets_mt_percent\")\n# add results as cell metadata\ncolData(spe)[names(ol)] &lt;- ol \n# tabulate # and % of cells that'd \n# be discarded for different reasons\ndata.frame(\n    check.names=FALSE,\n    `#`=apply(ol, 2, sum), \n    `%`=round(100*apply(ol, 2, mean), 2))\n\n##                            #     %\n##  low_lib_size              3  0.07\n##  low_n_features          636 14.90\n##  high_subsets_mt_percent 161  3.77\n##  discard                 779 18.25\n\n\nLet’s see which spots would be excluded according to the above criteria:\n\nCodelapply(names(ol), \\(.) \n    plotCoords(spe, annotate=.) + ggtitle(.)) |&gt;\n    wrap_plots(nrow=1, guides=\"collect\") &\n    guides(col=guide_legend(override.aes=list(size=3))) &\n    scale_color_manual(\"discard\", values=c(\"lavender\", \"purple\")) &\n    theme(plot.title=element_text(hjust=0.5), legend.key.size=unit(0, \"lines\"))\n\n\n\n\n\n\n\nIt seems like low-quality spots are highly spatially organized, so that might might encourage us to not remove them, for now. We will see further below how the quality control metrics used here, and spots deemed to be discarded, are distributed across (transcription-based) clusters.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#processing",
    "href": "pages/seq-workflow-visium-crc.html#processing",
    "title": "14  Workflow: Visium CRC",
    "section": "\n14.4 Processing",
    "text": "14.4 Processing\n\nCode# log-library size normalization\nspe &lt;- logNormCounts(spe)\n# highly variable feature selection\ntbl &lt;- modelGeneVar(spe)\nsel &lt;- getTopHVGs(tbl, n=2e3)\n# principal component analysis\nspe &lt;- runPCA(spe, subset_row=sel)",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#clustering",
    "href": "pages/seq-workflow-visium-crc.html#clustering",
    "title": "14  Workflow: Visium CRC",
    "section": "\n14.5 Clustering",
    "text": "14.5 Clustering\nAs an unsupervised approach, we perform shared nearest-neighbor (SNN) graph-based clustering using the Leiden community detection algorithm.\n\nCode# build shared nearest-neighbor (SNN) graph\ng &lt;- buildSNNGraph(spe, use.dimred=\"PCA\", type=\"jaccard\")\n# cluster via Leiden community detection algorithm\nk &lt;- cluster_leiden(g, objective_function=\"modularity\", resolution=0.5)\ntable(spe$Leiden &lt;- factor(k$membership))\n\n##  \n##    1   2   3   4   5   6   7   8   9  10 \n##  326 504 710 432 732 458 315 171 469 152",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#deconvolution",
    "href": "pages/seq-workflow-visium-crc.html#deconvolution",
    "title": "14  Workflow: Visium CRC",
    "section": "\n14.6 Deconvolution",
    "text": "14.6 Deconvolution\nIn a complementary approach, we deconvolute spot measurements using (annotated) reference single-cell data provided by the authors. Let’s first retrieve these data, alongside corresponding cell metadata, which includes low- (Level1) and high-resolution (Level2) annotations into 10 and 32 subpopulations, respectively.\n\nCode# retrieve dataset from OSF repo\nid &lt;- \"Chromium_HumanColon_Oliveira\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n\n\n\nCode# read into 'SingleCellExperiment'\nfs &lt;- list.files(td, full.names=TRUE)\nh5 &lt;- grep(\"h5$\", fs, value=TRUE)\nsce &lt;- read10xCounts(h5, col.names=TRUE)\n# add cell metadata\ncsv &lt;- grep(\"csv$\", fs, value=TRUE)\ncd &lt;- read.csv(csv, row.names=1)\ncolData(sce)[names(cd)] &lt;- cd[colnames(sce), ]\n# use gene symbols as feature names\nrownames(sce) &lt;- make.unique(rowData(sce)$Symbol)\n# exclude cells deemed to be of low-quality\nsce &lt;- sce[, sce$QCFilter == \"Keep\"]\n# tabulate subpopulations\ntable(sce$Level1)\n\n##  \n##                B cells           Endothelial            Fibroblast \n##                  33611                  7969                 28653 \n##  Intestinal Epithelial               Myeloid              Neuronal \n##                  22763                 25105                  4199 \n##          Smooth Muscle               T cells                 Tumor \n##                  43308                 29272                 65626\n\n\n Next, we perform deconvolution with spacexr’s (RCTD) (Cable et al. 2022). By default, runRctd()’s rctd_mode=\"doublet\", i.e., at most two subpopulations are fit per pixel; here, we set rctd_mode=\"full\" in order to allow for an arbitrary number of subpopulations to be fit instead.Here, we filter the reference data to contain only cells from the same patient, and downsample to retain a limited number of cells per subpopulation. This is not strictly necessary, assuming that clusters are transcriptionally stable across patients, but helps with reducing runtime and memory consumption here.\n\nCode# prep reference data (Chromium);\n# subset cells from same patient\n.sce &lt;- sce[, grepl(\"P2\", sce$Patient)]\n# downsample to at most 2,000 cells per cluster\ncs &lt;- split(seq_len(ncol(.sce)), .sce$Level1)\ncs &lt;- lapply(cs, \\(.) sample(., min(length(.), 2e3)))\n.sce &lt;- .sce[, unlist(cs)]\n# run 'RCTD' deconvolution\nrctd_data &lt;- createRctd(spe, .sce, cell_type_col=\"Level1\")\n(res &lt;- runRctd(rctd_data, max_cores=th, rctd_mode=\"full\"))\n\n##  class: SpatialExperiment \n##  dim: 9 4269 \n##  metadata(4): spatial_rna config cell_type_info internal_vars\n##  assays(1): weights\n##  rownames(9): B cells Endothelial ... T cells Tumor\n##  rowData names(0):\n##  colnames(4269): AACAATGTGCTCCGAG-1 AACACCATTCGCATAC-1 ...\n##    TGTTGGTGCGGAATCA-1 TGTTGGTGGACTCAGG-1\n##  colData names(1): sample_id\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : x y\n##  imgData names(0):\n\n\nWeights inferred by RCTD should be normalized such that proportions of cell types sum to 1 in each spot:\n\nCode# scale weights such that they sum to 1\nws &lt;- assay(res)\nws &lt;- sweep(ws, 2, colSums(ws), `/`)\n# add proportion estimates as metadata\nws &lt;- data.frame(t(as.matrix(ws)))\ncolData(spe)[names(ws)] &lt;- ws[colnames(spe), ]\n\n\nFor comparison with unsupervised clustering (SNN-based Leiden), we also include assignments we would obtain if we were to assign spots the most frequent label (in terms of deconvolution estimates):\n\nCodeids &lt;- names(ws)[apply(ws, 1, which.max)]\ntable(spe$RCTD &lt;- factor(ids), spe$Leiden)\n\n##                         \n##                            1   2   3   4   5   6   7   8   9  10\n##    B.cells                 0  44   0   8   0   4   0   0   0   2\n##    Endothelial             0 114   0   0   0  24   1   0   0   0\n##    Fibroblast              0 268   0   0  11  57 311   0   0   0\n##    Intestinal.Epithelial   0   5   0   4   0   0   0   0 466  12\n##    Myeloid                 0  15   0   0   2   2   0   0   0   0\n##    Smooth.Muscle           0   8   0   0   0 362   0   0   0   0\n##    T.cells                 0  15   0   0   0   4   0   0   0   0\n##    Tumor                 326  35 710 420 719   5   3 171   3 138\n\n\nWe can also compartmentalize the tissue into broad biological compartments; here, by grouping RCTD-based subpopulation assignments into four classes:\n\nCodelab &lt;- list(\n    tum=\"Tumor\",\n    epi=\"Intestinal.Epithelial\",\n    imm=c(\"B.cells\", \"T.cells\", \"Myeloid\"),\n    str=c(\"Endothelial\", \"Fibroblast\", \"Smooth.Muscle\"))\nidx &lt;- match(spe$RCTD, unlist(lab))\nlab &lt;- rep.int(names(lab), sapply(lab, length))\ntable(spe$Domain &lt;- factor(lab[idx]))\n\n##  \n##   epi  imm  str  tum \n##   487   96 1156 2530",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#exploratory",
    "href": "pages/seq-workflow-visium-crc.html#exploratory",
    "title": "14  Workflow: Visium CRC",
    "section": "\n14.7 Exploratory",
    "text": "14.7 Exploratory\nLet’s visualize deconvolution weights in space, i.e., coloring by the proportion of a given cell type estimated to fall within a given spot:\n\nCodelapply(names(ws), \\(.) \n    plotCoords(spe, annotate=.)) |&gt;\n    wrap_plots(nrow=3) & theme(\n    legend.key.width=unit(0.5, \"lines\"),\n    legend.key.height=unit(1, \"lines\")) &\n    scale_color_gradientn(colors=pals::jet())\n\n\n\n\n\n\n\n\nCodelapply(c(\"Leiden\", \"Domain\", \"RCTD\"), \n    \\(.) plotCoords(spe, annotate=.)) |&gt;\n    wrap_plots(nrow=1) &\n    theme(legend.key.size=unit(0, \"lines\")) &\n    scale_color_manual(values=unname(pals::trubetskoy()))\n\n\n\n\n\n\n\nTo help characterize subpopulations from unsupervised clustering, we can view their distribution across deconvolution-based clusters and broad domains; e.g., tumor spots are quite diverse, while smooth muscle spots and (normal) epithelia map almost completely to a single cluster:\n\nCodecd &lt;- data.frame(colData(spe))\ndf &lt;- as.data.frame(with(cd, table(RCTD, Leiden)))\nfd &lt;- as.data.frame(with(cd, table(Domain, Leiden)))\nggplot(df, aes(Freq, RCTD, fill=Leiden)) + ggtitle(\"RCTD\") +\nggplot(fd, aes(Freq, Domain, fill=Leiden)) + ggtitle(\"Domain\") +\nplot_layout(nrow=1, guides=\"collect\") &\n    labs(x=\"Proportion\", y=NULL) &\n    coord_cartesian(expand=FALSE) &\n    geom_col(width=1, col=\"white\", position=\"fill\") &\n    scale_fill_manual(values=unname(pals::trubetskoy())) &\n    theme_minimal() & theme(aspect.ratio=1,\n        legend.key.size=unit(2/3, \"lines\"),\n        plot.title=element_text(hjust=0.5))\n\n\n\n\n\n\n\nLet’s inspect the key drivers of (expression) variability in terms of PCs. Considering clustering and deconvolution results from above, we can see that\n\nPC1 distinguishes stromal from both normal and malignant epithelia;\nPC2 clearly separates (normal) intestinal epithelium from all else;\nPC3 captures a fibroblast-rich region, and normal epithelia;\nPC5 separates fibroblasts and smooth muscle cells; etc.\n\n\nCodepcs &lt;- reducedDim(spe, \"PCA\")\ncolData(spe)[colnames(pcs)] &lt;- pcs\nlapply(colnames(pcs)[seq_len(6)], \n    \\(.) plotCoords(spe, annotate=.) +\n    scale_color_gradientn(., colors=pals::jet())) |&gt;\n    wrap_plots(nrow=2) & theme(\n        plot.title=element_blank(),\n        legend.key.width=unit(0.5, \"lines\"),\n        legend.key.height=unit(1, \"lines\"))\n\n\n\n\n\n\n\nQuality control metrics tend to be low for specific clusters. Their patch-like pattern, in turn, explains the clustering of low-quality spots seen earlier.\n\nCodelapply(c(\"detected\", \"log_sum\", \"subsets_mt_percent\"), \\(.)\n    plotColData(spe, x=., y=\"Leiden\", color_by=\"discard\", point_size=0.1) +\n    scale_x_discrete(limits=names(sort(by(spe[[.]], spe$Leiden, median))))) |&gt;\n    wrap_plots(nrow=1, guides=\"collect\") &\n    scale_color_manual(\"discard\", values=c(\"lavender\", \"purple\")) &\n    guides(col=guide_legend(override.aes=list(alpha=1, size=3))) &\n    theme_minimal() & theme(\n        panel.grid.minor=element_blank(), \n        legend.key.size=unit(0, \"lines\"))",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#signatures",
    "href": "pages/seq-workflow-visium-crc.html#signatures",
    "title": "14  Workflow: Visium CRC",
    "section": "\n14.8 Signatures",
    "text": "14.8 Signatures\n Rather than investigating single genes, we can also evaluate the expression of sets of genes (e.g., pathway signatures); e.g., malignant tissue may differ in metabolic activity such as glycolysis and fatty acid metabolism, or exhibit increased apoptosis (cell death) etc. Here, we retrieve hallmark gene sets for some biological phenomena from MSigDB, using the msigdbr package:Note that such gene lists like these may come from many different places - e.g., in-house analyses, other publications matching the research question etc. As such, they may also be read in from a .csv file, or stem from upstream analyses. In any case, they should be curated well and interpreted with caution.\n\nCode# retrieve hallmark gene sets from 'MSigDB'\ndb &lt;- msigdbr(species=\"Homo sapiens\", collection=\"H\")\n# get list of gene symbols, one element per set\ngs &lt;- split(db$ensembl_gene, db$gs_name)\n# simplify set identifiers (drop prefix, use lower case)\nnames(gs) &lt;- tolower(gsub(\"HALLMARK_\", \"\", names(gs)))\n# how many sets?\nlength(gs) \n\n##  [1] 50\n\nCode# how many genes in each?\nrange(sapply(gs, length))\n\n##  [1]  32 201\n\n\n Next, we will score these using AUCell (Aibar et al. 2017), which works in two steps: (i) rank genes for every observation (here, spots), and (ii) compute AUC values for each gene set. In essence, these represent the fraction of genes (within top-ranked genes; default 5%) that are in a given set; i.e., high values correspond to high activity (in terms of coordinated gene expression).By definition, AUCell yields values in [0,1]. Larger sets (more genes) are more likely to achieve higher scores by chance (e.g., a gene set of all genes would score 1 in any dataset). It is thus unfair to compare them directly. However, spatial distribution, correlation, and relative comparisons between subpopulations etc. are still meaningful.\n\nCode# realize (sparse) gene expression matrix\nmtx &lt;- as(logcounts(spe), \"dgCMatrix\") \n# use ensembl identifiers as feature names\nrownames(mtx) &lt;- rowData(spe)$ID\n# build per-spot gene rankings\nrnk &lt;- AUCell_buildRankings(mtx, BPPARAM=bp, plotStats=FALSE, verbose=FALSE)\n# calculate AUC for each gene set in each spot\nauc &lt;- AUCell_calcAUC(geneSets=gs, rankings=rnk, nCores=th, verbose=FALSE)\n# add results as spot metadata\ncolData(spe)[rownames(auc)] &lt;- res &lt;- t(assay(auc)) \n\n\nFor simplicity, we’ll continue investigating only those signatures with the highest score variability across spots:\n\nCodevar &lt;- colVars(res) # variance across spots\ntop &lt;- names(tail(sort(var), 8)) # top sets\n\n\nTo summarize, MYC signalling is absent in stromal regions; the fibroblast ring surrounding a cancerous patch exhibits EMT, angiogenesis, etc.; INFa response and TNFa signalling is patch-like in both stroma and malignant epithelia.\n\nCodelapply(top, \\(.) {\n    spe[[.]] &lt;- scale(spe[[.]]) # scaling\n    plotCoords(spe, annotate=.) # plotting\n}) |&gt; \n    # arrange & prettify\n    wrap_plots(nrow=2, guides=\"collect\") & \n    scale_color_gradientn(\n        colors=pals::jet(),\n        oob=scales::squish, \n        limits=c(-2.5, 2.5)) & \n    theme(\n        legend.key.width=unit(0.5, \"lines\"), \n        legend.key.height=unit(1, \"lines\")) \n\n\n\n\n\n\n\nTo ease interpretability, we can stratify AUCell scores by spot labels; these may stem from an unsupervised or deconvolution-based approach:\nCodefor (. in c(\"Leiden\", \"RCTD\")) {\n    # aggregate AUC values by cluster\n    mu &lt;- aggregateAcrossCells(auc[top, ], spe[[.]], \n        use.assay.type=\"AUC\", statistics=\"mean\")\n    # visualize as (cluster x set) heatmap\n    pheatmap(\n        mat=t(assay(mu)), scale=\"column\", col=pals::coolwarm(), main=.,\n        cellwidth=10, cellheight=10, treeheight_row=5, treeheight_col=5)\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nFor the latter, we may instead correlate set scores with proportion estimates (rather than discretizing labels according to the dominant subpopulation):\n\nCode# correlate 'AUCell' signature scores with subpopulation\n# proportion estimates from deconvolution with 'RCTD'\ncm &lt;- cor(as.matrix(ws), t(assay(auc[top, ])))\n\n\n\nCodepheatmap(cm, \n    col=pals::coolwarm(),\n    breaks=seq(-1, 1, length=25),\n    cellwidth=10, cellheight=10, \n    treeheight_row=5, treeheight_col=5)",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-crc.html#appendix",
    "href": "pages/seq-workflow-visium-crc.html#appendix",
    "title": "14  Workflow: Visium CRC",
    "section": "\n14.9 Appendix",
    "text": "14.9 Appendix\nReferences\n\n\n\n\nAibar, Sara, Carmen Bravo González-Blas, Thomas Moerman, Vân Anh Huynh-Thu, Hana Imrichova, Gert Hulselmans, Florian Rambow, et al. 2017. “SCENIC: Single-Cell Regulatory Network Inference and Clustering.” Nature Methods 14: 1083–86. https://doi.org/10.1038/nmeth.4463.\n\n\nCable, Dylan M., Evan Murray, Luli S. Zou, Aleksandrina Goeva, Evan Z. Macosko, Fei Chen, and Rafael A. Irizarry. 2022. “Robust Decomposition of Cell Type Mixtures in Spatial Transcriptomics.” Nature Biotechnology 40: 517–26. https://doi.org/10.1038/s41587-021-00830-w.\n\n\nde Oliveira, Michelli Faria, Juan Pablo Romero, Meii Chung, Stephen R. Williams, Andrew D. Gottscho, Anushka Gupta, Susan E. Pilipauskas, et al. 2025. “High-Definition Spatial Transcriptomic Profiling of Immune Cell Populations in Colorectal Cancer.” Nature Genetics 57: 1512–23. https://doi.org/10.1038/s41588-025-02193-3.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>14</span>  <span class='chapter-title'>Workflow: Visium CRC</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html",
    "href": "pages/seq-workflow-visium-hd-bin.html",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "",
    "text": "15.1 Introduction\nVisium HD is a next-generation spatial transcriptomics technology developed by 10x Genomics, designed to provide single-cell resolution spatial gene expression data across entire tissue sections. Commercially available since 2024, Visium HD advanced the platform’s resolution from 55 µm spots to bins of subcellular resolution (2 µm). In this workflow, we will demonstrate common analysis steps with a Visium HD dataset on colorectal cancer (de Oliveira et al. 2025).",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html#dependencies",
    "href": "pages/seq-workflow-visium-hd-bin.html#dependencies",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "\n15.2 Dependencies",
    "text": "15.2 Dependencies\n\nCodelibrary(Banksy)\nlibrary(BiocParallel)\nlibrary(dplyr)\nlibrary(DropletUtils)\nlibrary(ggplot2)\nlibrary(ggspavis)\nlibrary(igraph)\nlibrary(magick)\nlibrary(OSTA.data)\nlibrary(patchwork)\nlibrary(pheatmap)\nlibrary(scater)\nlibrary(scran)\nlibrary(scuttle)\nlibrary(sf)\nlibrary(spacexr)\nlibrary(SpatialExperiment)\nlibrary(SpotSweeper)\nlibrary(tidyr)\nlibrary(VisiumIO)\n\n\nIn this demo, we perform deconvolution on 16 µm bins and compare the concordance with results on 8 µm bins, provided by 10x Genomics. Here, we only demonstrate the analysis for patient 2 (P2). Other patients, such as P1 and P5, also have public Chromium, Visium HD, and Xenium data available for the CRC group (see Chapter 6). It would be interesting to investigate the differences in malignant cells/bins (e.g., DEGs, pathways) between patients across different platforms.\n\nCode# retrieve dataset from OSF repo\nid &lt;- \"VisiumHD_HumanColon_Oliveira\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n# read 8um bins into 'SpatialExperiment'\nvhd8 &lt;- TENxVisiumHD(\n    spacerangerOut=td, \n    processing=\"filtered\",\n    format=\"h5\", \n    images=\"lowres\", \n    bin_size=\"008\") |&gt;\n    import()\n# use gene symbols as feature names\ngs &lt;- rowData(vhd8)$Symbol\nrownames(vhd8) &lt;- make.unique(gs)\nvhd8\n\n##  class: SpatialExperiment \n##  dim: 18085 545913 \n##  metadata(2): resouces spatialList\n##  assays(1): counts\n##  rownames(18085): SAMD11 NOC2L ... MT-ND6 MT-CYB\n##  rowData names(3): ID Symbol Type\n##  colnames(545913): s_008um_00301_00321-1 s_008um_00526_00291-1 ...\n##    s_008um_00353_00477-1 s_008um_00595_00611-1\n##  colData names(12): barcode in_tissue ... in_cell sample_id\n##  reducedDimNames(0):\n##  mainExpName: Gene Expression\n##  altExpNames(0):\n##  spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres\n##  imgData names(4): sample_id image_id data scaleFactor\n\n\nThese data come with bin-level annotations from deconvolution estimates by RCTD (Cable et al. 2022), implemented in spacexr. Specifically, two sets of labels are available that correspond to the most and second most frequent of 38 cell types per bin, respectively:\n\nCode# retrieve annotations\ngz &lt;- \"binned_outputs/square_008um/deconvolution.csv.gz\"\ndf &lt;- read.csv(file.path(td, gz), row.names=2)\nhead(df &lt;- df[complete.cases(df), -1])\n\n##                               DeconClass   DeconLabel1          DeconLabel2\n##  s_008um_00000_00001-1           singlet     Pericytes          Endothelial\n##  s_008um_00000_00017-1           singlet Enteric Glial           Enterocyte\n##  s_008um_00000_00018-1 doublet_uncertain Enteric Glial             Tumor II\n##  s_008um_00000_00019-1           singlet           vSM                 Tuft\n##  s_008um_00000_00020-1           singlet           vSM CD8 Cytotoxic T cell\n##  s_008um_00000_00023-1            reject Smooth Muscle                  vSM\n\nCode# keep only annotated bins\nvhd8 &lt;- vhd8[, rownames(df)]\nnames(df) &lt;- c(\"DeconClass\", \"DeconLabel1\", \"DeconLabel2\")\ncolData(vhd8)[names(df)] &lt;- df\n\n\n\nCodelab &lt;- grep(\"Label\", names(cd &lt;- colData(vhd8)), value=TRUE)\npal &lt;- hcl.colors(length(unique(unlist(cd[lab]))), \"Spectral\")\nlapply(lab, \\(.) {\n  plotCoords(vhd8, annotate=., point_size=0.2, point_shape=15) + ggtitle(.)\n}) |&gt;\n  wrap_plots(nrow=1, guides=\"collect\") &\n  scale_color_manual(NULL, values=pal) &\n  theme(legend.key.size=unit(0, \"lines\"))\n\n\n\n\n\n\n\nAnother resolution of VisiumHD with 16 µm bin can be read in as follow:\n\nCode# read 16um bins into 'SpatialExperiment'\nvhd16 &lt;- TENxVisiumHD(\n    spacerangerOut=td,\n    processing=\"filtered\",\n    format=\"h5\",\n    images=\"lowres\",\n    bin_size=\"016\") |&gt;\n    import()\n# use symbols as feature names\ngs &lt;- rowData(vhd16)$Symbol\nrownames(vhd16) &lt;- make.unique(gs)\nvhd16\n\n##  class: SpatialExperiment \n##  dim: 18085 137051 \n##  metadata(2): resouces spatialList\n##  assays(1): counts\n##  rownames(18085): SAMD11 NOC2L ... MT-ND6 MT-CYB\n##  rowData names(3): ID Symbol Type\n##  colnames(137051): s_016um_00052_00082-1 s_016um_00010_00367-1 ...\n##    s_016um_00037_00193-1 s_016um_00144_00329-1\n##  colData names(12): barcode in_tissue ... in_cell sample_id\n##  reducedDimNames(0):\n##  mainExpName: Gene Expression\n##  altExpNames(0):\n##  spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres\n##  imgData names(4): sample_id image_id data scaleFactor\n\n\n\n\n\n\n\n\nNoteRemove bins overlaying empty tissue\n\n\n\n\n\nSome global filtering based on library size is necessary to remove bins that overlay empty tissue.\n\nCodevhd16$libsize &lt;- colSums(counts(vhd16))\n\n\nWe can visualize such bins by zooming into an empty tissue region. On the left-hand side, one region shows a clear gap with low counts. Informed by H&E staining, bins located above tissue gaps should not be interpreted biologically, as the low counts in these bins are likely due to ambient RNA or transcript spillover. Therefore, they should be excluded from downstream analysis.\nBased on a discussion with the original author at 10x Genomics, in this dataset, 8 µm bins with a library size below 100 are removed. Since we expect a 4-fold increase in library size across all bins at 16 µm, we can set the filtering threshold to 400.\n\nCodep1 &lt;- plotVisium(vhd16, \n    annotate=\"libsize\", point_shape=22,\n    zoom=TRUE, show_axes=TRUE, point_size=1.3) + \n    xlim(c(422, 442)) + ylim(c(318, 330)) + \n    ggtitle(\"16 µm - original\")\n\nvhd16 &lt;- vhd16[, vhd16$libsize &gt; 400]\n\np2 &lt;- plotVisium(vhd16, \n    annotate=\"libsize\", point_shape=22,\n    zoom=TRUE, show_axes=TRUE, point_size=1.3) + \n    xlim(c(422, 442)) + ylim(c(318, 330)) + \n    ggtitle(\"16 µm - post &gt; 400 UMI QC\")\n\np1 | p2\n\n\n\n\n\n\n\n\n\n\nClustering results generated by Space Ranger are provided for both resolutions.\n\nCodecsv &lt;- list.files(td, \"clustering.csv.gz\", recursive=TRUE, full.names=TRUE)\ndfs &lt;- lapply(csv, read.csv, row.names=\"barcode\") \n\ncolData(vhd8)$cluster &lt;- factor(dfs[[1]][colnames(vhd8), \"cluster\"])\ncolData(vhd16)$cluster &lt;- factor(dfs[[2]][colnames(vhd16), \"cluster\"])\n\n\nWe can visualize the given clustering results at 8 µm and 16 µm resolutions. Later, we will compare the clustering result at 16 µm with that from Banksy.\n\nCode(plotCoords(vhd8, \n    annotate=\"cluster\", point_size=0.05, point_shape=15,\n    pal=unname(pals::kelly())) + ggtitle(\"8 µm\")) |\n(plotCoords(vhd16[, !is.na(vhd16$cluster)], \n    annotate=\"cluster\", point_size=0.1, point_shape=15, \n    pal=unname(pals::kelly())) + ggtitle(\"16 µm\")) \n\n\n\n\n\n\n\nTo keep runtimes low, our downstream analysis will be performed on a subset area of 16 µm bins (1/64 of the data coverage area), which we read in here; there are no annotations available for this resolution in the public domain. Note that 8 and 16 µm binned Visium HD data share the same full-resolution H&E image and scaling factor.\n\nCode.rng &lt;- \\(spe) {\n    xy &lt;- spatialCoords(spe)*scaleFactors(spe)\n    xs &lt;- range(xy[, 1]); ys &lt;- nrow(imgRaster(spe))-range(xy[, 2])\n    x1 &lt;- xs[1] + 4*(xs[2]-xs[1])/8; x2 &lt;- xs[2] - 3*(xs[2]-xs[1])/8\n    y1 &lt;- ys[1] + 3*(ys[2]-ys[1])/8; y2 &lt;- ys[2] - 4*(ys[2]-ys[1])/8\n    list(box=c(x1, x2, y1, y2), cov=c(xs, ys))\n}\nvhd8r &lt;- .rng(vhd8)\n# vhd16r &lt;- .rng(vhd16) \n# use 8um bounding boxes to subset spes at both resolutions; \n# it is similar to 16um's box range \n.box &lt;- \\(roi, lty, lwd, col) {\n    geom_rect(\n        xmin=vhd8r[[roi]][1], xmax=vhd8r[[roi]][2], \n        ymin=vhd8r[[roi]][3], ymax=vhd8r[[roi]][4],\n        col=col, fill=NA, linetype=lty, linewidth=lwd)\n}\ncov &lt;- .box(roi=\"cov\", lty=2, lwd=1/2, col=\"grey\")\nbox &lt;- .box(roi=\"box\", lty=4, lwd=2/3, col=\"black\")\n# plotting\n.lim &lt;- \\(spe) list(\n    xlim(spe[[\"box\"]][c(1, 2)]),\n    ylim(spe[[\"box\"]][c(4, 3)]))\n\nplotVisium(vhd8, spots=FALSE, point_shape=22) + cov + box +\n    ggtitle(\"grey: data coverage\\n black: zoomed region\") + \nplotVisium(vhd8, point_size=0.8, zoom=TRUE, point_shape=22) + .lim(vhd8r) +\n    ggtitle(\"8 µm bins in black box\") + \nplotVisium(vhd16, point_size=1.6, zoom=TRUE, point_shape=22) + .lim(vhd8r) +\n    ggtitle(\"16 µm bins in black box\") + \nplot_layout(nrow=1, widths=c(1.5, 1, 1)) & facet_null() &\n    theme(plot.title=element_text(hjust=0.5, vjust=0.5))\n\n\n\n\n\n\nCode# helper for subsetting\n.sub &lt;- function(spe, rng, roi=\"box\") {\n    xs &lt;- rng[[roi]][c(1, 2)]\n    ys &lt;- nrow(imgRaster(spe)) - rng[[roi]][c(3,4)]\n    xy &lt;- spatialCoords(spe)*scaleFactors(spe)\n    spe[, xy[, 1] &gt; xs[1] & xy[, 1] &lt; xs[2] & \n          xy[, 2] &gt; ys[1] & xy[, 2] &lt; ys[2] ]\n}\n\n\nSubset the 16 µm object to bins in the black box:\n\nCode.vhd16 &lt;- .sub(spe=vhd16, rng=vhd8r)\ndim(.vhd16)\n\n##  [1] 18085  2416\n\n\nFrom now on, we are operating on 2416 16 µm bins.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html#quality-control",
    "href": "pages/seq-workflow-visium-hd-bin.html#quality-control",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "\n15.3 Quality control",
    "text": "15.3 Quality control\nAs detailed in Chapter 10, we use SpotSweeper to perform quality control on the subsetted 16 µm data.\n\nCode# calculate per-cell QC metrics\nmt &lt;- grepl(\"^MT-\", rownames(.vhd16))\n.vhd16 &lt;- addPerCellQCMetrics(.vhd16, subsets=list(mt=mt))\n# determine outliers based on \n# - low log-library size\n# - few uniquely detected features\n# - high mitochondrial count fraction\n.vhd16 &lt;- localOutliers(.vhd16, metric=\"sum\", direction=\"lower\", log=TRUE)\n.vhd16 &lt;- localOutliers(.vhd16, metric=\"detected\", direction=\"lower\", log=TRUE)\n.vhd16 &lt;- localOutliers(.vhd16, metric=\"subsets_mt_percent\", direction=\"higher\", log=TRUE)\n.vhd16$discard &lt;- \n    .vhd16$sum_outliers | \n    .vhd16$detected_outliers | \n    .vhd16$subsets_mt_percent_outliers\n# tabulate number of bins retained \n# vs. removed by any criterion \ntable(.vhd16$discard)\n\n##  \n##  FALSE  TRUE \n##   2399    17\n\n\n\nCodeplotCoords(.vhd16, annotate=\"sum_log\", point_size=0.2, point_shape=15) + \n  ggtitle(\"log-library size\") +\n  plotCoords(.vhd16, annotate=\"subsets_mt_percent\", point_size=0.2, point_shape=15) + \n  ggtitle(\"% mitochondrial\") +\n  plot_layout(nrow=1) & theme(\n    legend.key.width=unit(0.5, \"lines\"),\n    legend.key.height=unit(1, \"lines\")) &\n  scale_color_gradientn(colors=pals::jet())\n\n\n\n\n\n\n\nWe can visualize the local outliers identified by SpotSweeper in space:\n\nCodeplotCoords(.vhd16, point_shape=15, annotate=\"discard\") + ggtitle(\"discard\") +\nplotCoords(.vhd16, point_shape=15, annotate=\"sum_outliers\") + ggtitle(\"low_lib_size\") +\nplotCoords(.vhd16, point_shape=15, annotate=\"detected_outliers\") + ggtitle(\"low_n_features\") +\nplot_layout(nrow=1, guides=\"collect\") & \n    theme(\n        plot.title=element_text(hjust=0.5),\n        legend.key.size=unit(0, \"lines\")) &\n    guides(col=guide_legend(override.aes=list(size=3))) & \n    scale_color_manual(\"discard\", values=c(\"lavender\", \"purple\"))\n\n\n\n\n\n\n\nLastly, we subset the Visium HD 16 µm object to bins that passed QC:\n\nCode.vhd16 &lt;- .vhd16[, !.vhd16$discard]\ndim(.vhd16)\n\n##  [1] 18085  2399",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html#clustering",
    "href": "pages/seq-workflow-visium-hd-bin.html#clustering",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "\n15.4 Clustering",
    "text": "15.4 Clustering\nFirst, we identify highly variable genes (HVGs) in the target area: Note that spatially variable genes (SVGs) could be used instead; see Chapter 11.\n\nCode.vhd16 &lt;- logNormCounts(.vhd16)\ndec &lt;- modelGeneVar(.vhd16)\nhvg &lt;- getTopHVGs(dec, n=3e3)\n\n\nAs detailed in Chapter 28, Banksy (Singhal et al. 2024) utilizes a pair of spatial kernels to capture gene expression variation, followed by dimension reduction and graph-based clustering to identify spatial domains.\n\nCode# set seed for random number generation\n# in order to make results reproducible\nset.seed(112358)\n# 'Banksy' parameter settings\nk &lt;- 8   # consider first order neighbors\nl &lt;- 0.2 # use little spatial information\na &lt;- \"logcounts\"\nxy &lt;- c(\"array_row\", \"array_col\")\n# restrict to selected features\ntmp &lt;- .vhd16[hvg, ]\n# compute spatially aware 'Banksy' PCs\ntmp &lt;- computeBanksy(tmp, assay_name=a, coord_names=xy, k_geom=k)\ntmp &lt;- runBanksyPCA(tmp, lambda=l, npcs=20)\nreducedDim(.vhd16, \"PCA\") &lt;- reducedDim(tmp)\n## run UMAP (for visualization purposes only)\n# .vhd16 &lt;- runUMAP(.vhd16, dimred=\"PCA\")\n# build cellular shared nearest-neighbor (SNN) graph\ng &lt;- buildSNNGraph(.vhd16, use.dimred=\"PCA\", type=\"jaccard\", k=20)\n# cluster using Leiden community detection algorithm\nk &lt;- cluster_leiden(g, objective_function=\"modularity\", resolution=1.2)\ntable(.vhd16$Banksy &lt;- factor(k$membership))\n\n##  \n##    1   2   3   4   5   6   7   8   9  10  11  12  13 \n##  153 184 317 186 228 181 215 152 178 113 147 163 182\n\n\nNext, we can perform differential gene expresison (DGE) analysis to identify markers for each cluster; c.f. Chapter 30. We also compute the cluster-wise mean expression of selected markers:\n\nCode# differential gene expression analysis\nmgs &lt;- findMarkers(.vhd16, groups=.vhd16$Banksy, direction=\"up\")\n# select for a few markers per cluster\ntop &lt;- lapply(mgs, \\(df) rownames(df)[df$Top &lt;= 2])\ntop &lt;- unique(unlist(top))\n# average expression by clusters\npbs &lt;- aggregateAcrossCells(.vhd16, \n    ids=.vhd16$Banksy, subset.row=top, \n    use.assay.type=\"logcounts\", statistics=\"mean\")\n\n\nThe marker genes in each cluster can be visualized with a heatmap:\n\nCode# visualize averages z-scaled across clusters\npheatmap(\n    mat=t(assay(pbs)), scale=\"column\", breaks=seq(-2, 2, length=101), \n    cellwidth=10, cellheight=10, treeheight_row=5, treeheight_col=5)\n\n\n\n\n\n\n\nOr, we can visualize the bin-wise expression of selected markers in space:\n\nCodegs &lt;- c(\"MMP2\", \"PIGR\", \"IGHG1\")\nps &lt;- lapply(gs, \\(.) plotCoords(.vhd16, annotate=., point_shape=15, \n                                 point_size=0.8, assay_name=\"logcounts\"))\nwrap_plots(ps, nrow=1) & theme(\n  legend.key.width=unit(0.5, \"lines\"),\n  legend.key.height=unit(1, \"lines\")) &\n  scale_color_gradientn(colors=rev(hcl.colors(9, \"Rocket\")))",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html#deconvolution",
    "href": "pages/seq-workflow-visium-hd-bin.html#deconvolution",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "\n15.5 Deconvolution",
    "text": "15.5 Deconvolution\n\n15.5.1 Load single-cell reference\nWe will now perform deconvolution on the 16 µm binned Visium HD data. First, we retrieve matching (Chromium) scRNA-seq data, which includes low- (Level1) and high-resolution (Level2) annotations of cells into 9 respectively 31 clusters. In order to ensure similar transcriptional profile across technologies, we filter the reference population to patient 2 only.\n\nCode# retrieve dataset from OSF repository\nid &lt;- \"Chromium_HumanColon_Oliveira\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n# read into `SingleCellExperiment`\nfs &lt;- list.files(td, full.names=TRUE)\nh5 &lt;- grep(\"h5$\", fs, value=TRUE)\nsce &lt;- read10xCounts(h5, col.names=TRUE)\n# add cell metadata\ncsv &lt;- grep(\"csv$\", fs, value=TRUE)\ncd &lt;- read.csv(csv, row.names=1)\ncolData(sce)[names(cd)] &lt;- cd[colnames(sce), ]\n# use gene symbols as feature names\ngs &lt;- rowData(sce)$Symbol\nrownames(sce) &lt;- make.unique(gs)\n# exclude cells deemed to be of low-quality\nsce &lt;- sce[, sce$QCFilter == \"Keep\"]\n# subset cells from same patient\nsce &lt;- sce[, grepl(\"P2\", sce$Patient)]\nsce\n\n##  class: SingleCellExperiment \n##  dim: 18082 67568 \n##  metadata(1): Samples\n##  assays(1): counts\n##  rownames(18082): SAMD11 NOC2L ... MT-ND6 MT-CYB\n##  rowData names(3): ID Symbol Type\n##  colnames(67568): AAACAAGCAACAGCTAACTTTAGG-1\n##    AAACAAGCAACTGTTCACTTTAGG-1 ... TTTGTGAGTGCGTACCATGTTGAC-24\n##    TTTGTGAGTGGAAGCTATGTTGAC-24\n##  colData names(7): Sample Barcode ... Level1 Level2\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n\n\n\n\n\n\n\n\nNoteSingle-cell reference annotation mapping\n\n\n\n\n\nWe can visualize the mapping between low- and high-resolution annotations in the single-cell reference data with a contingency table:\n\nCodefq &lt;- prop.table(table(sce$Level1, sce$Level2), 2)\npheatmap(fq, cellwidth=10, cellheight=10, treeheight_row=5, treeheight_col=5)\n\n\n\n\n\n\n\nNote that \"Proliferating Immune II\" spans evenly between \"B cells\" and \"Tumor\", so we will make it a separate class, \"Prolif. Immune\" in the low-resolution annotations:\n\nCodesce$Level1 &lt;- ifelse(grepl(\"Prolif\", sce$Level2), \"Prolif. Immune\", sce$Level1)\ntable(sce$Level1) # tabulate low-res. labels\n\n##  \n##                B cells           Endothelial            Fibroblast \n##                   6233                  1969                  7355 \n##  Intestinal Epithelial               Myeloid              Neuronal \n##                   5949                  6353                  1216 \n##         Prolif. Immune         Smooth Muscle               T cells \n##                    810                 16428                  6658 \n##                  Tumor \n##                  14597\n\n\nThere are some differences in the provided deconvolution labels at 8 µm resolution and the high-resolution single-cell reference labels:\n\nCode# all single-cell reference labels \n# are present in the Visium HD data\nsetdiff(sce$Level2, vhd8$DeconLabel1)\n\n##  character(0)\n\nCodesetdiff(sce$Level2, vhd8$DeconLabel2)\n\n##  character(0)\n\nCode# but not vice versa\nsetdiff(vhd8$DeconLabel1, sce$Level2)\n\n##  [1] \"Proliferating Macrophages\" \"Proliferating Fibroblast\" \n##  [3] \"Memory B\"                  \"Vascular Fibroblast\"      \n##  [5] \"cDC I\"                     \"NK\"                       \n##  [7] \"Tumor IV\"\n\nCodesetdiff(vhd8$DeconLabel2, sce$Level2)\n\n##  [1] \"Proliferating Fibroblast\"  \"Memory B\"                 \n##  [3] \"cDC I\"                     \"Proliferating Macrophages\"\n##  [5] \"Vascular Fibroblast\"       \"Tumor IV\"                 \n##  [7] \"NK\"\n\n\nBelow, these extra classes in the Visium HD 8 μm bin annotations will be ignored.\n\n\n\n\n15.5.2 Simplify 8 µm annotations\nWe can merge the provided deconvolution annotation \"DeconLabel1\" (most likely cell type for singlets, most dominant type for doublets) into a lower resolution using the single-cell reference annotations:\n\nCodei &lt;- match(vhd8$DeconLabel1, sce$Level2)\nj &lt;- match(vhd8$DeconLabel2, sce$Level2)\nvhd8$.DeconLabel1 &lt;- sce$Level1[i]\nvhd8$.DeconLabel2 &lt;- sce$Level1[j]\nvhd8 &lt;- vhd8[, !is.na(vhd8$.DeconLabel1)]\ntable(vhd8$.DeconLabel1)\n\n##  \n##                B cells           Endothelial            Fibroblast \n##                  12279                 19978                 75080 \n##  Intestinal Epithelial               Myeloid              Neuronal \n##                  40683                 20811                  1200 \n##         Prolif. Immune         Smooth Muscle               T cells \n##                   3660                 15913                  6158 \n##                  Tumor \n##                 215865\n\n\nAccording to RCTD, approximately 75% of the 8 µm bins are singlets:\n\nCoderound(100*mean(vhd8$DeconClass == \"singlet\"), 2)\n\n##  [1] 77.39\n\n\nLet us check the top-5 common doublet pairs according to the \"doublet_certain\" class:\n\nCodedbl &lt;- vhd8$DeconClass == \"doublet_certain\"\nlab &lt;- c(\".DeconLabel1\", \".DeconLabel2\")\ndf &lt;- data.frame(colData(vhd8)[dbl, lab])\n# sort as to ignore order\ndf &lt;- apply(df, 1, sort)\ndf &lt;- do.call(rbind, df)\nnames(df) &lt;- lab\n# count unique pairs\nij &lt;- paste(df[, 1], df[, 2], sep=\";\")\nhead(sort(table(ij), decreasing=TRUE), 5)\n\n##  ij\n##       Myeloid;Tumor B cells;Fibroblast Fibroblast;Myeloid        Tumor;Tumor \n##                3799               3670               3453               2742 \n##    Fibroblast;Tumor \n##                2532\n\n\nWe can see that myeloid are commonly co-localized with tumor and fibroblasts cells; most doublets are homotypic, i.e., they are (mostly) composed of one low-resolution type.\n\n\n\n\n\n\nNoteSubset 8um bins within black bounding box\n\n\n\n\n\nWe can perform the same subsetting procedure to 8 µm bins and compare the difference in the number of bins in the zoomed (black box) area.\n\nCode# subset zoomed (black box) area\n.vhd8 &lt;- .sub(spe=vhd8, rng=vhd8r)\n# compare number of bins between resolutions\n(n &lt;- ncol(.vhd8))\n\n##  [1] 8933\n\nCode(m &lt;- ncol(.vhd16))\n\n##  [1] 2399\n\nCoderound(n/m, 2)\n\n##  [1] 3.72\n\n\nAs expected, the number of 8 µm bins is about 4 times the number of 16 µm bins. We will visualize the same subset for both bin sizes in any downstream analyses.\n\n\n\n\n15.5.3 Run RCTD on 16 µm bins\nWe also assume there are at most two cell types in a 16 µm bin as in 8 µm, and thus we would expect a smaller proportion of singlets.\n\nCode# downsample to at most 4,000 cells per cluster for 'sce'\n# (this is done only to keep runtime/memory low)\ncs &lt;- split(seq_len(ncol(sce)), sce$Level1)\ncs &lt;- lapply(cs, \\(.) sample(., min(length(.), 4e3)))\nncol(.sce &lt;- sce[, unlist(cs)])\nrctd_data &lt;- createRctd(.vhd16, .sce, cell_type_col=\"Level1\")\n(res &lt;- runRctd(rctd_data, max_cores=4, rctd_mode=\"doublet\"))\n\n\nWeights inferred by RCTD correspond to proportions of cell types, such that they sum to 1 for a given observation (expect for rejected ones, which sum to 0):\n\nCode# counts rejected observations\nws &lt;- assay(res, \"weights\")\ntable(colSums(ws) == 0)\n\n##  \n##  FALSE  TRUE \n##   2388    11\n\nCode# add proportion estimates as metadata\nws &lt;- data.frame(t(as.matrix(ws)))\ncolData(.vhd16)[names(ws)] &lt;- ws[colnames(.vhd16), ]\n\n\nNext, we can spatially visualize the deconvolution proportions estimates:\n\nCodelapply(names(ws), \\(.) \n    plotCoords(.vhd16, annotate=., point_size=0.3, point_shape=15)) |&gt;\n    wrap_plots(nrow=2, guides=\"collect\") & theme(\n    legend.key.width=unit(0.5, \"lines\"),\n    legend.key.height=unit(1, \"lines\")) &\n    scale_color_gradientn(colors=rev(hcl.colors(9, \"Rocket\")))\n\n\n\n\n\n\n\nWe may also obtain the majority vote class for 16 µm bins: This type of analysis procedure is underlying the annotations provided by the authors.\n\nCode# derive majority vote labels\nids &lt;- names(ws)[apply(ws, 1, which.max)]\nids &lt;- gsub(\"\\\\.([A-z])\", \" \\\\1\", ids)\nidx &lt;- match(colnames(.vhd16), rownames(ws))\ntable(.vhd16$.DeconLabel1 &lt;- factor(ids[idx]))\n\n##  \n##                B cells           Endothelial            Fibroblast \n##                    121                   223                   506 \n##  Intestinal Epithelial               Myeloid              Neuronal \n##                    368                   180                     2 \n##         Prolif. Immune         Smooth Muscle               T cells \n##                     77                    60                    49 \n##                  Tumor \n##                    813\n\n\n\n\n\n\n\n\nNoteMajority voted cell type frequency difference between 8 and 16 µm bins\n\n\n\n\n\nWe can also check the proportional frequency difference between 8 and 16 µm bins in our region of interest:\n\nCoden8 &lt;- table(.vhd8$.DeconLabel1)\nn16 &lt;- table(.vhd16$.DeconLabel1)\ndf &lt;- data.frame(x=as.numeric(n8/n16))\nggplot(df, aes(x)) + geom_density() + \n    xlab(\"Cell type frequency ratio\") + \n    ggtitle(\"distribution of cell type frequency\\nratio between 8 vs. 16 µm bins\") + \n    scale_x_continuous(breaks=seq(0, max(df$x), by=2)) + \n    theme_classic() + theme(plot.title=element_text(hjust=0.5))\n\n\n\n\n\n\n\nMost cell types appear around 3-4 times more in 8 compared to 16 µm bins, which is expected given the difference in bin size.\n\n\n\n\n15.5.4 Deconvolution results at different resolutions\nLet’s visualize deconvolution result for 8 and 16 µm bins in the zoomed area:\n\nCodeplotVisium(.vhd8, \n    annotate=\".DeconLabel1\", zoom=TRUE, \n    point_size=0.8, point_shape=22) + \n    ggtitle(\"8 µm\") + \nplot_spacer() +\nplotVisium(.vhd16, \n    annotate=\".DeconLabel1\", zoom=TRUE, \n    point_size=1.6, point_shape=22) + \n    ggtitle(\"16 µm\") +\nplot_layout(nrow=1, guides=\"collect\", widths=c(1, 0.05, 1)) &\n    guides(col=guide_legend(override.aes=list(size=2))) &\n    scale_fill_manual(values=unname(pals::trubetskoy())) & \n    facet_null() & theme(\n        plot.title=element_text(hjust=0.5),\n        legend.key.size=unit(0, \"lines\")) \n\n\n\n\n\n\n\nWe observe clear agreement in deconvolution at both 8 µm and 16 µm resolutions; however, the 8 µm resolution better captures fine structures, such as the string-like shape of endothelial and fibroblast bins extending into the upper left tumor region.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html#concordance-of-results",
    "href": "pages/seq-workflow-visium-hd-bin.html#concordance-of-results",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "\n15.6 Concordance of results",
    "text": "15.6 Concordance of results\nWe can visualize the results spatially:\n\nCodeplotVisium(.vhd16, \n    annotate=\"cluster\", zoom=TRUE, \n    point_shape=22, point_size=1.6, \n    pal=unname(pals::kelly())) + \nplot_spacer() +\nplotVisium(.vhd16, \n    annotate=\"Banksy\", zoom=TRUE, \n    point_shape=22, point_size=1.6, \n    pal=unname(pals::kelly())) + \nplot_spacer() +\nplotVisium(.vhd16, \n    annotate=\".DeconLabel1\", zoom=TRUE, \n    point_shape=22, point_size=1.6, \n    pal=unname(pals::trubetskoy())) +\nplot_layout(nrow=1, widths=c(1, 0.05, 1, 0.05, 1)) & \n    facet_null() & theme(legend.key.size=unit(0, \"lines\"))\n\n\n\n\n\n\n\nWe observe that Banksy delineates tissue borders very well, while deconvolution provides direct biological insight into the underlying clusters. Their concordance can be visualized using a heatmap:\n\nCodefq &lt;- prop.table(table(.vhd16$Banksy, .vhd16$.DeconLabel1), 1)\npheatmap(fq, cellwidth=10, cellheight=10, treeheight_row=5, treeheight_col=5)\n\n\n\n\n\n\n\nFrom the above heatmap, cluster 5 and 7 are mostly immune cells; cluster 9 maps to endothelial; cluster 1 and 13 correspond to intestinal epithelial and smooth muscle cells, respectively; fibroblasts map to cluster 10; tumor spans clusters 3, 11 and 12.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html#neighborhood-analysis",
    "href": "pages/seq-workflow-visium-hd-bin.html#neighborhood-analysis",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "\n15.7 Neighborhood analysis",
    "text": "15.7 Neighborhood analysis\nHere, we want to quantify the abundance between T cells, B cells, or Myeloid bins to Fibroblast or Tumor bins in 8 µm zoomed region. We use getAbundances() from Statial (Ameen et al. 2024) to calculate, for each bin, the abundance of other cell types within a radius of 200 px; the resulting (bins \\(\\times\\) types) matrix is stored as reducedDim slot \"abundances\".\n\nCode# check for availability of 'Statial';\n# disable coming chunks if unavailable\nrun &lt;- require(\"Statial\", quietly=TRUE)\nif (!run) knitr::opts_chunk$set(eval=FALSE)\n\n\n\nCode.vhd8 &lt;- .vhd8[, !is.na(.vhd8$.DeconLabel1)]\nxy &lt;- data.frame(spatialCoords(.vhd8))\ncolData(.vhd8)[names(xy)] &lt;- xy\n.vhd8 &lt;- getAbundances(.vhd8, \n    spatialCoords=names(xy),\n    cellType=\".DeconLabel1\", \n    imageID=\"sample_id\", \n    r=200, nCores=4)\n\n\nLet’s have a look at the abundance and distance results, also including deconvolution results:\n\nCodedf &lt;- reducedDim(.vhd8, \"abundances\")\ndf$CT &lt;- .vhd8$.DeconLabel1\ndf[1:5, 1:5]\n\n\nNow, we filter to only T cells, B cells and Myeloid bins, and investigate – within their neighborhood – the spatial proximity differences to Fibroblast or Tumor bins in terms of abundance.\n\nCodesource &lt;- df$CT %in% c(\"T cells\", \"B cells\", \"Myeloid\")\ntarget &lt;- c(\"Tumor\", \"Fibroblast\", \"CT\")\nfd &lt;- pivot_longer(\n    df[source, target], cols=-CT,\n    names_to=\"target\", values_to=\"n\")\nhead(fd)\n\n\nIn this region, we observe more fibroblast than tumor bins around each of the immune bins. However, note that in this zoomed region, we have nearly 1.4 times more fibroblast bins compared to tumor bins. Thus, we need to scale abundance values by the number of target cell type bins observed in the region.\n\nCoden_tum &lt;- table(.vhd8$.DeconLabel1)[\"Tumor\"]\nn_fib &lt;- table(.vhd8$.DeconLabel1)[\"Fibroblast\"]\nfd$p &lt;- ifelse(fd$target == \"Tumor\", fd$n/n_tum, fd$n/n_fib)\nggplot(fd, aes(x=CT, y=n, fill=target)) + \n    labs(y=\"# cells within 200px\") +\nggplot(fd, aes(x=CT, y=p, fill=target)) + \n    labs(y=\"relative abundance\") +\nplot_layout(nrow=1, guides=\"collect\") & \n    geom_boxplot(key_glyph=\"point\") & \n    scale_fill_manual(values=c(\"yellow\", \"pink\")) & \n    guides(fill=guide_legend(override.aes=list(shape=21, size=2))) &\n    theme_classic() & theme(\n        axis.title.x=element_blank(),\n        legend.key.size=unit(0, \"lines\"))\n\n\nAfter correction, we see amplified differences in the relative abundance of fibroblast bins compared to tumor bins around each immune cell type in the zoomed region.\nWe can also investigate the “cell-cell-marker” relationship based on the minimum distance between two cell types within a given radius. The matrix of minimum distance between all pairwise cell types is stored in the reduced dimension, similar to how the abundance matrix was previously stored.\n\nCode# NOTE: conversion to SCE is a temporary fix for a 'Statial' bug \n# reported here: https://github.com/SydneyBioX/Statial/issues/16\ntmp &lt;- as(.vhd8, \"SingleCellExperiment\")\ntmp &lt;- getDistances(tmp, \n    cellType=\".DeconLabel1\", imageID=\"sample_id\",\n    spatialCoords=names(xy), maxDist=200, nCores=4)\nreducedDim(.vhd8, \"distances\") &lt;- reducedDim(tmp, \"distances\")\n\n\nHere, we aim to determine whether the expression level of the tumor marker changes in proximity to fibroblast. Using FTH1 as an example, we observe a decrease in FTH1 expression in tumor bins as the distance to fibroblast increase. This trend could be visualized using a scatter plot.\n\nCodep &lt;- plotStateChanges(\n    cells=.vhd8, \n    image=\"sample01\", \n    from=\"Tumor\", \n    to=\"Fibroblast\",\n    marker=\"FTH1\", \n    cellType=\".DeconLabel1\", \n    imageID=\"sample_id\",\n    spatialCoords=c(\"array_col\", \"array_row\"))\np$image + facet_null() | p$scatter \n\n\nThe same analysis steps could be applied to the (unfiltered) 16 μm resolution data with the corresponding deconvolution results.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html#conclusion",
    "href": "pages/seq-workflow-visium-hd-bin.html#conclusion",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "\n15.8 Conclusion",
    "text": "15.8 Conclusion\nIn this workflow, we demonstrated how to perform a standard analysis pipeline on a subset of Visium HD data binned at 16 µm. Most methods and visualization techniques developed for Visium can be applied to Visium HD. However, more sparsity is expected, as each data point (e.g. 2, 8, or 16 µm) has smaller area compared to Visium (55 µm). Each bin cannot be interpreted as a cell, but rather, a segmentation-free approach is applied here. Below are some resources for Visium HD to consider and incorporate into your pipeline:\nPlease see the following chapter for cell-level Visium HD data analysis.\n\nGitHub repository of bin2cell for H&E segmentation and obtaining cell boundaries.\nAnalysis pipeline by 10x Genomics (April 2024). The analysis consists of three steps: run StarDist nuclei segmentation in Python, sum gene expression into nuclei based on segmentation mask, and downstream analysis with scanpy and anndata.\nPipeline on cell typing for Visium HD in Python by Sanofi.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-bin.html#appendix",
    "href": "pages/seq-workflow-visium-hd-bin.html#appendix",
    "title": "15  Workflow: Visium HD (binned)",
    "section": "\n15.9 Appendix",
    "text": "15.9 Appendix\nReferences\n\n\n\n\nAmeen, Farhan, Nick Robertson, David M. Lin, Shila Ghazanfar, and Ellis Patrick. 2024. “Kontextual: Reframing Analysis of Spatial Omics Data Reveals Consistent Cell Relationships Across Images.” bioRxiv. https://doi.org/10.1101/2024.09.03.611109.\n\n\nCable, Dylan M., Evan Murray, Luli S. Zou, Aleksandrina Goeva, Evan Z. Macosko, Fei Chen, and Rafael A. Irizarry. 2022. “Robust Decomposition of Cell Type Mixtures in Spatial Transcriptomics.” Nature Biotechnology 40: 517–26. https://doi.org/10.1038/s41587-021-00830-w.\n\n\nde Oliveira, Michelli Faria, Juan Pablo Romero, Meii Chung, Stephen R. Williams, Andrew D. Gottscho, Anushka Gupta, Susan E. Pilipauskas, et al. 2025. “High-Definition Spatial Transcriptomic Profiling of Immune Cell Populations in Colorectal Cancer.” Nature Genetics 57: 1512–23. https://doi.org/10.1038/s41588-025-02193-3.\n\n\nSinghal, Vipul, Nigel Chou, Joseph Lee, Yifei Yue, Jinyue Liu, Wan Kee Chock, Li Lin, et al. 2024. “BANKSY Unifies Cell Typing and Tissue Domain Segmentation for Scalable Spatial Omics Data Analysis.” Nature Genetics 56: 431–41. https://doi.org/10.1038/s41588-024-01664-3.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>15</span>  <span class='chapter-title'>Workflow: Visium HD (binned)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-seg.html",
    "href": "pages/seq-workflow-visium-hd-seg.html",
    "title": "16  Workflow: Visium HD (segmented)",
    "section": "",
    "text": "16.1 Preamble",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>16</span>  <span class='chapter-title'>Workflow: Visium HD (segmented)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-seg.html#preamble",
    "href": "pages/seq-workflow-visium-hd-seg.html#preamble",
    "title": "16  Workflow: Visium HD (segmented)",
    "section": "",
    "text": "16.1.1 Introduction\nAs of June 2025, Visium HD enables direct output of H&E-segmented cell-level data, in addition to the previous binned_outputs at 2, 8, and 16 µm, from SpaceRanger v4. This update simplifies the additional cell segmentation required when using bin2cell or StarDist. However, a comparative study of segmentation methods on Visium HD data has yet to be conducted.\nThe morphology-driven, nucleus-based segmentation produces polygons representing nuclei and cells across the entire tissue, as illustrated in the schematics provided by 10x Genomics.\n\n\n\n\n\n\n\nFigure 16.1: Two approaches for binning the 2x2 µm barcode squares in Visium HD data\n\n\n\n\n\n16.1.2 Dependencies\n\nCodelibrary(sf)\nlibrary(arrow)\nlibrary(dplyr)\nlibrary(tidyr)\nlibrary(scuttle)\nlibrary(SingleR)\nlibrary(Voyager)\nlibrary(ggplot2)\nlibrary(ggspavis)\nlibrary(VisiumIO)\nlibrary(OSTA.data)\nlibrary(patchwork)\nlibrary(SpotSweeper)\nlibrary(DropletUtils)\nlibrary(SpatialExperiment)\nlibrary(SpatialFeatureExperiment)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(777)\n\n\n\nCode# utility for cropping by bounding box\n.crop &lt;- \\(spe, box) {\n    box &lt;- as.list(box)\n    xy &lt;- spatialCoords(spe)\n    spe[, \n        xy[,1] &gt; box$xmin & xy[,1] &lt; box$xmax &\n        xy[,2] &gt; box$ymin & xy[,2] &lt; box$ymax ]\n}",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>16</span>  <span class='chapter-title'>Workflow: Visium HD (segmented)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-seg.html#setup",
    "href": "pages/seq-workflow-visium-hd-seg.html#setup",
    "title": "16  Workflow: Visium HD (segmented)",
    "section": "\n16.2 Setup",
    "text": "16.2 Setup\n\n16.2.1 From SPE…\nAnalogous to other chapters, we start out by retrieving data files from the OSF repository using OSTA.data. Output files from SpaceRanger v4 are located under /segmented_outputs (see Chapter 5 for details on Visium HD output structure). We can read these cell-level data into R as a SpatialExperiment (Righelli et al. 2022) using VisiumIO’s TENxVisiumHD() function by specifying the segmented_outputs argument accordingly.\n\nCode# retrieve data from OSF repo\nid &lt;- \"VisiumHD_HumanColon_Oliveira\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n\n# read into 'SpatialExperiment'\nseg &lt;- file.path(td, \"segmented_outputs\")\nspe &lt;- TENxVisiumHD(\n    format=\"h5\", \n    images=\"lowres\",\n    segmented_outputs=seg) |&gt;\n    import()\n\n# make gene symbols unique\ngs &lt;- rowData(spe)$Symbol\nrownames(spe) &lt;- make.unique(gs)\n\n# needed for 'ggspavis'\nspe$in_tissue &lt;- TRUE\n\n\nSpaceRanger also provides information on the mapping between binned outputs (2, 8, 16um) and segmented cells. These are stored as cell metadata slot map:\n\nCode# view bin-to-cell mapping information\nhead(spe$map[[1]])\n\n##  # A tibble: 6 × 6\n##    square_002um     square_008um    square_016um    cell_id         in_nucleus\n##    &lt;chr&gt;            &lt;chr&gt;           &lt;chr&gt;           &lt;chr&gt;           &lt;lgl&gt;     \n##  1 s_002um_02526_0… s_008um_00631_… s_016um_00315_… cellid_0000000… FALSE     \n##  2 s_002um_02526_0… s_008um_00631_… s_016um_00315_… cellid_0000000… FALSE     \n##  3 s_002um_02527_0… s_008um_00631_… s_016um_00315_… cellid_0000000… FALSE     \n##  4 s_002um_02527_0… s_008um_00631_… s_016um_00315_… cellid_0000000… TRUE      \n##  5 s_002um_02527_0… s_008um_00631_… s_016um_00315_… cellid_0000000… TRUE      \n##  6 s_002um_02527_0… s_008um_00631_… s_016um_00315_… cellid_0000000… TRUE      \n##  # ℹ 1 more variable: in_cell &lt;lgl&gt;\n\n\nQuick inspection shows us the number of 2um bins that were segmented, either as part of nuclei or whole cells:\n\nCode# number of segmented 2um bins\nsummary(sapply(spe$map, nrow))\n\n##     Min. 1st Qu.  Median    Mean 3rd Qu.    Max. \n##     1.00   15.00   24.00   28.55   38.00  185.00\n\nCode# fraction of 2um bins assigned to nucleus\nsummary(sapply(spe$map, \\(.) mean(.$in_nucleus)))\n\n##     Min. 1st Qu.  Median    Mean 3rd Qu.    Max. \n##  0.02041 0.19048 0.30435 0.33725 0.45455 1.00000\n\n\nFor runtime reasons, we will from the tissue to about half of its original width and height.\n\nCodexy &lt;- spatialCoords(spe)\nxs &lt;- range(xy[, 1])\nys &lt;- range(xy[, 2])\ndx &lt;- diff(xs)/4\ndy &lt;- diff(ys)/4\nbox &lt;- list(\n    xmin=xs[1]+dx, xmax=xs[2]-dx,\n    ymin=ys[1]+dy, ymax=ys[2]-dy)\nsub &lt;- .crop(spe, box)\n\n\n\nCode# reverse y-coordinates of bounding box\n.box &lt;- box\n.box$ymax &lt;- -box$ymin\n.box$ymin &lt;- -box$ymax\naes &lt;- list(col=\"red\", fill=NA, linewidth=2)\nplotCoords(\n    spe[, sample(ncol(spe), 5e4)]) + \n    do.call(geom_rect, c(.box, aes)) +\nplotCoords(\n    sub[, sample(ncol(sub), 5e4)])\n\n\n\n\n\n\n\nThis retains about 28.55% of cells, and 63005 in total.\n\nCoderound(100*ncol(sub)/ncol(spe), 2)\n\n##  [1] 28.55\n\nCodencol(spe &lt;- sub)\n\n##  [1] 63005\n\n\nWe also specify a much smaller region of interest (ROI) for visualization purposes.\n\nCoderoi &lt;- c(xmin=54e3, xmax=58e3, ymin=12e3, ymax=16e3)\nspe$roi &lt;- colnames(spe) %in% colnames(.crop(spe, roi))\nplotCoords(spe, annotate=\"roi\", point_size=0) + theme(legend.position=\"none\")\n\n\n\n\n\n\n\n\n16.2.2 …to SFE\nNext, we will convert the above SPE into a SpatialFeatureExperiment (Moses et al. 2023) that allows us to also store cell segmentation masks as a colGeometry.\n\nCode# convert from SPE to SFE\nsfe &lt;- toSpatialFeatureExperiment(spe)\n# add cell segmentation boundaries\nseg &lt;- metadata(spe)$cellseg\ni &lt;- colnames(spe)\nj &lt;- match(i, seg$cell_id)\nseg &lt;- seg[j, ]; rownames(seg) &lt;- i\ncolGeometries(sfe) &lt;- list(cellseg=seg)",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>16</span>  <span class='chapter-title'>Workflow: Visium HD (segmented)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-seg.html#exploratory",
    "href": "pages/seq-workflow-visium-hd-seg.html#exploratory",
    "title": "16  Workflow: Visium HD (segmented)",
    "section": "\n16.3 Exploratory",
    "text": "16.3 Exploratory\n\n16.3.1 Cell masks\nWe can visualize such geometries using plot(st_geometry(x)) where x is the colGeometry of interest. As 63005 cells are a lot to visualize this way, we here crop() the data to filter for cells that fall within a small bounding box:\n\nCode# specify bounding box\nbox &lt;- c(\n    xmin=56e3, xmax=58e3, \n    ymin=15e3, ymax=16e3)\n# plot exemplary cell masks\ngeo &lt;- colGeometry(crop(sfe, box))\nplot(st_geometry(geo), col=rep(colors(), 2))\n\n\n\n\n\n\n\n\n16.3.2 Bin mapping\nWe can estimate cell areas based on the number of 2um bins covered by each mask, e.g., 10 bins (4um\\(^2\\) each) would correspond to an area of 40um\\(^2\\). Based on this, we can also approximate the area of each cell’s nucleus using the in_nucleus flag provided in the bin-to-cell mapping information.\n\nCode# get cell areas = 4x number of 2um bins\nsfe$um2 &lt;- 4*sapply(sfe$map, nrow)\n# get fraction of 2um bins that are nuclear\nsfe$nuc &lt;- sapply(sfe$map, \\(.) mean(.$in_nucleus))\n# get nucleus areas = cell area x nuclear fraction\nsfe$nuc_um2 &lt;- sfe$um2*sfe$nuc\n\n\nWe can also investigate the number of different cells that are contained in 8um and 16um bins, respectively:\n\nCodenames(bin) &lt;- bin &lt;- c(\"square_008um\", \"square_016um\")\nncs &lt;- lapply(bin, \\(um) {\n    ns &lt;- lapply(spe$map, \\(df) unique(df[[um]]))\n    as.vector(table(unlist(ns)))\n})\nsapply(ncs, summary)\n\n##          square_008um square_016um\n##  Min.        1.000000     1.000000\n##  1st Qu.     1.000000     3.000000\n##  Median      2.000000     4.000000\n##  Mean        2.257041     4.513308\n##  3rd Qu.     3.000000     6.000000\n##  Max.        8.000000    17.000000\n\n\nHere, we can observe that 8/16um bins map to a median of 2/4 cells, only 25% of bins map to more than 3/6 cells, and at most 8/17 cells are mapped to any bin.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>16</span>  <span class='chapter-title'>Workflow: Visium HD (segmented)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-seg.html#quality-control",
    "href": "pages/seq-workflow-visium-hd-seg.html#quality-control",
    "title": "16  Workflow: Visium HD (segmented)",
    "section": "\n16.4 Quality control",
    "text": "16.4 Quality control\n\n16.4.1 Non-spatial\nWe can caluclate standard cell-level quality control metrics using scuttle’s addPerCellQCMetrics() function, specifying mitochondrial features as subsets of particular interest.\n\nCodesub &lt;- list(mt=grep(\"^MT-\", rownames(sfe)))\nsfe &lt;- addPerCellQCMetrics(sfe, subsets=sub)\nsfe$log_sum &lt;- log1p(sfe$sum)\nhead(colData(sfe)[c(\n    \"um2\", \"nuc_um2\", \"nuc\",\n    \"sum\", \"subsets_mt_percent\")])\n\n##  DataFrame with 6 rows and 5 columns\n##                           um2   nuc_um2       nuc       sum\n##                     &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt;\n##  cellid_000028786-1        52        16  0.307692       302\n##  cellid_000028793-1       152        28  0.184211       290\n##  cellid_000028794-1        76        28  0.368421       828\n##  cellid_000028795-1       156        40  0.256410      1121\n##  cellid_000028796-1        60        36  0.600000      1437\n##  cellid_000028799-1        96        20  0.208333       488\n##                     subsets_mt_percent\n##                              &lt;numeric&gt;\n##  cellid_000028786-1            2.31788\n##  cellid_000028793-1            4.48276\n##  cellid_000028794-1            3.86473\n##  cellid_000028795-1            4.28189\n##  cellid_000028796-1            7.23730\n##  cellid_000028799-1            2.04918\n\n\n\nCodeplotSpatialFeature(sfe[, sfe$roi], \n    colGeometryName=\"cellseg\", \n    features=\"log_sum\") +\n    ggtitle(\"log-library size\") +\nplotSpatialFeature(sfe[, sfe$roi], \n    colGeometryName=\"cellseg\", \n    features=\"subsets_mt_percent\") +\n    ggtitle(\"% mitochondrial\") +\nplot_layout(nrow=1) &\n    theme(plot.title=element_text(hjust=0.5)) &\n    scale_fill_gradientn(NULL, colors=pals::jet())\n\n\n\n\n\n\n\n\n16.4.2 Spatially-aware\nSpotsweeper (Totty, Hicks, and Guo 2025) determines outliers based on low log-library size, few uniquely detected features, or a high mitochondrial fraction compared to their surrounding neighborhood, which we recommend (see Chapter 10).\n\nCode# determine spatial outliers for different metrics\nqc &lt;- c(\"sum\", \"detected\", \"subsets_mt_percent\")\nfor (. in qc) {\n    sfe &lt;- localOutliers(sfe, \n        workers=4, metric=., \n        log=TRUE, direction=\"lower\")\n}\n# get cells x flags matrix\ncd &lt;- colData(sfe)\nol &lt;- grep(\"outliers$\", names(cd))\nol &lt;- as.matrix(cd[ol])\n# percentage of cells exluded for each \nround(100*colMeans(ol), 2)\n\n##                 sum_outliers           detected_outliers \n##                         0.15                        0.17 \n##  subsets_mt_percent_outliers \n##                         0.11\n\nCode# number of cells kept/removed overall\ntable(sfe$ex &lt;- rowAnys(ol))\n\n##  \n##  FALSE  TRUE \n##  62805   200\n\n\nWe can visualize local outliers identified by SpotSweeper spatially. However, these are difficult to see, as only small cells were flagged.\n\nCodeplotCoords(sfe[, order(sfe$ex)], \n    annotate=\"ex\", point_size=0.2) +\n    theme(legend.key.size=ggplot2::unit(0, \"pt\")) +\n    scale_color_manual(values=c(\"grey90\", \"red\")) +\n    guides(col=guide_legend(override.aes=list(size=2)))\n\n\n\n\n\n\n\n\nCode# apply filtering\nsfe &lt;- sfe[, !sfe$ex]",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>16</span>  <span class='chapter-title'>Workflow: Visium HD (segmented)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-seg.html#annotation",
    "href": "pages/seq-workflow-visium-hd-seg.html#annotation",
    "title": "16  Workflow: Visium HD (segmented)",
    "section": "\n16.5 Annotation",
    "text": "16.5 Annotation\nThis Visium HD dataset provides matched scRNA-seq for the same tissue, which avoids tissue and batch effects that often complicate label transfer. colData slot Level1 contains broad, interpretable annotations that are well suited for label-transfer, deconvolution, and downstream interpretation. We will use these to map likely cell identities onto our Visium HD cells.\n\n\n\n\n\n\nNoteusing deconvolution instead\n\n\n\n\n\nWe here use a single-cell label transfer approach to annotade cells. However, although each observation is intended to represent a single cell, there are still cases where this is not the case (e.g., as a result of partial volume effects at boundaries, segmentation errors, tightly packed regions, or local diffusion of transcripts.\nOnce could hence deconvolute cells instead (see Chapter 12), for example, using spacexr’s RCTD (Cable et al. 2022) in doublet mode to flag these cases and provide a principled estimate of the most likely composition. In practice, we expect most units to be classified as singlets, with a minority of doublets that warrant closer inspection or additional filtering.\n\n\n\n\nCode# retrieve single-cell reference from OSF repo\nid &lt;- \"Chromium_HumanColon_Oliveira\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n\n# read into 'SingleCellExperiment'\nfs &lt;- list.files(td, full.names=TRUE)\nh5 &lt;- grep(\"h5$\", fs, value=TRUE)\nsce &lt;- read10xCounts(h5, col.names=TRUE)\n\n# add cell metadata\ncsv &lt;- grep(\"csv$\", fs, value=TRUE)\ncd &lt;- read.csv(csv, row.names=1)\ncolData(sce)[names(cd)] &lt;- cd[colnames(sce), ]\n\n# use gene symbols as feature names\nrownames(sce) &lt;- make.unique(rowData(sce)$Symbol)\n\n# exclude cells deemed to be of low-quality\nsce &lt;- sce[, sce$QCFilter == \"Keep\"]\n\n# replace problematic characters\ntable(sce$Level1 &lt;- gsub(\"\\\\s\", \"\\\\.\", sce$Level1))\n\n##  \n##                B.cells           Endothelial            Fibroblast \n##                  33611                  7969                 28653 \n##  Intestinal.Epithelial               Myeloid              Neuronal \n##                  22763                 25105                  4199 \n##          Smooth.Muscle               T.cells                 Tumor \n##                  43308                 29272                 65626\n\n\nFor the purpose of this demo, we downsample to at most 1,000 cells per reference class. This preserves diversity within each class while keeping memory and runtime manageable.\n\nCode# (this is done only to keep runtime/memory low)\nidx &lt;- split(seq_len(ncol(sce)), sce$Level1)\nidx &lt;- lapply(idx, \\(.) sample(., min(length(.), 1e3)))\nncol(.sce &lt;- sce[, unlist(idx)])\n\n##  [1] 9000\n\n\nWe next run BiocStyle::Biocpkg(\"SingleR\") using Level1 (low-resolution) annotations and with argument aggr.ref=TRUE, such that reference profiles will be aggregated (per cluster) prior to annotation, and every cell will be assigned the label of the best-fitting pseudo-bulk scRNA-seq reference profile.\n\nCode# log-library size normalization\nsfe &lt;- logNormCounts(sfe)\n.sce &lt;- logNormCounts(.sce)\n# perform label transfer at the Visium HD cell-level,\n# using pseudo-bulk Chromium profiles as reference\nres &lt;- SingleR(test=sfe, ref=.sce, labels=.sce$Level1, aggr.ref=TRUE)\n\n##  Detected a SingleCellExperiment as the reference dataset, consider setting\n##  'de.method = \"t\"' or \"wilcox\" in trainSingleR(). If you know better, this hint\n##  can be disabled with 'hint.sce=FALSE'.\n\nCodesfe$Level1 &lt;- factor(res$pruned.labels)\n\n\nSimplifying further, we can group cells into different compartments, namely, (malignant) tumor, immune, epithelial and stromal cells; we’ll see below that visualizing cells in this way nicely captures the general tissue structure.\n\nCodelab &lt;- list(\n    tum=c(\"Tumor\"),\n    epi=c(\"Intestinal.Epithelial\"),\n    imm=c(\"B.cells\", \"T.cells\", \"Myeloid\"),\n    str=c(\"Endothelial\", \"Fibroblast\", \"Smooth.Muscle\"))\nidx &lt;- match(sfe$Level1, unlist(lab))\nlab &lt;- rep.int(names(lab), sapply(lab, length))\ntable(sfe$Level0 &lt;- factor(lab[idx]))\n\n##  \n##    epi   imm   str   tum \n##   6915 11950 16120 27711\n\n\nWe can visualize low-resolution and compartment-level annotations over our ROI.\n\nCodepal_lv1 &lt;- unname(pals::trubetskoy())\npal_lv0 &lt;- c(\"gold\", \"turquoise\", \"deeppink\", \"navy\")\nplotSpatialFeature(sfe[, sfe$roi], \n    features=\"Level1\", colGeometryName=\"cellseg\") + \n    scale_fill_manual(values=pal_lv1) +\nplotSpatialFeature(sfe[, sfe$roi], \n    features=\"Level0\", colGeometryName=\"cellseg\") + \n    scale_fill_manual(values=pal_lv0) +\nplot_layout(nrow=1) &\n    theme(legend.key.size=ggplot2::unit(.5, \"lines\"))\n\n\n\n\n\n\n\nFor whole-section visualization, we do not render segmentation boundaries but only cell centroids.\n\nCodeplotCoords(sfe, \n    annotate=\"Level1\", point_size=0.1) +\n    scale_color_manual(values=pal_lv1) +\nplotCoords(sfe, \n    annotate=\"Level0\", point_size=0.1) +\n    scale_color_manual(values=pal_lv0) +\nplot_layout() &\n    theme(legend.key.size=ggplot2::unit(0, \"pt\"))",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>16</span>  <span class='chapter-title'>Workflow: Visium HD (segmented)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-seg.html#downstream",
    "href": "pages/seq-workflow-visium-hd-seg.html#downstream",
    "title": "16  Workflow: Visium HD (segmented)",
    "section": "\n16.6 Downstream",
    "text": "16.6 Downstream\nHaving annoted our cells, we can proceed with various downstream analyses. Compared to analysis at the bin-level, cell-level Visium HD data is similar to data from imaging-based platforms, but with full-transcriptome coverage. In princple, most analyses are thus transferable.\nWe refer readers to the chapters designed to specific analysis tasks, e.g., Chapter 29 on feature selection and testing, and Chapter 30 on feature-set scoring.\nInstead, we quickly inspect how cell and nucleus areas differ across compartments and subpopulations. As expected, immune cells are smallest, tumor and structural cells (epithelial and stromal cells) tend to be larger.\n\nCode# wrangling\ndf &lt;- data.frame(colData(sfe))\ndf &lt;- filter(df, !is.na(Level0))\nfd &lt;- pivot_longer(df, ends_with(\"um2\"))\nfd$name &lt;- factor(fd$name, labels=c(\"nuc.\", \"cell\"))\nws &lt;- c(nlevels(df$Level0), nlevels(df$Level1))\n# plotting\nggplot(fd, aes(reorder(Level0, value), value, col=name)) +\nggplot(fd, aes(reorder(Level1, value), value, col=name)) + \nplot_layout(nrow=1, widths=ws, guides=\"collect\") &\n    geom_boxplot(key_glyph=\"point\", outlier.size=0) &\n    labs(col=\"area (um2)\") & \n    theme_bw() & theme(\n        axis.title=element_blank(),\n        legend.key.size=ggplot2::unit(0, \"pt\"),\n        axis.text.x=element_text(angle=45, hjust=1))",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>16</span>  <span class='chapter-title'>Workflow: Visium HD (segmented)</span>"
    ]
  },
  {
    "objectID": "pages/seq-workflow-visium-hd-seg.html#appendix",
    "href": "pages/seq-workflow-visium-hd-seg.html#appendix",
    "title": "16  Workflow: Visium HD (segmented)",
    "section": "\n16.7 Appendix",
    "text": "16.7 Appendix\nThis workflow is partly based on a workshop that has been taught at the European Bioconductor Conference 2025 (EuroBioC2025). Corresponding workshop material can be found here.\nReferences\n\n\n\n\nCable, Dylan M., Evan Murray, Luli S. Zou, Aleksandrina Goeva, Evan Z. Macosko, Fei Chen, and Rafael A. Irizarry. 2022. “Robust Decomposition of Cell Type Mixtures in Spatial Transcriptomics.” Nature Biotechnology 40: 517–26. https://doi.org/10.1038/s41587-021-00830-w.\n\n\nMoses, Lambda, Pétur Helgi Einarsson, Kayla Jackson, Laura Luebbert, A. Sina Booeshaghi, Sindri Antonsson, Nicolas Bray, Páll Melsted, and Lior Pachter. 2023. “Voyager: Exploratory Single-Cell Genomics Data Analysis with Geospatial Statistics.” bioRxiv. https://doi.org/10.1101/2023.07.20.549945.\n\n\nRighelli, Dario, Lukas M Weber, Helena L Crowell, Brenda Pardo, Leonardo Collado-Torres, Shila Ghazanfar, Aaron T L Lun, Stephanie C Hicks, and Davide Risso. 2022. “SpatialExperiment: Infrastructure for Spatially-Resolved Transcriptomics Data in r Using Bioconductor.” Bioinformatics 38: 3128–31. https://doi.org/10.1093/bioinformatics/btac299.\n\n\nTotty, Michael, Stephanie C. Hicks, and Boyi Guo. 2025. “SpotSweeper: Spatially Aware Quality Control for Spatial Transcriptomics.” Nature Methods 22: 1520–30. https://doi.org/10.1038/s41592-025-02713-3.",
    "crumbs": [
      "Sequencing-based platforms",
      "<span class='chapter-number'>16</span>  <span class='chapter-title'>Workflow: Visium HD (segmented)</span>"
    ]
  },
  {
    "objectID": "pages/img-introduction.html",
    "href": "pages/img-introduction.html",
    "title": "17  Introduction",
    "section": "",
    "text": "17.1 Introduction to imaging-based ST\nImaging-based ST assays have gone from resolving 100s to 1000s of features. Their commercialization by Vizgen, NanoString, and 10x Genomics has made these data increasingly popular. In general, imaging-based ST platforms rely on multiplexed error-robust fluorescence in situ hybridization (FISH), as originally proposed by Chen et al. (2015). Briefly, targets are preassigned a barcode of (multi-color) ‘on’ and (no-color) ‘off’ bits, whereas barcodes are optimized to differ from each other by some bits as to minimize readout errors. After iterative imaging-bleaching, individual reporter binding events are identified computationally (spot calling). Aligning spots along the image z-stack then allows to identify individual targets based on a predefined barcoding scheme.\nCommercially available panels can typically include three types of barcodes:",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>17</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/img-introduction.html#introduction-to-imaging-based-st",
    "href": "pages/img-introduction.html#introduction-to-imaging-based-st",
    "title": "17  Introduction",
    "section": "",
    "text": "Notehigh-plex barcoding\n\n\n\n\n\n1,000-plex CosMx, for example, employs 64-bit barcodes (4 immunofluorescent reports over 16 cycles of imaging-bleaching) with a Hamming weight and distance of 4 (i.e., every target is ‘on’ in 4 rounds and ‘off’ in 12 rounds; each barcode differs from all others by 4 bits as to minimize RNA decoding errors). Combinatorially, a 64-bit barcoding scheme is sufficient to encode a much larger number of targets, namely, ~20,000 protein-coding genes.\n\n\n\n\n\n\nRNA targets determine the ‘plexity’ of the panel.\n\nNegative probes serve to quantify non-specific binding.\n\nSystem controls serve to quantify spot calling errors.\n\n\n\n\n\n\n\nNotenon-RNA targets\n\n\n\n\n\nModeled after synthetic sequences from the External RNA Controls Consortium (ERCC), negative probes contain hybridization regions that are not complementary to the genome or transcriptome of the organism under study; their detection thus corresponds to non-specific ISH probe hybridization events (e.g., in ‘sticky’ regions of the tissue).\nDepending on the barcoding scheme (number of bits, Hamming weight/distance), a number of barcodes will be left unoccupied; these system controls (also referred to as blank or false codes) serve to quantify misidentification of reporter readout.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>17</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/img-introduction.html#platforms",
    "href": "pages/img-introduction.html#platforms",
    "title": "17  Introduction",
    "section": "\n17.2 Platforms",
    "text": "17.2 Platforms\n\n17.2.1 Xenium (10x Genomics)\nThe 10x Genomics Xenium platform employs rolling circle amplification (RCA) to boost fluorescent signals from reporter-binding events, thereby improving overall spot calling sensitivity.\n\nXenium gives an imageable area of 12mm x 24 mm, although slightly less to avoid fiducial markers. Several pre-designed panels are available, including a “Pan Tissue and Pathways” for both mouse and human, which both include over 5000 genes and there is a possibility to custom design an additional 100 genes. More focused panels are available for human brain, lung, colon and breast tissue as well as cancer immunological subpopulations; for mouse, focused brain and multi-tissue panels are available.\n\n17.2.2 CosMx (NanoString)\nUnlike Xenium, CosMx (He et al. 2022) does not rely on RCA. As a result, CosMx tends to be less sensitive than Xenium (albeit higher-plex at present). Furthermore, segmentation is performed separately for each FOV (without stitching). This results in a variety of technical artefacts, such as fractured and possibly duplicated cells near FOV borders.\n\nThe NanoString CosMx platform gives an imageable area of 15x20 mm and allows up to 6000 RNAs (and now up to 68 proteins) to be assayed in a spatial context. Their human “discovery” 6000 gene panel is currently being expanded to full-transcriptome (&gt;18,000 targets), which should become available in 2025. Other more targeted panels are available, including a 1000-gene “Universal Cell Characterization”, a focused 100-gene immuno-oncology panel or a 1000-gene mouse neuroscience panel. In addition, custom panels are available in either an add-on (up to 50 genes) or standalone (up to 300 genes) format. (Antibody-based) Protein panels are currently available for human immuno-oncology and mouse neuroscience contexts.\n\n17.2.3 MERSCOPE (Vizgen)\nThe Vizgen MERSCOPE platform, among the fluorescence-based targeted spatial transcriptomics platforms, allows the highest resolution (≤20 nm), while also providing a high capacity for multiplexing, with (customizable) panels containing up to 1000 genes, and an imageable area of 1 cm2. MERSCOPE was recently shown to be amongst the most sensitive in a recent head-to-head comparison (Hartman and Satija 2024) using mouse brain tissue.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>17</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/img-introduction.html#appendix",
    "href": "pages/img-introduction.html#appendix",
    "title": "17  Introduction",
    "section": "\n17.3 Appendix",
    "text": "17.3 Appendix\nResources\n\nAvailable datasets\n\nXenium (10x Genomics)\nCosMx (NanoString)\nMERSCOPE (Vizgen)\n\n\nPlatform-specific methods\n\nCosMx analysis\n\n\nReferences\n\n\n\n\nChen, Kok Hao, Alistair N. Boettiger, Jeffrey R. Moffitt, Siyuan Wang, and Xiaowei Zhuang. 2015. “Spatially Resolved, Highly Multiplexed RNA Profiling in Single Cells.” Science 348. https://doi.org/10.1126/science.aaa6090.\n\n\nHartman, Austin, and Rahul Satija. 2024. “Comparative Analysis of Multiplexed in Situ Gene Expression Profiling Technologies.” eLife. https://doi.org/10.7554/eLife.96949.1.\n\n\nHe, Shanshan, Ruchir Bhatt, Carl Brown, Emily A. Brown, Derek L. Buhr, Kan Chantranuvatana, Patrick Danaher, et al. 2022. “High-Plex Imaging of RNA and Proteins at Subcellular Resolution in Fixed Tissue by Spatial Molecular Imaging.” Nature Biotechnology 40: 1794–1806. https://doi.org/10.1038/s41587-022-01483-z.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>17</span>  <span class='chapter-title'>Introduction</span>"
    ]
  },
  {
    "objectID": "pages/img-segmentation.html",
    "href": "pages/img-segmentation.html",
    "title": "18  Segmentation",
    "section": "",
    "text": "18.1 Introduction\nStandard imaging-based ST data analysis pipelines rely on microscopy stains to estimate boundaries (e.g., nucleus or cellular membrane), and assign molecular readouts to their cell of origin. Such readouts can be discrete points (e.g., molecule locations) or continuous distributions (e.g., fluorescent intensities); for the latter, a decision with regard to summarization needs to be made (e.g., mean or median). The resulting measurement matrix of features (e.g., genes or proteins) \\(\\times\\) observations (e.g., cells or spots) forms the basis for numerous analysis tasks.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>18</span>  <span class='chapter-title'>Segmentation</span>"
    ]
  },
  {
    "objectID": "pages/img-segmentation.html#common-algorithms",
    "href": "pages/img-segmentation.html#common-algorithms",
    "title": "18  Segmentation",
    "section": "\n18.2 Common algorithms",
    "text": "18.2 Common algorithms\nImage-based. cellpose (Stringer et al. 2021) is a deep learning-based method that utilizes a flow-based representation of cell morphology to identify and delineate cells across diverse microscopy images. It has been pre-trained on a large dataset of various cell types, allowing it to generalize well without requiring extensive parameter tuning or retraining. With a user-friendly interface, the ability to handle irregular and overlapping cells, and support for both automatic and user-assisted segmentation, Cellpose is a versatile tool widely used in biomedical imaging and quantitative cell analysis.\nHybrid. Baysor (Petukhov et al. 2022) has a CLI, and is also available as a Julia package. It takes a probabilistic approach that is based on Markov random fields (MRFs) and uses expectation-maximization (EM) for optimization. A variety of information – e.g., fluorescent stains (e.g., nuclei staining via DAPI), expression profiles from scRNA-seq reference data etc. – can be incorporated as priors. Yet, Baysor can perform segmentation using transcript information (i.e., location and identity) alone; auxiliary data has been shown to improve performance, but is optional.\nTranscript-based. proseg (Jones et al. 2025) is available as a CLI and Julia package. It presents fully unsupervised probabilistic approach, based on a cellular Potts model (CPM) simulation framework, where cell morphologies are initialized using a nuclear stain, then expanded and altered at random until they best explain the observed spatial distribution of transcripts.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>18</span>  <span class='chapter-title'>Segmentation</span>"
    ]
  },
  {
    "objectID": "pages/img-segmentation.html#commercial-solutions",
    "href": "pages/img-segmentation.html#commercial-solutions",
    "title": "18  Segmentation",
    "section": "\n18.3 Commercial solutions",
    "text": "18.3 Commercial solutions\n10x Genomics Xenium provides a multi-modal segmentation algorithm that is based on custom deep learning models pre-trained on Xenium data across a range of tissue types and preparations (fresh frozen, FFPE). Nuclei are first segmented based on DAPI staining. For each cell, segmentation results are then obtained in one of three ways (in order of priority): (i) cell-surface marker antibodies to target epithelia (E-Cadherin) and immune cells (CD45); (ii) nuclear expansion to the interior’s edge stain (18S rRNA); and, (iii) nuclear expansion by a fixed distance (5um since v2.0, previously 15um), or until another boundary is encountered.\n\n\n\n\n\n\n\nFigure 18.1: Schematic of the stains and multi-model segmentation on the 10x Genomics Xenium platform. Source: 10x Genomics Nucleus and Cell Segmentation Algorithms",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>18</span>  <span class='chapter-title'>Segmentation</span>"
    ]
  },
  {
    "objectID": "pages/img-segmentation.html#spatial-bleeding",
    "href": "pages/img-segmentation.html#spatial-bleeding",
    "title": "18  Segmentation",
    "section": "\n18.4 Spatial bleeding",
    "text": "18.4 Spatial bleeding\nThe phenomenon of spatial bleeding has been nicely characterized by Mitchel et al. (2026):\n\nBleeding is most frequent above/below and close to the periphery of cells, i.e., in all physical dimensions.\nBecause bleeding occurs between proximal cells, observed mixtures reflect biology (i.e., certain cell types may attract or avoid one another – in general, an especially in different spatial contexts such as healthy vs. diseased tissue regions).\nFurthermore, bleeding affects differential expression (DE), such that genes reported as up-/down-regulated may reflect compositional differences in microenvironment.\n\nEven ‘perfect’ 2D segmentation (in xy) would not eliminate these issues, as tissue sections represent slices through a three-dimensional system where cells may overlap (along z).\n\nExample: genes that are DE between fibroblasts located within stromal vs. tumor regions are dominated by markers of epithelia, which represent the malignant cell typeBy now, a few methods have been proposed to rectify segmentation boundaries and/or per-cell counts post hoc, e.g.:\n\ncellAdmix (Mitchel et al. 2026) (R) relies on scRNA-seq reference-based matrix factorization of local molecular neighborhoods to identify and correct for molecular admixtures, reassigning transcripts to their source and removing them from proximal cells where they don’t belong.\nSPLIT (Bilous et al. 2025) (R) relies on snRNA-seq reference-based deconvolution – using spacexr’s RCTD (Cable et al. 2022) – to purify mixed transcriptomic signals. Briefly, deconvolution weights and reference profiles are used to proportionally adjust gene counts, prioritizing the most likely source cell type(s) and discarding or reassigning minority transcripts likely to represent contamination.\nFastReseg (Wu, Beechem, and Danaher 2024) (R) detects and corrects segmentation errors based on transcript locations by (i) scoring cells in terms of segmentation inaccuracies, (ii) scoring transcripts within erroneous cells in terms of misassignments, and (iii) reassigning mislocated transcripts.\nsegger_dev (Heidari et al. 2025) (Python) relies on graph neural networks (GNNs), where nodes represent nuclei and transcripts, and edges connect proximal instances, thereby letting the model learn from the co-occurrence of nucleic and cytoplasmic molecules.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>18</span>  <span class='chapter-title'>Segmentation</span>"
    ]
  },
  {
    "objectID": "pages/img-segmentation.html#segmentation-free",
    "href": "pages/img-segmentation.html#segmentation-free",
    "title": "18  Segmentation",
    "section": "\n18.5 Segmentation-free",
    "text": "18.5 Segmentation-free\nssam (Park et al. 2021) first estimates mRNA intensity distributions via Kernel Density Estimation (KDE) using Gaussian kernels. These are resolved to pixels, and stacked to create a gene expression vector field.  The resulting representation may be used to cluster and annotate pixels, identify tissue domains (i.e., regions of homogeneous ‘cell’ type composition).In other words, RNA target locations across the tissue are converted into a multi-channel image where each channel corresponds to one feature.\n\n\n\n\n\n\n\nFigure 18.2: Schematic of the SSAM framework. Source: Figure 1 of Park et al. 2021",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>18</span>  <span class='chapter-title'>Segmentation</span>"
    ]
  },
  {
    "objectID": "pages/img-segmentation.html#appendix",
    "href": "pages/img-segmentation.html#appendix",
    "title": "18  Segmentation",
    "section": "\n18.6 Appendix",
    "text": "18.6 Appendix\nReferences\n\n\n\n\nBilous, Mariia, Daria Buszta, Jonathan Bac, Senbai Kang, Yixing Estella Dong, Stephanie Tissot, Sylvie Andre, et al. 2025. “From transcripts to cells: Dissecting sensitivity, signal contamination, and specificity in Xenium spatial transcriptomics.” bioRxiv. https://doi.org/10.1101/2025.04.23.649965.\n\n\nCable, Dylan M., Evan Murray, Luli S. Zou, Aleksandrina Goeva, Evan Z. Macosko, Fei Chen, and Rafael A. Irizarry. 2022. “Robust Decomposition of Cell Type Mixtures in Spatial Transcriptomics.” Nature Biotechnology 40: 517–26. https://doi.org/10.1038/s41587-021-00830-w.\n\n\nHeidari, Elyas, Andrew Moorman, Dániel Unyi, Nikhita Pasnuri, Gleb Rukhovich, Domenico Calafato, Anna Mathioudaki, et al. 2025. “Segger: Fast and Accurate Cell Segmentation of Imaging-Based Spatial Transcriptomics Data.” bioRxiv. https://doi.org/10.1101/2025.03.14.643160.\n\n\nJones, Daniel C., Anna E. Elz, Azadeh Hadadianpour, Heeju Ryu, David R. Glass, and Evan W. Newell. 2025. “Cell Simulation as Cell Segmentation.” Nature Methods 22: 1331–42. https://doi.org/10.1038/s41592-025-02697-0.\n\n\nMitchel, Jonathan, Teng Gao, Viktor Petukhov, Eli Cole, and Peter V Kharchenko. 2026. “Impact and correction of segmentation errors in spatial transcriptomics.” Nature Genetics 58 (2): 434–44. https://doi.org/10.1038/s41588-025-02497-4.\n\n\nPark, Jeongbin, Wonyl Choi, Sebastian Tiesmeyer, Brian Long, Lars E. Borm, Emma Garren, Thuc Nghi Nguyen, et al. 2021. “Cell Segmentation-Free Inference of Cell Types from in Situ Transcriptomics Data.” Nature Communications 12 (3545). https://doi.org/10.1038/s41467-021-23807-4.\n\n\nPetukhov, Viktor, Rosalind J. Xu, Ruslan A. Soldatov, Paolo Cadinu, Konstantin Khodosevich, Jeffrey R. Moffitt, and Peter V. Kharchenko. 2022. “Cell Segmentation in Imaging-Based Spatial Transcriptomics.” Nature Biotechnology 40: 345–54. https://doi.org/10.1038/s41587-021-01044-w.\n\n\nStringer, Carsen, Tim Wang, Michalis Michaelos, and Marius Pachitariu. 2021. “Cellpose: A Generalist Algorithm for Cellular Segmentation.” Nature Methods 18: 100–106. https://doi.org/10.1038/s41592-020-01018-x.\n\n\nWu, Lidan, Joseph M. Beechem, and Patrick Danaher. 2024. “FastReseg: Using Transcript Locations to Refine Image-Based Cell Segmentation Results in Spatial Transcriptomics.” bioRxiv. https://doi.org/10.1101/2024.12.05.627051.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>18</span>  <span class='chapter-title'>Segmentation</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html",
    "href": "pages/img-quality-control.html",
    "title": "19  Quality control",
    "section": "",
    "text": "19.1 Preamble",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#preamble",
    "href": "pages/img-quality-control.html#preamble",
    "title": "19  Quality control",
    "section": "",
    "text": "19.1.1 Introduction\nThe analyses demonstrated here will use 313-plex Xenium data (10x Genomics) of a human breast cancer biopsy section (Janesick et al. 2023), and 1k-plex CosMx data (Bruker) of a mouse brain section. These datasets can be accessed through Bioconductor’s ExperimentHub packages: STexampleData and OSTA.data.\n\n\nThe CosMx dataset includes additional information, such as fluorescent stains, cell boundaries, field of view placement, etc. that allow us to demonstrate more intricate quality control metrics using the SpaceTroper package.\nThroughout this chapter, we will switch between both Xenium (xen object) and CosMx (cos objext) datasets to showcase quality control (QC) metrics that are standard for scRNA-seq data (using scuttle), and ones that are more specific to some imaging-based ST data types (using SpaceTrooper (Banzi et al. 2025)). Lastly, we will save the post-QC Xenium dataset for use in later chapters.\n\n19.1.2 Dependencies\n\nCodelibrary(arrow)\nlibrary(dplyr)\nlibrary(tidyr)\nlibrary(scater)\nlibrary(ggplot2)\nlibrary(ggspavis)\nlibrary(patchwork)\nlibrary(OSTA.data)\nlibrary(SpaceTrooper)\nlibrary(STexampleData)\nlibrary(SpatialExperiment)\nlibrary(SpatialExperimentIO)",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#importing-data",
    "href": "pages/img-quality-control.html#importing-data",
    "title": "19  Quality control",
    "section": "\n19.2 Importing data",
    "text": "19.2 Importing data\nSpatialExperimentIO provides functions to import CosMx (Bruker), Xenium (10x Genomics), and MERSCOPE (Vizgen) datasets into SingleCell/SpatialExperiment objects, starting from the outputs provided by the three providers. 10x Genomics-specific readers are provided by TENxIO, VisiumIO, and XeniumIO; data from most commercial platforms can also be read using SpatialFeatureExperiment functions.\n\n\nSee Chapter 5 for details on data importing and representation.\n\n19.2.1 From Xenium\nWe load the Xenium dataset from STexampleData:\n\nCode(xen &lt;- Janesick_breastCancer_Xenium_rep1())\n# required for visuals\nxen$in_tissue &lt;- TRUE \nxen$sample_id &lt;- \"Xenium\"\n\n##  class: SpatialExperiment \n##  dim: 313 167780 \n##  metadata(0):\n##  assays(1): counts\n##  rownames(313): ABCC11 ACTA2 ... ZEB2 ZNF562\n##  rowData names(3): ID Symbol Type\n##  colnames(167780): 1 2 ... 167779 167780\n##  colData names(8): cell_id transcript_counts ... nucleus_area\n##    sample_id\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : x_centroid y_centroid\n##  imgData names(0):\n\n\n\n19.2.2 From CosMx\nTo load the CosMx data into a SpatialExperiment object, we use SpatialExperimentIO’s readCosmxSXE function. To not confuse RNA target counts with counts stemming from either negative probes and system controls, the latter are moved into altExps by default. We also add additional colData and metadata slots that are expected by ggspavis (for visualization) and SpaceTrooper (for analysis). In particular, SpaceTrooper’s updateCosmxSPE function takes care of standardizing the object’s colData for use with SpaceTrooper’s functions.\n\n\nSee Chapter 17 for details on the three main types of barcodes: RNA targets, negative probes, and system controls.\n\nCode# retrieve CosMx dataset from OSF repo\nid &lt;- \"CosMx1k_MouseBrain2\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\ncos &lt;- readCosmxSXE(td, addTx=FALSE)\n# prepare data for 'SpaceTrooper' \ncos &lt;- updateCosmxSPE(cos, td, sampleName=\"CosMx\")\ncos &lt;- readAndAddPolygonsToSPE(cos)\ncos$in_tissue &lt;- TRUE\ncos\n\n##  class: SpatialExperiment \n##  dim: 950 48556 \n##  metadata(4): fov_positions fov_dim polygons technology\n##  assays(1): counts\n##  rownames(950): Chrna4 Slc6a1 ... Cck Aqp4\n##  rowData names(0):\n##  colnames(48556): f1_c1 f1_c10 ... f99_c98 f99_c99\n##  colData names(22): fov cellID ... polygons in_tissue\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(1): NegPrb\n##  spatialCoords names(2) : CenterX_global_px CenterY_global_px\n##  imgData names(1): sample_id",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#visualization",
    "href": "pages/img-quality-control.html#visualization",
    "title": "19  Quality control",
    "section": "\n19.3 Visualization",
    "text": "19.3 Visualization\nImaging-based ST data relies on imaging a 2D tissue section. Hence, an advantage compared to scRNA-seq is that we can readily visualize a 2D map of the cells and directly plot cell features onto the map. The easiest way to visualize the data is by representing the cells as centroids. This is useful to have a global bird’s-eye-view of the tissue.\n\nCode# spatial plots for datasets acquired through\n# Xenium & CosMx (points = cell centroids)\nplotCoords(xen, point_size=0, y_reverse = FALSE) + ggtitle(xen$sample_id) +\nplotCoords(cos, point_size=0, y_reverse = FALSE) + ggtitle(cos$sample_id)",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#general-qc-metrics",
    "href": "pages/img-quality-control.html#general-qc-metrics",
    "title": "19  Quality control",
    "section": "\n19.4 General QC metrics",
    "text": "19.4 General QC metrics\nSimilarly to scRNA-seq, quality control (QC) is an important step to remove low-quality cells and highlights specific biases in the data at the sample, field of view (FOV), or slide area level. Unlike scRNA-seq and sequencing-based ST, however, most imaging-based ST platforms do not measure the transcriptome, nor an “unbiased” sample of it, but rely on the design of gene panels.\nDepending on the platform and the application, such gene panels may be pan-tissue or targeting specific tissues or cell types. Moreover, they vary from a few hundreds (e.g., 313 in the first Xenium panel) to several thousands (e.g., the 5k Xenium panel or the 6k and 18k CosMx panels). Hence, unlike in sequencing-based platforms, we may not have enough ribosomal or mitochondrial transcripts to use for computing QC metrics. However, imaging-based platforms provide a set of negative probes that can be used to check for aspecific RNA captures.\nFinally, imaging-based platforms include, in addition to transcripts data, morphology information (such as area and eccentricity of segmented cells) and information from antibody stains (such as those targeting cell nuclei or surface; see above).\n\n19.4.1 scRNA-seq\nWe start out by computing QC metrics that are standard for scRNA-seq data, using the scuttle package. Here, use.altexps=TRUE allows quantification across alternative features, such as negative probes, in addition to RNA targets, which are contain in the primary object’s assay.\n\n\nSee also Chapter 10.\n\nCode# compute standard scRNA-seq QC metrics for the Xenium dataset (e.g.,\n# total counts & unique features, for RNA targets & negative probes)\nxen &lt;- addPerCellQCMetrics(xen, use.altexps=TRUE)\n\n\n\n19.4.2 IF staining\nCosMx outputs, for instance, typically include the min/max/mean intensities of a set of immunofluorescence (IF) markers for, e.g., nuclei and cell surface (used for segmentation), as well as additional markers (experiment-dependent). Here, we show the distribution of mean IF intensities across the CosMx sample. Values are arcsinh-transformed with a cofactor of 10 for visual purposes\n\nCodeflu &lt;- grepv(\"^Mean\", names(colData(cos)))\nlapply(flu, \\(.) {\n    cos[[.]] &lt;- asinh(cos[[.]]/10)\n    plotCoords(cos, annotate=., point_size=0, y_reverse = FALSE)\n}) |&gt;\n    wrap_plots(nrow=1) &\n    theme(\n        legend.position=\"bottom\", \n        legend.key.height=unit(0.4, \"lines\")) &\n    scale_color_gradientn(colors=pals::jet())\n\n\n\n\n\n\n\n\n19.4.3 Morphology\nSpaceTrooper’s spatialPerCellQC function can be used to compute a set of metrics that are particular to imaging-based ST data; examples listed below. In addition, the function incorporates an internal call to perCellQCMetrics from the scuttle package, to compute some standard scRNA-seq QC metrics on an altExp; here, we specify using negatives probes.\n\n\nNote that metrics also include each cell’s distance from horizontal/vertical and nearest FOV borders: dist_border_x/y and dist_border, respectively; we will get back to this in Section 19.5.\n\nCode# compute 'SpaceTrooper' QC metrics\ncos &lt;- spatialPerCellQC(cos, use_altexps=\"NegPrb\")\n# the following cell metadata are newly available:\n\n##   [1] \"sum\"                     \"detected\"               \n##   [3] \"altexps_NegPrb_sum\"      \"altexps_NegPrb_detected\"\n##   [5] \"altexps_NegPrb_percent\"  \"total\"                  \n##   [7] \"control_sum\"             \"control_detected\"       \n##   [9] \"target_sum\"              \"target_detected\"        \n##  [11] \"CenterX_global_px\"       \"CenterY_global_px\"      \n##  [13] \"ctrl_total_ratio\"        \"log2Ctrl_total_ratio\"   \n##  [15] \"CenterX_global_um\"       \"CenterY_global_um\"      \n##  [17] \"Area_um\"                 \"dist_border_x\"          \n##  [19] \"dist_border_y\"           \"dist_border\"            \n##  [21] \"log2AspectRatio\"         \"SignalDensity\"          \n##  [23] \"log2SignalDensity\"\n\n\nIn particular, the following metrics have been added to the colData:\n\n\nArea_um: area in microns\n\nSignalDensity: count density = number of transcripts per area\n\nlog2AspectRatio: log2 of the aspect ratio (x-/y-axis) of each cell\n\nctrl_total_ratio: proportion of negative probe counts over total counts\n\n19.4.4 Counts & area\nImaging-based ST data relies on imaging a 2D tissue section. Cells thus represent a slice through a 3D system, and we expect a tight relationship between a cell’s counts and its area. When we inspect total counts and cell areas as separate (univariate) distributions, both appear approximately log-normal distributed.\n\n\nNote that there are many more counts for the CosMx data, mostly because there are 950 features but only 313 for Xenium.\n\nCode.p &lt;- \\(df, xs) {\n    fd &lt;- pivot_longer(df, all_of(xs))\n    mu &lt;- summarise_at(group_by(fd, name), \"value\", median)\n    ggplot(fd, aes(value)) + facet_grid(~ name) + \n        geom_histogram(bins=50, linewidth=0.1, fill=\"gray\") + \n        geom_vline(data=mu, aes(xintercept=value), col=\"blue\") + \n        geom_text(\n            hjust=-0.1, size=3, col=\"blue\", \n            data=mu, aes(value, 0, label=round(value))) + \n        scale_x_continuous(NULL, trans=\"log10\") + ylab(\"# cells\") + \n        theme_minimal() + theme(panel.grid.minor=element_blank())\n}\ndf_cos &lt;- data.frame(colData(cos), spatialCoords(cos))\ndf_xen &lt;- data.frame(colData(xen), spatialCoords(xen))\np2 &lt;- .p(df_cos, c(\"Area_um\", \"total\"))\np1 &lt;- .p(df_xen, c(\"cell_area\", \"total_counts\"))\np1 + ggtitle(\"CosMx\") | p2 + ggtitle(\"Xenium\")\n\n\n\n\n\n\n\nSimilarly, we can visualize the distribution of these metrics in the tissue by plotting cell centroids colored by total counts and cell area, respectively.\n\nCodelapply(c(\"cell_area\", \"total_counts\"), \\(.) {\n    # crop very low/high values for clearer visualization\n    val &lt;- xen[[.]]\n    qs &lt;- quantile(val, c(0.01, 0.99))\n    val &lt;- ifelse(val &lt; qs[1], qs[1], ifelse(val &gt; qs[2], qs[2], val))\n    xen[[.]] &lt;- val\n    plotCoords(xen, annotate=., point_size=0, y_reverse = FALSE) +\n        theme(legend.key.width=unit(0.5, \"lines\")) +\n        scale_color_gradientn(colors=unname(pals::jet()), trans=\"log10\")\n}) |&gt; wrap_plots(nrow=1)\n\n\n\n\n\n\n\nIn a bivariate setting, we observe a positive relationship between counts and area (as expected). However, this dependency is not always linear and may exhibit a bimodal distribution.\n\nCode.p &lt;- \\(df, x, y) {\n    ggplot(df, aes(.data[[x]], .data[[y]])) + \n        geom_point(shape=16, size=0, alpha=0.1) + \n        geom_smooth(method=\"lm\", col=\"blue\") +\n        scale_x_log10() + scale_y_log10() +\n        theme_minimal() + theme(\n            aspect.ratio=1, \n            panel.grid.minor=element_blank())\n}\n.p(df_cos, \"Area_um\", \"total\") + ggtitle(\"CosMx\") +\n.p(df_xen, \"cell_area\", \"total_counts\") + ggtitle(\"Xenium\")\n\n\n\n\n\n\n\nIn some cases, a peculiar count-area distribution might be indicative of segmentation problems. Undersegmentation (i.e., when groups of cells are merged together) might lead to fewer counts than expected for a given area (e.g., when they are far apart and empty space is being segmented). An useful metric to explore this issue is the log2SignalDensity, which estimates the transcript density for each cell.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#sec-img-quality-control-cos",
    "href": "pages/img-quality-control.html#sec-img-quality-control-cos",
    "title": "19  Quality control",
    "section": "\n19.5 CosMx-specific QC",
    "text": "19.5 CosMx-specific QC\n\n19.5.1 Fields of view (FOVs)\nImaging-based ST data from CosMx are acquired through iterative imaging of predefined rectangular regions, so-called fields of view (FOV).\nUnlike Xenium and MERSCOPE, standard CosMx pipelines do not stitch FOVs, but rather treat each FOV independently. The colData of the SpatialExperiment object resulting from a CosMx data import will include the FOV of each cell, but it is sometimes tricky to understand (or remember) the relative position of each FOV within the slide.\nSpaceTrooper’s plotZoomFovsMap function provides an easy way to map FOVs within the slide, allowing to zoom in on a subset of FOVs, while visualizing the global structure of the tissue.\n\nCodeplotZoomFovsMap(cos, \n    mapPointCol=\"green\",\n    colourBy=\"Mean.DAPI\",\n    fovs=c(98:100, 113:115, 122:124))\n\n\n\n\n\n\n\nAssuming FOV placement aims to capture biologically interesting regions – regions of interest (ROIs) – we would expect every FOV to capture a decent number of cells. Issues in image registration or IF staining, however, may affect spot calling and cell segmentation, and can yield FOVs with virtually no cells. We thus advice inspecting the number of cells across FOVs:\n\nCodens &lt;- as.data.frame(\n    table(fov=cos$fov), \n    responseName=\"n_cells\")\nggplot(ns, aes(fov, n_cells)) + \n    scale_x_discrete(breaks=c(1, seq(5, max(cos$fov), 5))) +\n    scale_y_continuous(limits=c(0, 1e3), n.breaks=4) +\n    labs(x=\"field of view (FOV)\", y=\"# cells\") +\n    geom_col(fill=\"grey\", alpha=2/3) +\n    coord_cartesian(expand=FALSE) +\n    theme_bw()\n\n\n\n\n\n\n\nIt is generally also worth checking that basic QC metrics do not vary across FOVs. Of course, such effects will also be driven by differences in subpopulation composition across FOVs. However, gross differences in detection efficacy, IF staining, spot calling, segmentation, etc. often still manifest in FOV-level shifts in IF stains and/or RNA target, negative probe, system control counts. A simple spot-check is the following type of visualization, but more thorough investigation is advisable ‘in the wild’, especially so in challenging types of tissue:\n\nCodedf &lt;- data.frame(colData(cos))\nys &lt;- c(\"detected\", \"total\", \"Area_um\", \"log2SignalDensity\")\nys &lt;- c(grepv(\"Mean\", names(df)), ys)\nfd &lt;- pivot_longer(df, ys) |&gt;\n    mutate(value=case_when(\n        grepl(\"Mean\", name) ~ asinh(value),\n        grepl(\"total\", name) ~ log10(value),\n        grepl(\"^Area\", name) ~ log10(value),\n        TRUE ~ value), fov=factor(fov))\nggplot(fd, aes(fov, value, fill=fov)) + \n    facet_wrap(~name, nrow=3, scales=\"free_y\") +\n    geom_boxplot(linewidth=0.2, outlier.size=0.2) +\n    scale_x_discrete(breaks=c(1, seq(10, max(cos$fov), 10))) +\n    theme_minimal() + theme(legend.position=\"none\") +\n    labs(x=\"field of view (FOV)\", y=NULL)\n\n\n\n\n\n\n\nIn our example, DAPI stains, RNA target counts (total), and the number of uniquely detected RNA targets (detected) are fairly constant across FOVs; systematic differences seem to reflect morphological differences across FOVs. Taken together, we cannot deem any FOVs as being obviously problematic here.\n\n19.5.2 Border effects\nParticularly in CosMx, lack of FOV stitching during cell segmentation can result in fractured and possibly duplicated cells. To investigate potential artefacts related to this, we can use the distance to FOV borders calculated previously.\nWe can roughly estimate cell radii as \\(A=\\pi r^2\\) \\(\\leftrightarrow r=\\sqrt{A/\\pi}\\), and use this as a threshold on FOV border distances; i.e., we flag a cell when its centroid is closer to any border than the radius of an average circular cell.\n\nCode(r &lt;- sqrt(mean(cos$Area)/pi))\n\n##  [1] 60.55499\n\n\nNow, let us visualize total RNA counts against distance to FOV borders, setting the above estimate for radius r as a threshold on the latter; we also include rolling means to better highlight global trends:\n\nCodedf &lt;- data.frame(colData(cos))\n.p &lt;- \\(df, x, y) {\n    ggplot(df, aes(.data[[x]], .data[[y]])) +\n        geom_point(color=\"grey\", size=0) +\n        geom_smooth() + theme_minimal() +\n        geom_vline(xintercept=r, col=\"red\") +\n        geom_vline(xintercept=50, linetype=2)\n}\np1 &lt;- .p(df, \"dist_border\", \"total\") + xlim(0, 500) + ylim(0, 2000)\np2 &lt;- .p(df, \"dist_border\", \"Area_um\") + xlim(0, 500) + ylim(0, 200)\np3 &lt;- .p(df, \"dist_border_x\", \"log2AspectRatio\") + xlim(0, 500)\np4 &lt;- .p(df, \"dist_border_y\", \"log2AspectRatio\") + xlim(0, 500)\n(p1 + p2) / (p3 + p4) \n\n\n\n\n\n\n\nAs expected, we observe a decline in counts near FOV borders, with about 6.6% of cells falling below \\(r\\) (red line) and 5.1% of cells falling below 50 pixels (dashed line).\nThese cells exhibit lower total counts and smaller segmented areas, as well as a distorsion in their aspect ratio (thin cells close to the y border and broad cells close to the x boder).\nTo mitigate potential artefacts in downstream analyses, we may choose to filter out these cells, or otherwise flag them as potentially problematic events to be kept a cautionary eye on.\nCode# highlight border cells across \n# the tissue (using cell centroids)\ncos$ex &lt;- df$dist_border &lt; r\nplotCentroids(cos, colourBy=\"ex\", sampleId=NULL) +\n    scale_color_manual(values=c(\"lavender\", \"blue\")) +\n    guides(col=guide_legend(override.aes=list(size=2))) +\n    theme_void() + theme(legend.key.size=unit(0, \"pt\"))\n# zoom in on subset of FOVs\n# visualizing cell boundaries\nfs &lt;- c(98:100, 113:115, 122:124)\nplotPolygons(\n    cos[, cos$fov %in% fs], \n    colourBy=\"ex\", sampleId=NULL,\n    borderCol=\"black\", palette=c(\"lavender\", \"blue\")) +\n    theme(legend.position=\"none\")",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#identifying-low-quality-cells",
    "href": "pages/img-quality-control.html#identifying-low-quality-cells",
    "title": "19  Quality control",
    "section": "\n19.6 Identifying low-quality cells",
    "text": "19.6 Identifying low-quality cells\nWe can now use the QC metrics calculated above to flag (and potentially remove) low-quality cells.\n\n19.6.1 Individual metrics\nFirst, we can consider metrics separately looking for outliers in their distribution. Depending on the metric, we are interested in low-end or high-end outliers (or both). For instance, we may want to exclude too small/large cells as potential artifacts.\nSpaceTrooper provides a function to compute outliers of the distribution of any QC metric present in the colData of the object. We can then visualize the distribution and outlier threshold with a histogram.\n\n\nNote that thresholds could also be obtained using scuttle’s isOutlier function on the corresponding metric(s); see Section 19.7.\n\nCodecos &lt;- computeSpatialOutlier(cos, computeBy=\"total\", method=\"mc\")\ncos &lt;- computeSpatialOutlier(cos, computeBy=\"Area_um\", method=\"mc\")\nplotMetricHist(cos, metric=\"total\", useFences=\"total_outlier_mc\") +\nplotMetricHist(cos, metric=\"Area_um\", useFences=\"Area_um_outlier_mc\")\n\n\n\n\n\n\n\nIn the CosMx data, we identify 332 outliers for total counts and 339 outliers for area.\n\n19.6.2 Combined score\nFinally, we can compute an aggregated quality score, which combines a cell’s transcript density, aspect ratio and (for CosMx) distance from FOV borders.\nSpecifically, SpaceTrooper’s computeQCScore function will compute a combined quality score based on count density (log2SignalDensity), cell aspect ratio (log2AspectRatio), only for cells closer than a specified distance from FOV borders, and control-to-total count ratio (log2Ctrl_total_ratio). The count density is computed as the ratio between the per cell total gene counts divided by the cell area; the aspect ratio represents FOV border effect typical of CosMx datasets; the control-to-total ratio is the ratio between counts for control probes and total counts per cell and represents aspecific signal.\n\n\nThe quality score is computed using a ridge logistic regression model, which predicts a score between 0 and 1, where higher scores indicate better quality cells, using the following model forumla: ~(log2SignalDensity + Area_um + log2Ctrl_total_ratio + I(abs(log2AspectRatio) * as.numeric(dist_border&lt;50)))^2, where the ^2 notation indicates all pairwise interactions among the included variables. See ?computeQCScore for details.\nHere, computeQCScore() will add a (numeric) QC_score, and computeQCScoreFlags will add a (logical) low_qcscore slot to the input SPE’s colData; the latter flags low-quality cells.\n\nCode# compute quality scores & flag cell's that\n# fall below specified percentile threshold\ncos &lt;- computeQCScore(cos)\ncos &lt;- computeQCScoreFlags(cos, \n    qsThreshold=0.5)\n\n# the following slots have now been \n# added to the object's cell metadata\nnms &lt;- names(colData(cos))\nsco &lt;- grepv(\"score$\", nms)\nhead(colData(cos)[sco])\n\n##  DataFrame with 6 rows and 2 columns\n##          QC_score low_qcscore\n##         &lt;numeric&gt;   &lt;logical&gt;\n##  f1_c1   0.105575        TRUE\n##  f1_c10  0.931026       FALSE\n##  f1_c11  0.716655       FALSE\n##  f1_c12  0.786181       FALSE\n##  f1_c13  0.863126       FALSE\n##  f1_c14  0.464991        TRUE\n\n\n\nCode# visualize quality scores & highlight flagged cells\nthm &lt;- list(theme_void(), ggtitle(\"\"), coord_equal())\nplotCentroids(cos, colourBy=\"QC_score\") + thm +\nplotCentroids(cos, colourBy=\"low_qcscore\") + thm +\n    guides(col=guide_legend(override.aes=list(size=2))) +\n    scale_color_manual(values=c(\"lavender\", \"blue\")) +\n    theme(legend.key.size=unit(0, \"pt\")) \n\n\n\n\n\n\n\nWe can see how the QC score flags several cells close to the tissue border as well as cells close to the FOVs borders.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#sec-img-quality-control-fil",
    "href": "pages/img-quality-control.html#sec-img-quality-control-fil",
    "title": "19  Quality control",
    "section": "\n19.7 Filtering",
    "text": "19.7 Filtering\nFor the Xenium dataset, we will employ rather stringent filtering criteria to:\n\nexclude cells with too few counts per area (thresholding on MADs)\nexclude cells with any negative probe or system control counts\n\n\nCode# estimate threshold on counts per area\n# (3 MADs from the median, using log2 scale)\nnc &lt;- xen$total_counts / xen$cell_area\nol &lt;- isOutlier(nc, log=TRUE, type=\"lower\", nmads=3)\n(th &lt;- attr(ol, \"threshold\")[1])\n\n##      lower \n##  0.1714161\n\n\n\nCode# visualize histrogram of counts \n# per area, including threshold\npar(mar=c(4, 4, 0, 0))\nhist(log(nc), \n    n=50, col=\"lavender\",\n    main=NULL, ylab=\"# cells\", \n    xlab=\"log(total_counts / cell_area)\")\nabline(v=log(th), col=\"blue\")\n\n\n\n\n\n\n\n\nCode# fraction of low-quality Xenium cells\nmean(ex &lt;- ol | \n    xen$control_probe_counts &gt; 0 | \n    xen$control_codeword_counts &gt; 0)\n\n##  [1] 0.1639766\n\n\nFor the CosMx dataset, we might filter based on SpaceTroopers quality score, which would exclude about 7% of cells.\n\nCode# fraction of low-quality CosMx cells\nmean(cos$low_qcscore)\n\n##  [1] 0.07277184",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#conclusion",
    "href": "pages/img-quality-control.html#conclusion",
    "title": "19  Quality control",
    "section": "\n19.8 Conclusion",
    "text": "19.8 Conclusion\nIn a stringent analysis, we may want to remove low-quality cells, but this has to be done with caution: before excluding any cells, it is recommendable to inspect where these fall in the tissue. We would expect low-quality cells to be distributed randomly, and otherwise to accumulate at the tissue or FOV borders or in regions were tissue was, for example, smudged, detached, necrotic etc.\nIn general, spatially organized clusters of excluded cells might indicate a bias towards excluding specific types of cells (e.g., some immune cells tend to be smaller or might otherwise contain fewer transcripts due to the panel design). Whenever possible, we advice readers to cross-check visualizations like the following with a corresponding H&E stain of the tissue, considering possible experimental faults as well as their prior knowledge on tissue pathology.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-quality-control.html#appendix",
    "href": "pages/img-quality-control.html#appendix",
    "title": "19  Quality control",
    "section": "\n19.9 Appendix",
    "text": "19.9 Appendix\n\n19.9.1 Save data\n\nCode# save post-QC Xenium data\n# for consecutive chapters\nsaveRDS(xen[, !ex], \"img-spe_qc.rds\")\n\n\n\n19.9.2 Resources\nBruker’s CosMx Analysis Scratch Space provides an exploratory (open-source) resource for CosMx data analysis, which includes an FOV-level QC approach that relies on comparing proximal FOVs in order to identify outliers in terms of RNA detection (see here); and, a theoretical piece on background signal – i.e., non-RNA target binding events (see here).\nReferences\n\n\n\n\nBanzi, Benedetta, Dario Righelli, Matteo Marchionni, Oriana Romano, Mattia Forcato, Davide Risso, and Silvio Bicciato. 2025. “SpaceTrooper: A Quality Control Framework for Imaging-Based Spatial Omics Data.” bioRxiv. https://doi.org/10.64898/2025.12.24.696336.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>19</span>  <span class='chapter-title'>Quality control</span>"
    ]
  },
  {
    "objectID": "pages/img-intermediate-processing.html",
    "href": "pages/img-intermediate-processing.html",
    "title": "20  Intermediate processing",
    "section": "",
    "text": "20.1 Preamble",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>20</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/img-intermediate-processing.html#preamble",
    "href": "pages/img-intermediate-processing.html#preamble",
    "title": "20  Intermediate processing",
    "section": "",
    "text": "20.1.1 Introduction\nIn this demo, we will continue processing the Xenium dataset from a human breast cancer biopsy section collected by Janesick et al. (2023), which has already undergone quality control and minimal filtering; see Chapter 19. The processing steps carried out here – namely, normalization, dimension reduction, and clustering – lay the foundating for a variety of downstream analysis tasks that will be covered in the next chapters. Here, we will run standard non-spatial and spatially-aware approaches; for a more comprehensive overview of methodology and tools, see Chapter 27 on dimension reduction and Chapter 28 on clustering.\n\n20.1.2 Dependencies\n\nCodelibrary(scran)\nlibrary(scater)\nlibrary(igraph)\nlibrary(Banksy)\nlibrary(ggplot2)\nlibrary(ggspavis)\nlibrary(patchwork)\nlibrary(OSTA.data)\nlibrary(SpatialExperiment)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(20000229)\n# load data from preceding \n# chapter (post quality control)\n(spe &lt;- readRDS(\"img-spe_qc.rds\"))\n\n##  class: SpatialExperiment \n##  dim: 313 140268 \n##  metadata(0):\n##  assays(1): counts\n##  rownames(313): ABCC11 ACTA2 ... ZEB2 ZNF562\n##  rowData names(3): ID Symbol Type\n##  colnames(140268): 2 3 ... 167779 167780\n##  colData names(12): cell_id transcript_counts ... detected total\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : x_centroid y_centroid\n##  imgData names(1): sample_id\n\n\nBefore getting started, we will retrieve the authors’ cell type labels, which were obtained by transferring scFFPE-seq annotations (supervised); these comprise 20 subpopulations.\n\nCode# get annotations from 'BiocFileCache'\n# (data has been retrieved already)\nid &lt;- \"Xenium_HumanBreast1_Janesick\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, \"annotation.csv\", exdir=td)\ndf &lt;- read.csv(list.files(td, full.names=TRUE))\n# add annotations as cell metadata\ncs &lt;- match(spe$cell_id, df$Barcode)\nspe$Label &lt;- df$Annotation[cs]",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>20</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/img-intermediate-processing.html#normalization",
    "href": "pages/img-intermediate-processing.html#normalization",
    "title": "20  Intermediate processing",
    "section": "\n20.2 Normalization",
    "text": "20.2 Normalization\nLibrary size-based normalization, as typically used for scRNA-seq data, has been shown to be problematic for ST data, especially so for targeted panels underlying current commercial imaging-based ST platforms (Atta et al. 2024; Bhuva et al. 2024). For lack of a better approach, we here use standard log-library size normalization. We caution readers, however, to keep an eye out in the literature for attempts to provide a better strategy. See also Chapter 26.\n\nCodespe &lt;- logNormCounts(spe)",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>20</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/img-intermediate-processing.html#feature-selection",
    "href": "pages/img-intermediate-processing.html#feature-selection",
    "title": "20  Intermediate processing",
    "section": "\n20.3 Feature selection",
    "text": "20.3 Feature selection\nAt this stage, we would typically perform selection of (e.g., highly variable) features; see Chapter 11. The dataset at hand, however, is targeted and relatively low-plex, so that features have already been selected by design (e.g., different targets will be included in immuno-oncology and neuroscience panels).",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>20</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/img-intermediate-processing.html#dimension-reduction",
    "href": "pages/img-intermediate-processing.html#dimension-reduction",
    "title": "20  Intermediate processing",
    "section": "\n20.4 Dimension Reduction",
    "text": "20.4 Dimension Reduction\nAs a baseline, we will perform principal component analysis (PCA), which underlies many standard scRNA-seq analysis pipelines, such as (spatially unaware) graph-based clustering based on a shared nearest neighbor (SNN) graph and the Leiden or Louvain algorithm for community detection.\n\nCodespe &lt;- runPCA(spe, ncomponents=20)\n\n\nFor comparison, we will also perform spatially-aware dimension reduction with BANKSY (Singhal et al. 2024); see Chapter 27.\n\nCodespe &lt;- computeBanksy(spe, assay_name=\"logcounts\")\nspe &lt;- runBanksyPCA(spe, npcs=20, lambda=0.2)\n\n\nTo not confuse different types of PCs, we rename reducedDims to end in _sp and _tx for spatially aware and unaware results, respectively.\n\nCodereducedDimNames(spe) &lt;- c(\"PCA_tx\", \"PCA_sp\")",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>20</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/img-intermediate-processing.html#clustering",
    "href": "pages/img-intermediate-processing.html#clustering",
    "title": "20  Intermediate processing",
    "section": "\n20.5 Clustering",
    "text": "20.5 Clustering\nHere, we perform standard graph-based clustering by (i) constructing a shared nearest neighbor (SNN) graph and (ii) using the Leiden algorithm for community detection. By basing the SNN graph on standard and BANKSY PCs, respectively, we can obtain non-spatial as well as spatially aware assignments:\n\nCodepcs &lt;- c(Leiden=\"PCA_tx\", Banksy=\"PCA_sp\")\nfor (. in names(pcs)) {\n    # build cellular shared nearest-neighbor (SNN) graph\n    g &lt;- buildSNNGraph(spe, use.dimred=pcs[.], type=\"jaccard\", k=20)\n    # cluster using Leiden community detection algorithm\n    k &lt;- cluster_leiden(g, objective_function=\"modularity\", resolution=0.8)\n    spe[[.]] &lt;- factor(k$membership)\n}",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>20</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/img-intermediate-processing.html#visualization",
    "href": "pages/img-intermediate-processing.html#visualization",
    "title": "20  Intermediate processing",
    "section": "\n20.6 Visualization",
    "text": "20.6 Visualization\nLet’s visualize the assignment obtains from non-spatial and spatially aware clustering:\n\nCodespe$in_tissue &lt;- 1; spe$x_centroid &lt;- spe$y_centroid &lt;- NULL\nlapply(c(\"Label\", \"Leiden\", \"Banksy\"), \\(.) {\n    plotCoords(spe, annotate=., point_size = 0.1)\n}) |&gt;\n    wrap_plots(nrow=1) &\n    theme(legend.key.size=unit(0, \"lines\")) &\n    scale_color_manual(values=unname(pals::trubetskoy()))",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>20</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/img-intermediate-processing.html#appendix",
    "href": "pages/img-intermediate-processing.html#appendix",
    "title": "20  Intermediate processing",
    "section": "\n20.7 Appendix",
    "text": "20.7 Appendix\nSave data\n\nCodecolLabels(spe) &lt;- spe$Banksy\nsaveRDS(spe, \"img-spe_cl.rds\")\n\n\nReferences\n\n\n\n\nAtta, Lyla, Kalen Clifton, Manjari Anant, Gohta Aihara, and Jean Fan. 2024. “Gene Count Normalization in Single-Cell Imaging-Based Spatially Resolved Transcriptomics.” Genome Biology 25 (153). https://doi.org/10.1186/s13059-024-03303-w.\n\n\nBhuva, Dharmesh D., Chin Wee Tan, Agus Salim, Claire Marceaux, Marie A. Pickering, Jinjin Chen, Malvika Kharbanda, et al. 2024. “Library Size Confounds Biology in Spatial Transcriptomics Data.” Genome Biology 25 (99). https://doi.org/10.1186/s13059-024-03241-7.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.\n\n\nSinghal, Vipul, Nigel Chou, Joseph Lee, Yifei Yue, Jinyue Liu, Wan Kee Chock, Li Lin, et al. 2024. “BANKSY Unifies Cell Typing and Tissue Domain Segmentation for Scalable Spatial Omics Data Analysis.” Nature Genetics 56: 431–41. https://doi.org/10.1038/s41588-024-01664-3.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>20</span>  <span class='chapter-title'>Intermediate processing</span>"
    ]
  },
  {
    "objectID": "pages/img-neighborhood-analysis.html",
    "href": "pages/img-neighborhood-analysis.html",
    "title": "21  Neighborhood analysis",
    "section": "",
    "text": "21.1 Preamble",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>21</span>  <span class='chapter-title'>Neighborhood analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-neighborhood-analysis.html#preamble",
    "href": "pages/img-neighborhood-analysis.html#preamble",
    "title": "21  Neighborhood analysis",
    "section": "",
    "text": "21.1.1 Introduction\nNeighborhood analysis aims to investigate the composition of and interaction between cells and cell types within small regions of tissue, which are referred to as neighborhoods or niches.\n\n21.1.2 Dependencies\n\nCodelibrary(dplyr)\nlibrary(tidyr)\nlibrary(ggplot2)\nlibrary(patchwork)\nlibrary(RColorBrewer)\nlibrary(BiocParallel)\nlibrary(SpatialExperiment)\n\n\n\nCode# load data from previous section\nspe &lt;- readRDS(\"img-spe_cl.rds\")\nspe$k &lt;- colLabels(spe)\n\n\n\nCode# basic theme for spatial plots\ntheme_xy &lt;- list(\n    coord_equal(expand=FALSE), \n    theme_void(), theme(\n        plot.margin=margin(l=5),\n        legend.key=element_blank(),\n        panel.background=element_rect(fill=\"black\")))",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>21</span>  <span class='chapter-title'>Neighborhood analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-neighborhood-analysis.html#nearest-neighbors",
    "href": "pages/img-neighborhood-analysis.html#nearest-neighbors",
    "title": "21  Neighborhood analysis",
    "section": "\n21.2 Nearest neighbors",
    "text": "21.2 Nearest neighbors\nCustom spatial analyses may rely on identifying nearest neighbors (NNs) of cells. We recommend RANN for this purpose, which finds NNs in \\(O(N\\log N)\\) time for \\(N\\) cells (c.f., conventional approaches would take \\(O(N^2)\\) time) by relying on a Approximate Near Neighbor (ANN) C++ library. Furthermore, there is support for exact, approximate, and fixed-radius searchers. The latter is of particular interest in biology; e.g., one might require \\(k\\)NNs to lie within a biologically sensible distance as to avoid consideration of cells that are far-off, especially in sparse regions or at tissue borders.\nAs a toy example, we here compute the \\(k\\)NNs between a pair of subpopulations, with and without thresholding on NN distances (searchtype=\"radius\").\n\nFor the first approach, each cell will receive \\(k\\) neighbors exactly,\nbut these may lie within an arbitrary distance.\nFor the second approach, cells will receive \\(\\leq k\\) neighbors,\ndepending on how many cells lie within a radius \\(r\\).\n\n\nCodelibrary(RANN)\nk &lt;- 10 # num. neighbors\nr &lt;- 50 # dist. threshold\ni &lt;- spe$k == 1 # source\nj &lt;- spe$k == 4 # target\nxy &lt;- spatialCoords(spe)\n# k-NN search: all cells have k neighbors\nns_k &lt;- nn2(xy[j, ], xy[i, ], k=k)\nis_k &lt;- ns_k$nn.idx\nall(rowSums(is_k &gt; 0) == k) \n# w/ fixed-radius: cells have 0-k neighbors\nns_r &lt;- nn2(xy[j, ], xy[i, ], k=k, searchtype=\"radius\", r=r)\nis_r &lt;- ns_r$nn.idx\nrange(rowSums(is_r &gt; 0))\n\n##  [1] TRUE\n##  [1]  0 10\n\n\nThe neighbors obtained via fixed-radius search (right) are less scattered than those obtained for unlimited distances (left); the former are arguably more meaningful in a biological context:\n\nCodedf &lt;- data.frame(xy, colData(spe))\np0 &lt;- ggplot(df, aes(x_centroid, y_centroid)) + \n    geom_point(data=df, col=\"navy\", shape=16, size=0) +\n    geom_point(data=df[i, ], col=\"magenta\", shape=16, size=0) \np1 &lt;- p0 + geom_point(\n    data=df[which(j)[is_k], ], \n    col=\"gold\", shape=16, size=0) +\n    ggtitle(\"k-nearest neighbors\")\np2 &lt;- p0 + geom_point(\n    data=df[which(j)[is_r], ], \n    col=\"gold\", shape=16, size=0) +\n    ggtitle(\"fixed-radius search\")\n(p1 | p2) + plot_layout(nrow=1) & theme_xy\n\n\n\nResults of kNN searches. Left: basic kNN search, highlighting source (pink) and target cells (gold). Right: kNN search with same k, but thresholding on neighbor distances.\n\n\n\n\n\n\n\n\n\nNoteexhaustive fixed-radius search\n\n\n\n\n\nNote that, we could also set a very large k in order to identify all neighbors within a radius r. In order to prevent unnecessarily costly searches, it is sensible to estimate how many neighbors we would expect, and to set k accordingly. nn2() will otherwise find each cells’ \\(k\\)NNs, and set the indices of those with a distance \\(&gt;r\\) to 0.\nAs an exemplary approach, we here sample 1,000 cells to estimate the highest number of NNs obtained, considering half of all target cells as potential NNs:\n\nCode# test search\n.i &lt;- sample(which(i), 1e3)\nns &lt;- nn2(\n    xy[j, ], xy[.i, ], \n    k=round(sum(j)/2), \n    searchtype=\"radius\", r=r)\n(.k &lt;- max(rowSums(ns$nn.idx &gt; 0)))\n\n##  [1] 38\n\n\nFor our actual search, we then set k to be twice our estimate. As a final spot-check, we make sure that all cells have fewer than k NNs, since we might otherwise be missing some.\n\nCode# real search\nns &lt;- nn2(\n    xy[j, ], xy[i, ], \n    k=k &lt;- ceiling(2*.k), \n    searchtype=\"radius\", r=r)\nmax(rowSums(ns$nn.idx &gt; 0)) &lt; k\n\n##  [1] TRUE",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>21</span>  <span class='chapter-title'>Neighborhood analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-neighborhood-analysis.html#spatial-contexts",
    "href": "pages/img-neighborhood-analysis.html#spatial-contexts",
    "title": "21  Neighborhood analysis",
    "section": "\n21.3 Spatial contexts",
    "text": "21.3 Spatial contexts\nSpatial niche analysis aims at identifying regions of homogeneous composition by grouping cells based on their microenvironment. To this end, methods such as imcRtools (Windhager et al. 2023) rely on a \\(k\\)-nearest-neighbor (\\(k\\)NN) graph (based on Euclidean cell-to-cell distances), and clustering cells using common clustering algorithms (according to their neighborhood’s subpopulation frequencies).\nHere, we demonstrate how to identify spatial contexts based on \\(k\\)-means clustering on cluster frequencies among (Euclidean) \\(k\\)NNs. We recommend readers consult the imcRtools documentation for a much wider range of visualizations and downstream analyses in this context.\n\nCodelibrary(imcRtools)\n# construct kNN-graph based on Euclidean distances\nsqe &lt;- buildSpatialGraph(spe, \n    coords=spatialCoordsNames(spe),\n    img_id=\"sample_id\", type=\"knn\", k=10)\n# compute cluster frequencies among each cell's kNNs\nsqe &lt;- aggregateNeighbors(sqe, \n    colPairName=\"knn_interaction_graph\", \n    aggregate_by=\"metadata\", count_by=\"k\")\n# view composition of 1st cell's kNNs\nunlist(sqe$aggregatedNeighbors[1, ]) \n\n##    1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16 \n##  0.3 0.7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n\nCode# cluster cells by neighborhood compositions\nctx &lt;- kmeans(sqe$aggregatedNeighbors, centers=5)\ntable(sqe$ctx &lt;- factor(ctx$cluster))\n\n##  \n##      1     2     3     4     5 \n##  13111 15506 24497 11285 75869\n\n\nLet’s quickly view the subpopulation composition of each spatial context:\n\nCodedf &lt;- data.frame(spatialCoords(sqe), colData(sqe))\nround(100*with(df, prop.table(table(k, ctx), 2)), 2)\n\n##      ctx\n##  k        1     2     3     4     5\n##    1  79.70  0.47  0.20  0.10  0.79\n##    2   3.33  2.21  1.22  0.75  3.65\n##    3   1.80  6.42  0.00  0.00  2.46\n##    4  10.10  6.94  0.00  0.00  3.94\n##    5   0.95  0.77  4.53  2.99 12.55\n##    6   0.76  0.35  4.97  2.68 14.44\n##    7   0.21  0.01 61.95 42.47  1.12\n##    8   1.04  1.75  2.64  1.55  9.14\n##    9   0.11  0.00 18.95 46.15  0.12\n##    10  1.57  0.84  3.36  2.06 17.47\n##    11  0.12  0.10  1.75  0.90 22.28\n##    12  0.05  0.02  0.30  0.21  5.32\n##    13  0.01  0.02  0.08  0.07  0.71\n##    14  0.02  0.00  0.03  0.02  4.56\n##    15  0.23 80.10  0.00  0.00  0.63\n##    16  0.01  0.01  0.02  0.04  0.82\n\n\nSecondly, let’s visualize the obtained spatial contexts in space:\n\nCodepal_k &lt;- unname(pals::trubetskoy(nlevels(df$k)))\npal_c &lt;- c(\"blue\", \"cyan\", \"gold\", \"magenta\", \"maroon\")\nggplot(df, aes(x_centroid, y_centroid, col=k)) + \n    scale_color_manual(values=pal_k) +\nggplot(df, aes(x_centroid, y_centroid, col=ctx)) + \n    scale_color_manual(values=pal_c) +\nplot_layout(nrow=1) &\n    geom_point(shape=16, size=0) &\n    guides(col=guide_legend(override.aes=list(size=2))) &\n    theme_xy & theme(legend.key.size=unit(0.5, \"lines\"))\n\n\n\nTissue plot with cells colored by cluster (left) and spatial context (right) based on \\(k\\)-means clustering of cluster frequencies among each cell’s (Euclidean) \\(k\\)NNs.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>21</span>  <span class='chapter-title'>Neighborhood analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-neighborhood-analysis.html#co-localization",
    "href": "pages/img-neighborhood-analysis.html#co-localization",
    "title": "21  Neighborhood analysis",
    "section": "\n21.4 Co-localization",
    "text": "21.4 Co-localization\nhoodscanR (Liu et al. 2025) also relies on a (Euclidean) \\(k\\)NN graph to estimate the probability of each cell associating with its NNs. The resulting probability matrix (rows=cells, columns=NNs) can, in turn, be used to assess co-occurrence of subpopulations.\n\nCodelibrary(hoodscanR)\nsqe &lt;- readHoodData(spe, anno_col=\"k\")\nnbs &lt;- findNearCells(sqe, k=100)\nmtx &lt;- scanHoods(nbs$distance)      \ngrp &lt;- mergeByGroup(mtx, nbs$cells) \nsqe &lt;- mergeHoodSpe(sqe, grp)       \n\n\nTo perform neighborhood co-localization analysis, plotColocal() computes the Pearson correlation of probability distribution between cells. Here, high/low values indicate attraction/repulsion between clusters:\n\nCodelibrary(pheatmap)\ncor &lt;- plotColocal(sqe, pm_cols=colnames(grp), return_matrix=TRUE)\npal &lt;- colorRampPalette(rev(hcl.colors(9, \"Roma\")))(100)\npheatmap(cor, \n    cellwidth=15, cellheight=15, \n    treeheight_row=5, treeheight_col=5,\n    col=pal, breaks=seq(-1, 1, length=100))\n\n\n\n\n\n\n\n\n\n\n\n\n\nNotemeasuring local mixing\n\n\n\n\n\nDownstream, calcMetrics() can be used to calculate cell-level entropy and perplexity, which both measure the mixing of cellular neighborhoods. Here, low/high values indicate heterogeneity/homogeneity of a cell’s local neighborhood:\n\nCodesqe &lt;- calcMetrics(sqe, pm_cols=colnames(grp))\n\n\n\nCodedf &lt;- data.frame(colData(sqe), k=spe$k, spatialCoords(spe))\nvs &lt;- c(\"perplexity\", \"entropy\")\nfd &lt;- df |&gt;\n    pivot_longer(all_of(vs)) |&gt;\n    group_by(name) |&gt; mutate_at(\"value\", scale) \n# threshold at 2 SDs for clearer visualization\nfd$value[i] &lt;- 2*sign(fd$value[i &lt;- abs(fd$value) &gt; 2])\nggplot(fd, aes(x_centroid, y_centroid, col=value)) +\n    facet_grid(~name) + geom_point(shape=16, size=0) + \n    theme_xy + theme(legend.key.size=unit(0.5, \"lines\")) +\n    scale_color_gradient2(\"z-scaled\\nvalue\", low=\"cyan\", mid=\"navy\", high=\"magenta\") \n\n\n\nTissue plots with cells colored by entropy and perplexity, z-scaled across cells (capped at 2 SDs).\n\n\n\nStratifying these values by subpopulation, we can observe that clusters forming distinct aggregates in space are lowest in entropy/perplexity (i.e., the most homogeneous locally):\n\nCodeggplot(fd, aes(k, value, fill=k)) +\n    facet_wrap(~name) + \n    scale_fill_manual(values=pal_k) + \n    geom_boxplot(outlier.stroke=0, key_glyph=\"point\") +\n    scale_y_continuous(\"z-scaled value\", limits=c(-2, 2)) +\n    guides(fill=guide_legend(override.aes=list(shape=21, size=2))) +\n    theme_bw() + theme(\n        axis.title.x=element_blank(),\n        panel.grid.minor=element_blank(),\n        legend.key.size=unit(0.5, \"lines\"))\n\n\n\nBoxplot of entropy and perplexity, stratified by cluster assignment and z-scaled across cells (capped at 2 SDs).",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>21</span>  <span class='chapter-title'>Neighborhood analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-neighborhood-analysis.html#spatial-density-based-analysis",
    "href": "pages/img-neighborhood-analysis.html#spatial-density-based-analysis",
    "title": "21  Neighborhood analysis",
    "section": "\n21.5 Spatial density-based analysis",
    "text": "21.5 Spatial density-based analysis\nscider (Li et al. 2025) defines spatial domains as regions of interest (ROIs) while preserving the tissue structure through spatial density analysis. Kernel density estimation (KDE) is used to describe the spatial distributions of cells, and ROIs are identified based on the spatial density of some cell types of interest (COIs). One can also calculate the spatial density of transcript expression of a gene or a gene set, so that gene (set)-specific ROIs can be identified. ROIs can then be used for downstream analysis such as cell type co-localization, cell type composition and differential expression (DE) analysis. All functions operate on SpatialExperiment objects, allowing seemless integration. Using the Xenium breast carcinoma dataset, we demonstrate a standard scider workflow.\n\nCode# dependencies\nlibrary(scider)\nlibrary(OSTA.data)\nlibrary(SpatialExperimentIO)\n# retrieve data from OSF repo &\n# read into 'SpatialExperiment'\nid &lt;- \"Xenium_HumanBreast1_Janesick\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\nspe &lt;- readXeniumSXE(td, addTx=FALSE)\n\n\nIn this example, we define ROIs based on the celluar density of tumor cells, that is, DCIS_1, DCIS_2 and invasive tumor cells are considered as the COI. Firstly, we need to add cell type annotations to colData, where cell type annotations were obtained from the original publication (Janesick et al. 2023).\n\nCodeanno &lt;- read.csv(file.path(td, \"annotation.csv\"))\nspe$cell_type &lt;- anno$Annotation[match(spe$cell_id, anno$Barcode)]\n\nscider::plotSpatial(spe, group=\"cell_type\", pt.alpha=1)\n\n\n\nSpatial plot of the Xenium breast carcinoma sample, replicate 1.\n\n\n\nWe first estimate the spatial density of each cell type using the gridDensity() function.\n\nCodespe &lt;- gridDensity(spe, grid.length.x=50, bandwidth=25)\nmetadata(spe)$grid_density[1:4, 1:8]\n\n##  DataFrame with 4 rows and 8 columns\n##       x_grid    y_grid    node_x    node_y        node density_b_cells\n##    &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;character&gt;       &lt;numeric&gt;\n##  1   2.13252   1.36716         1         1         1-1    -7.00970e-17\n##  2  52.13252   1.36716         2         1         2-1    -4.07403e-17\n##  3 102.13252   1.36716         3         1         3-1    -6.61382e-17\n##  4 152.13252   1.36716         4         1         4-1     2.35977e-16\n##    density_cd4_t_cells density_cd8_t_cells\n##              &lt;numeric&gt;           &lt;numeric&gt;\n##  1        -2.04811e-16        -1.43713e-16\n##  2        -3.60811e-16         4.88041e-11\n##  3        -3.24988e-16         1.07286e-06\n##  4         7.18931e-17         4.32820e-04\n\n\nThe density value represents the expected number of COI cells on each grid, and can be visualized by the plotDensity() function. For example, here we visualize the density of COI cells:\n\nCodecoi &lt;- c(\"DCIS_1\", \"DCIS_2\", \"Invasive_Tumor\")\nscider::plotDensity(spe, coi=coi, probs=0.5) +\n  ggtitle(\"Spatial density of tumour cells\")\n\n\n\nHeatmap of the spatial density of COI cells.\n\n\n\nROI detection is performed using a graph-based approach as described in Li et al. (2025). Only grids with \\(\\geq 1\\) expected COI cell (estimated COI density \\(\\geq 1\\)) are retained in ROI detection.\n\nCodespe &lt;- findROI(spe, coi=coi, min.density=1)\nscider::plotROI(spe, roi=coi) + \n  ggtitle(\"Tumour cell-based ROIs\")\n\n\n\nROIs detected based on COI density.\n\n\n\nThese ROIs can then be used for downstream analysis, such as cell type colocalization, spatial domain clustering, and differential expression (DE). Here as an example, we demonstrate an ROI-level cell type co-localization analysis.\n\n21.5.1 Cell type co-localization on the ROI level\nscider performs cell type co-localization analysis by calculating the correlation between the spatial densities of every two cell types.\n\nCodespe_cor &lt;- corDensity(spe)\nscider::plotCorHeatmap(spe_cor)\n\n\n\nCell type colocalization in tumor-specific ROIs.\n\n\n\nWe see that immune and stromal cells are positively colocalized within their respective groups, whereas myoepithelial, DCIS, and invasive tumor populations form distinct, negatively correlated clusters.\n\n21.5.2 Cell type composition analysis based on density contours\nAdditionally, contour levels can be calculated from the estimated COI density, which is useful for cell type composition analysis.\n\nCodespe &lt;- getContour(spe, coi=coi, bins=10)\nscider::plotContour(spe, coi=coi, line.width=0.5)\n\n\n\nSpatial plot of contour lines calculated from the spatial density of tumor cells.\n\n\n\nWe can then assign each cell to its corresponding contour level according to their spatial coordinates, and visualize the cell type composition at each COI contour level using the plotCellCompo() function.\n\nCodespe &lt;- allocateCells(spe, contour=coi, to.roi=TRUE)\nscider::plotCellCompo(spe, contour=coi, self.included=FALSE)\n\n\n\nCell type composition at each contour level of COI cells across all ROIs.\n\n\n\nFor example, we see a decreasing proportion of stromal cells, and an increasing proportion of unlabeled cells as tumor cell density increases. Normally, we would have filtered out unlabeled cells in preprocessing. It is also useful to investigate how cell type composition changes to COI densities within each ROI:\n\nCodescider::plotCellCompo(spe, contour=coi, self.included=FALSE, roi=coi)\n\n\n\nCell type composition at each contour level of COI cells within each ROI.\n\n\n\nROIs can also be used to perform other types of downstream analysis, such as gene expression clustering, DE analysis and pathway analysis by pseudo-bulking cells located within each ROI, using the spe2PB() function. Given the pseudo-bulk samples, scider is fully compatible with all limma and edgeR functionalities, allowing arbitrarily complex experimental design to answer various biological questions. We recommend to perform such DE analyses using the voomLmFit() pipeline (Baldoni et al. 2025) or the quasi-likelihood pipeline in edgeR (Chen et al. 2025). Examples of DE and pathway analyses can be found in Li et al. (2025). More case studies will also be available at https://github.com/ChenLaboratory/scider.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>21</span>  <span class='chapter-title'>Neighborhood analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-neighborhood-analysis.html#appendix",
    "href": "pages/img-neighborhood-analysis.html#appendix",
    "title": "21  Neighborhood analysis",
    "section": "\n21.6 Appendix",
    "text": "21.6 Appendix\nReferences\n\n\n\n\nBaldoni, Pedro L., Lizhong Chen, Mengbo Li, Yunshun Chen, and Gordon K. Smyth. 2025. “Dividing Out Quantification Uncertainty Enables Assessment of Differential Transcript Usage with Limma and edgeR.” bioRxiv. https://doi.org/10.1101/2025.04.07.647659.\n\n\nChen, Yunshun, Lizhong Chen, Aaron T L Lun, Pedro L Baldoni, and Gordon K Smyth. 2025. “edgeR V4: Powerful Differential Analysis of Sequencing Data with Expanded Functionality and Improved Support for Small Counts and Larger Datasets.” Nucleic Acids Research 53 (gkaf018, 2). https://doi.org/10.1093/nar/gkaf018.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.\n\n\nLi, Mengbo, Ning Liu, Quoc Hoang Nguyen, and Yunshun Chen. 2025. “Preserving Tissue Structure Through Density-Based Spatial Analysis with Scider.” bioRxiv. https://doi.org/10.1101/2025.09.11.675745.\n\n\nLiu, Ning, Jarryd Martin, Dharmesh D Bhuva, Jinjin Chen, Mengbo Li, Samuel C. Lee, Malvika Kharbanda, et al. 2025. “hoodscanR: Profiling Single-Cell Neighborhoods in Spatial Transcriptomics Data.” bioRxiv. https://doi.org/10.1101/2024.03.26.586902.\n\n\nWindhager, Jonas, Vito Riccardo Tomaso Zanotelli, Daniel Schulz, Lasse Meyer, Michelle Daniel, Bernd Bodenmiller, and Nils Eling. 2023. “An End-to-End Workflow for Multiplexed Image Processing and Analysis.” Nature Protocols 18: 3565–3613. https://doi.org/10.1038/s41596-023-00881-0.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>21</span>  <span class='chapter-title'>Neighborhood analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-cell-cell-communication.html",
    "href": "pages/img-cell-cell-communication.html",
    "title": "22  Cell-cell communication",
    "section": "",
    "text": "22.1 Preamble",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>22</span>  <span class='chapter-title'>Cell-cell communication</span>"
    ]
  },
  {
    "objectID": "pages/img-cell-cell-communication.html#preamble",
    "href": "pages/img-cell-cell-communication.html#preamble",
    "title": "22  Cell-cell communication",
    "section": "",
    "text": "22.1.1 Introduction\nHaving identified spatial patterns in cellular organization and gene expression, it is further of interest to characterize how cells coordinate activity through i) their (physical) community context, or cell-cell interactions (CCI); and, ii) protein-mediated signaling, or cell-cell communication (CCC).\nMechanisms underlying inter-cellular interaction and communication have been classified as autocrine, juxtacrine, paracrine, and endocrine to refer to intra-cellular, contact-dependent, close- and long-range signaling events, respectively (Armingol et al. 2020). Paracrine events, for instance, depend on diffusion of signaling molecules between proximal cells; endocrine events are mediated by molecules (typically hormones) that travel between distal cells through extracellular fluids.\nIn scRNA-seq data, CCI/C is commonly studied through ligand-receptor (LR) pairs, but corresponding tools are restricted to gene expression only; e.g., CellphoneDB (Efremova et al. 2020). However, incorporating spatial information should enrich this type of analysis because distances between cells play a key role in inter-cellular signaling.\nMethods developed for CCI/C analysis of spatial (transcript)omics data consider cellular distances to adjust interactions predicted from expression, and typically aim at quantifying spatial co-expression of LRs (that is, between proximal cells). Such analyses need not be limited to LRs, however.\nIn principle, any CCC tool may be turned into a spatial one by:\n\npre-filtering: select a spatial neighborhood,\nand apply CCC inference to selected observations.\npost-filtering: apply CCC inference,\nand filter results based on spatial proximity.\n\nThe reason we might choose to take one of these approaches is because CCC modeling frameworks designed for single cell data are typically less complex. Consequently, they tend to be more interpretable, easier and faster to run.\n\n\n22.1.2 Dependencies\n\nCodelibrary(dplyr)\nlibrary(tidyr)\nlibrary(scater)\nlibrary(scuttle)\nlibrary(ggplot2)\nlibrary(ggspavis)\nlibrary(anndataR)\nlibrary(patchwork)\nlibrary(reticulate)\nlibrary(BiocParallel)\nlibrary(SpatialExperiment)\n# load data from previous chapter\n# (past quality control & clustered)\nspe &lt;- readRDS(\"img-spe_cl.rds\")\n# specify whether/how to \n# perform parallelization\nbp &lt;- MulticoreParam(4)",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>22</span>  <span class='chapter-title'>Cell-cell communication</span>"
    ]
  },
  {
    "objectID": "pages/img-cell-cell-communication.html#commot",
    "href": "pages/img-cell-cell-communication.html#commot",
    "title": "22  Cell-cell communication",
    "section": "\n22.2 COMMOT",
    "text": "22.2 COMMOT\nHere we run COMMOT (Cang et al. 2023), an optimal transport-based approach that models competition between sender and receiver signals, can account for multimeric interactions, considers cell-cell distances, and is linked to databases of signalling interactions and pathways.\nSince COMMOT is available as a Python package, we can access it from R using reticulate with a Conda environment (see Chapter 7).\n\n22.2.1 Python setup\nWe first set up a Python environment. Here, we do this by re-using the Conda environment created in Chapter 7, in order to speed up the book build time. Alternatively, a new environment could also be set up instead (see Chapter 7).\n\n\nAlternatively, one could set up a conda environment (or similar) outside of R, following the authors’ installation instructions for COMMOT, and activate it with reticulate::use_condaenv().\n\nCode# re-use environment from Python interoperability chapter\nuse_virtualenv(\"OSTA\", required=TRUE)\n\n\n\n22.2.2 LR retrieval\nFirst, we retrieve ligand-receptor interactions (and a lot more!) from CellChatDB (Jin et al. 2021) using COMMOT’s ligand_receptor_database() function.\n\nCode# retrieve LR interaction from CellChatDB\nct &lt;- import(\"commot\")\ndb &lt;- ct$pp$ligand_receptor_database(\n    species=\"human\", \n    database=\"CellChat\", \n    signaling_type=NULL)\nnames(db) &lt;- c(\"ligand\", \"receptor\", \"pathway\", \"type\")\nhead(db)\n\n##    ligand      receptor pathway               type\n##  0  TGFB1 TGFBR1_TGFBR2    TGFb Secreted Signaling\n##  1  TGFB2 TGFBR1_TGFBR2    TGFb Secreted Signaling\n##  2  TGFB3 TGFBR1_TGFBR2    TGFb Secreted Signaling\n##  3  TGFB1 ACVR1B_TGFBR2    TGFb Secreted Signaling\n##  4  TGFB1 ACVR1C_TGFBR2    TGFb Secreted Signaling\n##  5  TGFB2 ACVR1B_TGFBR2    TGFb Secreted Signaling\n\n\nWhile we obtain 1939 interactions from above, the vast majority of genes involved are missing from our panel. Filtering for those that are fully covered, we are left with very few:\n\nCode# interaction types &\n# number of interactions\ntable(db$type)\n\n##  \n##   Cell-Cell Contact       ECM-Receptor Secreted Signaling \n##                 319                421               1199\n\nCode# number of unique features\nlr &lt;- c(db$ligand, db$receptor)\nss &lt;- strsplit(lr, \"-\")\ngs &lt;- sapply(ss, .subset, 1)\nlength(unique(unlist(gs)))\n\n##  [1] 983\n\nCode# filer for those fully covered by the panel\nkeep &lt;- apply(db, 1, \\(.) {\n    rs &lt;- strsplit(.[\"receptor\"], \"_\")\n    lr &lt;- c(.[\"ligand\"], unlist(rs))\n    all(lr %in% rownames(spe))\n})\n(db &lt;- db[keep, ])\n\n##         ligand receptor pathway               type\n##  711    CXCL12    CXCR4    CXCL Secreted Signaling\n##  882       PTN     SDC4     PTN Secreted Signaling\n##  905      EDN1    EDNRB     EDN Secreted Signaling\n##  1640    PTPRC     MRC1    CD45  Cell-Cell Contact\n##  1644     CD80    CD274    CD80  Cell-Cell Contact\n##  1646     CD80    CTLA4    CD80  Cell-Cell Contact\n##  1648     CD86    CTLA4    CD86  Cell-Cell Contact\n##  1657     CDH1     CDH1     CDH  Cell-Cell Contact\n##  1671     CD69    KLRB1    CLEC  Cell-Cell Contact\n##  1834    NCAM1    NCAM1    NCAM  Cell-Cell Contact\n##  1887    CD274    PDCD1   PD-L1  Cell-Cell Contact\n##  1888 PDCD1LG2    PDCD1    PDL2  Cell-Cell Contact\n##  1889   PECAM1   PECAM1  PECAM1  Cell-Cell Contact\n\n\n\n22.2.3 CCC inference\nTo reduce runtime, we will restrict analysis to a 2mm\\(2\\) tissue section:\n\nCode# subset data to features being considered\nss &lt;- strsplit(db$receptor, \"_\")\nrs &lt;- sapply(ss, .subset, 1)\nsub &lt;- spe[unique(c(db$ligand, rs)), ]\n\n# assign spatial coordinates to 'spatial' \n# reduced dimension slot (required by 'COMMOT')\nxy &lt;- spatialCoords(sub)\nreducedDim(sub, \"spatial\") &lt;- xy\n\n# get indices of cells that fall\n# into a (2mm) x (2mm) window\ncs &lt;-\n    xy[, 1] &gt;= 1500 & xy[, 1] &lt;= 3500 &\n    xy[, 2] &gt;= 2000 & xy[, 2] &lt;= 4000\n\n# print number of genes x cells left\ndim(sub &lt;- sub[, cs]) \n\n##  [1]    19 15003\n\n\nWe now perform run CCC inference, using anndataR’s as_AnnData function to convert our spe in R to an AnnData object in Python. Note that in real settings (e.g., lots of interactions across lots of cells), this can be parallelized, e.g., across fields of view (FOVs) or tissue sections. For documentation on parameter meaning and choices, see the tutorial.\n\nCode# convert 'SpatialExperiment' (R) to \n# 'AnnData' (Python) using 'anndataR'\nad &lt;- as_AnnData(sub, \n    x_mapping=\"logcounts\", \n    output_class=\"ReticulateAnnData\")\n# run CCC inference using 'COMMOT'\nct &lt;- import(\"commot\")\nct$tl$spatial_communication(ad,\n    database_name=\"CellChatDB\",\n    dis_thr=10,  \n    df_ligrec=db,\n    heteromeric=TRUE,\n    pathway_sum=TRUE,\n    heteromeric_rule=\"min\",\n    heteromeric_delimiter=\"_\")\n# extract 'data.frame's containing\n# sender & receiver CCC estimates\nccc &lt;- list(\n    s=ad$obsm$`commot-CellChatDB-sum-sender`,\n    r=ad$obsm$`commot-CellChatDB-sum-receiver`)\n# add CCC inference results as cell metadata\nfor (df in ccc) colData(sub)[names(df)] &lt;- df\n\n\n\n\n\n\n\n\nNoteDistance threshold\n\n\n\n\n\nAn important consideration is the distance threshold to impose on CCC inference (argument dis_thr in the code chunk below). Ideally, this decision is based on a biological expectation on cell size and signalling range. Estimates on the distance over which immune cell signaling can occur, for example, measured interactions on length scales of 80-120\\(\\mu\\)m (Oyler-Yaniv et al. 2017).\nAlternatively, we can arrive at a data-driven estimate by inspecting the distribution of \\(k\\)th-NN distances for a sensible \\(k\\) that, in this context, determines the number of cells to consider as potential communication partners:\n\nCodexy &lt;- spatialCoords(spe)\nns &lt;- RANN::nn2(xy, xy, 11)\nds &lt;- ns$nn.dists[, 11]\npar(mar=c(4,4,2,0))\nhist(ds, n=200,\n    xlim=c(0, 60), ylim=c(0, 12e3),\n    xlab=\"10th-NN distance\", \n    ylab=\"# cells\", main=\"\")\nabline(v=d &lt;- median(ds), lw=2, col=\"red\")\ntext(d+1, 12e3, adj=c(0,1), round(d, 2), col=\"red\")",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>22</span>  <span class='chapter-title'>Cell-cell communication</span>"
    ]
  },
  {
    "objectID": "pages/img-cell-cell-communication.html#visualization",
    "href": "pages/img-cell-cell-communication.html#visualization",
    "title": "22  Cell-cell communication",
    "section": "\n22.3 Visualization",
    "text": "22.3 Visualization\n\n22.3.1 In space\nVisualizing the above data across the tissue, we will typically observe that expression and signalling values give similar spatial patterns, but the latter will be restricted to where ligand and receptor-expressing cells co-localize.\nFor simplicity, we pick a single interaction (CXCL12-CXCR4 signalling); here, s and r correspond to sender and receiver signal, respectively:\n\nCode# specify colors for sender/receiver signals\npal &lt;- list(\n    s=c(\"grey90\", \"gold\", \"black\"), \n    r=c(\"grey90\", \"turquoise\", \"black\"))\n\n# get variables names of the form: x, s-x-y, r-x-y, y\n.f &lt;- \\(i, j) c(i, paste(c(\"s\",\"r\"), i,j, sep=\"-\"), j)\nxs &lt;- .f(\"CXCL12\", \"CXCR4\")\n\n# visualize expression & signaling side-by-side\nlapply(seq_along(xs), \\(.) {\n    typ &lt;- ifelse(. &lt; 3, \"s\", \"r\")\n    plotCoords(sub, point_size=0.5,\n        annotate=xs[.], assay_name=\"logcounts\") + \n        scale_color_gradientn(typ, colors=pal[[typ]])\n}) |&gt;\n    wrap_plots(nrow=1, guides=\"collect\")  &\n    theme(legend.key.width=unit(0.5, \"lines\"))\n\n\n\n\n\n\n\n\n\n\n\n\n\nNoteCCC vs. expression\n\n\n\n\n\nLet’s compare gene expression values with cell-cell signalling estimates:\n\nCodees &lt;- t(as.matrix(logcounts(sub)))\ndf &lt;- data.frame(colData(sub), es)\nggplot(df, aes(CXCL12, s.CXCL12.CXCR4)) + \nggplot(df, aes(CXCR4, r.CXCL12.CXCR4)) + \n    plot_layout(nrow=1) &\n    geom_point(shape=16, stroke=0, size=1, alpha=0.2) &\n    geom_abline(intercept=0, slope=1, linewidth=0.4, col=\"red\") &\n    coord_equal() & theme_bw() & theme(panel.grid.minor=element_blank())\n\n\n\n\n\n\n\nWe can observe that x- and y-values are similar for only a subset of cells. A portion of cells expresses CXCL12/CXCR4, but takes on 0 signalling values. In between, signalling estimates fall below the corresponding expression values.\nThis makes sense, knowing that COMMOT considers physical cell-cell distances. I.e., some cells express CXCL12/CXCR4, but are too distant from cells expressing CXCR4/CXCL12, and are thus deemed to not be involved in signalling. Meanwhile, there is a penalty on signalling in proportion to the distance between sender and receiver cells, as well as competition between proximal cells, yielding non-zero but lower-than-expression values.\n\n\n\n\n22.3.2 In general\nFrom a biological perspective, we might be less interested signaling at the single cell-level. Instead, we could explore (for example but not limited to):\n\nWhich subpopulations are signaling to one another?\nHow does signaling at the subpopulation-level compare across niches (i.e., different spatial contexts) or pathologies (e.g., healthy/tumor)?\nHow does signaling compare across different sections (e.g., patients)?\n\nIn essence, CCC results correspond to another assay, and we can compare them the same way we would compare gene expression across subpopulations, niches, regions of interest, sections, etc.\nIn order to more easily investigate this, we can reformat estimates for sender and receiver signals from CCC inference into a SingleCellExperiment object where rows = interactions and columns = cells.\n\nCode# construct SCE from CCC results;\n# assays = s(ender) & r(eceiver)\nas &lt;- lapply(ccc, \\(.) {\n    names(.) &lt;- gsub(\"^(s|r)-\", \"\", names(.))\n    as(t(as.matrix(.)), \"dgCMatrix\")\n})\n(sce &lt;- SingleCellExperiment(as, colData=colData(sub)))\n\n##  class: SingleCellExperiment \n##  dim: 26 15003 \n##  metadata(0):\n##  assays(2): s r\n##  rownames(26): NCAM1-NCAM1 CD69-KLRB1 ... PECAM1 PTN\n##  rowData names(0):\n##  colnames(15003): 4303 4305 ... 107719 107722\n##  colData names(69): cell_id transcript_counts ... r-PECAM1 r-PTN\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n\n\nNext, we summarize CCC results for each subpopulation (separately for sender and receiver estimates) and visualize subpopulation-level results in a heatmap, using SCE-friendly functions for aggregation and visualization available through packages like scuttle and scater.\nCode# aggregate estimates by cluster\n# (separately for sender/receiver)\nmu &lt;- aggregateAcrossCells(sce, \n    ids=sce$Leiden, \n    statistics=\"mean\",\n    use.assay.type=assayNames(sce))\n\n# visualize scales values across clusters\nfor (. in assayNames(mu)) {\n    plotHeatmap(mu, exprs_values=.,\n        features=grep(\"-\", rownames(sce)),\n        main=switch(., s=\"sender\", r=\"receiver\"),\n        show_colnames=TRUE, center=TRUE, scale=TRUE)\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThe CCPlotR (Ennis, Ó Broin, and Szegezdi 2023) package provides a visualization suit for CCC analysis results, including graphs and circos plots. These rely on a generic format, where each row contains the source and target cluster, sender and receiver feature, as well as an interaction score. It is not straightforward how to best arrive at the latter; naively, we can simply average across sender and receiver estimates, either at the single cell- or cluster-level, to obtain such a score:\n\nCode# average across cluster-level sender/receiver \n# averages to obtain i(nteraction) scores\nks &lt;- expand.grid(ks &lt;- colnames(mu), ks)\ncs &lt;- split(colnames(sce), sce$Leiden)\nlr &lt;- grepl(\"-\", rownames(sce))\nlr &lt;- lr & !grepl(\"total\", rownames(sce))\nss &lt;- strsplit(rownames(sce), \"-\")\nl &lt;- sapply(ss, .subset, 1)\nr &lt;- sapply(ss, .subset, 2)\ndf &lt;- mapply(\n    i=ks[, 1], j=ks[, 2],\n    SIMPLIFY=FALSE, \\(i, j) {\n        source &lt;- sce[lr, cs[[i]]]\n        target &lt;- sce[lr, cs[[j]]]\n        sr &lt;- cbind(\n            rowMeans(assay(source, \"s\")),\n            rowMeans(assay(target, \"r\")))\n        data.frame(\n            source=paste(i), target=paste(j),\n            ligand=l[lr], receptor=r[lr],\n            score=rowMeans(sr))\n    }) |&gt; do.call(what=rbind)\nrownames(df) &lt;- NULL\nhead(df)\n\n##    source target ligand receptor       score\n##  1      1      1  NCAM1    NCAM1 0.001261824\n##  2      1      1   CD69    KLRB1 0.000000000\n##  3      1      1  CD274    PDCD1 0.000000000\n##  4      1      1   CD80    CD274 0.000000000\n##  5      1      1   CD80    CTLA4 0.000000000\n##  6      1      1   EDN1    EDNRB 0.001402286\n\n\nWe are now set to generate a range of visualizations using CCPlotR, e.g., a circos plot where the width of the links represents the total number of interactions between clusters. However, because this is only a toy example (few genes and cells), we will refrain from any biological interpretation.\n\nCodeif (require(\"CCPlotR\", quietly=TRUE))\n    cc_circos(df, n_top_ints=100)\n\n\n\nOn a final note, inference is arguably much more complex (and results less straightforward to interpret) when a higher-plex panel is being considered; i.e., when overlapping and multimeric interactions are involved, which did not apply in the example provided here. Nevertheless, we hope that readers can appreciate the conceptual difference between expression data and CCC results, and will be able to implement similar reticulate approaches to incorporate methods living in Python into their analysis pipelines.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>22</span>  <span class='chapter-title'>Cell-cell communication</span>"
    ]
  },
  {
    "objectID": "pages/img-cell-cell-communication.html#appendix",
    "href": "pages/img-cell-cell-communication.html#appendix",
    "title": "22  Cell-cell communication",
    "section": "\n22.4 Appendix",
    "text": "22.4 Appendix\n\nLiu, Sun, and Wang (2022) compare methods developed for CCC analysis of spatially resolved data with non-spatial approaches.\nmistyR (Tanevski et al. 2022) distinguishes between an ‘intrinsic’ view to capture how markers within a location influence one another; a ‘juxtaview’ to model local cellular niche (by relating expression between neighboring cells); and, a ‘paraview’ to capture tissue structure effects (by relating expression within a given radius).\nGiotto (Chen et al. 2025) detects increased co-expression of LR pairs in neighboring cells of different types via comparison to randomly shuffled cell locations (permutation test).\nCellChat (Jin, Plikus, and Nie 2025) quantifies CCC signalling probability between two groups of cells using a simplified mass action-based model, which incorporates core LR interaction with potential multimeric structure and modulation by cofactors.\nSpatialDM (Li et al. 2023) uses a bivariate extension of Moran’s \\(I\\) – a measure of spatial autocorrelation (cf., Chapter 31) – to test LR pairs in close-range distance against independence.\nSpaOTsc (Cang and Nie 2020) relies on optimal transport to segregate signal in a spatial region into LRs and their downstream genes, yielding information on regulatory flows between cells.\n\nReferences\n\n\n\n\nArmingol, Erick, Adam Officer, Olivier Harismendy, and Nathan E Lewis. 2020. “Deciphering Cell–Cell Interactions and Communication from Gene Expression.” Nature Reviews Genetics 22 (2): 71–88. https://doi.org/10.1038/s41576-020-00292-x.\n\n\nCang, Zixuan, and Qing Nie. 2020. “Inferring Spatial and Signaling Relationships Between Cells from Single Cell Transcriptomic Data.” Nature Communications 11 (2084). https://doi.org/10.1038/s41467-020-15968-5.\n\n\nCang, Zixuan, Yanxiang Zhao, Axel A. Almet, Adam Stabell, Raul Ramos, Maksim V. Plikus, Scott X. Atwood, and Qing Nie. 2023. “Screening Cell–Cell Communication in Spatial Transcriptomics via Collective Optimal Transport.” Nature Methods 20: 218–28. https://doi.org/10.1038/s41592-022-01728-4.\n\n\nChen, Jiaji G, Joselyn C Chávez-Fuentes, Matthew O’Brien, Junxiang Xu, Edward C Ruiz, Wen Wang, Iqra Amin, et al. 2025. “Giotto Suite: A Multiscale and Technology-Agnostic Spatial Multiomics Analysis Ecosystem.” Nature Methods, 1–13. https://doi.org/10.1038/s41592-025-02817-w.\n\n\nEfremova, Mirjana, Miquel Vento-Tormo, Sarah A Teichmann, and Roser Vento-Tormo. 2020. “CellPhoneDB: Inferring Cell-Cell Communication from Combined Expression of Multi-Subunit Ligand-Receptor Complexes.” Nature Protocols 15 (4): 1484–1506. https://doi.org/10.1038/s41596-020-0292-x.\n\n\nEnnis, Sarah, Pilib Ó Broin, and Eva Szegezdi. 2023. “CCPlotR: An R Package for the Visualization of Cell-Cell Interactions.” Bioinformatics Advances 3 (1): vbad130. https://doi.org/10.1093/bioadv/vbad130.\n\n\nJin, Suoqin, Christian F Guerrero-Juarez, Lihua Zhang, Ivan Chang, Raul Ramos, Chen-Hsiang Kuan, Peggy Myung, Maksim V Plikus, and Qing Nie. 2021. “Inference and Analysis of Cell-Cell Communication Using CellChat.” Nature Communications 12 (1): 1088. https://doi.org/10.1038/s41467-021-21246-9.\n\n\nJin, Suoqin, Maksim V Plikus, and Qing Nie. 2025. “CellChat for Systematic Analysis of Cell-Cell Communication from Single-Cell Transcriptomics.” Nature Protocols 20 (1): 180–219. https://doi.org/10.1038/s41596-024-01045-4.\n\n\nLi, Zhuoxuan, Tianjie Wang, Pengtao Liu, and Yuanhua Huang. 2023. “SpatialDM: Rapid Identification of Spatially Co-Expressed Ligand-Receptor Reveals Cell-Cell Communication Patterns.” bioRxiv, 2022.08.19.504616. https://doi.org/10.1101/2022.08.19.504616.\n\n\nLiu, Zhaoyang, Dongqing Sun, and Chenfei Wang. 2022. “Evaluation of Cell-Cell Interaction Methods by Integrating Single-Cell RNA Sequencing Data with Spatial Information.” Genome Biology 23 (1): 218. https://doi.org/10.1186/s13059-022-02783-y.\n\n\nOyler-Yaniv, Alon, Jennifer Oyler-Yaniv, Benjamin M Whitlock, Zhiduo Liu, Ronald N Germain, Morgan Huse, Grégoire Altan-Bonnet, and Oleg Krichevsky. 2017. “A Tunable Diffusion-Consumption Mechanism of Cytokine Propagation Enables Plasticity in Cell-to-Cell Communication in the Immune System.” Immunity 46 (4): 609–20. https://doi.org/10.1016/j.immuni.2017.03.011.\n\n\nTanevski, Jovan, Ricardo Omar Ramirez Flores, Attila Gabor, Denis Schapiro, and Julio Saez-Rodriguez. 2022. “Explainable Multiview Framework for Dissecting Spatial Relationships from Highly Multiplexed Data.” Genome Biology 23 (1): 97. https://doi.org/10.1186/s13059-022-02663-5.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>22</span>  <span class='chapter-title'>Cell-cell communication</span>"
    ]
  },
  {
    "objectID": "pages/img-sub-cellular-analysis.html",
    "href": "pages/img-sub-cellular-analysis.html",
    "title": "23  Sub-cellular analysis",
    "section": "",
    "text": "23.1 Preamble",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>23</span>  <span class='chapter-title'>Sub-cellular analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-sub-cellular-analysis.html#preamble",
    "href": "pages/img-sub-cellular-analysis.html#preamble",
    "title": "23  Sub-cellular analysis",
    "section": "",
    "text": "23.1.1 Introduction\nSub-cellular analysis aims to identify intra-cellular compartmentalization of transcripts, e.g., in the nucleus vs cytoplasm of the cell. Sub-cellular data can capture real biology, and analysis of sub-cellular could help identify biological mechanisms involved in transcript localisation (Cassella and Ephrussi 2022). Variation in intra-cellular localisation of transcripts generates gene expression gradients within the cell that can affect biological processes, such as cell communication and post-transcriptional regulation.\n\n23.1.2 Data structure\nIn spatially-resolved transcriptomics (SRT), sub-cellular analysis can be performed with molecule-resolved data generated by imaging-based SRT technologies, such as MERFISH and Xenium, where targeted probes are used to capture specific transcripts and their locations. High-resolution sequencing-based SRT data, such as VisiumHD, have also been employed for sub-cellular analysis (Novoselsky et al. 2025).\nCell segmentation is required, prior to sub-cellular analysis, to generate cell boundaries within which the transcripts can be compartmentalized and assessed. MoleculeExperiment (Peters Couto et al. 2023) was built for storing transcript locations and cell boundaries, and is compatible with raw data generated by most existing molecule-resolved SRT technologies. It contains additional functions, such as countMolecules(), for conversion of molecule-resolved information to cell-level expression by counting transcripts within a cell boundary.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>23</span>  <span class='chapter-title'>Sub-cellular analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-sub-cellular-analysis.html#quantifying-cell-compartments",
    "href": "pages/img-sub-cellular-analysis.html#quantifying-cell-compartments",
    "title": "23  Sub-cellular analysis",
    "section": "\n23.2 Quantifying cell compartments",
    "text": "23.2 Quantifying cell compartments\n\n23.2.1 Nucleus versus cell\nMany molecule-resolved SRT technologies, such as MERFISH, SeqFISH, Stereo-seq, etc., provide nucleus and cell level data, generally using DAPI images to generate nuclear masks. These masks can be used to identify transcripts present in the nucleus vs cytoplasm of a cell, and the sub-cellular data can be used to ask a number of research questions. For example, the transport dynamics (from nucleus to cytoplasm) and localisation of transcripts within cells, the impact of sub-cellular localisation of transcripts on cell function, and comparison of sub-cellular location of transcripts between cells from different conditions.\n\n23.2.2 Bento\nBento (Mah et al. 2024) is a Python-based toolkit for sub-cellular analysis of molecule-resolved SRT data that takes transcript locations and boundaries (cell, nucleus, region of interest) as input and stores them in AnnData format for downstream analyses. Bento includes 3 main approaches for processing molecule-resolved data:\n\nIt generates spatial summary statistics for each gene-cell pair and feeds these into RNAforest model to predict transcript localisation pattern (cytoplasmic, nuclear, nuclear edge, cell edge, or none) in each cell.\nIt identifies transcript compartment (nucleus or cytoplasm) from nucleus and cell boundaries, generating a cell x gene x compartment tensor. RNAcoloc approach is then applied to use the tensor for assessing co-localisation of gene pairs in each compartment.\nIt generates RNAflux embeddings of local neighborhoods in each cell, which are used for unsupervised segmentation of sub-cellular domains.\n\n\n\n\n\n\n\n\nFigure 23.1: Bento approaches for sub-cellular analysis include: A, RNAforest; B, RNAcoloc; C, RNAflux.\n\n\n\n\nThese approaches supplement other downstream analyses, such as differential expression analysis between compartments or sub-cellular domains or enrichment analysis of these compartments/domains.\n\n23.2.3 SpatialFeatures\nSpatialFeatures is a R package that uses MoleculeExperiment to store transcript location and boundaries (cells, nuclei, and/or regions of interest), and perform sub-cellular and extra-cellular analyses. SpatialFeatures run involves 3 main steps:\n\nGenerate new sub-cellular (sub-concentric, sub-sector) and extra-cellular (super-concentric, super-sector) boundaries (loadBoundaries()).\n\n\n\n\n\n\n\n\nFigure 23.2: The boundary feature types in SpatialFeature can be sub-cellular (A, sub-concentric; B, sub-sector) or extra-cellular (C, super-concentric; D, super-sector)\n\n\n\n\n\nCalculate entropy-based metrics (EntropyMatrix()) for each cell across the boundary feature type.\nCombine these information into a SingleCellExperiment object (EntropySingleCellExperiment()) containing a cell x feature matrix assay for each boundary feature type (sub-concentric, sub-sector, super-concentric, super-sector).\n\nThese features can be used to cluster and identify cells with similar sub-cellular and/or extra-cellular expression patterns.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>23</span>  <span class='chapter-title'>Sub-cellular analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-sub-cellular-analysis.html#factor-modelling",
    "href": "pages/img-sub-cellular-analysis.html#factor-modelling",
    "title": "23  Sub-cellular analysis",
    "section": "\n23.3 Factor modelling",
    "text": "23.3 Factor modelling\n\n23.3.1 FISHFactor\nFISHFactor (Walter, Stegle, and Velten 2023) is another Python-based method for sub-cellular data analysis. It uses spatial Poisson point processes to model location of each transcript within each cell and spatially-aware Gaussian processes to identify sub-cellular localisation patterns.\n\n\n\n\n\n\n\nFigure 23.3: FISHFactor method overview.\n\n\n\n\nThis approach focuses on transcript sub-cellular patterns or domains, which can be investigated further to gain biological insights (Walter, Stegle, and Velten 2023).",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>23</span>  <span class='chapter-title'>Sub-cellular analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-sub-cellular-analysis.html#subcellular-clustering",
    "href": "pages/img-sub-cellular-analysis.html#subcellular-clustering",
    "title": "23  Sub-cellular analysis",
    "section": "\n23.4 Subcellular clustering",
    "text": "23.4 Subcellular clustering\n\n23.4.1 ClusterMap\nClusterMap (He et al. 2021) is a Python-based method capable of segmentation-free spatial clustering of transcripts to multiple scales, thereby identifying sub-cellular domains that might represent sub-cellular structures or cell bodies or cell-level clusters representing cell types and domains. It can also perform cell segmentation and sub-cellular compartmentalization using just transcript locations. Depending on the radius used to measure neighborhood size around a transcript, it can identify clusters at sub-cellular (sub-cellular domains/compartments), cell (cell types), or tissue (domain) level, and perform sub-cellular or cell segmentation.\n\n\n\n\n\n\n\nFigure 23.4: Overview (a) and workflow (b) of ClusterMap method.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>23</span>  <span class='chapter-title'>Sub-cellular analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-sub-cellular-analysis.html#testing-for-subcellular-localisation-and-co-localisation",
    "href": "pages/img-sub-cellular-analysis.html#testing-for-subcellular-localisation-and-co-localisation",
    "title": "23  Sub-cellular analysis",
    "section": "\n23.5 Testing for subcellular localisation and co-localisation",
    "text": "23.5 Testing for subcellular localisation and co-localisation\n\n23.5.1 CellSP\nCellSP (Aggarwal and Sinha 2025) is a Python-based workflow for identifying sub-cellular patterns of transcripts that can be further used to identify and characterize gene-cell modules. It provides tools for visualizing the gene-cell modules and examining their functional significance.\n\n\n\n\n\n\n\nFigure 23.5: Overview of CellSP applicability to sub-cellular data (a). CellSP identifies sub-cellular patterns (b) for gene-cell module discovery (b). It also provides tools for visualization of gene-cell modules (d).\n\n\n\n\nCellSP uses AnnData format for single cell and spatial transcriptomics analysis. Internally, CellSP uses other tools, such as MAGIC (Dijk et al. 2018) for denoising, Tangram (Biancalani et al. 2021) for imputation, InSTAnT (Kumar et al. 2024) for identifying gene-pair sub-cellular co-localisation patterns, and SPRAWL (Bierman et al. 2024) for identifying gene sub-cellular localisation patterns.\nCellSP outputs a set of gene-cell modules for each sub-cellular pattern type (peripheral, radial, punctate, central, co-localisation). A gene-cell module represents a set of genes or gene pairs that have the same sub-cellular pattern across the same set of cells. The statistical significance of grouping is estimated using a Bonferroni-based score. In each module, genes and cells are characterized using gene ontology (GO) enrichment tests and cell type composition (if available), respectively.\nSome statistical tests for gene(s) localisation/co-localisation that can be performed using CellSP include:\n\nTesting per cell - does a cell have significant sub-cellular localisation of a set of genes or gene-pairs?\nTesting across multiple cells - do cells belonging to a cell type/cluster have significant sub-cellular localisation of a gene or gene pair?\nTesting across multiple groups/samples - are specific genes differentially localized/co-localized in two cell types/clusters from one sample or a cell type/cluster from two different conditions?\n\n23.5.2 SpaGNN\nSpaGNN (Fang et al. 2023) is another Python-based pipeline for sub-cellular analyses, including:\n\nSub-cellular clustering of transcript locations into sub-cellular patches with high transcript density using Leiden graph clustering.\nSub-cellular patch analysis, where transcripts of each gene in each patch are summed to generate a patch x gene counts data. This is used to calculate Pearson’s correlation between genes across all patches, to identify gene pairs that often co-localize. The statistical significance of these correlation values can be assessed using a t-test.\nSub-cellular local neighborhoods are detected within a patch by identifying 9 nearest neighbors of each transcript in the patch. Further analysis involves summing transcript counts in the local neighborhoods and calculating Pearson’s correlation between genes. Through permutation analysis, a proximity score is calculated for each gene pair in the patch.\n\nDepending on availability of cell type data, additional questions can be asked. For example, how similar are the patch correlations between same/different cell types, or how consistent is the sub-cellular co-localisation of a gene pair in same/different cell types?",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>23</span>  <span class='chapter-title'>Sub-cellular analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-sub-cellular-analysis.html#considerations",
    "href": "pages/img-sub-cellular-analysis.html#considerations",
    "title": "23  Sub-cellular analysis",
    "section": "\n23.6 Considerations",
    "text": "23.6 Considerations\n\n23.6.1 2D versus 3D\nA majority of the molecule-resolved SRT data are 2D projections of 3D structures, such as cells, organelles, or even processes like RNA transport. A few imaging-based SRT technologies are capable of measuring tissue depth as z-axis, generating 3D coordinates with a sparse z-axis. However, working with 2D vs 3D data is not so different, since spatial relations are often captured as neighborhoods defined by Euclidean or other distance measures between locations, irrespective of coordinate dimension. Therefore, many tools are able to use n-dimension coordinates for measuring spatial relationships. For example, ClusterMap can use 3D coordinates by using z_radius for z-axis data, if its available, whereas for 2D coordinates it sets z_radius = 0 (He et al. 2021).",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>23</span>  <span class='chapter-title'>Sub-cellular analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-sub-cellular-analysis.html#references",
    "href": "pages/img-sub-cellular-analysis.html#references",
    "title": "23  Sub-cellular analysis",
    "section": "References",
    "text": "References\n\n\n\n\nAggarwal, Bhavay, and Saurabh Sinha. 2025. “CellSP: Module Discovery and Visualization for Subcellular Spatial Transcriptomics Data.” bioRxiv, January. https://doi.org/10.1101/2025.01.12.632553.\n\n\nBiancalani, Tommaso, Gabriele Scalia, Lorenzo Buffoni, Raghav Avasthi, Ziqing Lu, Aman Sanger, Neriman Tokcan, et al. 2021. “Deep Learning and Alignment of Spatially Resolved Single-Cell Transcriptomes with Tangram.” Nature Methods 18: 1352–62. https://doi.org/10.1038/s41592-021-01264-7.\n\n\nBierman, Rob, Jui M Dave, Daniel M Greif, and Julia Salzman. 2024. “Statistical Analysis Supports Pervasive RNA Subcellular Localization and Alternative 3’ UTR Regulation.” eLife 12 (December). https://doi.org/10.7554/elife.87517.\n\n\nCassella, Lucia, and Anne Ephrussi. 2022. “Subcellular Spatial Transcriptomics Identifies Three Mechanistically Different Classes of Localizing RNAs.” Nature Communications 13 (1). https://doi.org/10.1038/s41467-022-34004-2.\n\n\nDijk, David van, Roshan Sharma, Juozas Nainys, Kristina Yim, Pooja Kathail, Ambrose J. Carr, Cassandra Burdziak, et al. 2018. “Recovering Gene Interactions from Single-Cell Data Using Data Diffusion.” Cell 174 (3): 716–729.e27. https://doi.org/10.1016/j.cell.2018.05.061.\n\n\nFang, Zhou, Adam J. Ford, Thomas Hu, Nicholas Zhang, Athanasios Mantalaris, and Ahmet F. Coskun. 2023. “Subcellular Spatially Resolved Gene Neighborhood Networks in Single Cells.” Cell Reports Methods 3 (5): 100476. https://doi.org/10.1016/j.crmeth.2023.100476.\n\n\nHe, Yichun, Xin Tang, Jiahao Huang, Jingyi Ren, Haowen Zhou, Kevin Chen, Albert Liu, et al. 2021. “ClusterMap for Multi-Scale Clustering Analysis of Spatial Gene Expression.” Nature Communications 12 (1). https://doi.org/10.1038/s41467-021-26044-x.\n\n\nKumar, Anurendra, Alex W. Schrader, Bhavay Aggarwal, Ali Ebrahimpour Boroojeny, Marisa Asadian, JuYeon Lee, You Jin Song, Sihai Dave Zhao, Hee-Sun Han, and Saurabh Sinha. 2024. “Intracellular Spatial Transcriptomic Analysis Toolkit (InSTAnT).” Nature Communications 15 (1). https://doi.org/10.1038/s41467-024-49457-w.\n\n\nMah, Clarence K., Noorsher Ahmed, Nicole A. Lopez, Dylan C. Lam, Avery Pong, Alexander Monell, Colin Kern, et al. 2024. “Bento: A Toolkit for Subcellular Analysis of Spatial Transcriptomics Data.” Genome Biology 25 (1). https://doi.org/10.1186/s13059-024-03217-7.\n\n\nNovoselsky, Roy, Ofra Golani, Tal Barkai, Merav Kedmi, Inna Goliand, Michal Fine, Ilan Kent, Ido Nachmany, and Shalev Itzkovitz. 2025. “Subcellular mRNA Localization Patterns Across Tissues Resolved with Spatial Transcriptomics.” bioRxiv, September. https://doi.org/10.1101/2025.09.07.674688.\n\n\nPeters Couto, Bárbara Zita, Nicholas Robertson, Ellis Patrick, and Shila Ghazanfar. 2023. “MoleculeExperiment Enables Consistent Infrastructure for Molecule-Resolved Spatial Omics Data in Bioconductor.” Bioinformatics 39 (btad550, 9). https://doi.org/10.1093/bioinformatics/btad550.\n\n\nWalter, Florin C, Oliver Stegle, and Britta Velten. 2023. “FISHFactor: A Probabilistic Factor Model for Spatial Transcriptomics Data with Subcellular Resolution.” Edited by Christina Kendziorski. Bioinformatics 39 (5). https://doi.org/10.1093/bioinformatics/btad183.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>23</span>  <span class='chapter-title'>Sub-cellular analysis</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-xenium.html",
    "href": "pages/img-workflow-xenium.html",
    "title": "24  Workflow: Xenium",
    "section": "",
    "text": "24.1 Preamble",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>24</span>  <span class='chapter-title'>Workflow: Xenium</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-xenium.html#preamble",
    "href": "pages/img-workflow-xenium.html#preamble",
    "title": "24  Workflow: Xenium",
    "section": "",
    "text": "24.1.1 Introduction\nIn this demo, we will analyze a 313-plex Xenium dataset on human breast cancer tissue (Janesick et al. 2023). Following very basic quality control and preprocessing, we will perform both (non-spatial) unsupervised clustering as well as fully supervised label-transfer based on scRNA-seq reference data, and then compare the obtained cluster assignments to those provided by the authors.\n\n24.1.2 Dependencies\n\nCodelibrary(dplyr)\nlibrary(tidyr)\nlibrary(scran)\nlibrary(igraph)\nlibrary(scater)\nlibrary(scuttle)\nlibrary(SingleR)\nlibrary(ggplot2)\nlibrary(patchwork)\nlibrary(OSTA.data)\nlibrary(BayesSpace)\nlibrary(BiocParallel)\nlibrary(DropletUtils)\nlibrary(SpatialExperiment)\nlibrary(SpatialExperimentIO)\n# set parallelization\nbp &lt;- MulticoreParam(4)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(112358)\n\n\n\nCode# retrieve dataset from OSF repository\nid &lt;- \"Xenium_HumanColon_Oliveira\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n(spe &lt;- readXeniumSXE(td, addTx=FALSE))\n\n##  class: SpatialExperiment \n##  dim: 422 340837 \n##  metadata(3): experiment.xenium cell_boundaries nucleus_boundaries\n##  assays(1): counts\n##  rownames(422): ABCC8 ACP5 ... WFDC2 XCL2\n##  rowData names(3): ID Symbol Type\n##  colnames(340837): aaaadaba-1 aaaadgga-1 ... oikdmkkf-1 oikeebja-1\n##  colData names(10): cell_id transcript_counts ... nucleus_area\n##    sample_id\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(3): NegControlProbe UnassignedCodeword\n##    NegControlCodeword\n##  spatialCoords names(2) : x_centroid y_centroid\n##  imgData names(0):\n\n\n\nCode.plt_xy &lt;- \\(spe, col) {\n    df &lt;- data.frame(colData(spe), spatialCoords(spe))\n    aes &lt;- if (is.numeric(df[[col]])) {\n        theme(\n            legend.key.height=unit(1, \"lines\"), \n            legend.key.width=unit(0.5, \"lines\"))\n    } else {\n        list(\n            theme(legend.key.size=unit(0, \"lines\")),\n            guides(col=guide_legend(override.aes=list(alpha=1, size=2))))\n    }\n    ggplot(df, aes(x_centroid, y_centroid, col=.data[[col]])) +\n        coord_equal() + theme_void() + aes +\n        geom_point(stroke=0, size=1/3)\n}",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>24</span>  <span class='chapter-title'>Workflow: Xenium</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-xenium.html#quality-control",
    "href": "pages/img-workflow-xenium.html#quality-control",
    "title": "24  Workflow: Xenium",
    "section": "\n24.2 Quality control",
    "text": "24.2 Quality control\n\nCode# compute cell-level QC metrics\nspe &lt;- addPerCellQCMetrics(spe)\n# identify low-quality cells by thresholding on\n# median absolute deviation (MAD) from the median\nol &lt;- perCellQCFilters(spe)\n# tabulate # and % of cells discarded \n# due to few counts/detected features\ndata.frame(\n    check.names=FALSE,\n    `#`=apply(ol, 2, sum), \n    `%`=round(100*apply(ol, 2, mean), 2))\n\n##                     #    %\n##  low_lib_size    8374 2.46\n##  low_n_features 15313 4.49\n##  discard        15313 4.49\n\n\nBefore proceeding to exclude any cells from downstream analyses, let’s first visualize the cells deemed to be of low quality in space alongside the underlying quality control metrics (total counts and detected features):\n\nCodespe$ol &lt;- ol$discard\n.plt_xy(spe, \"sum\") +  \n    scale_color_viridis_c(\n        \"# counts\", \n        trans=\"log1p\",\n        breaks=range(spe$sum), \n        labels=c(\"low\", \"high\")) +\n.plt_xy(spe, \"detected\") +\n    scale_color_viridis_c(\n        \"# features\", \n        breaks=range(spe$detected), \n        labels=c(\"low\", \"high\")) +\n.plt_xy(spe[, order(spe$ol)], \"ol\") + \n    scale_color_manual(\n        \"low-quality\",\n        labels=c(\"no\", \"yes\"),\n        values=c(\"lavender\", \"purple\"))\n\n\n\n\n\n\n\n\nCode# discard low-quality cells\nncol(spe &lt;- spe[, !ol$discard])\n\n##  [1] 325524",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>24</span>  <span class='chapter-title'>Workflow: Xenium</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-xenium.html#processing",
    "href": "pages/img-workflow-xenium.html#processing",
    "title": "24  Workflow: Xenium",
    "section": "\n24.3 Processing",
    "text": "24.3 Processing\nFor the sake of runtime, we will perform downstream analyses only on a square crop of the tissue, defined by the following px coordinates:\n\nCodebox &lt;- list(xmin=2e3, xmax=5e3, ymin=1e3, ymax=4e3)\n\n\nCropping to this region, we retain fewer than 90,000 cells:\n\nCodexy &lt;- spatialCoords(spe)\ni &lt;- \n    xy[, 1] &gt; box$xmin &\n    xy[, 1] &lt; box$xmax &\n    xy[, 2] &gt; box$ymin &\n    xy[, 2] &lt; box$ymax \nncol(sub &lt;- spe[, i])\n\n##  [1] 88863\n\n\n\nCodedf &lt;- data.frame(xy, i)\np &lt;- ggplot(df, \n    aes(x_centroid, y_centroid)) +\n    coord_equal() + theme_void() + \n    theme(legend.position=\"none\")\np + geom_point(aes(col=i), stroke=0, size=0.1) |\np + geom_point(data=df[i, ], stroke=0, size=0.2)\n\n\n\n\n\n\n\nNext, we’ll log-normalize counts by area, and perform principal component analysis (PCA) on all 422 RNA targets:\n\nCode# cell area-based normalization\nsf &lt;- (. &lt;- sub$cell_area) / median(.)\nsub &lt;- logNormCounts(sub, size.factors=sf)\n# principal component analysis\nsub &lt;- runPCA(sub)\n\n\nLet’s visualize the expression of some genes in space; e.g., PIGR, IGHG3 and CEACAM6, which should mark epithelial, plasma and tumor cells, respectively:\n\nCodegs &lt;- c(\"PIGR\", \"IGHG3\", \"CEACAM6\")\nes &lt;- scale(logcounts(sub))\nes &lt;- t(as.matrix(es[gs, ]))\ncolData(sub) &lt;- cbind(colData(sub), es)\nps &lt;- lapply(gs, \\(.) .plt_xy(sub, .) + ggtitle(.))\nwrap_plots(ps, nrow=1) &\n    scale_color_gradientn(NULL, \n        labels=c(\"low\", \"high\"), \n        colors=rev(hcl.colors(9, \"PuRd\")),\n        limits=rng, breaks=rng &lt;- range(es)) & \n    theme(plot.title=element_text(hjust=0.5))",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>24</span>  <span class='chapter-title'>Workflow: Xenium</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-xenium.html#annotation",
    "href": "pages/img-workflow-xenium.html#annotation",
    "title": "24  Workflow: Xenium",
    "section": "\n24.4 Annotation",
    "text": "24.4 Annotation\n\n24.4.1 Unsupervised\n\nCode# shared nearest-neighbor (SNN) graph based on \n# cell-to-cell Jaccard similarity in PC space\ng &lt;- buildSNNGraph(sub, use.dimred=\"PCA\", type=\"jaccard\", BPPARAM=bp)\n# community detection using Leiden algorithm\nk &lt;- cluster_leiden(g, objective_function=\"modularity\", resolution=0.7)\ntable(sub$Leiden &lt;- factor(. &lt;- k$membership, labels=letters[seq_along(unique(.))]))\n\n##  \n##      a     b     c     d     e     f     g     h     i     j \n##   6963 12120  7391 10669 21188  4385  9697  9658  2917  3875\n\n\n\n24.4.2 Supervised\nFor comparison, we annotate the Xenium data using a label transfer approach, SingleR, which relies on labeled scRNA-seq data to compute references profiles and transfers labels based on the rank correlation between observed (here, Xenium) and reference (scRNA-seq) expression profiles.\nFirst, we retrieve a matching (Chromium) scRNA-seq dataset, which includes low- (Level1) and high-resolution (Level2) annotations of cells into 9 and 31 subpopulations, respectively:\n\nCode# retrieve dataset from OSF repository\nid &lt;- \"Chromium_HumanColon_Oliveira\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n# read into 'SingleCellExperiment'\nsce &lt;- read10xCounts(list.files(td, \"h5$\", full.names=TRUE))\ncd &lt;- read.csv(list.files(td, \"cell_meta\", full.names=TRUE))\ncolData(sce) &lt;- cbind(colData(sce), cd[, -1])\ntable(sce$Level1) # tabulate low-res. labels\nncol(sce) # overall number of cells\n\n##  \n##                B cells           Endothelial            Fibroblast \n##                  33611                  7969                 28653 \n##  Intestinal Epithelial               Myeloid              Neuronal \n##                  22763                 25105                  4199 \n##            QC_Filtered         Smooth Muscle               T cells \n##                  19103                 43308                 29272 \n##                  Tumor \n##                  65626 \n##  [1] 279609\n\n\n Here, we run SingleR using Level2 (high-resolution) annotations and with argument aggr.ref=TRUE, such that reference profiles will be aggregated (per cluster) prior to annotation. In this way, every Xenium cell will be assigned a label based on which pseudo-bulk scRNA-seq profile represents the best match.Note that we filter the reference data to contain only cells from the same patient. This is not strictly necessary, assuming that clusters are transcriptionally stable across patients, but is done here to reduce runtime.\n\nCode# exclude cells deemed to be of low-quality\nsce &lt;- sce[, sce$QCFilter == \"Keep\"]\n# subset cells from same patient\nsce &lt;- sce[, grepl(\"P2\", sce$Patient)]\n# realize count matrix\nassay(sce) &lt;- as(assay(sce), \"dgCMatrix\")\n# log-library size normalization\nsce &lt;- logNormCounts(sce)\n# restrict to Xenium targets\nsce &lt;- sce[rowData(sce)$ID %in% rowData(sub)$ID, ]\n# set gene symbols as feature names\nrownames(sce) &lt;- rowData(sce)$Symbol\n# perform label transfer at the single cell-level,\n# using pseudo-bulk Chromium profiles as reference\nres &lt;- SingleR(\n    test=sub, ref=sce, \n    labels=sce$Level2, \n    aggr.ref=TRUE, BPPARAM=bp)\n\n##  Detected a SingleCellExperiment as the reference dataset, consider setting\n##  'de.method = \"t\"' or \"wilcox\" in trainSingleR(). If you know better, this hint\n##  can be disabled with 'hint.sce=FALSE'.\n\n\n##  Warning in scrapper::clusterKmeans(pcs, k = cur.ncenters, num.threads =\n##  num.threads): convergence failure for k-means\n##  Warning in scrapper::clusterKmeans(pcs, k = cur.ncenters, num.threads =\n##  num.threads): convergence failure for k-means\n\nCodesub$Level2 &lt;- factor(res$pruned.labels)\n\n\nBased on these predictions, we can also propagate Level1 (low-resolution) annotations:\n\nCodeidx &lt;- match(sub$Level2, sce$Level2)\ntable(sub$Level1 &lt;- factor(sce$Level1[idx]))\n\n##  \n##                B cells           Endothelial            Fibroblast \n##                   6375                  4799                 10136 \n##  Intestinal Epithelial               Myeloid              Neuronal \n##                  11946                  7229                   418 \n##          Smooth Muscle               T cells                 Tumor \n##                   4405                  5040                 38113\n\n\nSimplifying further, we can group cells into different compartments, namely, (malignant) tumor, immune, epithelial and stromal cells; we’ll see below that visualizing cells in this way nicely captures the general tissue structure.\n\nCodelab &lt;- list(\n    tum=c(\"Tumor\"),\n    epi=c(\"Intestinal Epithelial\"),\n    imm=c(\"B cells\", \"T cells\", \"Myeloid\"),\n    str=c(\"Endothelial\", \"Fibroblast\", \"Smooth Muscle\"))\nidx &lt;- match(sub$Level1, unlist(lab))\nlab &lt;- rep.int(names(lab), sapply(lab, length))\ntable(sub$Level0 &lt;- factor(lab[idx]))\n\n##  \n##    epi   imm   str   tum \n##  11946 18644 19340 38113\n\n\n\n24.4.3 Comparison\nTabulating the cluster assignments between Leiden (unsupervised) and SingleR (supervised), we can observe overall high concordance; i.e., most clusters have a one-to-one mapping between both approaches. However, some subpopulations are split between clusters; e.g., cells labeled as cluster fibroblasts, endothelia and smooth muscle cells by SingleR tend to intermix in the Leiden clusters. This is not unexpected, given that these are all stromal subpopulations with comparatively similar transcriptional profiles. (Note that we are observing a mere fraction of the whole transcriptome with the Xenium panel employed here.)\n\nCode# contingency table & number of clusters\nround(100*prop.table(table(sub$Level1, sub$Leiden), 2), 1)\n\n##                         \n##                             a    b    c    d    e    f    g    h    i    j\n##    B cells                2.0  0.0 79.6  2.9  0.0  0.2  0.2  0.0  0.1  0.1\n##    Endothelial            1.1  0.0  1.5  5.3  0.0  0.6 41.1  0.0  0.0  1.0\n##    Fibroblast            10.9  0.1  5.9 16.1  0.0  1.4 53.0  0.4  0.1 51.5\n##    Intestinal Epithelial  0.5  0.1  0.3  1.4  0.1  0.8  0.0 91.8 97.8  0.0\n##    Myeloid                5.7  0.1  3.4 53.0  0.0 17.5  0.8  1.4  0.4  0.3\n##    Neuronal               0.1  0.0  0.3  1.4  0.0  0.2  0.1  2.1  0.1  0.3\n##    Smooth Muscle          3.7  0.0  2.6 15.3  0.0  0.9  3.9  1.0  0.7 46.5\n##    T cells               64.4  0.0  1.8  2.1  0.0  2.3  0.1  0.7  0.2  0.3\n##    Tumor                 11.6 99.7  4.7  2.5 99.9 75.9  0.8  2.5  0.5  0.0\n\nCodec(SingleR=nlevels(sub$Level1), Leiden=nlevels(sub$Leiden))\n\n##  SingleR  Leiden \n##        9      10\n\n\n\nCodelapply(c(\"Leiden\", \"Level0\", \"Level1\"), \\(.) {\n    pal &lt;- if (. == \"Level0\") {\n        c(\"gold\", \"cyan\", \"magenta\", \"black\")\n    } else {\n        hcl.colors(nlevels(sub[[.]]), \"Spectral\")\n    }\n    .plt_xy(sub, .) + scale_color_manual(values=pal) \n}) |&gt; wrap_plots()",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>24</span>  <span class='chapter-title'>Workflow: Xenium</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-xenium.html#downstream",
    "href": "pages/img-workflow-xenium.html#downstream",
    "title": "24  Workflow: Xenium",
    "section": "\n24.5 Downstream",
    "text": "24.5 Downstream\n\n24.5.1 Marker genes\nBelow, we test for differential expression between Level1 clusters, and visualize selected markers as a heatmap of (z-scaled) average expression. It’s comforting to see that we pick up on many classics, e.g., endothelia are marked by VWF and PECAM1, T cells by CD2 and TRAC, etc.\n\nCode# test for differential expression between clusters\nmgs &lt;- findMarkers(sub, groups=sub$Level1, direction=\"up\")\n# select top-ranked genes for every cluster\ntop &lt;- unique(unlist(lapply(mgs, \\(df) rownames(df)[df$Top &lt;= 3])))\nplotGroupedHeatmap(sub, \n    features=top, group=\"Level1\", \n    scale=TRUE, center=TRUE, fontsize=6)",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>24</span>  <span class='chapter-title'>Workflow: Xenium</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-xenium.html#appendix",
    "href": "pages/img-workflow-xenium.html#appendix",
    "title": "24  Workflow: Xenium",
    "section": "\n24.6 Appendix",
    "text": "24.6 Appendix\nReferences\n\n\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>24</span>  <span class='chapter-title'>Workflow: Xenium</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-cosmx.html",
    "href": "pages/img-workflow-cosmx.html",
    "title": "25  Workflow: CosMx",
    "section": "",
    "text": "25.1 Preamble",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>25</span>  <span class='chapter-title'>Workflow: CosMx</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-cosmx.html#preamble",
    "href": "pages/img-workflow-cosmx.html#preamble",
    "title": "25  Workflow: CosMx",
    "section": "",
    "text": "25.1.1 Introduction\nIn this demo, we will analyze a 1k-plex CosMx data (Bruker) of a mouse brain sample; see Chapter 6. Following quality control and preprocessing, we will perform cell type annotation, identification of marker genes, and cell-cell interaction analysis.\n\n25.1.2 Dependencies\n\nCodelibrary(DESpace)\nlibrary(ggplot2)\nlibrary(OSTA.data)\nlibrary(patchwork)\nlibrary(pheatmap)\nlibrary(scater)\nlibrary(scrapper)\nlibrary(scRNAseq)\nlibrary(sf)\nlibrary(SingleR)\nlibrary(SpaceTrooper)\nlibrary(SpatialExperiment)\nlibrary(SpatialExperimentIO)\nlibrary(spatialFDA)\nlibrary(SpatialFeatureExperiment)\nlibrary(spdep)\nlibrary(Voyager)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(112358)\n\n\n\nCode# retrieve CosMx dataset from OSF repo\nid &lt;- \"CosMx1k_MouseBrain2\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\ncos &lt;- readCosmxSXE(td, addTx=FALSE)\n# prepare data for 'SpaceTrooper'\ncos &lt;- updateCosmxSPE(cos, td, sampleName=\"CosMx\")\ncos &lt;- readAndAddPolygonsToSPE(cos)\ncos$in_tissue &lt;- TRUE\ncos\n\n##  class: SpatialExperiment \n##  dim: 950 48556 \n##  metadata(4): fov_positions fov_dim polygons technology\n##  assays(1): counts\n##  rownames(950): Chrna4 Slc6a1 ... Cck Aqp4\n##  rowData names(0):\n##  colnames(48556): f1_c1 f1_c10 ... f99_c98 f99_c99\n##  colData names(22): fov cellID ... polygons in_tissue\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(1): NegPrb\n##  spatialCoords names(2) : CenterX_global_px CenterY_global_px\n##  imgData names(1): sample_id",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>25</span>  <span class='chapter-title'>Workflow: CosMx</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-cosmx.html#quality-control",
    "href": "pages/img-workflow-cosmx.html#quality-control",
    "title": "25  Workflow: CosMx",
    "section": "\n25.2 Quality control",
    "text": "25.2 Quality control\nWe can have an overview of the data, by plotting the spatial distribution of the cells, represented by their centroids. This is useful to have a global bird’s-eye-view of the tissue.\n\nCodeplotCentroids(cos)\n\n\n\n\n\n\n\nUnlike, Xenium and MERSCOPE, CosMx does not stitch fields of view (FOVs) in a single image, but rather treats each FOV independently. It is therefore useful to visualize a map of the FOVs to understand their spatial arrangement.\n\nCodeplotCellsFovs(cos)\n\n\n\n\n\n\n\nChapter 19 gives a thorough overview of quality control steps for imaging-based spatial transcriptomics data, including CosMX-specific metrics. Here, we will simply compute SpaceTrooper’s aggregated QC score and keep the cells that pass the threshold.\n\nCodelys &lt;- c(\"NegPrb\", \"Negative\", \"SystemControl\")\ncos &lt;- spatialPerCellQC(cos, rmZeros=TRUE, negProbList=lys)\ncos &lt;- computeQCScore(cos)\nplotCentroids(cos, colourBy=\"QC_score\")\n\n\n\n\n\n\n\n\nCodecos &lt;- computeQCScoreFlags(cos, qsThreshold=0.5)\nplotCentroids(cos, colourBy=\"low_qcscore\") + \n    theme(legend.key.size=rel(0)) +\n    guides(col=guide_legend(override.aes=list(size=2)))\n\n\n\n\n\n\nCodecos &lt;- cos[, !cos$low_qcscore]",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>25</span>  <span class='chapter-title'>Workflow: CosMx</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-cosmx.html#processing",
    "href": "pages/img-workflow-cosmx.html#processing",
    "title": "25  Workflow: CosMx",
    "section": "\n25.3 Processing",
    "text": "25.3 Processing\nFor the sake of runtime, we will perform downstream analyses only on a small portion of the tissue, defined by the following FOVs:\n\nCodefs &lt;- c(72:74, 90:92, 97:99, 114:116)\nplotZoomFovsMap(cos, fovs=fs)\n\n\n\n\n\n\nCodesub &lt;- cos[, cos$fov %in% fs]\n\n\nNext, we’ll log-normalize counts by area, and perform principal component analysis (PCA) on all 950 RNA targets: See Chapter 26 for more details on normalization.\n\nCode# cell area-based normalization\nsf &lt;- (. &lt;- sub$Area) / median(.)\nsub &lt;- logNormCounts(sub, size.factors=sf)\n# principal component analysis\nsub &lt;- runPCA(sub)\n\n\nLet’s visualize the expression of the first two principal components (PCs) in the spatial context.\n\nCode# add PCs as cell metadata\npcs &lt;- reducedDim(sub, \"PCA\")\ncolData(sub) &lt;- cbind(colData(sub), pcs)\n# visualize PCs 1 & 2 in space\nplotCentroids(sub, colourBy=\"PC1\") +\nplotCentroids(sub, colourBy=\"PC2\")",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>25</span>  <span class='chapter-title'>Workflow: CosMx</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-cosmx.html#annotation",
    "href": "pages/img-workflow-cosmx.html#annotation",
    "title": "25  Workflow: CosMx",
    "section": "\n25.4 Annotation",
    "text": "25.4 Annotation\nHere, we use the Zeisel et al. (2015) dataset as a reference to annotate the cell types with SingleR.\n\nCodesceZ &lt;- ZeiselBrainData()\nsceZ &lt;- logNormCounts(sceZ)\n\n\n\nCodepred &lt;- SingleR(test=sub, ref=sceZ, labels=sceZ$level1class, de.method=\"wilcox\")\n\n##  Detected a large SingleCellExperiment as the reference dataset, consider\n##  setting 'aggr.ref = TRUE' for speed in trainSingleR(). If you know better, this\n##  hint can be disabled with 'hint.sce=FALSE'.\n\nCodesub$SingleR_label &lt;- factor(pred$pruned.labels)\n\nnk &lt;- nlevels(sub$SingleR_label)\npal &lt;- hcl.colors(nk, \"Spectral\")\n\nplotPolygons(sub, \n    colourBy=\"SingleR_label\") +\n    scale_fill_manual(values=pal)\n\n\n\n\n\n\n\nNote that the annotation performed here is a transfer label from a reference dataset that only partially matches with the tissue under study and purposely annotated at a coarse level (level 1). Ideally, one can use a more appropriate reference dataset, or better yet, build a custom reference from single-cell RNA-seq data of the same tissue.\n\n\nA different, often preferable, approach consists in using, in addition to the gene expression profiles, the image data and the spatial context of the cells. InSituType (Danaher et al. 2022) provides a framework to perform such analysis in unsupervised, semi-supervised, or supervised manners. Please refer to its documentation for more details.\n\n25.4.1 Marker genes\nHere, we identify cluster-related spatially-variable genes using the DESpace package (Cai, Robinson, and Tiberi 2024). In this workflow, we use this as a way to identify marker genes for the cell types annotated above.\n\nCoderes &lt;- svg_test(spe=sub, cluster_col=\"SingleR_label\")\nhead(res$gene_results)\n\n##          gene_id       LR   logCPM PValue FDR\n##  Itm2a     Itm2a 2596.761 11.03859      0   0\n##  Flt1       Flt1 2601.543 11.05386      0   0\n##  Cldn5     Cldn5 2825.269 11.11885      0   0\n##  Gja1       Gja1 4982.193 11.29054      0   0\n##  Gpr37l1 Gpr37l1 4989.928 11.30344      0   0\n##  Bcan       Bcan 3567.078 11.61163      0   0\n\n\nWe focus on the genes with the smallest p-values, and compute the average expression of each gene in each cell type. We can visualize this with a heatmap.\n\nCodedf &lt;- res$gene_results\ngs &lt;- df$gene_id[rank(df$PValue, ties.method=\"min\") == 1]\nmu &lt;- t(apply(counts(sub)[gs, ], 1, tapply, sub$SingleR_label, mean))\n\npheatmap(t(mu), \n    scale=\"column\", show_colnames=FALSE,\n    cluster_rows=TRUE, cluster_cols=TRUE, \n    main=\"Average expression of top SVGs per cell type\")\n\n\n\n\n\n\n\nWe can also visualize the spatial distribution of some of these genes, e.g., Mbp that marks oligodendrocytes, and Calm1, Calm2, and Snap25 that mark different subsets of neurons. Note also how some genes show a difference of expression within the pyramidal neuron population, suggesting the presence of subtypes.\n\nCodegs &lt;- c(\"Mbp\", \"Calm1\", \"Calm2\", \"Snap25\")\nps &lt;- lapply(gs, \\(g) {\n    sub[[g]] &lt;- logcounts(sub)[g, ]\n    plotPolygons(sub, colourBy=g) + ggtitle(g)\n}) \ndy &lt;- range(logcounts(sub)[gs, ])\nwrap_plots(ps, guides=\"collect\") &\n    scale_fill_viridis_c(\n        \"expression\", \n        limits=dy, breaks=dy,\n        labels=c(\"low\", \"high\")) &\n    theme(plot.title=element_text(hjust=0.5))",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>25</span>  <span class='chapter-title'>Workflow: CosMx</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-cosmx.html#neighborhood-based-gene-expression-analyses",
    "href": "pages/img-workflow-cosmx.html#neighborhood-based-gene-expression-analyses",
    "title": "25  Workflow: CosMx",
    "section": "\n25.5 Neighborhood-based gene expression analyses",
    "text": "25.5 Neighborhood-based gene expression analyses\nWe start by creating a cell neighborhood graph, based on a distance threshold of 50 microns. To do so, we use the SpatialFeatureExperiment package (Moses et al. 2023).\n\n\nNote that an alternative approach uses the \\(k\\) nearest neighbors (kNN) method to define the neighborhood graph. Here, we prefer to use a distance-based approach, as it better captures the morphological structure of this tissue area.\n\nCode# convert to SFE & remove cells with NA labels\nsfe &lt;- as(sub, \"SpatialFeatureExperiment\")\nsfe &lt;- sfe[, !is.na(sfe$SingleR_label)]\n\n# this is needed for Voyager's plotting functions\ncolnames(sfe$polygons)[6] &lt;- \"geometry\"\nst_geometry(sfe$polygons) &lt;- \"geometry\"\ncolGeometry(sfe, \"cellSeg\") &lt;- sfe$polygons\n\ncolGraph(sfe, \"poly2nb\") &lt;- \n    findSpatialNeighbors(sfe,\n        type=\"cellSeg\", \n        method=\"poly2nb\", \n        style=\"W\", snap=50)\n\nplotColGraph(sfe, \n    colGraphName=\"poly2nb\", \n    colGeometryName=\"cellSeg\") + \n    theme_void()\n\n\n\n\n\n\n\nGiven the neighborhood graph, we can calculate local measures of spatial autocorrelation for specific genes in the dataset.\nHere, we focus on Snap25 and Calm1, neuronal marker genes identified above that show interesting spatial expression distributions (see above). First, we compute the local Moran’s I coefficient.\n\nCodegs &lt;- c(\"Snap25\", \"Calm1\")\nsfe &lt;- runUnivariate(sfe,\n    features=gs,\n    type=\"localmoran\",\n    zero.policy=TRUE,\n    colGraphName=\"poly2nb\",\n    colGeometryName=\"cellSeg\")\n\nplotLocalResult(sfe, \n    name=\"localmoran\",\n    features=gs, ncol=2,\n    colGeometryName=\"cellSeg\",\n    divergent=TRUE, diverge_center=0)\n\n\n\n\n\n\n\nFrom the plots, we can see that Snap25 shows positive spatial autocorrelation in a very localized part of the tissue, while Calm1 shows a more diffuse autocorrelation structure.\nWe focus on Snap25 and visualize its autocorrelation structure using a Moran scatter plot, which shows the relationship between the expression of the gene in each cell and the average expression in its neighbors.\n\nCodesfe &lt;- runUnivariate(sfe,\n    feature=gs[1],\n    zero.policy=TRUE,\n    type=\"moran.plot\",\n    colGraphName=\"poly2nb\",\n    colGeometryName=\"cellSeg\")\n\nmoranPlot(sfe,\n    feature=gs[1],\n    graphName=\"poly2nb\",\n    swap_rownames=\"symbol\")\n\n\n\n\n\n\n\nWe can then classify cells based on the significance of their local Moran’s I values, and visualize the resulting clusters in the spatial context.\n\nCoderes &lt;- localResults(sfe)[[\"localmoran\"]][[1]]\nres$locClust &lt;- with(res, ifelse(\n    `-log10p_adj` &gt; -log10(0.05), \n    as.character(mean), \"non-siginificant\"))\nlocalResults(sfe)[[\"localmoran\"]][[1]] &lt;- res\n\nplotLocalResult(sfe,\n    features=gs[1],\n    name=\"localmoran\",\n    attribute=\"locClust\",\n    colGeometryName=\"cellSeg\")\n\n\n\n\n\n\n\nIn this case, we can see a significant positive autocorrelation in the lower left part of the structure, while the rest of the tissue does not show significant autocorrelation.\n\n\nNote that other local spatial autocorrelation measures, such as Geary’s C coefficient and Getis-Ord statistic, as well as their global versions can be used for similar analyses Moses et al. (2023).",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>25</span>  <span class='chapter-title'>Workflow: CosMx</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-cosmx.html#cell-cell-interactions",
    "href": "pages/img-workflow-cosmx.html#cell-cell-interactions",
    "title": "25  Workflow: CosMx",
    "section": "\n25.6 Cell-cell interactions",
    "text": "25.6 Cell-cell interactions\n\n25.6.1 Joint counts\nWe can also use the neighborhood graph to investigate cell-cell interactions between different cell types annotated above. Here, we use the join count statistic implemented in the spdep package to quantify the tendency of cells of different types to be neighbors.\n\nCodejc &lt;- joincount.multi(sfe$SingleR_label, colGraph(sfe, \"poly2nb\"), zero.policy=TRUE)\nhead(jc[order(abs(jc[, \"z-value\"]), decreasing=TRUE), ])\n\n##                                      Joincount   Expected  Variance   z-value\n##  Jtot                               1132.15707 2494.52543 265.87369 -83.55200\n##  pyramidal CA1:pyramidal CA1         735.66944  351.21205  62.92504  48.46592\n##  pyramidal CA1:oligodendrocytes       22.39901  303.28546  75.62290 -32.30012\n##  oligodendrocytes:oligodendrocytes   196.71667   65.35907  19.34973  29.86192\n##  pyramidal CA1:astrocytes_ependymal   97.55301  379.29404  92.67327 -29.26664\n##  pyramidal SS:pyramidal CA1          195.38757  445.19310 106.83889 -24.16781\n\n\nWe can see that there is a strong tendency for cells of the same type to be neighbors (high positive z-values). There are also some interesting negative interactions between different cell types: e.g., pyramidal CA1 tend to be away from oligodendrocytes and astrocytes. This highlights the compartimentalized structure of the brain tissue.\n\n25.6.2 Point-pattern analysis\nA similar result can be obtained using point-pattern analysis, such as Ripley’s K function, and similar methods, using for instance the spatialFDA package.\nHere, we use Besag’s L function to quantify the interaction between pyramidal CA1 neurons, and the interaction between them and oligodendrocytes (cross-L function).\n\n\nOther methods are available, such as Ripley’s K function, and the pair correlation function (Emons et al. 2025). Note that here we are making the quite strong assuption of homogeneity of the point pattern, which is irrealistic in tissue biology. In particular, CSR is a naïve null model that does not take into account tissue structure and cell density variations across the tissue. Hence, these plots should be considered as exploratory analyses rather than formal hypothesis tests.\n\nCoderes &lt;- calcMetricPerFov(\n    spe=sub, fun=\"Lest\",\n    subsetby=\"sample_id\", \n    marks=\"SingleR_label\",\n    selection=\"pyramidal CA1\",\n    rSeq=seq(0, 500, l=100),\n    by=\"sample_id\", ncores=1)\n\nplotMetricPerFov(res, \n    theo=TRUE, correction=\"iso\", \n    x=\"r\", imageId=\"sample_id\")\n\n\n\n\n\n\n\nIn this type of plots, the dashed line represents the theoretical value of the metric under complete spatial randomness (CSR). Values above this line indicate clustering, while values below indicate dispersion. Here, we can see that pyramidal CA1 neurons tend to cluster together, as expected.\n\n\nNote that the L-function lays below the CSR line for the first 50 microns, which is a consequence of the cell segmentation that does not allow cells to overlap, indicating the impossibility of finding two cells at a distance smaller than their size.\nWhile in the plot above we focused on a single cell type, we can also investigate the interaction between two different cell types, e.g., pyramidal CA1 neurons and oligodendrocytes, using the cross-L function.\n\nCoderes &lt;- calcMetricPerFov(\n    spe=sub, fun=\"Lcross\", \n    subsetby=\"sample_id\", \n    marks=\"SingleR_label\",\n    selection=c(\"pyramidal CA1\", \"oligodendrocytes\"),\n    rSeq=seq(0, 500, l=100),\n    by=\"sample_id\", ncores=1)\n\nplotMetricPerFov(res, \n    theo=TRUE, correction=\"iso\", \n    x=\"r\", imageId=\"sample_id\")\n\n\n\n\n\n\n\nIn this case, we can see that pyramidal CA1 neurons and oligodendrocytes tend to be spatially segregated, as indicated by the cross-L function being below the CSR line.\nWe only briefly discussed cell-cell interactions and spatial exploratory analyses here: we refer interested readers to the comprehensive documentation and tutorials available at the pasta and Voyager websites.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>25</span>  <span class='chapter-title'>Workflow: CosMx</span>"
    ]
  },
  {
    "objectID": "pages/img-workflow-cosmx.html#appendix",
    "href": "pages/img-workflow-cosmx.html#appendix",
    "title": "25  Workflow: CosMx",
    "section": "\n25.7 Appendix",
    "text": "25.7 Appendix\nReferences\n\n\n\n\nCai, Peiying, Mark D Robinson, and Simone Tiberi. 2024. “DESpace: Spatially Variable Gene Detection via Differential Expression Testing of Spatial Clusters.” Bioinformatics 40 (btae027, 2). https://doi.org/10.1093/bioinformatics/btae027.\n\n\nDanaher, Patrick, Edward Zhao, Zhi Yang, David Ross, Mark Gregory, Zach Reitz, Tae K Kim, et al. 2022. “Insitutype: Likelihood-Based Cell Typing for Single Cell Spatial Transcriptomics.” BioRxiv, 2022–10.\n\n\nEmons, Martin, Samuel Gunz, Helena L. Crowell, Izaskun Mallona, Reinhard Furrer, and Mark D. Robinson. 2025. “Harnessing the Potential of Spatial Statistics for Spatial Omics Data with Pasta.” Nucleic Acids Research 53 (17): gkaf870. https://doi.org/10.1038/s41467-022-28020-5.\n\n\nMoses, Lambda, Pétur Helgi Einarsson, Kayla Jackson, Laura Luebbert, A. Sina Booeshaghi, Sindri Antonsson, Nicolas Bray, Páll Melsted, and Lior Pachter. 2023. “Voyager: Exploratory Single-Cell Genomics Data Analysis with Geospatial Statistics.” bioRxiv. https://doi.org/10.1101/2023.07.20.549945.\n\n\nZeisel, Amit, Ana B Muñoz-Manchado, Simone Codeluppi, Peter Lönnerberg, Gioele La Manno, Anna Juréus, Sueli Marques, et al. 2015. “Cell Types in the Mouse Cortex and Hippocampus Revealed by Single-Cell RNA-Seq.” Science 347 (6226): 1138–42.",
    "crumbs": [
      "Imaging-based platforms",
      "<span class='chapter-number'>25</span>  <span class='chapter-title'>Workflow: CosMx</span>"
    ]
  },
  {
    "objectID": "pages/ind-normalization.html",
    "href": "pages/ind-normalization.html",
    "title": "26  Normalization",
    "section": "",
    "text": "26.1 Preamble",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>26</span>  <span class='chapter-title'>Normalization</span>"
    ]
  },
  {
    "objectID": "pages/ind-normalization.html#preamble",
    "href": "pages/ind-normalization.html#preamble",
    "title": "26  Normalization",
    "section": "",
    "text": "26.1.1 Introduction\nNormalization is a critical step in the analysis of transcriptomics and other high-throughput biological data, aiming to remove technical variability while preserving true biological signals.\nIn single-cell RNA sequencing, normalization aims at removing differences in sequencing coverage between libraries (cells). Such differences in library size are typically accounted for by scaling the counts in each cell by a size factor, which is often computed as the total number of counts for that cell (or a robust variant thereof); see OSCA.\nSingle-cell normalization methods have been widely used for the analysis of spatial transcriptomics (ST) data, given the similarity between the two technologies, which both yield count data. While this is justifiable for sequencing-based ST technologies, it is less clear that this is appropriate for imaging-based ones.\nIn fact, in imaging-based ST, the total number of counts is driven by the number of probes that successfully hybridize to their target transcripts within each cell and not by the sequencing coverage. It is hence less clear that this leads to the same compositional biases as in sequencing platforms. Moreover, these technologies often employ targeted gene panels rather than whole-transcriptome profiling, which may lead to confounding between total counts and biology, as shown by Atta et al. (2024) and Bhuva et al. (2024).\nHere, we will review both scaling normalization methods and spatially-aware normalization methods that have been specifically developed for ST data.\n\n26.1.2 Dependencies\n\nCodelibrary(scater)\nlibrary(ggplot2)\nlibrary(patchwork)\nlibrary(OSTA.data)\nlibrary(SpatialExperiment)\n# load data from preceding \n# chapter (post quality control)\n(spe &lt;- readRDS(\"img-spe_qc.rds\"))\n\n##  class: SpatialExperiment \n##  dim: 313 140268 \n##  metadata(0):\n##  assays(1): counts\n##  rownames(313): ABCC11 ACTA2 ... ZEB2 ZNF562\n##  rowData names(3): ID Symbol Type\n##  colnames(140268): 2 3 ... 167779 167780\n##  colData names(12): cell_id transcript_counts ... detected total\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : x_centroid y_centroid\n##  imgData names(1): sample_id\n\n\n\nCode# get annotations from 'BiocFileCache'\n# (data has been retrieved already)\nid &lt;- \"Xenium_HumanBreast1_Janesick\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, \"annotation.csv\", exdir=td)\ndf &lt;- read.csv(list.files(td, full.names=TRUE))\n# add annotations as cell metadata\ncs &lt;- match(spe$cell_id, df$Barcode)\nspe$Label &lt;- df$Annotation[cs]",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>26</span>  <span class='chapter-title'>Normalization</span>"
    ]
  },
  {
    "objectID": "pages/ind-normalization.html#scaling-normalization",
    "href": "pages/ind-normalization.html#scaling-normalization",
    "title": "26  Normalization",
    "section": "\n26.2 Scaling normalization",
    "text": "26.2 Scaling normalization\nAs a baseline, we will apply log-library size normalization, as implemented in the scater package (McCarthy et al. 2017). Note that the logNormCounts function adds a new assay named logcounts to the spe object, which contains the normalized expression values on the log scale.\n\nCodespe$library_size &lt;- librarySizeFactors(spe)\nspe &lt;- logNormCounts(spe, size.factors=spe$library_size)\nassayNames(spe)\n\n##  [1] \"counts\"    \"logcounts\"\n\n\nAn alternative that has been suggested is normalization by cell area (or volume). In principle, this is equivalent to assuming a constant transcription rate across cells and focusing on transcript density, rather than transcript counts, as a measure of gene expression.\nNevertheless, it is important to highlight that cell area itself is not known a priori, but rather estimated through segmentation algorithms that may introduce errors, which can impact the final results.\nTo compute area-derived size factors, we can use the cell_area column in the colData of the spe object, which contains the area of each cell as estimated by the segmentation.\n\nCodesizeFactors(spe) &lt;- spe$cell_area / median(spe$cell_area)\nspe &lt;- logNormCounts(spe, name=\"normalized_by_area\")\n\n\nWe can check the distribution of library and area-derived size factors across cell types, to highlight any potential confounding:\n\nCodedf &lt;- data.frame(colData(spe), spatialCoords(spe))\np1 &lt;- ggplot(df, aes(y=library_size)) + ggtitle(\"Library size factors\") \np2 &lt;- ggplot(df, aes(y=sizeFactor)) + ggtitle(\"Area-derived factors\") \n(p1 + p2) &\n    geom_boxplot(aes(Label, fill=Label)) &\n    labs(x=\"Cell type\", y=\"Size factor\") &\n    scale_fill_manual(values=unname(pals::tableau20())) &\n    theme_bw() & theme(\n        aspect.ratio=1,\n        legend.position=\"none\",\n        panel.grid.minor=element_blank(),\n        plot.title=element_text(hjust=0.5),\n        axis.text.x=element_text(angle=45, hjust=1))\n\n\n\n\n\n\n\nWe can clearly see that library size factors of tumor cells are systematically higher than those of other cell types, which is a sign of confounding between library size and biology.\nWe can also compare the area-derived scaling factors with the library size factors:\n\nCodeggplot(df, aes(sizeFactor, library_size)) + \n    geom_point(shape=16, stroke=0, size=0.4) +\n    geom_abline(linewidth=0.4, col=\"blue\") + \n    facet_wrap(~Label) +\n    labs(x=\"Area-derived factor\", y=\"Library size factor\") + \n    ggtitle(\"Relation between area-derived and library size factors\") +\n    coord_equal() + theme_bw() + theme(\n        panel.grid.minor=element_blank(),\n        plot.title=element_text(hjust=0.5))\n\n\n\n\n\n\n\nWhile there is a general correlation between total counts and cell area, the relationship is cell-type specific, with tumor cells showing systematically higher counts for a given area, and stromal cells showing generally larger areas.\nThis suggests that the choice of normalization may have a significant impact on downstream analyses, and should be carefully considered in the context of the specific dataset and biological questions at hand.\nWe next look at the difference in normalized expression values between the two normalization methods, and select the top 10 genes that show the largest differences.\n\nCodemean_libs &lt;- rowMeans(assays(spe)$logcounts)\nmean_area &lt;- rowMeans(assays(spe)$normalized_by_area)\ndiff &lt;- abs(mean_libs - mean_area)\nord &lt;- order(diff, decreasing=TRUE)\ntop_diff &lt;- diff[ord[1:10]]\nnames(top_diff)\n\n##   [1] \"EPCAM\"   \"KRT8\"    \"TACSTD2\" \"KRT7\"    \"GATA3\"   \"CD9\"     \"MLPH\"   \n##   [8] \"FASN\"    \"CDH1\"    \"FOXA1\"\n\n\nBy looking at the top genes, we can see several epithelial cell markers, such as EPCAM, KRT8, and KRT7.\nInterestingly, looking at the expression of EPCAM across the tissue, we can see that area normalization enhances the contrast between tumor and non-tumor regions, while library size normalization yields a more diffuse expression pattern.\n\nCodecd &lt;- data.frame(colData(spe), spatialCoords(spe))\n\nmx &lt;- logcounts(spe)[ord[1:10], ]\ndf_ls &lt;- cbind(cd, as.matrix(t(mx)))\n\nmx &lt;- assay(spe, \"normalized_by_area\")[ord[1:10], ]\ndf_area &lt;- cbind(cd, as.matrix(t(mx)))\n\np1 &lt;- ggplot(df_ls) + labs(title=\"Library size normalization\")\np2 &lt;- ggplot(df_area) + labs(title=\"Area normalization\") \n\n(p1 + p2) & \n    geom_point(\n        aes(x_centroid, y_centroid, col=EPCAM), \n        shape=16, stroke=0, size=0.4) &\n    scale_color_viridis_c() & coord_equal() & \n    theme_void() & theme(legend.position=\"bottom\")\n\n\n\n\n\n\n\nThis is even clearer when looking at the expression of EPCAM stratified by cell type.\n\nCode(p1 + p2) &\n    geom_boxplot(\n        aes(Label, EPCAM, fill=Label), \n        outlier.shape=16, outlier.stroke=0) &\n    scale_fill_manual(values=unname(pals::tableau20())) &\n    labs(x=\"Cell type\", y=\"EPCAM expression\") &\n    theme_bw() & theme(\n        aspect.ratio=1,\n        legend.position=\"none\",\n        panel.grid.minor=element_blank(),\n        plot.title=element_text(hjust=0.5),\n        axis.text.x=element_text(angle=45, hjust=1))",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>26</span>  <span class='chapter-title'>Normalization</span>"
    ]
  },
  {
    "objectID": "pages/ind-normalization.html#spatially-aware-normalization",
    "href": "pages/ind-normalization.html#spatially-aware-normalization",
    "title": "26  Normalization",
    "section": "\n26.3 Spatially-aware normalization",
    "text": "26.3 Spatially-aware normalization\nSpaNorm (Salim et al. 2025) is a spatially-aware normalization method that uses spatial information alongside gene expression to decompose spatially-smoothed variation into a technical and biological component. Using generalized linear models and percentile-invariant adjusted counts, SpaNorm provides normalized expression values for downstream analyses. Given the high computational cost of SpaNorm, we do not run it here; we refer to the package vignette for details.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>26</span>  <span class='chapter-title'>Normalization</span>"
    ]
  },
  {
    "objectID": "pages/ind-normalization.html#appendix",
    "href": "pages/ind-normalization.html#appendix",
    "title": "26  Normalization",
    "section": "\n26.4 Appendix",
    "text": "26.4 Appendix\nReferences\n\n\n\n\nAtta, Lyla, Kalen Clifton, Manjari Anant, Gohta Aihara, and Jean Fan. 2024. “Gene Count Normalization in Single-Cell Imaging-Based Spatially Resolved Transcriptomics.” Genome Biology 25 (153). https://doi.org/10.1186/s13059-024-03303-w.\n\n\nBhuva, Dharmesh D., Chin Wee Tan, Agus Salim, Claire Marceaux, Marie A. Pickering, Jinjin Chen, Malvika Kharbanda, et al. 2024. “Library Size Confounds Biology in Spatial Transcriptomics Data.” Genome Biology 25 (99). https://doi.org/10.1186/s13059-024-03241-7.\n\n\nMcCarthy, Davis J, Kieran R Campbell, Aaron T L Lun, and Quin F Wills. 2017. “Scater: Pre-Processing, Quality Control, Normalization and Visualization of Single-Cell RNA-Seq Data in r.” Bioinformatics 33: 1179–86. https://doi.org/10.1093/bioinformatics/btw777.\n\n\nSalim, Agus, Dharmesh D. Bhuva, Carissa Chen, Chin Wee Tan, Pengyi Yang, Melissa J. Davis, and Jean Y. H. Yang. 2025. “SpaNorm: Spatially-Aware Normalization for Spatial Transcriptomics Data.” Genome Biology 26 (109). https://doi.org/10.1186/s13059-025-03565-y.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>26</span>  <span class='chapter-title'>Normalization</span>"
    ]
  },
  {
    "objectID": "pages/ind-dimensionality-reduction.html",
    "href": "pages/ind-dimensionality-reduction.html",
    "title": "27  Dimensionality reduction",
    "section": "",
    "text": "27.1 Preamble",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>27</span>  <span class='chapter-title'>Dimensionality reduction</span>"
    ]
  },
  {
    "objectID": "pages/ind-dimensionality-reduction.html#preamble",
    "href": "pages/ind-dimensionality-reduction.html#preamble",
    "title": "27  Dimensionality reduction",
    "section": "",
    "text": "27.1.1 Introduction\nIn single-cell omics data analysis, dimensionality reduction (DR) techniques are often categorized as linear (e.g., multi-dimensional scaling (MDS), linear discriminant analysis (LDA), principal component analysis (PCA)), or non-linear (e.g., t-distributed stochastic neighbor embedding (t-SNE), uniform manifold approximation and projection (UMAP)); see OSCA.\nIn the context of ST data, we would instead like to distinguish between spatially aware and non-spatial methods, i.e., whether or not DR incorporates physical locations or is based on molecular profiles only. Spatially aware DR may be used as input for standard single-cell clustering approaches (say, SNN-graph based Leiden), while non-spatial DR may be used for spatially aware clustering. While these approach may differ in methodological detail, they are arguably similar conceptually. We will try and demonstrate as much here.\n\n27.1.2 Dependencies\n\nCodelibrary(dplyr)\nlibrary(Banksy)\nlibrary(scater)\nlibrary(ggplot2)\nlibrary(OSTA.data)\nlibrary(patchwork)\nlibrary(SpatialExperiment)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(20000229)\n# load Xenium data post quality control\nspe &lt;- readRDS(\"img-spe_qc.rds\")\n\n\n\nCode# get annotations from 'BiocFileCache'\n# (data has been retrieved already)\nid &lt;- \"Xenium_HumanBreast1_Janesick\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, \"annotation.csv\", exdir=td)\ndf &lt;- read.csv(list.files(td, full.names=TRUE))\n# add annotations as cell metadata\ncs &lt;- match(spe$cell_id, df$Barcode)\nspe$Label &lt;- df$Annotation[cs]",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>27</span>  <span class='chapter-title'>Dimensionality reduction</span>"
    ]
  },
  {
    "objectID": "pages/ind-dimensionality-reduction.html#principal-component-analysis-pca",
    "href": "pages/ind-dimensionality-reduction.html#principal-component-analysis-pca",
    "title": "27  Dimensionality reduction",
    "section": "\n27.2 Principal component analysis (PCA)",
    "text": "27.2 Principal component analysis (PCA)\n\n27.2.1 Non-spatial\nAs a baseline, we will perform principal component analysis (PCA), which underlies many standard scRNA-seq analysis pipelines, such as (spatially unaware) graph-based clustering based on a shared nearest neighbor (SNN) graph and the Leiden or Louvain algorithm for community detection.\nA standard approach is to apply PCA to the set of top HVGs, and retain a subset of PCs for subsequent steps. This is done for two main reasons: (i) to reduce noise due to random variation in expression of biologically uninformative genes, which are assumed to have expression patterns independent of each other, and (ii) to improve computational efficiency. Because our data are relatively low-plex in this example, we use all features instead.\nHere, we use the implementation of PCA provided in the scater package (McCarthy et al. 2017): For large-scale datasets (100,000s of cells), argument BSPARAM=RandomParam() can be used to decrease runtime by approximating the singular value decomposition (SVD). Because this implementation uses randomization, and seed for random number generation should be set in order to make results reproducible.\n\nCodespe &lt;- logNormCounts(spe)\nspe &lt;- runPCA(spe, ncomponents=20)\n\n\n\n27.2.2 Spatially aware\nBANKSY (Singhal et al. 2024) computes PCs on a spatial-neighborhood augmented matrix, thereby embedding cells in a product space of their own and their local neighborhood’s (average) transcriptome, representing cell state and microenvironment. A key parameter for this method is \\(\\lambda\\in[0,1]\\) (argument lambda in runBanksyPCA()), which controls the spatial component’s weight; notably, when \\(\\lambda=0\\), BANKSY reduces to non-spatial clustering. Secondly, k_geom determines the number of neighbors to use for computing local transcriptomic neighborhoods. In Visium, \\(k=6\\) would correspond to first-order, \\(k=18\\) to first- and second-order neighbors.\n\nCodespe &lt;- computeBanksy(spe, assay_name=\"logcounts\", k_geom=20)\nspe &lt;- runBanksyPCA(spe, npcs=20, lambda=0.4)\n\n\nTo not confuse different types of PCs, we rename the corresponding reducedDims to end in _sp and _tx for spatially aware and unaware results, respectively.\n\nCodereducedDimNames(spe) &lt;- c(\"PCA_tx\", \"PCA_sp\")",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>27</span>  <span class='chapter-title'>Dimensionality reduction</span>"
    ]
  },
  {
    "objectID": "pages/ind-dimensionality-reduction.html#uniform-manifold-approximation-and-projection-umap",
    "href": "pages/ind-dimensionality-reduction.html#uniform-manifold-approximation-and-projection-umap",
    "title": "27  Dimensionality reduction",
    "section": "\n27.3 Uniform manifold approximation and projection (UMAP)",
    "text": "27.3 Uniform manifold approximation and projection (UMAP)\nWe can also perform non-linear dimensionality reduction using the UMAP algorithm, applied to the set of top PCs (default 50). The first two UMAP dimensions are often used for visualization purposes (although interpretation of the UMAP dimensions is difficult and can be misleading). In addition, the UMAP algorithm is stochastic, so the visual layout of the UMAP plot will change from one run to the next; setting a seed for random number generation ensures that the visualization is reproducible.\nNote that UMAP plots should be interpreted with caution (Chari and Pachter 2023). Specifically, the UMAP algorithm can introduce misleading structure in a 2D plot, and the relative distances between points in the 2D plot are not meaningful. For this reason, we recommend using UMAP only for generating visualizations, not clustering – any cluster labels shown on a UMAP plot should be generated using a separate clustering algorithm. Similar arguments also apply to the t-SNE algorithm, which may be used as an alternative to UMAP.\nHere, we run UMAP on both non-spatial and spatially aware PCs, retaining the first two UMAP components to be used for visualization:\n\nCodespe &lt;- runUMAP(spe, dimred=\"PCA_tx\", name=\"UMAP_tx\")\nspe &lt;- runUMAP(spe, dimred=\"PCA_sp\", name=\"UMAP_sp\")",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>27</span>  <span class='chapter-title'>Dimensionality reduction</span>"
    ]
  },
  {
    "objectID": "pages/ind-dimensionality-reduction.html#exploratory",
    "href": "pages/ind-dimensionality-reduction.html#exploratory",
    "title": "27  Dimensionality reduction",
    "section": "\n27.4 Exploratory",
    "text": "27.4 Exploratory\nA useful visualization is to color cells by their PCs in physical space. This will help highlight key drivers of transcriptional variability, e.g., between major biological compartments such as epithelia, immune and stromal cells. Exemplary plots of PCs 1-3 are rendered below:\n\nCodedf &lt;- data.frame(colData(spe), spatialCoords(spe), \n                 reducedDim(spe, \"PCA_tx\"))\nlapply(paste0(\"PC\", seq(3)), \\(.) {\n    fd &lt;- df[order(abs(df[[.]])), ]\n    ggplot(fd, aes(x_centroid, y_centroid, col=.data[[.]]))\n}) |&gt;\n    wrap_plots(nrow=1) &\n    geom_point(shape=16, stroke=0, size=0.2) &\n    scale_color_gradientn(colors=pals::jet()) &\n    coord_equal() & theme_void() & theme(\n        legend.position=\"bottom\",\n        legend.key.width=unit(0.8, \"lines\"),\n        legend.key.height=unit(0.4, \"lines\"))\n\n\n\n\n\n\n\n\n\n\n\n\n\nNotePCs as RGB\n\n\n\n\n\nA neat trick in this context is to rescale PC 1-3 values between 0 and 1, and interpret them as RGB values for visualization:\n\nCodepcs &lt;- reducedDim(spe, \"PCA_tx\")[, seq(3)]\npcs &lt;- sweep(pcs, 2, colMins(pcs), `-`)\npcs &lt;- sweep(pcs, 2, colMaxs(pcs), `/`)\nrgb &lt;- apply(pcs, 1, \\(.) rgb(.[1], .[2], .[3]))\ndf &lt;- data.frame(colData(spe), spatialCoords(spe), rgb)\n\n\nE.g., we see that colors corresponding to opposing PC values are clearly separated in space, indicating distinct drivers of transcriptional variability. In some regions, we see color mixtures, indicating cells of ambiguous transcriptional profiles (with respect to what is being captured by the 3 PCs considered here).\n\nCodeggplot(df, aes(x_centroid, y_centroid, col=rgb)) +\n    geom_point(shape=16, stroke=0, size=0.4) +\n    scale_color_identity() + coord_equal() + theme_void()\n\n\n\n\n\n\n\n\n\n\n\nCode.plot_umap &lt;- \\(dr) plotReducedDim(\n    object=spe, dimred=dr, colour_by=\"Label\", \n    point_shape=16, point_size=0) + ggtitle(dr)\n.plot_umap(\"UMAP_tx\") +\n.plot_umap(\"UMAP_sp\") +\n    plot_layout(guides=\"collect\") &\n    guides(col=guide_legend(override.aes=list(alpha=1, size=2))) &\n    theme_void() & theme(aspect.ratio=1, \n        legend.key.size=unit(0, \"lines\"),\n        plot.title=element_text(hjust=0.5))",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>27</span>  <span class='chapter-title'>Dimensionality reduction</span>"
    ]
  },
  {
    "objectID": "pages/ind-dimensionality-reduction.html#appendix",
    "href": "pages/ind-dimensionality-reduction.html#appendix",
    "title": "27  Dimensionality reduction",
    "section": "\n27.5 Appendix",
    "text": "27.5 Appendix\nReferences\n\n\n\n\nChari, Tara, and Lior Pachter. 2023. “The Specious Art of Single-Cell Genomics.” PLoS Computational Biology 19 (e1011288, 8). https://doi.org/10.1371/journal.pcbi.1011288.\n\n\nMcCarthy, Davis J, Kieran R Campbell, Aaron T L Lun, and Quin F Wills. 2017. “Scater: Pre-Processing, Quality Control, Normalization and Visualization of Single-Cell RNA-Seq Data in r.” Bioinformatics 33: 1179–86. https://doi.org/10.1093/bioinformatics/btw777.\n\n\nSinghal, Vipul, Nigel Chou, Joseph Lee, Yifei Yue, Jinyue Liu, Wan Kee Chock, Li Lin, et al. 2024. “BANKSY Unifies Cell Typing and Tissue Domain Segmentation for Scalable Spatial Omics Data Analysis.” Nature Genetics 56: 431–41. https://doi.org/10.1038/s41588-024-01664-3.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>27</span>  <span class='chapter-title'>Dimensionality reduction</span>"
    ]
  },
  {
    "objectID": "pages/ind-clustering.html",
    "href": "pages/ind-clustering.html",
    "title": "28  Clustering",
    "section": "",
    "text": "28.1 Preamble",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>28</span>  <span class='chapter-title'>Clustering</span>"
    ]
  },
  {
    "objectID": "pages/ind-clustering.html#preamble",
    "href": "pages/ind-clustering.html#preamble",
    "title": "28  Clustering",
    "section": "",
    "text": "28.1.1 Introduction\nIn spatial transcriptomics data, we can apply clustering algorithms to identify spatial domains, which represent spatially defined regions consisting of relatively consistent gene expression profiles. For example, spatial domains may consist of regions containing cells from a single cell type or a consistent mixture of cell types.\nSeveral alternative approaches exist for identifying spatial domains. One strategy involves applying standard clustering algorithms from single-cell workflows without incorporating spatial information. Alternatively, spatial information can be integrated at various stages of the workflow. For example, spatial data can inform preprocessing steps, such as selecting spatially variable genes (SVGs), followed by the application of either non-spatial or spatial clustering algorithms. Another widely used strategy involves generating a latent space that incorporates spatial coordinates, often leveraging Bayesian framework or neural networks.\nAs advancements in spatial transcriptomics techniques enhance tissue resolution, computational tradeoffs between various approaches and parameters become increasingly relevant.\nIt is also important to keep in mind that when we use clustering to define cell types and/or states, these can be defined at various resolutions (or even on a continuum). The optimal number of clusters depends on the biological context – in particular, there is no “true” number of clusters, since this depends on the biological context (e.g. if we are comparing major cell populations vs. comparing rare subtypes), so the choice of the optimal number of clusters or resolutions requires some judgment and biological interpretation.\nOnce we have identified spatial domains, these can then be further investigated in additional downstream analyses.\n\n28.1.2 Dependencies\n\nCodelibrary(scran)\nlibrary(scater)\nlibrary(igraph)\nlibrary(Banksy)\nlibrary(ggspavis)\nlibrary(pheatmap)\nlibrary(basilisk)\nlibrary(patchwork)\nlibrary(OSTA.data)\nlibrary(BayesSpace)\nlibrary(reticulate)\nlibrary(SpatialExperiment)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(2025)\n# load processed Xenium datasets\nspe &lt;- readRDS(\"img-spe_cl.rds\")",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>28</span>  <span class='chapter-title'>Clustering</span>"
    ]
  },
  {
    "objectID": "pages/ind-clustering.html#clustering",
    "href": "pages/ind-clustering.html#clustering",
    "title": "28  Clustering",
    "section": "\n28.2 Clustering",
    "text": "28.2 Clustering\n\n28.2.1 Non-spatial\nAs a baseline, we will perform a standard graph-based clustering approach developed for scRNA-seq data, using molecular features (gene expression) only. Specifically, we construct a shared nearest neighbor (SNN) graph based on non-spatial PCs (reducedDim slot \"PCA_tx\"), and use the Leiden algorithm for community detection (Traag, Waltman, and Eck 2019). [The resolution parameter used here was selected in order to obtain a similar number of clusters annotated by the authors.]\n\nCode# build cellular shared nearest-neighbor (SNN) graph\ng &lt;- buildSNNGraph(spe, use.dimred=\"PCA_tx\", type=\"jaccard\", k=20)\n# cluster using Leiden community detection algorithm\nk &lt;- cluster_leiden(g, objective_function=\"modularity\", resolution=1.2)\ntable(spe$Leiden &lt;- factor(k$membership))\n\n##  \n##      1     2     3     4     5     6     7     8     9    10    11    12 \n##  11568  3492 13007  5460 11417 25518 13042  5402 14789 14433 11607  4028 \n##     13    14 \n##   3891  2614\n\n\n\n28.2.2 Spatially-aware\nSeveral methods to identify spatial domains in ST data have recently been developed, which each have various methodological and computational tradeoffs. A few example include BayesSpace (Zhao et al. 2021), Banksy (Singhal et al. 2024) and PRECAST (W. Liu et al. 2023) in R, as well as CellCharter (Varrone et al. 2024) and SpaceFlow (Ren et al. 2022) in Python.\nHere, we demonstrate tools representative of different methodologies, namely, (probabilistic) BayesSpace for seq-based Visium, as well as (neighborhood-based) Banksy and (encoder-based) CellCharter for img-based Xenium data.\n\n28.2.2.1 Probabilistic\nUnderlying BayesSpace (Zhao et al. 2021) is a Bayesian model that encourages neighboring spots to belong to the same cluster, and utilizes Markov Chain Monte Carlo (MCMC) for estimating model parameters. Default parameters are nrep=50,000 MCMC iterations and a burn-in period of burn.in=1,000; the authors recommend running with at least 10,000 iterations. Here, we use fewer iterations for the sake of runtime, which will arguably compromise performance. Note that, since MCMC is stochastic, a seed for random number generation should be set in order to make results reproducible.\n\nCode# load processed Visium dataset\nvis &lt;- readRDS(\"seq-spe_cl.rds\")\n# prepare data for 'BayesSpace'\n# skipping PCA (already computed)\n.vis &lt;- spatialPreprocess(vis, skip.PCA=TRUE)\n# perform spatial clustering with 'BayesSpace'\n# using 'd=20' PCs and targeting 'q=10' clusters\n.vis &lt;- spatialCluster(.vis, q=10, d=20, nrep=1e3, burn.in=100) \ntable(vis$BayesSpace &lt;- factor(.vis$spatial.cluster))\n\n##  \n##    1   2   3   4   5   6   7   8   9  10 \n##  560 279 400 545 367 478 313  74 252 371\n\n\n\n28.2.2.2 Neighborhood-based\nBANKSY (Singhal et al. 2024) embeds cells in a product space of their own and their local neighborhood’s (average) transcriptome, representing cell state and microenvironment. We have already computed Banksy PCs in Chapter 27 (reducedDim slot PCA_sp) so that here, we perform SNN graph-based Leiden clustering on said PCs in order to obtain spatially-aware cluster assignments: Note that we are using a lower resolution here, as Banksy PCs tend to yield more clusters on the data at hand.\n\nCode# perform SNN graph-based clustering on 'Banksy' PCs using\n# same parameters as for 'non-spatial' clustering above\ng &lt;- buildSNNGraph(spe, use.dimred=\"PCA_sp\", type=\"jaccard\", k=20)\nk &lt;- cluster_leiden(g, objective_function=\"modularity\", resolution=0.8)\ntable(spe$Banksy &lt;- factor(k$membership))\n\n##  \n##      1     2     3     4     5     6     7     8     9    10    11    12 \n##  11177  3804  5402 11168 14096 21268  9535  9164 12564 16500  4154   570 \n##     13    14    15    16    17 \n##   3474 12925   632  3166   669\n\n\n\n28.2.2.3 Encoder-based\nAnother category of spatially-aware clustering method uses encoder architectures to generate a latent embedding incorporating both spatial and transcriptomics information, which is then clustered using standard algorithms. One typical example is cellcharter (Varrone et al. 2024), which uses a variational auto-encoder to generate a latental feature space and aggregate the features of each spot across its neighbors to preserve their spatial context.\n\n\n\n\n\n\nNoteOther methods\n\n\n\n\n\nSeveral other published methods have also adopted encoder architectures in different ways to perform spatially-aware clustering. STAGATE (Dong and Zhang 2022) uses a graph attention autoencoder to integrate spatial and transcriptional data by modeling spatial neighborhoods as graphs, whereas PROST (Liang et al. 2024) employs a self-attention transformer-based encoder to learn spatial patterns by jointly modeling gene expression and spatial coordinates. Graph-based encoder methods, such as STAGATE, may be particularly well-suited for imaging-based ST data, as their ability to model spatial neighborhoods as graphs aligns naturally with the continuous and fine-grained spatial organization of tissues captured through imaging.\n\n\n\n\nCode# initialize 'basilisk' environment\nenv &lt;- BasiliskEnvironment(\n  envname=\"CellCharter\", pkgname=\"OSTA\",\n  channels=c(\"conda-forge\", \"pytorch\"),\n  packages=c(\n    \"python=3.10.15\",\n    \"pytorch=1.12.1\",\n    \"torchvision=0.13.1\",\n    \"torchaudio=0.12.1\"),\n  pip=c(\n    \"scvi-tools==0.20.3\",\n    \"cellcharter==0.2.0\",\n    \"anndata==0.10.9\",\n    \"scanpy==1.10.4\"))\n# activate underlying conda environment\nuse_condaenv(obtainEnvironmentPath(env))\ncounts &lt;- r_to_py(t(counts(spe)))\ncoords &lt;- r_to_py(spatialCoords(spe))\n\n\n\nCodeimport cellcharter as cc\nimport anndata as ad\nimport squidpy as sq\nimport pandas as pd\nimport numpy as np\nimport random\nimport scvi\n\nadata = ad.AnnData(X = r.counts,\n                   obsm = {\"spatial\":r.coords},\n                   layers = {\"counts\": r.counts})\n\nseed = 2025\nrandom.seed(seed)\nscvi.settings.seed = seed\n\n# variational autoencoder for feature extraction\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\")\nmodel = scvi.model.SCVI(adata, n_hidden=64)\nmodel.train(early_stopping=True,\n    # the parameters below aim to reduce runtime; \n    # in reality, it'd be better to use defaults\n    max_epochs=70, batch_size=512, train_size=0.5, validation_size=0.2)\n\nadata.obsm[\"X_scVI\"] = model.get_latent_representation(adata).astype(np.float32)\n\n# Getting neighborhood aggregation\nsq.gr.spatial_neighbors(adata, coord_type=\"generic\", delaunay=True, spatial_key=\"spatial\", percentile=99)\ncc.gr.aggregate_neighbors(adata, n_layers=3, use_rep=\"X_scVI\", out_key=\"X_cellcharter\")\n\n# clustering by scanning a range of data number\nmod = cc.tl.Cluster(n_clusters=14, random_state=seed)\nmod.fit(adata, use_rep=\"X_cellcharter\")\n\nlabel_df = pd.DataFrame({\"label\": mod.predict(adata, use_rep=\"X_cellcharter\")}) \nlabel_df[[\"label\"]].value_counts()\n\n\n\nCode# pull 'CellCharter' assignments from Python into R\nspe$CellCharter &lt;- unlist(py$label_df)",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>28</span>  <span class='chapter-title'>Clustering</span>"
    ]
  },
  {
    "objectID": "pages/ind-clustering.html#downstream",
    "href": "pages/ind-clustering.html#downstream",
    "title": "28  Clustering",
    "section": "\n28.3 Downstream",
    "text": "28.3 Downstream\n\n28.3.1 Visualization\n\nLet’s visualize the assignment obtains from non-spatial and spatially-aware clustering:\n\nCodeks &lt;- c(\"Label\", \"Leiden\", \"Banksy\")#, \"CellCharter\")\nlapply(ks, \\(.) {\n    plt &lt;- plotCoords(spe, annotate=.)\n    plt$layers[[1]]$aes_params$stroke &lt;- 0\n    plt$layers[[1]]$aes_params$size &lt;- 0.2\n    plt\n}) |&gt;\n    wrap_plots(nrow=2) &\n    scale_color_manual(values=unname(pals::trubetskoy())) &\n    theme(legend.key.size=unit(0, \"lines\"), legend.justification=\"left\")\n\n\n\n\n\n\n\nEspecially in large tissues, and when there are many subpopulations, the above type of plot makes it difficult to spot rare subpopulations, and might cause cells to overlap in regions with high cellular density. This can be misleading, as we will tend to see only highly abundant subpopulations, or the cells plotted last and on top (i.e., later columns in the object).\nTo better distinguish between different subpopulations, we can instead generate separate spatial plots with one subpopulation highlighted at a time:\n\nCode# plot selected clusters in order of frequency,\n# highlighting cells assigned to cluster 'k'\nlapply(tail(names(sort(table(spe$Banksy))), 12), \\(k) {\n    spe$foo &lt;- spe$Banksy == k\n    spe &lt;- spe[, order(spe$foo)]\n    plt &lt;- plotCoords(spe, annotate=\"foo\")\n    plt$layers[[1]]$aes_params$stroke &lt;- 0\n    plt$layers[[1]]$aes_params$size &lt;- 0.2\n    plt + ggtitle(k)\n}) |&gt;\n    wrap_plots(nrow=3) &\n    scale_color_manual(values=c(\"lavender\", \"purple\")) &\n    theme(plot.title=element_text(hjust=0.5), legend.position=\"none\")\n\n\n\n\n\n\n\n\n\n\n\n\n\nNotePC regression\n\n\n\n\n\n28.3.2 PC regression\nFor any single-cell analysis where downstream tasks rely on PCs, it is useful to perform linear regression of (continuous or categorical) covariates of interest onto PCs. This quantifies the variance explained by the covariate and can help assess the extend of unwanted variation (due to, e.g., cell area) as opposed to subpopulations driving transcriptional differences. Here, we regress total counts, cell area, and cluster assignments from different methods against PCs:\n\nCodepcs &lt;- reducedDim(spe, \"PCA_tx\")\nids &lt;- c(\"total_counts\", \"cell_area\", ks)\npcr &lt;- lapply(ids, \\(id) {\n    fit &lt;- summary(lm(pcs ~ spe[[id]]))\n    r2 &lt;- sapply(fit, \\(.) .$adj.r.squared)\n    data.frame(id, pc=seq_along(r2), r2)\n}) |&gt; do.call(what=rbind)\n\n\nHere, Leiden (transcription-only) and Banksy (spatially-aware) clusterings perform similar in terms of capturing (spatially unaware) PCs; as to be expected, Leiden clusters do slightly better. Had we set a higher value for \\(\\lambda\\) when running Banksy, results would diverge more; vice versa, using spatial PCs for regression would have Leiden clusters perform worse. Also, note that we would expect results to converge for \\(\\lambda=0\\).\n\nCodepcr$id &lt;- factor(pcr$id, ids)\npal &lt;- c(\"red\", \"magenta\", \"gold\", \"cyan\", \"blue\", \"black\")\nggplot(pcr, aes(pc, r2, col=id)) +\n    geom_line(show.legend=FALSE) + geom_point() +\n    scale_color_manual(\"predictor\", values=pal) +\n    scale_x_continuous(breaks=c(1, seq(5, 20, 5))) +\n    scale_y_continuous(limits=c(0, 1), breaks=seq(0, 1, 0.2)) +\n    labs(x=\"principal component\", y=\"coeff. of determination\") +\n    guides(col=guide_legend(override.aes=list(size=2))) +\n    coord_cartesian(xlim=c(1, 20)) +\n    theme_minimal() + theme(\n        panel.grid.minor=element_blank(),\n        legend.key.size=unit(0, \"lines\"))\n\n\n\n\n\n\n\n\n\n\n\n28.3.3 DGE analysis\nTo help characterize (unsupervised) clusters, we want to identify ‘markers’ for each subpopulation, i.e., features whose expression is positively or negatively restricted to (a) specific subpopulation(s). For details on identifying genes that are differentially expressed (DE) between groups of cells, we refer readers to OSCA; a standard approach is given below, visualizing the average expression of exemplary markers across clusters:\n\nCode# differential gene expression analysis\nmgs &lt;- findMarkers(spe, groups=spe$Leiden, direction=\"up\")\n# select for a few markers per cluster\ntop &lt;- lapply(mgs, \\(df) rownames(df)[df$Top &lt;= 3])\nlength(top &lt;- unique(unlist(top)))\n\n##  [1] 69\n\n\n\nCode# average expression by clusters\npbs &lt;- aggregateAcrossCells(spe, \n    ids=spe$Leiden, subset.row=top, \n    use.assay.type=\"logcounts\", statistics=\"mean\")\n# visualize averages z-scaled across clusters\npheatmap(mat=t(assay(pbs)), scale=\"column\", breaks=seq(-2, 2, length=101))",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>28</span>  <span class='chapter-title'>Clustering</span>"
    ]
  },
  {
    "objectID": "pages/ind-clustering.html#appendix",
    "href": "pages/ind-clustering.html#appendix",
    "title": "28  Clustering",
    "section": "\n28.4 Appendix",
    "text": "28.4 Appendix\nReviews\n\n\nWang et al. (2024) categorize ST clustering approaches into probability statistics-, graph neural network- and contrastive learning-based approaches, and review their advantages and limitations for clustering of data from seq- and img-based assays.\nBenchmarks\n\n\nHu et al. (2024) compare 16 graph- and statistic-based approaches, including BayesSpace and BANKSY, across 10 (mostly seq-based) datasets.\n\nT. Liu et al. (2024) compare eight GNN-based approaches, including SpaceFlow, across four seq- and one img-based dataset.\nReferences\n\n\n\n\nDong, Kangning, and Shihua Zhang. 2022. “Deciphering Spatial Domains from Spatially Resolved Transcriptomics with an Adaptive Graph Attention Auto-Encoder.” Nature Communications 13 (1739). https://doi.org/10.1038/s41467-022-29439-6.\n\n\nHu, Yunfei, Manfei Xie, Yikang Li, Mingxing Rao, Wenjun Shen, Can Luo, Haoran Qin, Jihoon Baek, and Xin Maizie Zhou. 2024. “Benchmarking Clustering, Alignment, and Integration Methods for Spatial Transcriptomics.” Genome Biology 25 (212). https://doi.org/10.1186/s13059-024-03361-0.\n\n\nLiang, Yuchen, Guowei Shi, Runlin Cai, Yuchen Yuan, Ziying Xie, Long Yu, Yingjian Huang, et al. 2024. “PROST: Quantitative Identification of Spatially Variable Genes and Domain Detection in Spatial Transcriptomics.” Nature Communications 15 (600). https://doi.org/10.1038/s41467-024-44835-w.\n\n\nLiu, Teng, Zhao-Yu Fang, Zongbo Zhang, Yongxiang Yu, Min Li, and Ming-Zhu Yin. 2024. “A Comprehensive Overview of Graph Neural Network-Based Approaches to Clustering for Spatial Transcriptomics.” Computational and Structural Biotechnology Journal 23: 106–28. https://doi.org/10.1016/j.csbj.2023.11.055.\n\n\nLiu, Wei, Xu Liao, Ziye Luo, Yi Yang, Mai Chan Lau, Yuling Jiao, Xingjie Shi, et al. 2023. “Probabilistic Embedding, Clustering, and Alignment for Integrating Spatial Transcriptomics Data with PRECAST.” Nature Communications 14 (296). https://doi.org/10.1038/s41467-023-35947-w.\n\n\nRen, Honglei, Benjamin L. Walker, Zixuan Cang, and Qing Nie. 2022. “Identifying Multicellular Spatiotemporal Organization of Cells with SpaceFlow.” Nature Communications 13 (4076). https://doi.org/10.1038/s41467-022-31739-w.\n\n\nSinghal, Vipul, Nigel Chou, Joseph Lee, Yifei Yue, Jinyue Liu, Wan Kee Chock, Li Lin, et al. 2024. “BANKSY Unifies Cell Typing and Tissue Domain Segmentation for Scalable Spatial Omics Data Analysis.” Nature Genetics 56: 431–41. https://doi.org/10.1038/s41588-024-01664-3.\n\n\nTraag, V. A., L. Waltman, and N. J. van Eck. 2019. “From Louvain to Leiden: Guaranteeing Well-Connected Communities.” Scientific Reports 9 (5233). https://doi.org/10.1038/s41598-019-41695-z.\n\n\nVarrone, Marco, Daniele Tavernari, Albert Santamaria-Martínez, Logan A. Walsh, and Giovanni Ciriello. 2024. “CellCharter Reveals Spatial Cell Niches Associated with Tissue Remodeling and Cell Plasticity.” Nature Genetics 56: 74–84. https://doi.org/10.1038/s41588-023-01588-4.\n\n\nWang, Ziyi, Aoyun Geng, Hao Duan, Feifei Cui, Quan Zou, and Zilong Zhang. 2024. “A Comprehensive Review of Approaches for Spatial Domain Recognition of Spatial Transcriptomes.” Briefings in Functional Genomics 23: 702–12. https://doi.org/10.1093/bfgp/elae040.\n\n\nZhao, Edward, Matthew R. Stone, Xing Ren, Jamie Guenthoer, Kimberly S. Smythe, Thomas Pulliam, Stephen R. Williams, et al. 2021. “Spatial Transcriptomics at Subspot Resolution with BayesSpace.” Nature Biotechnology 39: 1375–84. https://doi.org/10.1038/s41587-021-00935-2.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>28</span>  <span class='chapter-title'>Clustering</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-selection-testing.html",
    "href": "pages/ind-feature-selection-testing.html",
    "title": "29  Feature selection & testing",
    "section": "",
    "text": "29.1 Preamble",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>29</span>  <span class='chapter-title'>Feature selection & testing</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-selection-testing.html#preamble",
    "href": "pages/ind-feature-selection-testing.html#preamble",
    "title": "29  Feature selection & testing",
    "section": "",
    "text": "29.1.1 Introduction\nUnsupervised clustering and label-transfer approaches yield (discrete, non-overlapping) grouping of cells by transcriptional – and presumably functional – similarity. Identifying differentially expressed genes (DEGs), i.e., genes that are up-/down-regulated in one or few subpopulation(s), helps characterize clusters (and, in an unsupervised setting, find biologically meaningful cluster labels).\nBy contrast, methods to identify spatially variable genes (SVGs) aim to find genes with spatially correlated patterns of expression. Feature selection in terms of SVGs can be used as a spatially-aware alternative to mean-variance relationship-based HVGs (see Chapter 11), or to identify biologically informative genes as candidates for experimental follow-up.\nHere, we demonstrate selected methods to identify SVGs de novo (using nnSVG), and based on pre-computed spatial clusters (using DESpace). We further compare these to DEGs as well as HVGs, and discuss the conceptual similarities and differences between genes identified through these different approaches.\n\n29.1.2 Dependencies\n\nCodelibrary(DESpace)\nlibrary(dplyr)\nlibrary(ggspavis)\nlibrary(ggrepel)\nlibrary(nnSVG)\nlibrary(patchwork)\nlibrary(pheatmap)\nlibrary(scater)\nlibrary(scran)\nlibrary(SpatialExperiment)\nlibrary(tidyr)\n\n\n\nCode# set seed for random number generation\n# in order to make results reproducible\nset.seed(123)\n# load data from previous chapters\n# (post quality control & clustering)\nspe &lt;- readRDS(\"seq-spe_cl.rds\")",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>29</span>  <span class='chapter-title'>Feature selection & testing</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-selection-testing.html#non-spatial",
    "href": "pages/ind-feature-selection-testing.html#non-spatial",
    "title": "29  Feature selection & testing",
    "section": "\n29.2 Non-spatial",
    "text": "29.2 Non-spatial\nWe can also use methods originally developed for bulk and single-cell transcriptomics, such as those for detecting highly variable genes (HVGs) and differentially expressed genes (DEGs), on spatial omics data. Note that HVGs are defined only based on molecular features (i.e., gene expression), and do not incorporate spatial information. In the context of single-cell and ST, differentially expressed (DE) may refer to differences between groups of samples, or to differences between clusters (e.g., cell types, or spatial domains); below, we consider changes across spatial structures.\n\n29.2.1 Highly variable genes (HVGs)\nFeature selection is used as a preprocessing step to identify a subset of biologically informative features (e.g. genes), in order to reduce noise (due to both technical and biological factors) and improve computational performance. Note that HVGs are defined based only on molecular features (i.e. gene expression), and do not take any spatial information into account. If the spatial patterns in gene expression in a dataset mainly reflect spatial distributions of cell types (defined by gene expression), then relying on HVGs for downstream analyses may be sufficient. However, if there is further biologically meaningful spatial structure that is not captured in this way, spatially-aware methods may be needed instead.\nIdentifying a set of top “highly variable genes” (HVGs) is a standard step for feature selection in many scRNA-seq workflows, which can also be used as a simple and fast baseline approach in spot-based ST data, or high-plex imaging based ST data; for the former, this makes the simplified assumption that spots can be treated as equivalent to cells.\nThe set of top HVGs can then be used as the input for subsequent steps, such as dimensionality reduction and clustering. For a comprehensive discussion on HVG selection, we refer readers to OSCA.\nIn this example, we use the scran package (Lun, McCarthy, and Marioni 2016) to identify HVGs in a two-step procedure. We first model the mean-variance relationship, which decomposes variance into a technical component (smooth fit) and biological component (deviation thereof). Secondly, HVGs may be selected based on their rank, using a fixed number n or proportion p of genes: A more stringent selection may be obtained by also adding an FDR.threshold on the significance of large variances relative to other genes.\n\nCode# fit mean-variance relationship, decomposing \n# variance into technical & biological components\ndec &lt;- modelGeneVar(spe)\n\n# select top 2,000 ranked genes (in terms\n# of their biological variance component)\nhvg &lt;- getTopHVGs(dec, n=2e3)\n\n\n\nCode# visualize mean-variance relationship\npar(mar = c(4, 4, 0, 0))\nfit &lt;- metadata(dec)\nplot(fit$mean, fit$var, cex = 0.5, xlab = \"mean expression\", ylab = \"variance\")\npoints(dec[hvg, \"mean\"], dec[hvg, \"total\"], cex = 0.5, col = \"dodgerblue\")\ncurve(fit$trend(x), add = TRUE, lwd = 2, col = \"tomato\")\n\n\n\n\n\n\n\n\n29.2.2 Differentially expressed genes (DEGs)\nHaving clustered our spots (or cells), we can test for differentially expressed genes (DEGs) between clusters. These can be interpreted as marker genes and used to interpret clusters in terms of their function, and to help annotate them (i.e. assign biologically meaningful labels).\nFor details on identifying DE genes between groups of cells from scRNA-seq data, we refer readers to OSCA.\nHere, we will use pairwise t-tests and specifically test for upregulation (as opposed to downregulation), i.e. expression should be higher in the cluster for which a gene is reported to be a marker; see Chapter 28 for details.\n\nCode# differential gene expression analysis\nmgs &lt;- findMarkers(spe, groups=spe$BayesSpace, direction=\"up\")\n# select for a few markers per cluster\ndeg &lt;- lapply(mgs, \\(df) rownames(df)[df$Top &lt;= 3])\nlength(deg &lt;- unique(unlist(deg)))\n\n##  [1] 59\n\n\nWe can visualize selected marker genes as a heatmap where bins represent the average expression (here, log-transformed library size-normalized counts) of a given gene (= columns) in a given cluster (= rows). To visually amplify differences, we use scale = \"column\". This will, for every gene, subtract the mean and divide by the standard deviation across per-cluster means, bringing genes of potentially very different expression levels to a comparable scale.\n\nCode# compute cluster-wise averages\npbs &lt;- aggregateAcrossCells(spe, \n    ids = spe$BayesSpace, subset.row = deg, \n    use.assay.type = \"logcounts\", statistics = \"mean\")\n# use gene symbols as feature names\nmtx &lt;- t(assay(pbs))\ncolnames(mtx) &lt;- rowData(pbs)$gene_name\n# using pheatmap package\npheatmap(mat = mtx, scale = \"column\")\n\n\n\n\n\n\n\nIn addition, we can plot in x-y space, i.e. coloring spots by their expression of a given marker gene:\n\nCode# select top-3 markers for each cluster & get gene symbols\ngs &lt;- unique(unlist(lapply(mgs, \\(df) head(rownames(df), 3))))\ngs &lt;- rowData(spe)$gene_name[match(gs, rownames(spe))]\n# gene-wise spatial plots\nps &lt;- lapply(gs, \\(.) {\n    plotCoords(spe, \n        annotate = ., \n        feature_names = \"gene_name\", \n        assay_name = \"logcounts\") })\n# figure arrangement\nwrap_plots(ps, nrow = 4) & \n  theme(legend.key.width = unit(0.4, \"lines\"), \n        legend.key.height = unit(0.8, \"lines\")) & \n  scale_color_gradientn(colors = rev(hcl.colors(9, \"Rocket\")))",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>29</span>  <span class='chapter-title'>Feature selection & testing</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-selection-testing.html#spatially-aware",
    "href": "pages/ind-feature-selection-testing.html#spatially-aware",
    "title": "29  Feature selection & testing",
    "section": "\n29.3 Spatially-aware",
    "text": "29.3 Spatially-aware\nHere, we demonstrate brief examples of how to identify a set of top SVGs using (nnSVG (Weber et al. 2023) and DESpace (Cai, Robinson, and Tiberi 2024)). These methods are available through Bioconductor and can be easily integrated into Bioconductor-based workflows.\n\n29.3.1 Spatially-variable genes (SVGs)\nSVGs are usually identified integrating gene expression measurements with spatial coordinates, either with or without predefined spatial domains. SVGs approaches can be broadly categorized into three types: overall SVGs, spatial domain-specific SVGs, and cell type-specific SVGs (Yan, Hua, and Li 2024).\nThe detection of overall SVGs is sometimes used as a feature selection step for further downstream analyses such as spatially-aware clustering (see Chapter 28). Several methods have been proposed for detecting overall SVGs; below, we report some few notable examples:\n\n\nspatialDE (Svensson, Teichmann, and Stegle 2018) and nnSVG (Weber et al. 2023), which are based on a Gaussian process model;\n\nMoran’s I and Geary’s C, which ranks genes according to their observed spatial autocorrelation (see Chapter 31); and,\n\nSPARK (Sun, Zhu, and Zhou 2020; Zhu, Sun, and Zhou 2021), which uses a non-parametric test of the covariance matrices of the spatial expression data.\n\nSpatial domain-specific SVGs target changes in gene expression between spatial domains, which are used to summarize the whole spatial information. Genes displaying expression changes across spatial clusters indicate SVGs. Spatial domains can be predefined based on morphology knowledge, or identified through spatially-aware clustering approaches such as BayesSpace (Zhao et al. 2021) and Banksy (Singhal et al. 2024). Methods that belong to this category include DESpace (Cai, Robinson, and Tiberi 2024) in R, and SpaGCN (Hu et al. 2021) in Python.\nCell type-specific SVG methods leverage external cell type annotations to identify SVGs within cell types. They analyze interaction effects between cell types and spatial coordinates (Yan, Hua, and Li 2024). Examplary methods in R include CTSV (J. Yu and Luo 2022), C-SIDE (implemented in spacexr; (Cable et al. 2022)), and spVC (S. Yu and Li 2024).\n\n29.3.2 nnSVG\nIn this example, we use a small subset of the dataset for faster runtime. We select a subset of the data, by subsampling the set of spots and including stringent filtering for lowly expressed genes. A full analysis with nnSVG using all spots for this dataset and default filtering parameters for an individual Visium sample from human brain tissue (available from spatialLIBD) takes around 45 minutes on a standard laptop.\n\nCode# set random seed for number generation\n# in order to make results reproducible\nset.seed(123)\n# sample 100 spots to decrease runtime in this demo\n# (note: skip this step in full analysis)\nn &lt;- 100\nsub &lt;- spe[, sample(ncol(spe), 100)]\n# filter lowly expressed genes using stringent\n# criteria to decrease runtime in this demo\n# (note: use default criteria in full analysis)\nsub &lt;- filter_genes(sub,     # filter for genes with...\n    filter_genes_ncounts=10, # at least 10 counts in\n    filter_genes_pcspots=3)  # at least 3% of spots\n# re-normalize counts post-filtering\nsub &lt;- logNormCounts(sub)\n\n# run nnSVG\nset.seed(123)\nsub &lt;- nnSVG(sub)\n\n# extract gene-level results\nres_nnSVG &lt;- rowData(sub)\n# show results\nhead(res_nnSVG, 3)\n\n##  DataFrame with 3 rows and 18 columns\n##                          gene_id   gene_name    feature_type subsets_mito\n##                      &lt;character&gt; &lt;character&gt;     &lt;character&gt;    &lt;logical&gt;\n##  ENSG00000171603 ENSG00000171603      CLSTN1 Gene Expression        FALSE\n##  ENSG00000162545 ENSG00000162545     CAMK2N1 Gene Expression        FALSE\n##  ENSG00000117632 ENSG00000117632       STMN1 Gene Expression        FALSE\n##                   sigma.sq    tau.sq       phi    loglik   runtime      mean\n##                  &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt;\n##  ENSG00000171603  0.174761  0.539773   5.41081  -121.843     0.020   2.03224\n##  ENSG00000162545  0.269047  0.372045   3.08577  -108.057     0.019   2.71693\n##  ENSG00000117632  0.239898  0.514311   6.13963  -123.305     0.019   2.64106\n##                        var     spcov   prop_sv loglik_lm   LR_stat      rank\n##                  &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt; &lt;numeric&gt;\n##  ENSG00000171603  0.709124  0.205706  0.244580  -124.205   4.72492        68\n##  ENSG00000162545  0.573078  0.190913  0.419670  -113.555  10.99542        40\n##  ENSG00000117632  0.742838  0.185453  0.318079  -126.527   6.44437        56\n##                        pval      padj\n##                   &lt;numeric&gt; &lt;numeric&gt;\n##  ENSG00000171603 0.09418802 0.2186956\n##  ENSG00000162545 0.00409613 0.0163845\n##  ENSG00000117632 0.03986790 0.1139083\n\nCode# count significant SVGs (at 5% FDR significance level)\ntable(res_nnSVG$padj &lt;= 0.05)\n\n##  \n##  FALSE  TRUE \n##    111    49\n\nCode# identify the top-ranked SVGs\nres_nnSVG$gene_name[res_nnSVG$rank == 1]\n\n##  [1] \"MBP\"\n\nCode# store the top 7 SVGs\ntop_nnSVG &lt;- res_nnSVG$gene_name[res_nnSVG$rank &lt; 7.5]\n\n\n\n29.3.3 DESpace\n\nDESpace relies on pre-computed spatial domains to summarize the primary spatial structures of the data; see Chapter 28 on clustering.\n\nCodeplotCoords(spe, \n    annotate=\"BayesSpace\") +\n    theme(legend.key.size=unit(0, \"lines\")) +\n    scale_color_manual(values=unname(pals::trubetskoy()))\n\n\n\n\n\n\n\n\nCode# run DESpace\nres &lt;- svg_test(spe, cluster_col=\"BayesSpace\")\nhead(res_DESpace &lt;- res$gene_results)\n\n##                          gene_id       LR    logCPM PValue FDR\n##  ENSG00000101210 ENSG00000101210 1714.407 10.641755      0   0\n##  ENSG00000074317 ENSG00000074317 1851.823 10.585181      0   0\n##  ENSG00000104435 ENSG00000104435 1907.921 10.555517      0   0\n##  ENSG00000183036 ENSG00000183036 1580.067  9.797765      0   0\n##  ENSG00000173267 ENSG00000173267 1559.682 10.050258      0   0\n##  ENSG00000170027 ENSG00000170027 1755.490 10.864269      0   0\n\nCode# count significant SVGs (at 5% FDR significance level)\ntable(res_DESpace$FDR &lt;= 0.05)\n\n##  \n##  FALSE  TRUE \n##   5302  9837\n\n\n\n\n\n\n\n\nNoteDownstream analyses\n\n\n\n\n\n29.4 Downstream analyses\nThe set of top SVGs may be further investigated, e.g. by plotting the spatial expression of several top genes and via gene pathway analyses (i.e., comparing significant SVGs with known gene sets associated with specific biological functions).\n\nCodetop_HVGs &lt;- getTopHVGs(dec, n=(n &lt;- 6))\ntop_DEGs &lt;- lapply(mgs, \\(df) rownames(df)[df$Top == 1])\ntop_DEGs &lt;- unique(unlist(top_DEGs))[seq_len(6)]\ntop_DESpace &lt;- res_DESpace$gene_id[seq_len(6)]\n\n\n\n29.4.1 Visualization\nTo visualize the expression levels of selected genes in spatial coordinates on the tissue slide, we can use plotting functions from the ggspavis package.\n\nCode# get top SVGs from each method\ngs &lt;- list(\n    HVGs=top_HVGs, \n    DEGs=top_DEGs, \n    DESpace=top_DESpace)\n# get gene symbols from ensembl identifiers\nidx &lt;- match(unlist(gs), rowData(spe)$gene_id)\n.gs &lt;- rowData(spe)$gene_name[idx]\n# expression plots for each top gene\nps &lt;- lapply(seq_along(.gs), \\(.) {\n    plotCoords(spe, \n        point_size=0,\n        annotate=.gs[.], \n        assay_name=\"logcounts\", \n        feature_names=\"gene_name\") + \n        if (. %% 6 == 1) list(\n            ylab(names(gs)[ceiling(./6)]), \n            theme(axis.title.y=element_text()))\n}) \nwrap_plots(ps, nrow=3) & theme(\n    legend.key.width=unit(0.4, \"lines\"),\n    legend.key.height=unit(0.8, \"lines\")) &\n    scale_color_gradientn(colors = pals::parula())\n\n\n\n\n\n\n\n\n29.4.2 Comparison\nWe can compare the ranks of the genes detected by each method and compute pairwise correlations, highlighting two known cortical layer-associated SVGs: MOBP and SNAP25. While all four methods - HVGs, DEGs, SVGs identified through nnSVG and DESpace - yield similar gene ranks, each method captures distinct aspects of gene expression, with varying pairwise correlations between them.\n\nCode# subset data for the 113 genes nnSVG is based on\nsub_gene &lt;- rowData(sub)$gene_id\nsub_DESpace &lt;- res_DESpace[sub_gene, ] \nsub_HVG &lt;- as.data.frame(dec[sub_gene, ])\n\n# aggregate DEGs for each spatial domain\nsubset_mgs &lt;- lapply(mgs, \\(x) x[sub_gene, 1:3] |&gt; as.data.frame())\nsub_DEG &lt;- do.call(cbind, subset_mgs) \ntop_cols &lt;- sub_DEG |&gt; select(ends_with(\".Top\"))\nsub_DEG$Top &lt;- do.call(pmin, c(top_cols, na.rm = TRUE))\n\n# compute ranks \nsub_DESpace$rank &lt;- rank(sub_DESpace$FDR, ties.method = \"first\")\nsub_HVG$rank &lt;- rank(-1 * sub_HVG$bio, ties.method = \"first\")\nsub_DEG$rank &lt;- rank(sub_DEG$Top, ties.method = \"first\")\n\n# combine 'rank' column for each method\nres_all &lt;- list(\n    nnSVG = as.data.frame(res_nnSVG),\n    DESpace = sub_DESpace, HVGs = sub_HVG, DEGs = sub_DEG\n)\nrank_all &lt;- do.call(cbind, lapply(res_all, `[[`, \"rank\"))\nrank_all &lt;- data.frame(gene_id = sub_gene, rank_all)\n\n\n\nCode# known SVGs for this data\nknown_genes &lt;- c(\"MOBP\", \"SNAP25\")\n# method names\nmethod_names &lt;- c(\"nnSVG\", \"DESpace\", \"HVGs\", \"DEGs\")\n# convert data structure\nrank_long &lt;- rank_all |&gt;\n    left_join(data.frame(rowData(sub)[, c(\"gene_id\", \"gene_name\")]), by = \"gene_id\") |&gt;\n    select(all_of(c(\"gene_name\", method_names))) |&gt;\n    pivot_longer(cols = c(nnSVG, DESpace, HVGs, DEGs), \n                 names_to = \"method\", \n                 values_to = \"rank\")\n# all pairwise comparisons\ndf_pairs &lt;- t(combn(method_names, 2)) |&gt; as.data.frame()\n# function to plot each pairwise comparison\nplot_pairwise_comparison &lt;- function(m1, m2, df) {\n  # filter the data for the two methods being compared\n  df &lt;- df |&gt;\n      filter(method %in% c(m1, m2)) |&gt;\n      pivot_wider(names_from = method, values_from = rank)\n  # compute pearson correlation between methods\n  cor_val &lt;- cor(df[[m1]], df[[m2]], method = \"spearman\")\n  # plot\n  ggplot(df, aes(x = .data[[m1]], y = .data[[m2]])) +\n      geom_point() + \n      geom_text_repel(data = df %&gt;% filter(gene_name %in% known_genes), \n                      aes(label = gene_name), color = \"red\", size = 3.25, \n                      nudge_x = 50, nudge_y = 10, box.padding = 0.5) +\n      labs(x = paste(m1, \"rank\"), y = paste(m2, \"rank\"),\n           title = paste(m2, \"vs.\", m1, \": Cor = \", round(cor_val, 2))) +\n      #scale_color_manual(values = c(\"darkorange\", \"firebrick3\", \"deepskyblue2\")) +\n      theme_bw() + coord_fixed() + \n      xlim(c(0, 120)) + ylim(c(0, 120))\n}\n\n# generate and display all pairwise comparison plots\nplots &lt;- lapply(seq_len(nrow(df_pairs)), \\(i) {\n    plot_pairwise_comparison(df_pairs[i, 2], df_pairs[i, 1],rank_long)\n})\n\nwrap_plots(plots, ncol = 3)",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>29</span>  <span class='chapter-title'>Feature selection & testing</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-selection-testing.html#downstream-analyses",
    "href": "pages/ind-feature-selection-testing.html#downstream-analyses",
    "title": "29  Feature selection & testing",
    "section": "\n29.4 Downstream analyses",
    "text": "29.4 Downstream analyses\nThe set of top SVGs may be further investigated, e.g. by plotting the spatial expression of several top genes and via gene pathway analyses (i.e., comparing significant SVGs with known gene sets associated with specific biological functions).\n\nCodetop_HVGs &lt;- getTopHVGs(dec, n=(n &lt;- 6))\ntop_DEGs &lt;- lapply(mgs, \\(df) rownames(df)[df$Top == 1])\ntop_DEGs &lt;- unique(unlist(top_DEGs))[seq_len(6)]\ntop_DESpace &lt;- res_DESpace$gene_id[seq_len(6)]\n\n\n\n29.4.1 Visualization\nTo visualize the expression levels of selected genes in spatial coordinates on the tissue slide, we can use plotting functions from the ggspavis package.\n\nCode# get top SVGs from each method\ngs &lt;- list(\n    HVGs=top_HVGs, \n    DEGs=top_DEGs, \n    DESpace=top_DESpace)\n# get gene symbols from ensembl identifiers\nidx &lt;- match(unlist(gs), rowData(spe)$gene_id)\n.gs &lt;- rowData(spe)$gene_name[idx]\n# expression plots for each top gene\nps &lt;- lapply(seq_along(.gs), \\(.) {\n    plotCoords(spe, \n        point_size=0,\n        annotate=.gs[.], \n        assay_name=\"logcounts\", \n        feature_names=\"gene_name\") + \n        if (. %% 6 == 1) list(\n            ylab(names(gs)[ceiling(./6)]), \n            theme(axis.title.y=element_text()))\n}) \nwrap_plots(ps, nrow=3) & theme(\n    legend.key.width=unit(0.4, \"lines\"),\n    legend.key.height=unit(0.8, \"lines\")) &\n    scale_color_gradientn(colors = pals::parula())\n\n\n\n\n\n\n\n\n29.4.2 Comparison\nWe can compare the ranks of the genes detected by each method and compute pairwise correlations, highlighting two known cortical layer-associated SVGs: MOBP and SNAP25. While all four methods - HVGs, DEGs, SVGs identified through nnSVG and DESpace - yield similar gene ranks, each method captures distinct aspects of gene expression, with varying pairwise correlations between them.\n\nCode# subset data for the 113 genes nnSVG is based on\nsub_gene &lt;- rowData(sub)$gene_id\nsub_DESpace &lt;- res_DESpace[sub_gene, ] \nsub_HVG &lt;- as.data.frame(dec[sub_gene, ])\n\n# aggregate DEGs for each spatial domain\nsubset_mgs &lt;- lapply(mgs, \\(x) x[sub_gene, 1:3] |&gt; as.data.frame())\nsub_DEG &lt;- do.call(cbind, subset_mgs) \ntop_cols &lt;- sub_DEG |&gt; select(ends_with(\".Top\"))\nsub_DEG$Top &lt;- do.call(pmin, c(top_cols, na.rm = TRUE))\n\n# compute ranks \nsub_DESpace$rank &lt;- rank(sub_DESpace$FDR, ties.method = \"first\")\nsub_HVG$rank &lt;- rank(-1 * sub_HVG$bio, ties.method = \"first\")\nsub_DEG$rank &lt;- rank(sub_DEG$Top, ties.method = \"first\")\n\n# combine 'rank' column for each method\nres_all &lt;- list(\n    nnSVG = as.data.frame(res_nnSVG),\n    DESpace = sub_DESpace, HVGs = sub_HVG, DEGs = sub_DEG\n)\nrank_all &lt;- do.call(cbind, lapply(res_all, `[[`, \"rank\"))\nrank_all &lt;- data.frame(gene_id = sub_gene, rank_all)\n\n\n\nCode# known SVGs for this data\nknown_genes &lt;- c(\"MOBP\", \"SNAP25\")\n# method names\nmethod_names &lt;- c(\"nnSVG\", \"DESpace\", \"HVGs\", \"DEGs\")\n# convert data structure\nrank_long &lt;- rank_all |&gt;\n    left_join(data.frame(rowData(sub)[, c(\"gene_id\", \"gene_name\")]), by = \"gene_id\") |&gt;\n    select(all_of(c(\"gene_name\", method_names))) |&gt;\n    pivot_longer(cols = c(nnSVG, DESpace, HVGs, DEGs), \n                 names_to = \"method\", \n                 values_to = \"rank\")\n# all pairwise comparisons\ndf_pairs &lt;- t(combn(method_names, 2)) |&gt; as.data.frame()\n# function to plot each pairwise comparison\nplot_pairwise_comparison &lt;- function(m1, m2, df) {\n  # filter the data for the two methods being compared\n  df &lt;- df |&gt;\n      filter(method %in% c(m1, m2)) |&gt;\n      pivot_wider(names_from = method, values_from = rank)\n  # compute pearson correlation between methods\n  cor_val &lt;- cor(df[[m1]], df[[m2]], method = \"spearman\")\n  # plot\n  ggplot(df, aes(x = .data[[m1]], y = .data[[m2]])) +\n      geom_point() + \n      geom_text_repel(data = df %&gt;% filter(gene_name %in% known_genes), \n                      aes(label = gene_name), color = \"red\", size = 3.25, \n                      nudge_x = 50, nudge_y = 10, box.padding = 0.5) +\n      labs(x = paste(m1, \"rank\"), y = paste(m2, \"rank\"),\n           title = paste(m2, \"vs.\", m1, \": Cor = \", round(cor_val, 2))) +\n      #scale_color_manual(values = c(\"darkorange\", \"firebrick3\", \"deepskyblue2\")) +\n      theme_bw() + coord_fixed() + \n      xlim(c(0, 120)) + ylim(c(0, 120))\n}\n\n# generate and display all pairwise comparison plots\nplots &lt;- lapply(seq_len(nrow(df_pairs)), \\(i) {\n    plot_pairwise_comparison(df_pairs[i, 2], df_pairs[i, 1],rank_long)\n})\n\nwrap_plots(plots, ncol = 3)",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>29</span>  <span class='chapter-title'>Feature selection & testing</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-selection-testing.html#appendix",
    "href": "pages/ind-feature-selection-testing.html#appendix",
    "title": "29  Feature selection & testing",
    "section": "\n29.5 Appendix",
    "text": "29.5 Appendix\nReviews\n\nAdhikari et al. (2024)\nYan, Hua, and Li (2024)\nBenchmarks\n\n\nLi et al. (2023) compares 14 methods using 60 simulated datasets, generated using four different strategies, 12 experimental ST datasets, and 3 spatial ATAC-seq datasets.\n\nChen, Kim, and Yang (2024) compares 8 methods based on 22 experimental datasets (8 technologies, 6 tissue types) and 9 datasets simulated using scDesign3 (Song et al. 2024).\nReferences\n\n\n\n\nAdhikari, Sikta Das, Jiaxin Yang, Jianrong Wang, and Yuehua Cui. 2024. “Recent Advances in Spatially Variable Gene Detection in Spatial Transcriptomics.” Computational and Structural Biotechnology Journal 23: 883–91. https://doi.org/10.1016/j.csbj.2024.01.016.\n\n\nCable, Dylan M., Evan Murray, Vignesh Shanmugam, Simon Zhang, Luli S. Zou, Michael Diao, Haiqi Chen, Evan Z. Macosko, Rafael A. Irizarry, and Fei Chen. 2022. “Cell Type-Specific Inference of Differential Expression in Spatial Transcriptomics.” Nature Methods 19: 1076–87. https://doi.org/10.1038/s41592-022-01575-3.\n\n\nCai, Peiying, Mark D Robinson, and Simone Tiberi. 2024. “DESpace: Spatially Variable Gene Detection via Differential Expression Testing of Spatial Clusters.” Bioinformatics 40 (btae027, 2). https://doi.org/10.1093/bioinformatics/btae027.\n\n\nChen, Carissa, Hani Jieun Kim, and Pengyi Yang. 2024. “Evaluating Spatially Variable Gene Detection Methods for Spatial Transcriptomics Data.” Genome Biology 25 (18). https://doi.org/10.1186/s13059-023-03145-y.\n\n\nHu, Jian, Xiangjie Li, Kyle Coleman, Amelia Schroeder, Nan Ma, David J. Irwin, Edward B. Lee, Russell T. Shinohara, and Mingyao Li. 2021. “SpaGCN: Integrating Gene Expression, Spatial Location and Histology to Identify Spatial Domains and Spatially Variable Genes by Graph Convolutional Network.” Nature Methods 18: 1342–51. https://doi.org/10.1038/s41592-021-01255-8.\n\n\nLi, Zhijian, Zain M. Patel, Dongyuan Song, Guanao Yan, Jingyi Jessica Li, and Luca Pinello. 2023. “Benchmarking Computational Methods to Identify Spatially Variable Genes and Peaks.” bioRxiv. https://doi.org/10.1101/2023.12.02.569717.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Research 5 (2122). https://doi.org/10.12688/f1000research.9501.2.\n\n\nSinghal, Vipul, Nigel Chou, Joseph Lee, Yifei Yue, Jinyue Liu, Wan Kee Chock, Li Lin, et al. 2024. “BANKSY Unifies Cell Typing and Tissue Domain Segmentation for Scalable Spatial Omics Data Analysis.” Nature Genetics 56: 431–41. https://doi.org/10.1038/s41588-024-01664-3.\n\n\nSong, Dongyuan, Qingyang Wang, Guanao Yan, Tianyang Liu, Tianyi Sun, and Jingyi Jessica Li. 2024. “scDesign3 Generates Realistic in Silico Data for Multimodal Single-Cell and Spatial Omics.” Nature Biotechnology 42: 247–52. https://doi.org/10.1038/s41587-023-01772-1.\n\n\nSun, Shiquan, Jiaqiang Zhu, and Xiang Zhou. 2020. “Statistical Analysis of Spatial Expression Patterns for Spatially Resolved Transcriptomic Studies.” Nature Methods 17: 193–200. https://doi.org/10.1038/s41592-019-0701-7.\n\n\nSvensson, Valentine, Sarah A Teichmann, and Oliver Stegle. 2018. “SpatialDE: Identification of Spatially Variable Genes.” Nature Methods 15: 343–46. https://doi.org/10.1038/nmeth.4636.\n\n\nWeber, Lukas M., Arkajyoti Saha, Abhirup Datta, Kasper D. Hansen, and Stephanie C. Hicks. 2023. “nnSVG for the Scalable Identification of Spatially Variable Genes Using Nearest-Neighbor Gaussian Processes.” Nature Communications 14 (4059). https://doi.org/10.1038/s41467-023-39748-z.\n\n\nYan, Guanao, Shuo Harper Hua, and Jingyi Jessica Li. 2024. “Categorization of 33 Computational Methods to Detect Spatially Variable Genes from Spatially Resolved Transcriptomics Data.” arXiv. https://doi.org/10.48550/arXiv.2405.18779.\n\n\nYu, Jinge, and Xiangyu Luo. 2022. “Identification of Cell-Type-Specific Spatially Variable Genes Accounting for Excess Zeros.” Bioinformatics 38: 4135–44. https://doi.org/10.1093/bioinformatics/btac457.\n\n\nYu, Shan, and Wei Vivian Li. 2024. “spVC for the Detection and Interpretation of Spatial Gene Expression Variation.” Genome Biology 25 (103). https://doi.org/10.1186/s13059-024-03245-3.\n\n\nZhao, Edward, Matthew R. Stone, Xing Ren, Jamie Guenthoer, Kimberly S. Smythe, Thomas Pulliam, Stephen R. Williams, et al. 2021. “Spatial Transcriptomics at Subspot Resolution with BayesSpace.” Nature Biotechnology 39: 1375–84. https://doi.org/10.1038/s41587-021-00935-2.\n\n\nZhu, Jiaqiang, Shiquan Sun, and Xiang Zhou. 2021. “SPARK-x: Non-Parametric Modeling Enables Scalable and Robust Detection of Spatial Expression Patterns for Large Spatial Transcriptomic Studies.” Genome Biology 22 (184). https://doi.org/10.1186/s13059-021-02404-0.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>29</span>  <span class='chapter-title'>Feature selection & testing</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-set-signatures.html",
    "href": "pages/ind-feature-set-signatures.html",
    "title": "30  Feature-set signatures",
    "section": "",
    "text": "30.1 Preamble",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>30</span>  <span class='chapter-title'>Feature-set signatures</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-set-signatures.html#preamble",
    "href": "pages/ind-feature-set-signatures.html#preamble",
    "title": "30  Feature-set signatures",
    "section": "",
    "text": "30.1.1 Introduction\nDifferential gene expression (DGE) analysis between cell subpopulations lets us identify marker genes, i.e., sets of genes that distinguish one group of cells from another. Clustering, however, will always give clusters, and DGE analysis may or may not yield functionally relevant genes (e.g., phenotypic markers).\nWe can instead quantify sets of genes known to orchestrate biological functions or pathways (e.g., metabolic activity, cell cycle and death), both at level of single cells and subpopulations (i.e., pseudo-bulk profiles). Approaches to do this rely on databases of transcription factor binding sites, gene regulatory networks, or annotated gene sets.\n\n\n30.1.2 Dependencies\n\nCodelibrary(AUCell)\nlibrary(ggplot2)\nlibrary(msigdbr)\nlibrary(scuttle)\nlibrary(ggspavis)\nlibrary(pheatmap)\nlibrary(patchwork)\nlibrary(BiocParallel)\nlibrary(SpatialExperiment)\nbp &lt;- MulticoreParam(th &lt;- 4)\n\n\n\nCodespe &lt;- readRDS(\"img-spe_cl.rds\")",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>30</span>  <span class='chapter-title'>Feature-set signatures</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-set-signatures.html#set-scoring",
    "href": "pages/ind-feature-set-signatures.html#set-scoring",
    "title": "30  Feature-set signatures",
    "section": "\n30.2 Set scoring",
    "text": "30.2 Set scoring\nMSigDB provides a programmatic interface to the Molecular Signatures Database (MSigDB) (Subramanian et al. 2005), one of the largest collections of molecular signatures and pathways.\nHere, we query of human hallmark genes sets:\n\nCode# retrieve hallmark gene sets from 'MSigDB'\ndb &lt;- msigdbr(species=\"Homo sapiens\", collection=\"H\")\ngs &lt;- split(db$ensembl_gene, db$gs_name)\n# simplify gene set identifiers\nnames(gs) &lt;- tolower(gsub(\"HALLMARK_\", \"\", names(gs)))\n# how many sets?\nlength(gs) \n\n##  [1] 50\n\nCode# how many genes in each?\nrange(sapply(gs, length)) \n\n##  [1]  32 201\n\n\nNext, we score these with AUCell (Aibar et al. 2017), a rank-based approach that (i) ranks genes for every observation (here, cells), and (ii) compute AUC values for each gene set. These represent the fraction of genes among top-ranked genes (default 5%) that are contained in a given set; i.e., values are in [0,1] and high values = high activity.\n\nCode# realize (sparse) gene expression matrix\nmtx &lt;- as(logcounts(spe), \"dgCMatrix\") \n# use ensembl identifiers as rownames\nrownames(mtx) &lt;- rowData(spe)$ID\n# filter for genes represented in panel\n.gs &lt;- lapply(gs, intersect, rownames(mtx))\n# keep only those with at least 5 genes\n.gs &lt;- .gs[sapply(.gs, length) &gt;= 5]\n# build per-cell gene rankings\nrnk &lt;- AUCell_buildRankings(mtx, BPPARAM=bp, plotStats=FALSE, verbose=FALSE)\n# calculate AUC for each gene set in each cell\nauc &lt;- AUCell_calcAUC(geneSets=.gs, rankings=rnk, nCores=th, verbose=FALSE)\n# add results as cell metadata\ncolData(spe)[rownames(auc)] &lt;- t(assay(auc)) \n\n\n\n30.2.1 Exploratory\nLet’s inspect the percentage of cells with non-zero score across signatures:\n\nCodefq &lt;- rowMeans(assay(auc) &gt; 0)\nfq &lt;- sort(round(100*fq, 2))\nhead(fq) # rarely detected\n\n##        heme_metabolism          adipogenesis     kras_signaling_dn \n##                   7.65                 11.63                 14.89 \n##    il2_stat5_signaling xenobiotic_metabolism inflammatory_response \n##                  17.35                 23.73                 24.06\n\nCodetail(fq) # mostly detected\n\n##         mtorc1_signaling tnfa_signaling_via_nfkb  estrogen_response_late \n##                    68.45                   69.82                   79.23 \n##  estrogen_response_early          uv_response_dn               apoptosis \n##                    79.98                   80.58                   92.90\n\n\nWe might also view how signature scores correlated with one another. Besides the underlying biology, this will be influenced by the number of genes overlapping between sets (here, we are only capturing a little over 300 RNA targets!).\n\nCodecm &lt;- cor(t(assay(auc)), method=\"spearman\")\npheatmap(cm, \n    breaks=seq(-1, 1, 0.1), \n    color=pals::coolwarm(20), \n    cellwidth=10, cellheight=10)\n\n\n\n\n\n\n\nHighly correlated sets will exhibit similar spatial patterns. Let’s visualize some examples; here, hypoxia and myogenesis are spatially exclusive (they are negatively correlated and occupy separated ‘blocks’ in the correlation matrix displayed above), while apoptosis is ubiquitous (detected in &gt;90% of cells).\n\nCodelapply(c(\"hypoxia\", \"apoptosis\", \"myogenesis\"), \\(.) {\n    q &lt;- quantile(x &lt;- spe[[.]], c(0.01, 0.99))\n    x &lt;- (x-q[1])/diff(q) # 01-quantile scaling\n    x[x &lt; 0] &lt;- 0; x[x &gt; 1] &lt;- 1; spe[[.]] &lt;- x\n    plt &lt;- plotCoords(spe, annotate=., point_size = 0.01) \n    plt\n}) |&gt; \n    wrap_plots(nrow=1, guides=\"collect\") & \n    scale_color_gradientn(\n        \"q-scaled\\nAUCell\", \n        colors=hcl.colors(9, \"Plasma\")) &\n    theme(\n        legend.key.height=unit(1, \"lines\"),\n        legend.key.width=unit(0.5, \"lines\"),\n        panel.background=element_rect(fill=\"black\")) \n\n\n\n\n\n\n\nLastly, we can aggregate signature scores by cell subpopulations. This can help us functionally characterize subpopulations that stem from, e.g., unsupervised approaches or in cases where the cells under study are poorly characterized.\n\nCode# aggregate AUC values by cluster\nmu &lt;- aggregateAcrossCells(auc, ids=colLabels(spe), use.assay.type=\"AUC\", statistics=\"mean\")\n# visualize as (set x cluster) heatmap\npheatmap(mat=assay(mu), scale=\"row\", col=pals::coolwarm())\n\n\n\n\n\n\n\nIn a multi-sample setting - say, where sections across different stages of development, treatments, or health and disease - signatures may be compared between experimental conditions. Ideally, this’d be done at the subpopulation level, since compositional differences are deemed to drive differences (e.g., sections richer in CD8+ T cells are, by chance, more likely to score higher for cytotoxicity than sections where CD8+ T cells are absent, or similar).",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>30</span>  <span class='chapter-title'>Feature-set signatures</span>"
    ]
  },
  {
    "objectID": "pages/ind-feature-set-signatures.html#appendix",
    "href": "pages/ind-feature-set-signatures.html#appendix",
    "title": "30  Feature-set signatures",
    "section": "\n30.3 Appendix",
    "text": "30.3 Appendix\nReferences\n\n\n\n\nAibar, Sara, Carmen Bravo González-Blas, Thomas Moerman, Vân Anh Huynh-Thu, Hana Imrichova, Gert Hulselmans, Florian Rambow, et al. 2017. “SCENIC: Single-Cell Regulatory Network Inference and Clustering.” Nature Methods 14: 1083–86. https://doi.org/10.1038/nmeth.4463.\n\n\nSubramanian, Aravind, Pablo Tamayo, Vamsi K Mootha, Sayan Mukherjee, Benjamin L Ebert, Michael A Gillette, Amanda Paulovich, et al. 2005. “Gene Set Enrichment Analysis: A Knowledge-Based Approach for Interpreting Genome-Wide Expression Profiles.” Proceedings of the National Academy of Sciences of the USA 102 (43): 15545–50. https://doi.org/10.1073/pnas.0506580102.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>30</span>  <span class='chapter-title'>Feature-set signatures</span>"
    ]
  },
  {
    "objectID": "pages/ind-spatial-statistics.html",
    "href": "pages/ind-spatial-statistics.html",
    "title": "31  Spatial statistics",
    "section": "",
    "text": "31.1 Preamble",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>31</span>  <span class='chapter-title'>Spatial statistics</span>"
    ]
  },
  {
    "objectID": "pages/ind-spatial-statistics.html#preamble",
    "href": "pages/ind-spatial-statistics.html#preamble",
    "title": "31  Spatial statistics",
    "section": "",
    "text": "31.1.1 Introduction\nSpatial statistics builds around the first law of geography of Tobler (1970) that states “everything is related to everything else, but near things are more related than distant things”. This dependence of spatial observations has been studied in the field of (geo)spatial statistics. In general, spatial dependence is estimated by comparing the values at one location with the values at another location that is a given distance (‘spatial lag’) away (Dale and Fortin 2014; Baddeley, Rubak, and Turner 2015).\nThe two technological streams, imaging- and sequencing-based assays, are very different in terms of data modalities:\n\nIn imaging-based assays (e.g., CosMx and Xenium) the observations of interest (e.g., mRNAs) are recorded where they occur natively. This means the locations of the observations are governed by a stochastic process and can be approximated as a point process or as an irregular lattice.\nIn sequencing-based assays (e.g., Visium), however, measurements are made along a defined grid, or lattice. This lattice is not created by a stochastic process and therefore cannot be approximated as a point process. Here, lattice data analysis methods have to be used. Notably, there are methods where cells can be segmented from very fine bins (e.g., Visium HD and IMC); these technologies can be approximated as being generated by a point process after segmentation (Emons et al. 2025; Baddeley, Rubak, and Turner 2015; Pebesma and Bivand 2023).\n\nIn the following vignette, the two main exploratory spatial statistics streams, point pattern analysis and lattice data analysis will be introduced.\n\n31.1.2 Dependencies\n\nCodelibrary(dplyr)\nlibrary(scran)\nlibrary(spdep)\nlibrary(tidyr)\nlibrary(ggplot2)\nlibrary(Voyager)\nlibrary(SFEData)\nlibrary(spatstat)\nlibrary(openxlsx)\nlibrary(spatialFDA)\nlibrary(BiocParallel)\nlibrary(STexampleData)\nlibrary(SpatialExperiment)\nlibrary(SpatialFeatureExperiment)\n# specify whether/how to \n# perform parallelization\nbp &lt;- MulticoreParam(4)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(77)\n\n\n\nCode# load dataset as SPE & convert to SFE\nspe &lt;- Janesick_breastCancer_Xenium_rep1()\nsfe &lt;- toSpatialFeatureExperiment(spe)\n\n# load the official 10X annotations \nfnm &lt;- \"https://cdn.10xgenomics.com/raw/upload/v1695234604/Xenium%20Preview%20Data/Cell_Barcode_Type_Matrices.xlsx\"\nlabels &lt;- read.xlsx(fnm, sheet=4)\nlabels$cell_id &lt;- (labels$Barcode)\n\n# add the cell type labels to the spe\ncd &lt;- as.data.frame(colData(sfe))\ncd &lt;- left_join(cd, \n    as.data.frame(labels), \n    by=join_by(\"cell_id\"))\ncolData(sfe) &lt;- DataFrame(cd)\n\n# exclude 0-count cells &\n# cells without annotation\nsfe &lt;- sfe[, colSums(counts(sfe)) &gt; 0]\nsfe &lt;- sfe[, !is.na(sfe$Cluster)]\n\n# log-library size normalization\nsfe &lt;- logNormCounts(sfe)\n\n# basic theme for spatial plots\nxy &lt;- spatialCoords(sfe)\ntheme_xy &lt;- list(\n    coord_equal(expand=FALSE), \n    theme_void(), theme(\n        plot.margin=margin(l=5),\n        legend.key=element_blank(),\n        panel.background=element_rect(fill=\"black\")))",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>31</span>  <span class='chapter-title'>Spatial statistics</span>"
    ]
  },
  {
    "objectID": "pages/ind-spatial-statistics.html#lattice-data-analysis",
    "href": "pages/ind-spatial-statistics.html#lattice-data-analysis",
    "title": "31  Spatial statistics",
    "section": "\n31.2 Lattice data analysis",
    "text": "31.2 Lattice data analysis\n\n31.2.1 Introduction\nIn this chapter, we will use the human breast cancer Xenium dataset (Janesick et al. 2023), which we loaded above (using the STexampleData package (Righelli et al. 2022)) and converted into a SpatialFeatureExperiment object. The SpatialFeatureExperiment package integrates the SpatialExperiment class with geometric annotations that are represented as Simple Features in the sf packages. We will use the Voyager package (Moses et al. 2023), which provides convenient wrappers around classic geospatial R packages such as spdep (Pebesma and Bivand 2023). For more details, please consult the authors’ comprehensive vignettes.\nThis part is based on the pasta resource vignette on lattice data analysis (Emons et al. 2025).\n\n31.2.2 The spatial weight matrix\nLattice based spatial methods rely on the concept of neighborhood. The neighborhood defines the spatial dependency between locations. Therefore, the first step of lattice based spatial analysis is the construction of a spatial weight matrix. Here we will use a nearest neighbor-based approach.\n\n\n\n\n\n\nNoteSpatial weight matrix\n\n\n\n\n\nDifferent methods for the construction of the weight matrix exist, such as\n\ncontiguity-based neighbors (neighbors in direct contact),\ngraph-based neighbors (e.g., k-nearest neighbors),\ndistance-based neighbors,\nhigher order neighbors.\n\nA detailed overview can be found in the documentation of the spdep package.\nAs different weight matrices influence downstream results, analysts should justify their choice of the weight matrix. A more detailed overview can be found in Pebesma and Bivand (2023).\n\n\n\n\nCode# construct (K=6)NN-graph using cell centroids\nknn6 &lt;- findSpatialNeighbors(sfe, type=\"centroids\", method=\"knearneigh\", k=6)\ncolGraph(sfe, \"knn6\") &lt;- knn6\n# visualize across tissue section\nplotColGraph(sfe, \n    colGraphName=\"knn6\", \n    colGeometryName=\"centroids\", \n    segment_size=0.1,\n    geometry_size=0.1) + \n    theme_void()\n\n\n\n\n\n\n\n\n31.2.3 Spatial autocorrelation\nSpatial autocorrelation measures similarity between spatial units (e.g., cells) while recognize that the units are not independent due to their spatial context. Spatial autocorrelation metrics can be global (summarizing the entire study area) of view or local (provide statistic for each unit). In addition, there exist methods for univariate and multivariate comparisons of continuous and categorical data (Pebesma and Bivand 2023).\n\n31.2.3.1 Univariate measures - Moran’s \\(I\\)\n\nMoran’s \\(I\\) can be interpreted as the Pearson correlation between the value at a certain location and the average values of its neighbors. The global value is a weighted average of the respective local values (Moran 1950).\n\nCode# get gene probes & compute Moran's I for them\nidx &lt;- rowData(sfe)$Type == \"Gene Expression\"\nlength(geneProbes &lt;- rowData(sfe)[idx, \"Symbol\"])\n\n##  [1] 313\n\nCodesfe &lt;- runUnivariate(sfe, \n    type=\"moran\", \n    features=geneProbes, \n    colGraphName=\"knn6\", \n    BPPARAM=bp)\n\n\nWe can visualize the three genes with highest Moran’s \\(I\\).\n\nCodeI &lt;- rowData(sfe)$moran_sample01\no &lt;- order(I, decreasing=TRUE)\ntopGenes &lt;- rownames(sfe)[head(o, 3)]\nplotSpatialFeature(sfe, topGenes, ncol=3)\n\n\n\n\n\n\n\nWe can further visualize this using when calculating and plotting local Moran’s \\(I\\) values (Anselin 1995). The interpretation is analogue to the global counterpart. The higher the value, the more similar the expression among a cell’s neighbors. Negative values indicate local dissimilarity in expression.\n\nCodesfe &lt;- runUnivariate(sfe, \n    type=\"localmoran\", \n    features=topGenes, \n    colGraphName=\"knn6\", \n    BPPARAM=bp)\nplotLocalResult(sfe,\n    name=\"localmoran\",\n    features=topGenes,\n    colGeometryName=\"centroids\",\n    divergent=TRUE,\n    diverge_center=0,\n    ncol=3)\n\n\n\n\n\n\n\n\n\n\n\n\n\nNoteStatistical interpretation of autocorrelation\n\n\n\n\n\nDuring the interpretation of local autocorrelation measures, both the effect size (the value of the statistic) and the significance level should be considered. Because we calculate significance on each spot individually, values should be corrected for multiple testing.\n\nCodeplotLocalResult(sfe,\n    name=\"localmoran\",\n    features=topGenes,\n    attribute=\"-log10p_adj\",\n    colGeometryName=\"centroids\",\n    divergent=TRUE,\n    diverge_center=0,\n    ncol=3)\n\n\n\n\n\n\n\n\n\n\n\n31.2.3.2 Multivariate measures – Lee’s L\nLee’s \\(L\\) combines the Pearson correlation coefficient and Moran’s \\(I\\) (Lee 2001). This unified metric allows to evaluate how two continuous variables are related while accounting for their spatial dependencies. We will calculate the global metric on the 20 most highly (non-spatial) variable features.\n\nCoderes &lt;- calculateBivariate(sfe, type=\"lee\", feature1=geneProbes, colGraphName=\"knn6\")\n\n\nWe will identify the gene pairs with highest Lee’s \\(L\\) value and then calculate and visualize the respective local measure.\n\nCode# select the 20 highest values in the res matrix\nval &lt;- tail(sort(res), 20)[1]\ngenePairs &lt;- which(res &gt;= val, arr.ind=TRUE)\n# keep only pairs containing different genes\ngenePairs &lt;- genePairs[genePairs[,1] != genePairs[,2], ]\ndata.frame(\n    val=res[genePairs],\n    i=rownames(res)[genePairs[,1]], \n    j=colnames(res)[genePairs[,2]])\n\n##          val     i     j\n##  1 0.6436054 FOXA1 EPCAM\n##  2 0.6669321  KRT7 EPCAM\n##  3 0.6436054 EPCAM FOXA1\n##  4 0.6308081  KRT7 FOXA1\n##  5 0.6669321 EPCAM  KRT7\n##  6 0.6308081 FOXA1  KRT7\n##  7 0.6416129  KRT8  KRT7\n##  8 0.6416129  KRT7  KRT8\n\n\n\nCodesfe &lt;- runBivariate(\n    sfe,\n    type=\"locallee\",\n    colGraphName= \"knn6\",\n    feature1=c(\"EPCAM\", \"KRT7\"))\nplotLocalResult(\n    sfe,\n    name=\"locallee\",\n    features=\"KRT7__EPCAM\",\n    colGeometryName=\"centroids\",\n    divergent=TRUE, diverge_center=0)\n\n\n\n\n\n\n\n\n31.2.4 Join count statistics\nJoin count statistics can be used to quantify the arrangement of categorical marks on lattices. The join count statistic calculates how often a categorical mark appears next to itself or to another category within the pre-defined neighborhood. This values can then be compared against a theoretical or a permutation-based value test of the null hypothesis of random spatial allocation of the marks (Getis 2009).\nHere, we will use the this to quantify the tendency of clusters (non-spatial) to co-localize in their relative neighborhood. Note that the output contains z-scores and no p-values such that a user-defined threshold can be applied.\n\nCode# code adapted from \n# https://robinsonlabuzh.github.io/\n# pasta/04-imaging-multivar-latSOD.html\n\n# dependencies\nlibrary(BiocNeighbors)\nlibrary(BiocSingular)\nlibrary(bluster)\nlibrary(scater)\n\n# log-library size normalization\nsfe &lt;- logNormCounts(sfe)\n\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(123)\n\n# run PCA on the sample\nsfe &lt;- runPCA(sfe, exprs_values=\"logcounts\", ncomponents=50)\n\n# cluster based on first 10 PC's \n# using Leiden community detection\npcs &lt;- reducedDim(sfe, \"PCA\")[, 1:10]\nparams &lt;- KNNGraphParam(\n    k=20,\n    cluster.fun=\"leiden\",\n    cluster.args=list(\n        resolution=0.3,\n        objective_function=\"modularity\"))\ncolData(sfe)$cluster &lt;- clusterRows(pcs, BLUSPARAM=params)\n\n# visualize cluster assignments\nplotSpatialFeature(sfe, \n    features=\"cluster\", colGeometryName=\"centroids\") +\n    guides(col=guide_legend(override.aes=list(size=2)))\n\n\n\n\n\n\n\n\nCoderesJc &lt;- joincount.multi(as.factor(sfe$cluster), colGraph(sfe, \"knn6\"))\nresJc &lt;- resJc[order(resJc[, \"z-value\"], decreasing=TRUE), ]\nhead(resJc, 20)\n\n##       Joincount   Expected  Variance    z-value\n##  4:4 14910.0833 3836.16091 383.08992 565.784589\n##  3:3 10405.4167 2077.05255 235.08187 543.187966\n##  1:1  1985.0000  112.32999  16.22122 464.964203\n##  5:5  2250.0833  260.53248  36.26822 330.363413\n##  8:8  9711.9167 3652.23050 369.06495 315.426904\n##  6:6  2567.8333  468.89491  62.89311 264.666011\n##  7:7  4466.4167 1480.49383 176.49437 224.756962\n##  9:9   391.8333   61.85256   9.09270 109.431461\n##  5:3  2839.5833 1471.35090 186.35733 100.227440\n##  2:2  1480.5833  661.75293  86.31994  88.132969\n##  8:2  4698.1667 3109.40924 364.44710  83.222420\n##  7:2  2962.8333 1979.72857 249.88363  62.191481\n##  9:8  1546.4167  950.69679 116.58886  55.171345\n##  9:7  1058.5000  605.29878  80.41584  50.538260\n##  9:2   689.5833  404.68703  56.16565  38.014689\n##  7:6  1888.9167 1666.47278 212.86306  15.246506\n##  6:2  1236.5833 1114.16038 148.32507  10.052071\n##  8:7  4509.8333 4650.80788 527.08776  -6.140436\n##  9:6   283.0833  340.65272  47.92377  -8.316030\n##  8:6  2441.5000 2617.40217 310.01770  -9.990287\n\n\nWe note that the non-spatial cluster labels are of course most likely found next to each other. Apart from this obvious result, the first top non-self interaction is \\(5:3\\). Looking at the plot of the spatial distributions of the clusters these are two clusters in the ductal carcinoma regions of the tissue, the carcinoma core and the border.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>31</span>  <span class='chapter-title'>Spatial statistics</span>"
    ]
  },
  {
    "objectID": "pages/ind-spatial-statistics.html#point-pattern-analysis",
    "href": "pages/ind-spatial-statistics.html#point-pattern-analysis",
    "title": "31  Spatial statistics",
    "section": "\n31.3 Point Pattern Analysis",
    "text": "31.3 Point Pattern Analysis\nPoint pattern analysis is a subfield of spatial statistics that focuses on the representation of spatial locations of events or objects as points (Baddeley, Rubak, and Turner 2015) (p. 3). There are two main ways how to summarize cells as points (Emons et al. 2025):\n\napproximate the features (mRNAs) as points.\nsegment the cells and represent the centroids as points.\n\nThe central R package to perform point pattern analysis is called spatstat (Baddeley and Turner 2005). The package spatialFDA creates an interface between SpatialExperiment objects and the spatstat library for easy integration into analysis workflows.\nPart of this vignette is based on the pasta overview vignette and another vignette (Emons et al. 2025)\n\n\n\n\n\n\nNoteppp object\n\n\n\n\n\nThe central object in spatstat is called ppp. This object contains three attributes:\n\nthe \\(x\\) and \\(y\\) coordinates of the points\nthe observation window of the pattern\nmarks which are associated with each point; this can be, e.g., a discrete cell type mark or a continuous gene expression mark\n\n(Baddeley and Turner 2005)\n\n\n\nIn the following we will work with a Xenium dataset of breast cancer (Janesick et al. 2023). The representation of cells as points is done via cell centroids.\nIn the plot below, the centroids of the cells are attributed with a discrete cell type mark.\n\nCodedf &lt;- data.frame(xy, colData(sfe))\nggplot(df, aes(x_centroid, y_centroid, col=Cluster)) +\n    guides(col=guide_legend(override.aes=list(size=2))) +\n    theme_xy + theme(legend.key.size=ggplot2::unit(0, \"pt\")) +\n    geom_point(shape=16, size=0.1) \n\n\n\n\n\n\n\n\n31.3.1 Intensity\nThe first property to assess in a point pattern is the intensity. For a window \\(W\\) and points \\(x\\), the average intensity \\(\\bar{\\lambda}\\) is defined as the number of points \\(n(x)\\) divided by the area of the window \\(|W|\\):\n\\[\n\\bar{\\lambda}=\\frac{n(x)}{|W|}\n\\]\nThe intensity of the points can be uniform in space which is called homogeneous. If the intensity is not uniform in space, it is called inhomogeneous. This distinction has important implications for the choice of the spatial metrics. Most metrics have a correction for inhomogeneous intensity of points (Baddeley, Rubak, and Turner 2015) (p. 157 onwards).\n\n\n\n\n\n\nNoteEstimating intensity\n\n\n\n\n\n\nCodedf &lt;- .speToDf(sfe)\npp &lt;- .dfToppp(df, marks=\"Cluster\")\nplot(density(x=pp, sigma=bw.diggle))\n\n\n\n\n\n\n\nIn the plot above we see that the intensity of all points is not uniform. This inhomogeneity of points has to be taken into accounts when interpreting spatial statistics metrics. For example, an indication of clustering in a point pattern can be due solely to an inhomogeneity of points. This is called the confounding between intensity and interaction (Baddeley, Rubak, and Turner 2015) (p. 151 onwards).\n\n\n\n\n31.3.2 Global Analysis\nGlobal analyses summarize a statistic across the entire field of view. This means it reflects an average statistic and might not be reflective of local heterogeneities (Emons et al. 2025).\n\n31.3.2.1 Correlation\nOne option in point pattern analysis is to analyse the correlation of marks. Like this, e.g., a clustering or spacing of cells can be determined relative to a completely spatially random (CSR) process.\n\n\n\n\n\n\nNoteComplete spatial randomness\n\n\n\n\n\nComplete spatial randomness (CSR) is the null scenario for a point pattern. It is characterized by two key properties:\n\nHomogeneity: The intensity of points is homogeneous in space.\nIndependence: The points in one region do not influence the distribution of points in another region.\n\n(Baddeley, Rubak, and Turner 2015) (p. 199 onwards)\n\n\n\n\n31.3.2.1.1 Ripley’s \\(K\\)\n\nRipley’s \\(K\\) is a well established function to assess correlation in a point pattern. It can be calculated within a mark or across marks. In essence, Ripley’s \\(K\\) quantifies the average number of points that fall in a \\(r\\)-neighborhood of a chosen mark (Ripley 1976; Baddeley, Rubak, and Turner 2015) (p. 132 onwards).\n\nCoderesCross &lt;- calcCrossMetricPerFov(\n    sfe,\n    selection=c(\"DCIS_1\", \"DCIS_2\", \"Invasive_Tumor\"),\n    subsetby=\"sample_id\",\n    fun=\"Kcross\",\n    marks=\"Cluster\",\n    rSeq=seq(0, 500, l=100),\n    by=\"sample_id\")\n\n\nWe can plot Ripley’s \\(K\\) function not corrected for inhomogeneities of the chosen marks. Here, the diagonal is Ripley’s \\(K\\) function among the three cell types themselves and the off diagonal plots show the cross type combinations.\n\nCodeplotCrossMetricPerFov(\n    metricDf=resCross, \n    theo=TRUE,\n    correction=\"border\", \n    x=\"r\", \n    imageId=\"sample_id\")\n\n##  [[1]]\n\n\n\n\n\n\n\n\nWe note that all cell types, ductal carcinoma in situ 1 (DCIS 1), ductal carcinoma in situ 2 (DCIS 2), and invasive tumor cells show a clear interaction among themselves. DCIS 1 and invasive tumor cells show spacing, meaning there are fewer invasive tumor cells found in DCIS 1 than expect under complete spatial randomness (CSR). However, DCIS 2 and invasive tumor cells show a distribution that is completely spatially random in a \\(500 µm\\) \\(r\\)-neighborhood.\n\n31.3.2.2 Spacing\nA complementary approach to correlation analysis is spacing. There are three main distance types (Baddeley, Rubak, and Turner 2015) (p. 255):\n\npairwise distances: distances between all pairs of points\nnearest-neighbor distances: distance to the nearest point of the query point\nempty-space distances: distance from a reference location to the nearest point\n\n\n31.3.2.2.1 Nearest-neighbor distance function \\(G\\)\n\nThe nearest neighbor function \\(G\\) quantifies the average nearest-neighbor distance over a radius range \\(r\\) (Baddeley, Rubak, and Turner 2015) (p. 262).\n\nCoderesCross &lt;- calcCrossMetricPerFov(\n    sfe,\n    selection=c(\"DCIS_1\", \"DCIS_2\", \"Invasive_Tumor\"),\n    subsetby=\"sample_id\",\n    fun=\"Gcross\",\n    marks=\"Cluster\",\n    rSeq=seq(0, 100, l=100),\n    by=\"sample_id\")\nplotCrossMetricPerFov(\n    resCross,\n    theo=TRUE,\n    correction=\"km\",\n    x=\"r\",\n    imageId=\"sample_id\")[[1]]\n\n\n\n\n\n\n\nIn terms of spacing, the interpretation is a bit different. Still, the diagonal shows that all cell types are more clustered than expected if the patterns were completely spatially random. Comparing now DCIS 1 and DCIS 2 with invasive tumor cells, we see that both are more spaced than expect at random. However, the spacing is stronger for DCIS 1 and invasive tumor cells. At small radii, DCIS 2 and invasive tumor are distributed close to random.\nThe analysis with Ripley’s \\(K\\) and the \\(G\\) function are not contradictory. \\(G\\) functions summarize shorter scale interactions than \\(K\\) functions (Baddeley, Rubak, and Turner 2015) (p. 295).\n\n31.3.3 Local Analysis\n\n31.3.3.1 Local indicators of spatial association\nThe metrics shown before are an average over the entire window \\(W\\). Anselin (1995) proposed an alternative approach which is termed local indicators of spatial association (LISA). Instead of a global average LISA shows the local contributions of each point to the overall metric (Baddeley, Rubak, and Turner 2015) (p. 247). This is a general concept not only for point pattern analysis but for lattice data analysis as well (Anselin 1995, 2019).\n\nCode# subset to only Invasive tumor cells \nppSub &lt;- subset(pp, marks %in% \"Invasive_Tumor\")\n# restrict to a smaller window for computational reasons\nWindow(ppSub) &lt;- owin(c(3500, 7524.087), c(1200, 5475.691))\n# plot the point pattern\nplot(ppSub)\n\n\n\n\n\n\n\n\nCode# calculate LISA K curves\nresLocal &lt;- localK(ppSub, verbose=FALSE) \n\n# code adapted from \n# https://robinsonlabuzh.github.io/\n# pasta/01-imaging-univar-ppSOD.html\ndf &lt;- resLocal |&gt;\n    as.data.frame() |&gt;\n    pivot_longer(\n        iso0001:iso1327, \n        names_to=\"curve\") \n\nsel &lt;- df |&gt;\n    filter(r &gt; 700.5630 & r &lt; 702.4388) |&gt;\n    mutate(sel=value) |&gt; \n    select(curve, sel)\n\ndf &lt;- left_join(df, sel)\n\nthm &lt;- list(\n    theme_light(),\n    theme(legend.position=\"none\"),\n    scale_color_viridis_c())\n\np &lt;- ggplot(df, aes(r, value, group=curve, col=sel)) +\n    geom_line() +\n    geom_line(aes(y=theo), linetype=2, col=\"darkgray\") +\n    geom_vline(xintercept=700) +\n    thm\n\ndf &lt;- data.frame(\n    x=ppSub$x, y=ppSub$y, \n    sel=unique(sel)$sel)\n\nq &lt;- ggplot(df, aes(x, y, col=sel)) +\n    coord_equal(expand=FALSE) +\n    geom_point(size=1) + \n    thm\n \np | q\n\n\n\n\n\n\n\nThe LISA Ripley’s \\(K\\) are colored by their value at \\(r = 700\\). We note that the LISA Ripley’s \\(K\\) gives two populations of curves. Those curves that increase at radii \\(r&lt;500 µm\\) above the CSR line indicated in gray and the other curves that remain either below the gray CSR line or increase after \\(r&gt;500µm\\).\nIf the values at \\(r=700\\) of the curves are projected back into the physical space, we note that the curves above the gray CSR line are the highly clustered cells in the bottom left. The other curves are the more spaced cells.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>31</span>  <span class='chapter-title'>Spatial statistics</span>"
    ]
  },
  {
    "objectID": "pages/ind-spatial-statistics.html#appendix",
    "href": "pages/ind-spatial-statistics.html#appendix",
    "title": "31  Spatial statistics",
    "section": "\n31.4 Appendix",
    "text": "31.4 Appendix\nReferences\n\n\n\n\nAnselin, Luc. 1995. “Local Indicators of Spatial Association—LISA.” Geographical Analysis 27: 93–115. https://doi.org/10.1111/j.1538-4632.1995.tb00338.x.\n\n\n———. 2019. “A Local Indicator of Multivariate Spatial Association: Extending Geary’s c.” Geographical Analysis 51: 133–50. https://doi.org/10.1111/gean.12164.\n\n\nBaddeley, Adrian, Ege Rubak, and Rolf Turner. 2015. Spatial Point Patterns: Methodology and Applications with r. 1st Edition. Chapman; Hall/CRC. https://doi.org/10.1201/b19708.\n\n\nBaddeley, Adrian, and Rolf Turner. 2005. “Spatstat: An r Package for Analyzing Spatial Point Patterns.” Journal of Statistical Software 12: 1–42. https://doi.org/10.18637/jss.v012.i06.\n\n\nDale, Mark R. T., and Marie-Josée Fortin. 2014. Spatial Analysis: A Guide for Ecologists. 2nd Edition. Cambridge University Press. https://doi.org/10.1017/CBO9780511978913.\n\n\nEmons, Martin, Samuel Gunz, Helena L. Crowell, Izaskun Mallona, Reinhard Furrer, and Mark D. Robinson. 2025. “Harnessing the Potential of Spatial Statistics for Spatial Omics Data with Pasta.” Nucleic Acids Research 53 (17): gkaf870. https://doi.org/10.1038/s41467-022-28020-5.\n\n\nGetis, Arthur. 2009. “Spatial Weights Matrices.” Geographical Analysis 41: 404–10. https://doi.org/10.1111/j.1538-4632.2009.00768.x.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.\n\n\nLee, Sang-Il. 2001. “Developing a Bivariate Spatial Association Measure: An Integration of Pearson’s r and Moran’s i.” Journal of Geographical Systems 3: 369–85. https://doi.org/10.1007/s101090100064.\n\n\nMoran, P. A. P. 1950. “Notes on Continuous Stochastic Phenomena.” Biometrika 37: 17–23. https://doi.org/10.2307/2332142.\n\n\nMoses, Lambda, Pétur Helgi Einarsson, Kayla Jackson, Laura Luebbert, A. Sina Booeshaghi, Sindri Antonsson, Nicolas Bray, Páll Melsted, and Lior Pachter. 2023. “Voyager: Exploratory Single-Cell Genomics Data Analysis with Geospatial Statistics.” bioRxiv. https://doi.org/10.1101/2023.07.20.549945.\n\n\nPebesma, Edzer, and Roger Bivand. 2023. Spatial Data Science: With Applications in r. 1st Edition. Chapman; Hall/CRC. https://doi.org/10.1201/9780429459016.\n\n\nRighelli, Dario, Lukas M Weber, Helena L Crowell, Brenda Pardo, Leonardo Collado-Torres, Shila Ghazanfar, Aaron T L Lun, Stephanie C Hicks, and Davide Risso. 2022. “SpatialExperiment: Infrastructure for Spatially-Resolved Transcriptomics Data in r Using Bioconductor.” Bioinformatics 38: 3128–31. https://doi.org/10.1093/bioinformatics/btac299.\n\n\nRipley, B. D. 1976. “The Second-Order Analysis of Stationary Point Processes.” Journal of Applied Probability 13: 255–66. https://doi.org/10.2307/3212829.\n\n\nTobler, W. R. 1970. “A Computer Movie Simulating Urban Growth in the Detroit Region.” Economic Geography 46: 234–40. https://doi.org/10.2307/143141.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>31</span>  <span class='chapter-title'>Spatial statistics</span>"
    ]
  },
  {
    "objectID": "pages/ind-image-analysis.html",
    "href": "pages/ind-image-analysis.html",
    "title": "32  Image analysis",
    "section": "",
    "text": "32.1 Preamble",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>32</span>  <span class='chapter-title'>Image analysis</span>"
    ]
  },
  {
    "objectID": "pages/ind-image-analysis.html#preamble",
    "href": "pages/ind-image-analysis.html#preamble",
    "title": "32  Image analysis",
    "section": "",
    "text": "32.1.1 Introduction\nBiomedical image analysis encompasses a wide range of imaging modalities, including computed tomography (CT) scans, magnetic resonance imaging (MRI), immunofluorescence (IF), and histological staining such as hematoxylin and eosin (H&E). In this chapter, we focus specifically on the analysis of H&E-stained histopathological images, which are routinely used in clinical diagnostics due to their low cost and ability to reveal rich morphological details.\nThe R and Bioconductor ecosystems offer several tools and workflows to work with digital pathology data. However, a central question remains: what constitutes the most valuable information in these images? Is it the image itself, or the biological and clinical insights that can be computationally extracted from it?\nIn previous chapters, spatial transcriptomics and its power in linking gene expression to tissue architecture is discussed. Here, we continue along this line by exploring how histopathological images can be leveraged to extract meaningful features that serve as input for integrative analyses in cancer research and beyond.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>32</span>  <span class='chapter-title'>Image analysis</span>"
    ]
  },
  {
    "objectID": "pages/ind-image-analysis.html#background",
    "href": "pages/ind-image-analysis.html#background",
    "title": "32  Image analysis",
    "section": "\n32.2 Background",
    "text": "32.2 Background\n\n32.2.1 H&E images\nHistology is the study of normal tissue structure, whereas pathology focuses on identifying abnormalities in diseased tissues – both commonly rely on hematoxylin and eosin (H&E) staining to visualize cellular and tissue morphology. This is why the term histopathology is used to describe the microscopic examination of diseased tissue.\nHematoxylin and eosin (H&E) staining is one of the most widely used and cost-effective techniques in histopathology. It provides essential morphological information by staining cell nuclei (hematoxylin) and cytoplasmic or extracellular components (eosin), allowing for clear visualization of tissue architecture. Due to its low cost, high availability, and compatibility with routine clinical workflows, H&E staining is the standard first step in pathological diagnosis.\nIn recent years, digital pathology has enabled the large-scale acquisition and analysis of H&E-stained whole-slide images (WSIs), fostering the development of computational methods to extract quantitative features and support data-driven research in cancer and other diseases. Recent studies have demonstrated how histopathological images can be used to predict genomic alterations, transcriptional states, or even patient outcomes using machine learning (Madabhushi and Lee 2016; Schmauch et al. 2020; Bergstrom et al. 2024). Examples include HE2RNA, which predicts RNA-Seq profiles from images (Schmauch et al. 2020), and models that infer spatial transcriptomics data from histology (Pizurica et al. 2024).\nDigital pathology workflows rely on high-resolution whole-slide images (WSIs) generated by proprietary scanners from different vendors. These WSIs are saved in specific file formats, each corresponding to a particular scanner type. Understanding these formats is essential for designing interoperable and reproducible computational pipelines.\nThe scanner brands and their respective file formats commonly encountered in digital pathology include:\n\nAperio: .svs, .tif\nDICOM-compatible scanners: .dcm\nHamamatsu: .vms, .vmu, .ndpi\nLeica: .scn\nMIRAX: .mrxs\nPhilips: .tiff\nSakura: .svslide\nTrestle: .tif\nVentana: .bif, .tif\nZeiss: .czi\nGeneric tiled TIFF: .tif\n\n\n\n\n\n\n\n\n\nFigure 32.1: The pyramidal structure of WSI, resulting from different levels of resolution\n\n\n\nEach scanner uses a unique tiling scheme and metadata structure to support rapid visualization and efficient storage. For instance, Aperio’s .svs format uses a pyramidal tiling strategy with multiple image resolutions stored within a single file (Figure 32.1).\nSeveral publicly available repositories, such as The Cancer Genome Atlas (TCGA) and The Cancer Imaging Archive (TCIA), provide free access to large-scale genomic and imaging datasets. In the following sections, we will explore these resources in more detail.\n\n32.2.2 IF images\nImmunofluorescence (IF) is a microscopy-based technique that leverages the specificity of antibodies conjugated with fluorescent dyes to visualize the distribution and abundance of target proteins within cells or tissue sections. Compared to H&E staining, which provides morphological context, IF offers molecular specificity by enabling the simultaneous detection of multiple biomarkers. This makes IF particularly powerful for studying cellular phenotypes, spatial relationships, and microenvironmental organization (Bisht et al. 2022; Miller and Shakes 1995).\nIn multiplex immunofluorescence (mIF) or multispectral imaging, multiple fluorophores with distinct excitation and emission spectra are used to label different antigens within the same tissue section. These methods allow for a detailed characterization of complex cellular ecosystems, such as the tumor microenvironment (TME), by quantifying the co-localization and spatial arrangement of different immune and stromal cell types. Advances in imaging technologies, such as confocal and spinning disk microscopy, as well as spectral unmixing algorithms, have further enhanced the resolution and sensitivity of IF-based analyses (Gerdes et al. 2013; Giesen et al. 2014).\nThe choice of markers depends on the biological question, commonly including:\n\nNuclear markers (e.g., DAPI) for cell nuclei visualization;\nCytoplasmic or membrane markers to identify cell types or states, such as pan-cytokeratin (PanCK) for epithelial cells or CD45 for immune cells;\nFunctional markers indicating proliferation (e.g., Ki-67), apoptosis, or signaling pathway activation;\nTME markers to characterize immune infiltration or stromal components.\n\nQuantitative IF image analysis typically involves several steps:\n\nImage preprocessing, including illumination correction and background subtraction;\nSegmentation, to delineate nuclei, cytoplasm, or membrane regions;\nFeature extraction, capturing intensity, co-localization, and texture metrics;\nSpatial analysis, to measure cell–cell interactions and neighborhood structures.\n\nModern open-source software platforms such as QuPath and Napari provide powerful tools for the visualization, annotation, and quantitative analysis of both H&E and IF images.\n\nQuPath (Bankhead et al. 2017) offers user-friendly workflows for cell segmentation, marker quantification, and batch processing of large slide collections. It supports both brightfield and fluorescence imaging and can be extended through Groovy or Python scripting.\nNapari (Sofroniew et al. 2025), a fast, interactive, multi-dimensional image viewer for Python, is particularly suited for high-dimensional fluorescence data. It allows plugin-based integration with analysis frameworks such as scikit-image, cellpose, and stardist, facilitating interactive and reproducible image analysis pipelines.\n\nTogether, these platforms enable the reproducible and scalable quantification of protein expression and spatial context in tissue samples, bridging the gap between classical histology and molecular imaging. The integration of IF data with transcriptomic or morphological features extracted from H&E slides holds great promise for advancing spatially resolved, multimodal studies in cancer biology.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>32</span>  <span class='chapter-title'>Image analysis</span>"
    ]
  },
  {
    "objectID": "pages/ind-image-analysis.html#public-datasets",
    "href": "pages/ind-image-analysis.html#public-datasets",
    "title": "32  Image analysis",
    "section": "\n32.3 Public datasets",
    "text": "32.3 Public datasets\n\n32.3.1 TCGA data\nThe Cancer Genome Atlas (TCGA) includes a collection of 11,765 diagnostic whole-slide images from 9,640 patients across 33 cancer types (Tomczak, Czerwińska, and Wiznerowicz 2015). These histopathological images represent only one component of TCGA’s broader multi-omics repository. Alongside WSIs, TCGA provides a rich array of molecular and clinical data, including gene expression (RNA-Seq), somatic mutation profiles (whole-exome sequencing), DNA methylation, copy number alterations, protein expression (RPPA), and comprehensive clinical annotations. This multidimensional dataset facilitates integrative analyses that connect tissue morphology with molecular alterations and clinical outcomes.\nTCGA includes two main types of histological slides: flash frozen and formalin-fixed paraffin-embedded (FFPE). Flash frozen slides are typically produced intraoperatively in a cryolab to help surgeons assess tumor margin status. While this method ensures close proximity to the tissue used for genomic extraction, it often introduces morphological artifacts such as tissue cracking and holes due to freezing, resulting in a “Swiss cheese” appearance that limits their utility for computational analysis.\nConversely, FFPE slides, considered the gold standard in diagnostic histopathology, are created by chemically fixing tissue in formalin and embedding it in paraffin wax before slicing. These slides preserve fine tissue architecture and provide visually high-quality samples, making them more suitable for algorithmic analysis. However, because of spatial heterogeneity in tumors, FFPE samples may not precisely correspond to the regions used for genomic profiling.\nTissue submitted to TCGA undergoes a structured workflow at the Biospecimen Core Resource (BCR). Two slides – designated top-section (TS) and bottom-section (BS) – are reviewed to evaluate tumor content and necrosis percentage. The central portion of the sample is reserved for RNA and DNA extraction. Additionally, one or more diagnostic FFPE slides are submitted to confirm histopathological diagnosis. These diagnostic slides originate from the same tumor, but the spatial and molecular correspondence to the genomics-extracted tissue is often uncertain. Thus, researchers must consider a tradeoff between image quality and genomic adjacency when designing image-based studies using TCGA data (Cooper et al. 2018).\n\n32.3.2 TCIA data\nThe Cancer Imaging Archive (TCIA) is a large-scale open-access repository that provides a comprehensive collection of medical images of cancer, including radiological scans (e.g., CT, MRI, PET) and histopathological images. TCIA is a critical resource for cancer imaging research as it includes richly annotated datasets with accompanying clinical, genomic, and pathological metadata. It supports a wide range of applications, including image-based biomarker discovery, radiogenomics, and multi-modal integration studies. Researchers can access TCIA datasets through its user interface or programmatically via APIs, which facilitate the retrieval and processing of large volumes of image data in a reproducible and automated manner.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>32</span>  <span class='chapter-title'>Image analysis</span>"
    ]
  },
  {
    "objectID": "pages/ind-image-analysis.html#feature-extraction",
    "href": "pages/ind-image-analysis.html#feature-extraction",
    "title": "32  Image analysis",
    "section": "\n32.4 Feature extraction",
    "text": "32.4 Feature extraction\nHistopathological images contain a vast amount of information, but to make them usable in computational analysis, this information needs to be translated into numerical features. Broadly speaking, two types of features can be extracted: human-interpretable features, which capture biologically meaningful descriptors, and latent embeddings, which encode complex patterns through deep learning. Together, these approaches enable both biological interpretation and powerful predictive modeling.\n\n32.4.1 Human-interpretable features\nHuman-interpretable features are designed to capture descriptors that pathologists can relate to established morphological concepts. They are typically obtained after cell or nucleus segmentation (see Chapter 18) and can be extracted using image analysis libraries such as scikit-image or Squidpy. Examples include:\n\n\nMorphological features (e.g., area, perimeter, eccentricity, solidity) that describe nuclear and cellular shapes.\n\n\nIntensity features (e.g., mean, variance, minimum, maximum) computed on grayscale or color channels of the image.\n\n\nSpatial features, such as nearest-neighbor distances between nuclei, which help characterize the cellular microenvironment.\n\nThese features are particularly useful when the goal is to connect image-derived measurements with biological mechanisms, as they provide an interpretable bridge between raw image data and pathology expertise.\n\n32.4.2 Latent embeddings\nA complementary strategy involves the use of embeddings generated by deep learning models. These models are often trained on millions of histological image tiles using self-supervised or contrastive learning, and they produce high-dimensional feature vectors that capture subtle morphological patterns not easily recognized by the human eye.\nSuch embeddings have been successfully applied to tasks like unsupervised clustering, patient stratification, prediction of genomic alterations, and survival analysis. For example, Prov-GigaPath (Xu et al. 2024) is a foundation model specifically developed for histopathology that provides robust and generalizable embeddings. These embeddings can be aggregated across image tiles or at the slide level and then integrated into downstream analyses.\nBy combining interpretable features with latent embeddings, researchers can achieve a comprehensive representation of tissue morphology: interpretable features anchor findings in biological relevance, while embeddings capture rich high-dimensional structure that enhances predictive performance.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>32</span>  <span class='chapter-title'>Image analysis</span>"
    ]
  },
  {
    "objectID": "pages/ind-image-analysis.html#interfaces-in-r",
    "href": "pages/ind-image-analysis.html#interfaces-in-r",
    "title": "32  Image analysis",
    "section": "\n32.5 Interfaces in R",
    "text": "32.5 Interfaces in R\n\n32.5.1 imageTCGA\nimageTCGA is an R/Bioconductor package designed to provide an interactive Shiny application for exploring the TCGA Diagnostic Image Database. This application allows users to filter and visualize metadata, geographic distribution, and other relevant statistics related to TCGA diagnostic images.\nFuture updates to the package (currently under development) will also provide direct access to the features described in the previous section, allowing users to download them without additional preprocessing steps.\nAfter installing the package from Bioconductor, you can run the Shiny application by executing the following command in R:\n\nCodeimageTCGA::imageTCGA()\n\n\n\n\n\n\n\n\n\nFigure 32.2: Graphical interface imageTCGA shiny app\n\n\n\n\nThis will open the application in your default web browser, where you can explore 11,765 diagnostic images from 9,640 patients, filtering them based on various clinical and pathological parameters.\nThe Shiny application allows filtering by any of the available columns in the dataset. For instance, you can filter for a specific tumor type, such as ovarian cancer (107 diagnostic images).\n\n\n\n\n\n\n\nFigure 32.3: Filtering images in imageTCGA Shiny application\n\n\n\n\nYou can generate R code to download the selected images to your local machine by clicking the blue “Generate R Code” button. This utilizes the GenomicDataCommons package.\nIn the example below, Ovarian Cancer images have been selected:\n\n\n\n\n\n\n\nFigure 32.4: Generate R code in imageTCGA\n\n\n\n\nThe Shiny application provides an interactive geographic visualization, displaying the origin of diagnostic images at the center, country, and state level.\nFor example, in the image below, GBM tumors have been selected. Additionally, summary statistics such as the number of cities and states are reported alongside a bar plot of the state distribution.\n\n\n\n\n\n\n\nFigure 32.5: Geographic distribution of GBM tumor imageTCGA Shiny app\n\n\n\n\n\n32.5.2 TCIAAPI\nThe TCIAAPI package provides an interface to the Cancer Imaging Archive (TCIA) API. The TCIA API allows users to programmatically access the TCIA data. The package provides functions to obtain an access token, download SVS images, and retrieve metadata from the TCIA API.\nThe TCIA API requires an access token to access the data. The tcia_access_token function retrieves the access token from the TCIA API. By default, it is configured to obtain a public token. Note that the token expires after a certain period of time and must be refreshed.\n\nCodetcia_access_token() |&gt; httr2::obfuscate()\n\n\nNote that we use httr2::obfuscate to hide the token from the output.\nThe tcia_svs_info function retrieves metadata information on SVS images from the TCIA API. The function requires a camic_id which is obtained from the ‘TCIA Histopathology Custom Dataset Builder.json’ file. The json file can be obtained by navigating to the TCIA website under ‘Access The Data’, ‘Search Histopathology Portal’ and clicking on the ‘TCIA Histopathology Custom Dataset Builder’ link.\n\nCodesvsinfo &lt;- tcia_svs_info(\"311781\") \nsvsinfo |&gt; head(3L)\n\n\nThe tcia_svs_info function returns a list containing the metadata of the SVS including the download URL. The download URL can be used to download the SVS images.\n\nCodesvsinfo[[\"field_wsiimage\"]][[1L]][[\"url\"]]\n\n\nNote that currently the package does not provide a function to download the ~150 MB json file programmatically.\nThe tcia_svs_download function downloads SVS images from the TCIA API. Like tcia_svs_info, the function requires a camic_id, which can be obtained from the ‘TCIA Histopathology Custom Dataset Builder.json’ file.\n\nCodetcia_svs_download(\"311781\")\n\n\nThe function downloads the SVS images to the temporary directory by default. The destdir argument can be used to specify a different directory.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>32</span>  <span class='chapter-title'>Image analysis</span>"
    ]
  },
  {
    "objectID": "pages/ind-image-analysis.html#appendix",
    "href": "pages/ind-image-analysis.html#appendix",
    "title": "32  Image analysis",
    "section": "\n32.6 Appendix",
    "text": "32.6 Appendix\nReferences\n\n\n\n\nBankhead, Peter, Maurice B Loughrey, José A Fernández, Yvonne Dombrowski, Darragh G McArt, Philip D Dunne, Stephen McQuaid, et al. 2017. “QuPath: Open Source Software for Digital Pathology Image Analysis.” Scientific Reports 7 (1): 1–7. https://doi.org/10.1038/s41598-017-17204-5.\n\n\nBergstrom, Erik N., Ammal Abbasi, Marcos Díaz-Gay, Loïck Galland, Sylvain Ladoire, Scott M. Lippman, and Ludmil B. Alexandrov. 2024. “Deep Learning Artificial Intelligence Predicts Homologous Recombination Deficiency and Platinum Response from Histologic Slides.” Journal of Clinical Oncology 42. https://doi.org/10.1200/JCO.23.02641.\n\n\nBisht, Deepika, Shikha Saxena, Nitish Singh Kharayat, and Siddharth Gautam. 2022. “Protocols for Immunofluorescence Techniques,” 215–29. https://doi.org/10.1007/978-1-0716-2043-4_15.\n\n\nCooper, Lee AD, Elizabeth G Demicco, Joel H Saltz, Reid T Powell, Arvind Rao, and Alexander J Lazar. 2018. “PanCancer Insights from the Cancer Genome Atlas: The Pathologist’s Perspective.” Journal of Pathology 244: 512–24. https://doi.org/10.1002/path.5028.\n\n\nGerdes, Michael J, Christopher J Sevinsky, Anup Sood, Sudeshna Adak, Musodiq O Bello, Alexander Bordwell, Ali Can, et al. 2013. “Highly Multiplexed Single-Cell Analysis of Formalin-Fixed, Paraffin-Embedded Cancer Tissue.” Proceedings of the National Academy of Sciences 110 (29): 11982–87. https://doi.org/10.1073/pnas.1300136110.\n\n\nGiesen, Charlotte, Hao AO Wang, Denis Schapiro, Nevena Zivanovic, Andrea Jacobs, Bodo Hattendorf, Peter J Schüffler, et al. 2014. “Highly Multiplexed Imaging of Tumor Tissues with Subcellular Resolution by Mass Cytometry.” Nature Methods 11 (4): 417–22. https://doi.org/10.1038/nmeth.2869.\n\n\nMadabhushi, Anant, and George Lee. 2016. “Image Analysis and Machine Learning in Digital Pathology: Challenges and Opportunities.” Medical Image Analysis 33: 170–75. https://doi.org/10.1016/j.media.2016.06.037.\n\n\nMiller, David M, and Diane C Shakes. 1995. “Immunofluorescence Microscopy.” Methods in Cell Biology 48: 365–94. https://doi.org/10.1016/S0091-679X(08)61396-5.\n\n\nPizurica, Marija, Yuanning Zheng, Francisco Carrillo-Perez, Humaira Noor, Wei Yao, Christian Wohlfart, Antoaneta Vladimirova, Kathleen Marchal, and Olivier Gevaert. 2024. “Digital Profiling of Gene Expression from Histology Images with Linearized Attention.” Nature Communications 15 (9886). https://doi.org/10.1038/s41467-024-54182-5.\n\n\nSchmauch, Benoît, Alberto Romagnoni, Elodie Pronier, Charlie Saillard, Pascale Maillé, Julien Calderaro, Aurélie Kamoun, et al. 2020. “A Deep Learning Model to Predict RNA-Seq Expression of Tumours from Whole Slide Images.” Nature Communications 11 (3877). https://doi.org/10.1038/s41467-020-17678-4.\n\n\nSofroniew, Nicholas, Talley Lambert, Grzegorz Bokota, Juan Nunez-Iglesias, Peter Sobolewski, Andrew Sweet, Lorenzo Gaifas, et al. 2025. “Napari: A Multi-Dimensional Image Viewer for Python.” Zenodo. https://doi.org/10.5281/zenodo.16883660.\n\n\nTomczak, Katarzyna, Patrycja Czerwińska, and Maciej Wiznerowicz. 2015. “The Cancer Genome Atlas (TCGA): An Immeasurable Source of Knowledge.” Contemporary Oncology/Współczesna Onkologia 19: A68–77. https://doi.org/10.5114/wo.2014.47136.\n\n\nXu, Hanwen, Naoto Usuyama, Jaspreet Bagga, Sheng Zhang, Rajesh Rao, Tristan Naumann, Cliff Wong, et al. 2024. “A Whole-Slide Foundation Model for Digital Pathology from Real-World Data.” Nature 630 (8015): 181–88. https://doi.org/10.1038/s41586-024-07441-w.",
    "crumbs": [
      "Platform-independent analyses",
      "<span class='chapter-number'>32</span>  <span class='chapter-title'>Image analysis</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-spatial-patterns.html",
    "href": "pages/mult-diff-spatial-patterns.html",
    "title": "33  Differential spatial patterns",
    "section": "",
    "text": "33.1 Preamble",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>33</span>  <span class='chapter-title'>Differential spatial patterns</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-spatial-patterns.html#preamble",
    "href": "pages/mult-diff-spatial-patterns.html#preamble",
    "title": "33  Differential spatial patterns",
    "section": "",
    "text": "33.1.1 Introduction\nRecent advances in spatial transcriptomics (ST) techniques have facilitated the generation of multi-sample datasets across various experimental conditions (e.g. healthy vs. diseased, or multiple treatments). When multi-sample, multi-condition ST data are available, differential analysis can be performed to identify genes with distinct spatial expression patterns that change between conditions either across domains or within any domain; we call these differential spatial pattern (DSP) genes.\nA DSP gene may be spatially variable in one condition and display spatially uniform expression in another one, or it could be spatially variable in all conditions, but with distinct spatial expression patterns. Conversely, genes that show spatially uniform abundance, or that are spatially variable with the same spatial structure in all conditions, are not considered DSP, because their spatial distribution is unchanged. Another way to think about DSP is that it is the spatial analog of ‘differential state analysis’ for single cell analyses. That is, here we focus on differences in expression within any domain (or different across domains) between conditions.\nIdentifying DSP genes can provide valuable insights into how gene expression spatial structures change across experimental conditions, helping to understand the underlying biological processes.\n\n33.1.2 Dependencies\n\nCodelibrary(edgeR)\nlibrary(DESpace)\nlibrary(ggplot2)\nlibrary(ggspavis)\nlibrary(muSpaData)\nlibrary(patchwork)\n\n\n\n33.1.3 Load data\nIn this demo, we will analyze a Stereo-seq dataset from axolotl brain tissues collected at various stages of regeneration (Wei et al. 2022), which includes multiple samples (i.e. serial sections) measured under multiple experimental conditions (regeneration stages).\nIn the original dataset, which is publicly available through the Spatial Transcript Omics DataBase, there are 5 stages with multiple sections, totaling 16 samples (3 to 4 sections per stage).\nFor computational reasons, we use 3 stages in this chapter – 2, 10, and 20 days post injury (DPI) – and only two sections per stage. The analysis framework uses pre-computed spatial domains generated with Banksy (Singhal et al. 2024) (see Chapter 28). For preprocessing details of this dataset, see the muSpaData Bioconductor package.\n\nCodespe &lt;- Wei22_example()\nspatialCoordsNames(spe) &lt;- c(\"x\", \"y\")\nspe\n\n##  class: SpatialExperiment \n##  dim: 5000 55660 \n##  metadata(0):\n##  assays(2): counts logcounts\n##  rownames(5000): AMEX60DD009830 AMEX60DD009962 ... AMEX60DD004094\n##    AMEX60DD054542\n##  rowData names(2): gene_name gene_id\n##  colnames(55660): CELL.17879.10DPI_1 CELL.17922.10DPI_1 ...\n##    CELL.9123.2DPI_2 CELL.9124.2DPI_2\n##  colData names(5): sample_id condition Banksy_smooth sdimx sdimy\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(0):\n##  spatialCoords names(2) : x y\n##  imgData names(1): sample_id\n\n\n\nCodeplotCoords(spe, \n    annotate=\"Banksy_smooth\", \n    in_tissue=NULL,\n    x_coord=\"sdimx\", \n    y_coord=\"sdimy\", \n    y_reverse=FALSE,\n    sample_id=\"sample_id\") + \n    theme(legend.key.size=unit(0, \"lines\")) + \n    scale_color_manual(values=unname(pals::trubetskoy()))",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>33</span>  <span class='chapter-title'>Differential spatial patterns</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-spatial-patterns.html#despace",
    "href": "pages/mult-diff-spatial-patterns.html#despace",
    "title": "33  Differential spatial patterns",
    "section": "\n33.2 DESpace",
    "text": "33.2 DESpace\nHere, we briefly demonstrate how to identify DSP genes using the DESpace (Cai, Robinson, and Tiberi 2024) Bioconductor package. For more details, see the package vignette. In brief, spot- or cell-level counts are aggregated into pseudobulk counts for each sample and domain, and these are compared across domains and conditions. DSP focuses on testing whether (condition x domain) interaction terms in the model are different from zero. In other words, does the expression of a gene change between conditions, but change differently for some domains compared to others?\n\nCode# run 'DESpace'\ndsp &lt;- dsp_test(spe, \n    sample_col=\"sample_id\", \n    condition_col=\"condition\", \n    cluster_col=\"Banksy_smooth\",\n    # return full statistics \n    # from 'edgeR::glmFit/LRT'\n    verbose=TRUE) \n\n\n\nCode# extract gene-level results\nnames(dsp_global &lt;- dsp$gene_results)\n\n##   [1] \"gene_id\"                          \"logFC.condition20DPI.cluster_id1\"\n##   [3] \"logFC.condition2DPI.cluster_id1\"  \"logFC.condition20DPI.cluster_id2\"\n##   [5] \"logFC.condition2DPI.cluster_id2\"  \"logFC.condition20DPI.cluster_id3\"\n##   [7] \"logFC.condition2DPI.cluster_id3\"  \"logFC.condition20DPI.cluster_id4\"\n##   [9] \"logFC.condition2DPI.cluster_id4\"  \"logCPM\"                          \n##  [11] \"F\"                                \"PValue\"                          \n##  [13] \"FDR\"\n\nCode# count significant DSP genes \n# (at 5% FDR significance level)\ntable(dsp_global$FDR &lt;= 0.05)\n\n##  \n##  FALSE  TRUE \n##   4942    58\n\n\nIn order to identify the key spatial cluster (domain) where expression changes across conditions, we use the individual_dsp() function, which focuses on domain-specific DSP.\n\nCodedsp_clu &lt;- individual_dsp(spe, \n    sample_col=\"sample_id\", \n    condition_col=\"condition\",\n    cluster_col=\"Banksy_smooth\") \n\n\n\nCode# results for cluster 2\ndsp_clu2 &lt;- dsp_clu$`2`\nhead(dsp_clu2, n=3)\n\n##                        gene_id logFC.condition20DPI.cluster_id2\n##  AMEX60DD014721 AMEX60DD014721                       -0.5803072\n##  AMEX60DD045083 AMEX60DD045083                       -1.0629944\n##  AMEX60DD055246 AMEX60DD055246                       -0.2626440\n##                 logFC.condition2DPI.cluster_id2   logCPM        F\n##  AMEX60DD014721                       1.2700321 9.582333 79.67672\n##  AMEX60DD045083                       0.9056552 8.266790 41.02294\n##  AMEX60DD055246                      -2.2986675 5.661946 36.89376\n##                       PValue          FDR\n##  AMEX60DD014721 7.294354e-08 0.0003647177\n##  AMEX60DD045083 3.106511e-06 0.0072044008\n##  AMEX60DD055246 5.517131e-06 0.0072044008\n\nCode# top DSP gene for cluster 2\ntop_dsp &lt;- dsp_clu2$gene_id[1]\n\n# get gene symbols from Ensembl identifiers\nidx &lt;- match(top_dsp, rowData(spe)$gene_name)\n(.gs &lt;- rowData(spe)$gene_id[idx])\n\n##  [1] \"ECM1\"",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>33</span>  <span class='chapter-title'>Differential spatial patterns</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-spatial-patterns.html#visualization",
    "href": "pages/mult-diff-spatial-patterns.html#visualization",
    "title": "33  Differential spatial patterns",
    "section": "\n33.3 Visualization",
    "text": "33.3 Visualization\nDSP genes can be further investigated, for example, by plotting the spatial expression of genes across conditions, or the log2-transformed counts per million of genes across different clusters and conditions.\n\nCode.ids &lt;- levels(spe$sample_id)\nlapply(seq_along(.ids), \\(.) {\n    .spe &lt;- spe[, spe$sample_id == .ids[.]]\n    p &lt;- FeaturePlot(.spe, \n        feature=top_dsp,\n        platform=\"Stereo-seq\",\n        coordinates=c(\"sdimx\", \"sdimy\"),\n        cluster_col=\"Banksy_smooth\", cluster=\"2\",\n        diverging=TRUE, low=\"gray95\", high=\"blue\")\n    # ignore alignment\n    free(p[[1]] + ggtitle(.ids[.])) \n}) |&gt; wrap_plots(ncol=3)\n\n\n\n\n\n\n\nThe boxplots below show the average log-CPM for cluster 2 and for all other clusters (excluding cluster 2) across different time points. The largest difference between cluster 2 and the remaining clusters is observed at 2 DPI, with the difference decreasing over time. At 20 DPI, no significant log-CPM differences are observed between the clusters. This suggests that spatial patterns change across conditions (i.e. time stages).\n\nCode# calculate log-CPM\nlog_cpm &lt;- edgeR::cpm(dsp$estimated_y, log=TRUE)\nnms &lt;- colnames(log_cpm)\n# wrangling\ndat &lt;- data.frame(\n    log_cpm=log_cpm[top_dsp, ],\n    Banksy=factor(sub(\".*_\", \"\", nms)), \n    sample_id=sub(\"(_[0-9]+)$\", \"\", nms),\n    day=as.numeric(sub(\"([0-9]+)DPI.*\", \"\\\\1\", nms)))\n# visualization\nggplot(dat, aes(factor(day), log_cpm)) + \n    geom_jitter(aes(col=Banksy), size=2, width=0.1) + \n    geom_boxplot(aes(fill=ifelse(Banksy == \"2\", \"cluster 2\", \"other\"))) + \n    scale_x_discrete(\"Days post injury\", breaks=unique(dat$day)) + \n    scale_fill_manual(NULL, values=c(\"limegreen\", \"gray\")) + \n    labs(title=.gs, y=\"log2 counts per million (logCPM)\") + \n    theme(legend.position=\"right\")",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>33</span>  <span class='chapter-title'>Differential spatial patterns</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-spatial-patterns.html#appendix",
    "href": "pages/mult-diff-spatial-patterns.html#appendix",
    "title": "33  Differential spatial patterns",
    "section": "\n33.4 Appendix",
    "text": "33.4 Appendix\nReferences\n\n\n\n\nCai, Peiying, Mark D Robinson, and Simone Tiberi. 2024. “DESpace: Spatially Variable Gene Detection via Differential Expression Testing of Spatial Clusters.” Bioinformatics 40 (btae027, 2). https://doi.org/10.1093/bioinformatics/btae027.\n\n\nSinghal, Vipul, Nigel Chou, Joseph Lee, Yifei Yue, Jinyue Liu, Wan Kee Chock, Li Lin, et al. 2024. “BANKSY Unifies Cell Typing and Tissue Domain Segmentation for Scalable Spatial Omics Data Analysis.” Nature Genetics 56: 431–41. https://doi.org/10.1038/s41588-024-01664-3.\n\n\nWei, Xiaoyu, Sulei Fu, Hanbo Li, Yang Liu, Shuai Wang, Weimin Feng, Yunzhi Yang, et al. 2022. “Single-Cell Stereo-Seq Reveals Induced Progenitor Cells Involved in Axolotl Brain Regeneration.” Science 377. https://doi.org/10.1126/science.abp9444.",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>33</span>  <span class='chapter-title'>Differential spatial patterns</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-colocalization.html",
    "href": "pages/mult-diff-colocalization.html",
    "title": "34  Differential colocalization",
    "section": "",
    "text": "34.1 Preamble",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>34</span>  <span class='chapter-title'>Differential colocalization</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-colocalization.html#preamble",
    "href": "pages/mult-diff-colocalization.html#preamble",
    "title": "34  Differential colocalization",
    "section": "",
    "text": "34.1.1 Introduction\nIn this section, we will explore tools to assess differential colocalization between conditions with the two packages spicyR and spatialFDA. Both packages are based the comparison of known spatial statistics functions implemented in the package spatstat.\n\n34.1.2 Dependencies\n\nCodelibrary(osfr)\nlibrary(dplyr)\nlibrary(tidyr)\nlibrary(refund)\nlibrary(spicyR)\nlibrary(stringr)\nlibrary(ggplot2)\nlibrary(patchwork)\nlibrary(spatialFDA)\nlibrary(SpatialExperiment)\n\n\n\n34.1.3 Load data\nFor this example, we use a dataset on type I diabetes (T1D) (Damond et al. 2019). This dataset contains three conditions (non-diabetic, onset, and long-duration diabetes), several patients per condition, and several fields-of-view per patient. This hierarchical setup requires the modeler to account for correlation between fields-of-view, for example if they stem from the same patient. Such a setup can be modeled with mixed models (see below).\nAn assay-free version of the dataset is available through our OSF repository (used here to reduce runtime as the following analyses do not require assay data):\n\nCode# load data from OSF repository (for smaller download)\nosf_repo &lt;- osf_retrieve_node(\"https://osf.io/5n4q3/\")\nosf_files &lt;- osf_ls_files(osf_repo, \n    path=\"zzz\", n_max=Inf,\n    pattern=\"Damond_noAssays.rds\")\ndir.create(td &lt;- tempfile())\nfoo &lt;- osf_download(osf_files, path=td)\n\n# read into R & subset patient IDs (to reduce runtime)\nspe &lt;- readRDS(file.path(td, list.files(td, \".rds\")))\nids &lt;- c(6089, 6180, 6126, 6134, 6228, 6414)\n(spe &lt;- spe[, spe$patient_id %in% ids])\n\n##  class: SpatialExperiment \n##  dim: 38 881544 \n##  metadata(0):\n##  assays(0):\n##  rownames(38): H3 SMA ... DNA1 DNA2\n##  rowData names(6): channel metal ... antibody_clone full_name\n##  colnames(881544): 138_1 138_2 ... 566_1171 566_1172\n##  colData names(29): cell_id image_name ... patient_BMI sample_id\n##  reducedDimNames(0):\n##  mainExpName: Damond_2019_Pancreas_FULL_v1\n##  altExpNames(0):\n##  spatialCoords names(2) : x y\n##  imgData names(0):",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>34</span>  <span class='chapter-title'>Differential colocalization</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-colocalization.html#spicyr",
    "href": "pages/mult-diff-colocalization.html#spicyr",
    "title": "34  Differential colocalization",
    "section": "\n34.2 spicyR",
    "text": "34.2 spicyR\nFirst, we show the functionality of spicyR. This package condenses the information of a spatial statistics curve to a scalar value and models this continuous value as the response in a linear (mixed) effects model (Canete et al. 2022).\nBy default, spicyR chooses the first level of the condition factor as the base, and the second as the comparison condition; we first refactor patient stages accordingly:\n\nCodestages &lt;- c(\"Non-diabetic\", \"Onset\", \"Long-duration\")\nspe$patient_stage &lt;- factor(spe$patient_stage, stages)\nspe$cell_type &lt;- factor(spe$cell_type)\n\n\nTo save on runtime, we here skip over some larger cell_types. By default, from/to=NULL will test all pairwise combinations.\n\nCode# filter out some larger 'cell_type's\n# (for runtime reasons in this demo)\nids &lt;- setdiff(\n    levels(spe$cell_type), c(\"endothelial\",\n    \"alpha\", \"acinar\", \"ductal\", \"unknown\"))\n.spe &lt;- spe[, spe$cell_type %in% ids]\n\n# perform spatial tests\nspicyTestPair &lt;- spicy(\n    cells=.spe, \n    condition=\"patient_stage\", \n    imageID=\"image_name\", \n    cellType=\"cell_type\",\n    window=\"square\", \n    cores=4)\n\n# extract most significant pairs\nhead(topPairs(spicyTestPair))\n\n##            intercept coefficient      p.value   adj.pvalue  from    to\n##  beta__Tc  -21.90519    27.11610 5.321113e-22 6.438546e-20  beta    Tc\n##  Tc__beta  -20.70299    26.89058 1.341501e-21 8.116080e-20    Tc  beta\n##  delta__Tc -21.76499    21.49124 2.420556e-17 9.157442e-16 delta    Tc\n##  Tc__delta -20.60341    21.43587 3.027253e-17 9.157442e-16    Tc delta\n##  Th__beta  -24.27671    31.29873 5.364678e-13 1.298252e-11    Th  beta\n##  beta__Th  -25.21713    31.23346 7.225223e-13 1.457087e-11  beta    Th\n\n\nThe results can be represented as a bubble plot using the signifPlot function.\n\nCodesignifPlot(spicyTestPair)\n\n\n\n\n\n\n\nHere, we can observe that the most significant relationship occurs between cytotoxic T cells (Tc) and the beta cells of the pancreas. Tc and beta cells appear to be significantly more co-localized in patients with onset diabetes compared to non-diabetic patients, indicated by the positive coefficient.\nWe can use spicyBoxPlot to examine a cell type-cell type relationship closely.\n\nCodespicyBoxPlot(spicyTestPair, from=\"Tc\", to=\"beta\") + ylim(c(-50, 50))\n\n\n\n\n\n\n\nWe can investigate individual images to ensure our results reflect biologically meaningful relationships. We can extract the individual co-localization metrics from the spicyTest object using the bind function.\n\nCode# extract co-localization metrics\ncd &lt;- colData(.spe) |&gt;\n    as.data.frame() |&gt; \n    distinct(patient_id, patient_stage, image_name) |&gt;\n    dplyr::rename(imageID=image_name)\nbind(spicyTest) |&gt; \n    # merge with metadata\n    merge(cd, by=\"imageID\", all=FALSE) |&gt;\n    # select columns of interest\n    select(c(imageID, Tc__beta, patient_id, patient_stage)) |&gt;\n    filter(imageID %in% c(\"L29\", \"O02\", \"E17\", \"G17\"))\n\n\nWe can then visualize the spatial relationship between a pair of cell types in the original image using the plotImage function.\n\nThe left image (L29) comes from a non-diabetic patient. We can see that beta and Tc cells appear to be dispersed, which is reflected in the co-localization metric.\nThe right image (O02) comes from a patient with early onset diabetes. We can see that beta and Tc cells are far more co-localized, with Tc cells even infiltrating the pancreatic islets in some cases.\n\n\nCode# this is needed due to a bug in 'spicyR' \n# (setting 'cellType' doesn't work)\n.spe$cellType &lt;- .spe$cell_type\nlapply(c(\"L29\", \"O02\"), \\(i) {\n    plotImage(.spe, \n        imageToPlot=i, \n        #cellType=\"cell_type\",\n        imageID=\"image_name\",\n        from=\"Tc\", to=\"beta\") \n}) |&gt;\n    wrap_plots(nrow=1) &\n    coord_equal()\n\n\n\n\n\n\n\nspicyR can also be used with custom distance metrics and to perform survival analysis, which are outlined in the spicyR vignette.",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>34</span>  <span class='chapter-title'>Differential colocalization</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-colocalization.html#spatialfda",
    "href": "pages/mult-diff-colocalization.html#spatialfda",
    "title": "34  Differential colocalization",
    "section": "\n34.3 spatialFDA",
    "text": "34.3 spatialFDA\nThe spatialFDA package computes spatial summaries as functions (e.g., Ripley’s \\(K\\) function) and compares them using tools from functional data analysis (FDA). We will consider the colocalization (spacing) of alpha cells in the islet and cytoxic T-cells, which are important in the destruction of islet cells in T1D (Damond et al. 2019).\n\n\nThis subchapter is adapted from the spatialFDA vignette.\nThe first important question is in what range we want to consider interactions. We provide a generalisation of a guideline for the maximum radius provided by Baddeley, Rubak, and Turner (2015), which suggests to not consider any radii beyond \\(1/2\\) of the bounding-circle radius of an image, as else effects at the border of a FOV become too extreme.\nThe histogram of all bounding-circle radii across all images and \\(1/2\\) of the smallest bin of this histogram as a heuristic are shown below.\n\nCoderMaxHeuristic(spe, subsetby=\"image_number\", marks=\"cell_type\")\n\n\n\n\n\n\n\nWe will consider a radius of \\(50 \\mu m\\) to a) be below the heurstic of \\(91 \\mu m\\) defined above, and b) consider shorter range interactions in our data. With a cell diameter of \\(\\sim 10 \\mu m\\), the rMax of \\(50 \\mu m\\) results in interactions across 5 cell pairs.\nApart from the radius, we have to define some other parameters as well. Important are:\n\n\nselection defines which cell types to consider (NULL to compare all)\n\nfun specifies the spatial function\n\nmarks specifies cell type annotation in the colData\n\n\ncorrection specifies which border correction to compare in the functional model\n\ntransformation specifies whether to apply a variance-stabilising transformation\n\nThe parameters sample_id, image_id, condition are important for the statistical inference. All other parameters can be specified to achieve better results but there are defaults specified as well.\n\nCode# relevel to have non-diabetic as the reference category\nspe$patient_stage &lt;- relevel(factor(spe$patient_stage), \"Non-diabetic\")\n\n# run the spatial statistics inference\nresLs &lt;- crossSpatialInference(\n    spe, \n    selection=c(\"alpha\", \"Tc\", \"Th\"),\n    fun=\"Gcross\", \n    marks=\"cell_type\",\n    rSeq=seq(0, 50, l=50), \n    correction=\"rs\",\n    transformation=\"Fisher\",\n    eps=1e-3,\n    delta=\"minNnDist\",\n    family=mgcv::scat(link=\"log\"),\n    sample_id=\"patient_id\",\n    image_id=\"image_name\", \n    condition=\"patient_stage\",\n    algorithm=\"bam\",\n    verbose=FALSE)\n\n\nThe convenience function crossSpatialInference first calculates the spatial statistics functions, and then compares these with a functional additive mixed model across all cell types in the selection (Baddeley, Rubak, and Turner 2015; Baddeley and Turner 2005; Scheipl, Staicu, and Greven 2015; Scheipl, Gertheiss, and Greven 2016; Goldsmith et al. 2024).\nThe result is a list of lists containing the results across all cell types:\n\nCode# list with one element per cell type\nnames(resLs)\n\n##  [1] \"alpha_alpha\" \"Tc_alpha\"    \"Th_alpha\"    \"alpha_Tc\"    \"Tc_Tc\"      \n##  [6] \"Th_Tc\"       \"alpha_Th\"    \"Tc_Th\"       \"Th_Th\"\n\n\nResults for each cell type pair include the transformed functions (metricRes), the untransformed functions (metricResRaw), the design matrix used to fit the model (designmat), the actual functional model (mdl) and some QC metrics of the statistical inference (curveFittingQC):\n\nCode# list of results for first cell type\nnames(resLs[[1]])\n\n##  [1] \"metricRes\"      \"designmat\"      \"mdl\"            \"curveFittingQC\"\n\n\nWe can plot the overall picture of the interactions by performing an \\(F\\)-test on all functional models and plotting both the \\(p\\)-value of the tests as well as the mean coefficient over the domain \\(r\\).\n\nCodecoefs &lt;- c(\n    \"Onset\"=\"conditionOnset(x)\", \n    \"Long-Duration\"=\"conditionLong_duration(x)\")\nplotCrossHeatmap(resLs, \n    coefficientsToPlot=coefs, QCThreshold=0, QCMetric=\"medianMinIntensity\") + \n    guides(shape=\"none\") + facet_wrap(~factor(coefficient, coefs, names(coefs)))\n\n\n\n\n\n\n\nThis plot highlights an increased co-localisation of T-cell types with pancreatic \\(\\alpha\\) cells in Onset diabetes but not in Long-duration diabetes. This is an interesting overall finding and we will focus on the cell type pair \\(\\alpha\\)-cytotoxic T cells in more detail below.\nFirst, we will plot the functional box plot of the transformed spatial statistics functions (Sun and Genton 2011). Here, the black line indicates the median curve, the purple region is the 50% central region, and the red lines indicate outliers.\nCode# extract the metric dataframe\nres &lt;- resLs$alpha_Tc\nmetricRes &lt;- res$metricRes\n\n# make unique identifiers\nmetricRes$ID &lt;- with(metricRes, paste(sep=\"x\", \n    patient_stage, patient_id, image_name))\n\n# functional boxplot of spatial statistics curves\ncollector &lt;- plotFbPlot(metricRes, \"r\", \"rs\", \"patient_stage\")\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nFrom these plots, we note that the functions from ‘Onset’ patients seem to qualitatively have a higher median curve than those from ‘Non-diabetic’ or ‘Long-duration’ patients.\nAnother exploratory technique is functional PCA (FPCA). FPCA is similar to standard PCA in that it decomposes the functional data into the main modes of variation. Here, we decompose the functional data into eigenfunctions and can plot the first two principal components as a biplot (Goldsmith et al. 2024).\n\nCode# prepare 'data.frame' from 'calcMetricRes' \n# to be in the correct format for FDA\ndat &lt;- prepData(metricRes, \"r\", \"rs\")\n\n# create meta info of the IDs\nsplitData &lt;- dat$ID |&gt; \n    str_replace(\"-\",\"_\") |&gt; \n    str_split_fixed(\"x\", 3) |&gt; \n    data.frame(stringsAsFactors=TRUE) |&gt; \n    setNames(c(\"condition\", \"patient_id\", \"imageId\")) |&gt; \n    mutate(condition=relevel(condition,\"Non_diabetic\"))\n\ndat &lt;- cbind(dat, splitData) # join with results\ndat &lt;- drop_na(dat)          # drop rows with NA\n\n# calculate FPCA & visualize biplot\npca &lt;- functionalPCA(dat=dat, r=unique(metricRes$r), pve=0.995)\nplotFpca(dat=dat, res=pca, colourby=\"condition\") + labs(color=\"condition\")\n\n\n\n\n\n\n\nFrom the FPCA, we note that the variability in curves from ‘Onset’ patients is larger than the other two groups.\nNext, we will show how FDA can be used to make inferences from functional spatial summaries. We use a generalized additive mixed model with a functional response (Scheipl, Staicu, and Greven 2015; Scheipl, Gertheiss, and Greven 2016; Goldsmith et al. 2024). In such models, some parameters are functional and some are constants (see below).\n\nCodesummary(mdl &lt;- res$mdl)\nmm &lt;- res$designmat\nlapply(colnames(mm), \\(x) {\n    i &lt;- mdl$coefficients[[1]] \n    plotMdl(mdl, predictor=x, shift=i)\n}) |&gt; wrap_plots(nrow=3, axes=\"collect\")\n\n\n\n\n\n\n\nWith the functional GAM, we see not only the effect (e.g., increased colocalization of \\(\\alpha\\) and cytotoxic T cells in ‘Onset’ patients compared to ‘Non-diabetic’ patients) but also the strength of the effect at each scale.\nThe Q-Q plot indicates a reasonable model fit, although not perfect.\n\nCoderes &lt;- mdl$residuals\nqqnorm(res, pch=16)\nqqline(res, col=\"red\")\n\n\n\n\n\n\n\nIn summary, we have seen that there is increased co-localisation of T-cell types to the pancreatic islets early in the disease and that this recruitment is absent later in the disease. This increased co-localisation in onset diabetes is happening at shorter scales around \\(\\alpha\\) cells indicating that effects close to the pancreatic islets are more affected than those further away.",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>34</span>  <span class='chapter-title'>Differential colocalization</span>"
    ]
  },
  {
    "objectID": "pages/mult-diff-colocalization.html#appendix",
    "href": "pages/mult-diff-colocalization.html#appendix",
    "title": "34  Differential colocalization",
    "section": "\n34.4 Appendix",
    "text": "34.4 Appendix\nReferences\n\n\n\n\nBaddeley, Adrian, Ege Rubak, and Rolf Turner. 2015. Spatial Point Patterns: Methodology and Applications with r. 1st Edition. Chapman; Hall/CRC. https://doi.org/10.1201/b19708.\n\n\nBaddeley, Adrian, and Rolf Turner. 2005. “Spatstat: An r Package for Analyzing Spatial Point Patterns.” Journal of Statistical Software 12: 1–42. https://doi.org/10.18637/jss.v012.i06.\n\n\nCanete, Nicolas P, Sourish S Iyengar, John T Ormerod, Heeva Baharlou, Andrew N Harman, and Ellis Patrick. 2022. “spicyR: Spatial Analysis of in Situ Cytometry Data in r.” Bioinformatics 38: 3099–3105. https://doi.org/10.1093/bioinformatics/btac268.\n\n\nDamond, Nicolas, Stefanie Engler, Vito R. T. Zanotelli, Denis Schapiro, Clive H. Wasserfall, Irina Kusmartseva, Harry S. Nick, et al. 2019. “A Map of Human Type 1 Diabetes Progression by Imaging Mass Cytometry.” Cell Metabolism 29: 755–68. https://doi.org/10.1016/j.cmet.2018.11.014.\n\n\nGoldsmith, Jeff, Fabian Scheipl, Lei Huang, Julia Wrobel, Chongzhi Di, Jonathan Gellar, Jaroslaw Harezlak, et al. 2024. “Refund: Regression with Functional Data.” R Package. https://doi.org/10.32614/CRAN.package.refund.\n\n\nScheipl, Fabian, Jan Gertheiss, and Sonja Greven. 2016. “Generalized Functional Additive Mixed Models.” Electronic Journal of Statistics 10: 1455–92. https://doi.org/10.1214/16-EJS1145.\n\n\nScheipl, Fabian, Ana-Maria Staicu, and Sonja Greven. 2015. “Functional Additive Mixed Models.” Journal of Computational and Graphical Statistics 24: 477–501. https://doi.org/10.1080/10618600.2014.901914.\n\n\nSun, Ying, and Marc G. Genton. 2011. “Functional Boxplots.” Journal of Computational and Graphical Statistics 20: 316–34. https://doi.org/10.1198/jcgs.2011.09224.",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>34</span>  <span class='chapter-title'>Differential colocalization</span>"
    ]
  },
  {
    "objectID": "pages/mult-structure-based.html",
    "href": "pages/mult-structure-based.html",
    "title": "35  Structure-based analysis",
    "section": "",
    "text": "35.1 Preamble",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>35</span>  <span class='chapter-title'>Structure-based analysis</span>"
    ]
  },
  {
    "objectID": "pages/mult-structure-based.html#preamble",
    "href": "pages/mult-structure-based.html#preamble",
    "title": "35  Structure-based analysis",
    "section": "",
    "text": "35.1.1 Introduction\nSpatial omics data allow us to quantify various features that are related to tissue architecture. This allows us to perform comparisons of anatomical structure-derived features. We will refer to this type of analysis as structure-based analysis.\nWe will use the sosta package (Gunz, Crowell, and Robinson 2025) to reconstruct and quantify pancreatic islets from human donors suffering different stages of diabetic type 1 (T1D) and healthy controls (Damond et al. 2019). We will then compare some of the features between conditions.\n\n35.1.2 Dependencies\n\nCodelibrary(sf)\nlibrary(osfr)\nlibrary(lme4)\nlibrary(dplyr)\nlibrary(tidyr)\nlibrary(sosta)\nlibrary(ggplot2)\nlibrary(lmerTest)\nlibrary(ggfortify)\nlibrary(ExperimentHub)\nlibrary(SpatialExperiment)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(8048)\n\n\n\n35.1.3 Load data\n\nAn assay-free version of the dataset is available through our OSF repository (used here to reduce runtime as the following analyses do not require assay data):\n\nCode# load data from OSF repository (for smaller download)\nosf_repo &lt;- osf_retrieve_node(\"https://osf.io/5n4q3/\")\nosf_files &lt;- osf_ls_files(osf_repo, \n    path=\"zzz\", n_max=Inf,\n    pattern=\"Damond_noAssays.rds\")\ndir.create(td &lt;- tempfile())\nfoo &lt;- osf_download(osf_files, path=td)\nspe &lt;- readRDS(file.path(td, list.files(td, \".rds\")))\ntable(spe$patient_id, spe$patient_stage)\n\n##        \n##         Long-duration Non-diabetic  Onset\n##    6089         91634            0      0\n##    6126             0       158693      0\n##    6134             0       181609      0\n##    6180        141450            0      0\n##    6228             0            0 142106\n##    6264        146123            0      0\n##    6278             0       185399      0\n##    6362             0            0 202272\n##    6380             0            0 129456\n##    6386             0       127350      0\n##    6414             0            0 166052\n##    6418        104830            0      0",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>35</span>  <span class='chapter-title'>Structure-based analysis</span>"
    ]
  },
  {
    "objectID": "pages/mult-structure-based.html#visualize-data",
    "href": "pages/mult-structure-based.html#visualize-data",
    "title": "35  Structure-based analysis",
    "section": "\n35.2 Visualize data",
    "text": "35.2 Visualize data\nFirst, we plot a few selected fields of view (FOVs).\n\nCode# subset to 4 randomly selected FOVs\nfov &lt;- sample(unique(spe$image_name), 4)\nsub &lt;- spe[, spe$image_name %in% fov]\ndf &lt;- data.frame(colData(sub), spatialCoords(sub))\n# visualize annotations\nggplot(df, aes(cell_x, cell_y, color=cell_category)) + \n    geom_point(size=0.4) + facet_wrap(~image_name, ncol=2) + \n    scale_color_manual(values=unname(pals::okabe(n=5))) +\n    guides(col=guide_legend(override.aes=list(size=2))) +\n    coord_equal() + theme_classic()",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>35</span>  <span class='chapter-title'>Structure-based analysis</span>"
    ]
  },
  {
    "objectID": "pages/mult-structure-based.html#islet-reconstrution",
    "href": "pages/mult-structure-based.html#islet-reconstrution",
    "title": "35  Structure-based analysis",
    "section": "\n35.3 Islet reconstrution",
    "text": "35.3 Islet reconstrution\nNext, we will reconstruct or segment the individual islets using a density-based approach implemented in sosta.\n\nCode# use 'nImages' randomly samples \n# images for parameter estimation\nest &lt;- estimateReconstructionParametersSPE(\n    spe, \n    marks=\"cell_category\", \n    imageCol=\"image_name\", \n    markSelect=\"islet\", \n    nImages=10, \n    nCores=4, \n    plotHist=FALSE)\n# get parameter estimates for ...\nth &lt;- mean(est$thres) # threshold\nbw &lt;- mean(est$bndw)  # bandwidth\n\n\n\n\n\n\n\n\nNoteDensity-based reconstruction\n\n\n\n\n\nThe sosta package uses a reconstruction method based on the point pattern density of the islet cells. This method needs two parameters:\n\na bandwidth that is used for intensity profile estimation, and\na threshold based on which the islets are reconstructed.\n\n\nCodeshapeIntensityImage(\n    spe, \n    marks=\"cell_category\", \n    imageCol=\"image_name\", \n    imageId=fov[4], \n    markSelect=\"islet\")\n\n\n\n\n\n\n\nShown on the left is a density (pixel-level) image, and on the right a histogram of the intensity values. The method selects every pixel above a certain threshold for reconstruction. The smoothing bandwidth that generates the image is estimated using cross-validation (see function bw.diggle() of the spatstat.explore package from CRAN).\nThe threshold is estimated by taking the mean between the two modes of the (truncated) pixel intensity distribution. The function estimateReconstructionParametersSPE() repeats the estimation of these parameters for a selection of images in the dataset.\nTo make the reconstruction comparable between images we then use a fixed set of parameters for all images, in our case the mean of the individual parameters for a subset of the dataset.\n\n\n\n\nCodeallIslets &lt;- reconstructShapeDensitySPE(\n    spe, \n    marks=\"cell_category\", \n    imageCol=\"image_name\", \n    markSelect=\"islet\", \n    bndw=bw, \n    thres=th, \n    nCores=4)\n\n\nNow we can inspect the reconstruction in the sample images.\n\nCode# subset to selected FOVs\nsubIslets &lt;- allIslets[allIslets$image_name %in% fov, ]\n# visualize annotations \nggplot(df, aes(cell_x, cell_y, color=cell_category)) + \n    geom_point(size=0.4) + facet_wrap(~image_name, ncol=2) + \n    scale_color_manual(values=unname(pals::okabe(n=5))) +\n    guides(col=guide_legend(override.aes=list(size=2))) +\n    coord_equal() + theme_classic() +\n    geom_sf( # geom for structure outlines\n        data=subIslets, inherit.aes=FALSE, \n        color=\"red\", fill=NA, linewidth=1)\n\n\n\n\n\n\n\nThe allIslets object is a simple feature collection which contains polygons (&lt;GEOMETRY&gt; column), a structure identifier (structID), and the image identifier (image_name). We will add some patient metadata to the object.\n\nCode# factor levels for 'patient_stage'\nlv &lt;- c(\"Non-diabetic\", \"Onset\", \"Long-duration\")\n# cell metadata columns to keep\ncolsKeep &lt;- c(\n    \"sample_id\", \"image_name\",\n    \"patient_disease_duration\", \n    \"patient_id\", \"patient_stage\", \n    \"patient_age\", \"patient_gender\",\n    \"tissue_slide\", \"tissue_region\") \npatientData &lt;- colData(spe) |&gt; \n    as_tibble() |&gt; \n    # keep selected columns\n    select(all_of(colsKeep)) |&gt; \n    # refactor patient IDs & stages\n    group_by(image_name) |&gt; \n    mutate_at(\"patient_id\", factor) |&gt;\n    mutate_at(\"patient_stage\", factor, lv) |&gt;\n    # keep only unique combinations\n    unique() \n# join with results from reconstruction\nallIslets &lt;- left_join(allIslets, patientData, by=\"image_name\")",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>35</span>  <span class='chapter-title'>Structure-based analysis</span>"
    ]
  },
  {
    "objectID": "pages/mult-structure-based.html#quantification-of-geometric-features",
    "href": "pages/mult-structure-based.html#quantification-of-geometric-features",
    "title": "35  Structure-based analysis",
    "section": "\n35.4 Quantification of geometric features",
    "text": "35.4 Quantification of geometric features\nNow we can proceed with quantification of geometric aspects of the islets, and combine them with patient information.\n\nCodeisletMetrics &lt;- totalShapeMetrics(allIslets)\nallIslets &lt;- cbind(allIslets, t(isletMetrics))\n\n\nPCA can give us an overview of the different features; here, each dot represents one structure.\n\nCodepca &lt;- prcomp(t(isletMetrics), scale.=TRUE)\nautoplot(pca, \n    x=1, y=2, \n    data=allIslets,\n    color=\"patient_stage\", \n    size=2, \n    loadings=TRUE, \n    loadings.colour=\"steelblue3\", \n    loadings.label=TRUE, \n    loadings.label.size=3, \n    loadings.label.repel=TRUE, \n    loadings.label.colour=\"black\") +\n    theme_bw() + coord_fixed() + \n    scale_color_manual(values=unname(pals::tol(n=3)))\n\n\n\n\n\n\n\n\nCode# wrangling\ndf &lt;- allIslets |&gt; \n    st_drop_geometry() |&gt; \n    select(patient_stage, rownames(isletMetrics)) |&gt; \n    pivot_longer(-patient_stage) |&gt; \n    filter(name %in% c(\"Area\", \"Compactness\", \"Curl\"))\n# visualization\nggplot(df, aes(patient_stage, value, fill=patient_stage)) + \n    geom_violin() + geom_boxplot(aes(fill=NULL), width=0.3) + \n    scale_fill_manual(values=unname(pals::tol(n=3))) +\n    scale_x_discrete(guide=guide_axis(n.dodge=2)) + \n    facet_wrap(~name, scales=\"free\") + \n    guides(fill=\"none\") + theme_bw()\n\n\n\n\n\n\n\nLet’s focus on the area of the islets and facet by stage to look at patient variability. As the distribution is very skewed, we will use a 1/4-power transformation on the area of the islets. The transformation was chosen after inspection of the model diagnostics (see below).\n\nCode# wrangling\ndf &lt;- allIslets |&gt; \n    st_drop_geometry() |&gt; \n    select(patient_stage, patient_id, rownames(isletMetrics)) |&gt; \n    pivot_longer(-c(patient_stage, patient_id)) |&gt; \n    filter(name %in% c(\"Area\"))\n# visualization\nggplot(df, aes(patient_id, value^(1/4), fill=patient_stage)) + \n    geom_violin() + geom_boxplot(fill=NA, width=0.3) + \n    scale_fill_manual(values=unname(pals::tol(n=3))) +\n    facet_wrap(~patient_stage, scales=\"free_x\") + \n    geom_jitter(size=0.5) + ylab(\"Area\") +\n    guides(fill=\"none\") + theme_bw()",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>35</span>  <span class='chapter-title'>Structure-based analysis</span>"
    ]
  },
  {
    "objectID": "pages/mult-structure-based.html#between-sample-comparison",
    "href": "pages/mult-structure-based.html#between-sample-comparison",
    "title": "35  Structure-based analysis",
    "section": "\n35.5 Between-sample comparison",
    "text": "35.5 Between-sample comparison\nAn important aspect to note is that the individual structure metrics are not independent measurements, since there are generally repeated measurments (i.e., multiple islets) per slide and per patient. Therefore, we need to account for this correlation between measurements.\nTo account for this, we will use mixed linear models with random effects for the patient and the individual slides (image name). The lme4 package will be use for fitting linear mixed effects models (Bates et al. 2015) and lmerTest for p-value calculations (Kuznetsova, Brockhoff, and Christensen 2017).\n\n\nCodef &lt;- Area^(1/4) ~ patient_stage + (1|patient_id) + (1|image_name)\nsummary(mod &lt;- lmer(formula=f, data=allIslets))\n\n##  Linear mixed model fit by REML. t-tests use Satterthwaite's method [\n##  lmerModLmerTest]\n##  Formula: f\n##     Data: allIslets\n##  \n##  REML criterion at convergence: 9028\n##  \n##  Scaled residuals: \n##      Min      1Q  Median      3Q     Max \n##  -2.6027 -0.6199  0.0265  0.6129  3.0764 \n##  \n##  Random effects:\n##   Groups     Name        Variance Std.Dev.\n##   image_name (Intercept) 1.4628   1.2095  \n##   patient_id (Intercept) 0.5426   0.7366  \n##   Residual               7.3230   2.7061  \n##  Number of obs: 1806, groups:  image_name, 844; patient_id, 12\n##  \n##  Fixed effects:\n##                             Estimate Std. Error      df t value Pr(&gt;|t|)    \n##  (Intercept)                  9.5935     0.3924  8.8393  24.447 2.01e-09 ***\n##  patient_stageOnset          -0.5624     0.5557  8.8860  -1.012    0.338    \n##  patient_stageLong-duration  -1.5404     0.5563  8.9198  -2.769    0.022 *  \n##  ---\n##  Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n##  \n##  Correlation of Fixed Effects:\n##              (Intr) ptnt_O\n##  ptnt_stgOns -0.706       \n##  ptnt_stgLn- -0.705  0.498\n\n\n\nFrom the fixed effects section in the model summary above, we note that there is a statistically significant difference in the transformed islet area of long-duration patients compared to non-diabetic patients, while the effect for onset patients is not significant at the 5% level. This result accounts for correlation at the patient and image level as modeled by random intercepts. The transformation (1/4-power) was chosen after inspection of the residual behavior in the model diagnostics for this dataset and feature of interest specifically.\n\n\n\n\n\n\nNoteModel diagnostics\n\n\n\n\n\n\n\nResiduals vs. fitted\nResiduals vs. fitted per sample\nQQ plot\n\n\n\n\nCoderes &lt;- resid(., scaled=TRUE) ~ fitted(.)\nplot(mod, res, \n    pch=12, abline=0, \n    xlab=\"Fitted values\", \n    ylab=\"Standardised residuals\",\n    col=allIslets$patient_id) \n\n\n\n\n\n\n\n\n\n\nCoderes &lt;- resid(., scaled=TRUE) ~ fitted(.) | patient_id\nplot(mod, res, \n    pch=12, abline=0, \n    xlab=\"Fitted values\", \n    ylab=\"Standardised residuals\")\n\n\n\n\n\n\n\n\n\n\nCodeqqnorm(resid(mod), pch=16)\nqqline(resid(mod))",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>35</span>  <span class='chapter-title'>Structure-based analysis</span>"
    ]
  },
  {
    "objectID": "pages/mult-structure-based.html#appendix",
    "href": "pages/mult-structure-based.html#appendix",
    "title": "35  Structure-based analysis",
    "section": "\n35.6 Appendix",
    "text": "35.6 Appendix\nThis chapter is based on the sosta vignette “2. Reconstruction and analysis of pancreatic islets from IMC data”.\nAdditional packages to calculate anatomical structure-derived features include:\n\nThe Bioconductor packages SPIAT and imcRtools offer other functions to quantify features on the anatomical structure level. These could also be input for mixed effect modeling as illustrated above.\nThe packages vegan and poem are useful when calculating diversity metrics within structures and/or border regions. To identify border regions and how to overlap anatomical regions with sample coordinates, please have a look at the sosta vignette.\n\nReferences\n\n\n\n\nBates, Douglas, Martin Mächler, Ben Bolker, and Steve Walker. 2015. “Fitting Linear Mixed-Effects Models Using Lme4.” Journal of Statistical Software 67: 1–48. https://doi.org/10.18637/jss.v067.i01.\n\n\nDamond, Nicolas, Stefanie Engler, Vito R. T. Zanotelli, Denis Schapiro, Clive H. Wasserfall, Irina Kusmartseva, Harry S. Nick, et al. 2019. “A Map of Human Type 1 Diabetes Progression by Imaging Mass Cytometry.” Cell Metabolism 29: 755–68. https://doi.org/10.1016/j.cmet.2018.11.014.\n\n\nGunz, Samuel, Helena L. Crowell, and Mark D. Robinson. 2025. “Analysis of Anatomical Multi-Cellular Structures from Spatial Omics Data Using Sosta.” bioRxiv. https://doi.org/10.1101/2025.10.13.682065.\n\n\nKuznetsova, Alexandra, Per B. Brockhoff, and Rune H. B. Christensen. 2017. “lmerTest Package: Tests in Linear Mixed Effects Models.” Journal of Statistical Software 82: 1–26. https://doi.org/10.18637/jss.v082.i13.",
    "crumbs": [
      "Multiple-sample analyses",
      "<span class='chapter-number'>35</span>  <span class='chapter-title'>Structure-based analysis</span>"
    ]
  },
  {
    "objectID": "pages/crs-spatial-registration.html",
    "href": "pages/crs-spatial-registration.html",
    "title": "36  Spatial registration",
    "section": "",
    "text": "36.1 Preamble",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>36</span>  <span class='chapter-title'>Spatial registration</span>"
    ]
  },
  {
    "objectID": "pages/crs-spatial-registration.html#preamble",
    "href": "pages/crs-spatial-registration.html#preamble",
    "title": "36  Spatial registration",
    "section": "",
    "text": "36.1.1 Introduction\nSpatial registation is defined as the task of mapping features or spatial locations of observations from a query to a reference assay (Friston et al. 1995; Lewis et al. 2021; Nitzan et al. 2019). Here, the reference is a spatially-resolved dataset whereas the query could be an assay with or without spatial resolution.\nIn this chapter, we demonstrate methods that are available in R/Bioconductor for aligning (or registering) spatially-resolved datasets, where the utility and function of the alignment method is defined by the modality of the query dataset.\nWe will touch upon two cases: (1) alignment, where both reference and query data are spatially resolved; and, (2) reconstruction, where spatial information is inferred from non-spatial data.\n\n36.1.2 Dependencies\n\nCodelibrary(ggspavis)\nlibrary(OSTA.data)\nlibrary(SpatialExperiment)\nlibrary(SpatialExperimentIO)\n\n\nIn this demo, we will use the Xenium data generated from a human breast cancer biopsy (Janesick et al. 2023), which is available from OSTA.data (see Chapter 6):\n\nCode# retrieve dataset from OSF repo\nid &lt;- \"Xenium_HumanBreast1_Janesick\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n# read into 'SpatialExperiment'\nxen &lt;- readXeniumSXE(td, addTx=FALSE)\nxen$sample_id &lt;- \"Xenium\"\nxen\n\n##  class: SpatialExperiment \n##  dim: 313 167780 \n##  metadata(3): experiment.xenium cell_boundaries nucleus_boundaries\n##  assays(1): counts\n##  rownames(313): ABCC11 ACTA2 ... ZEB2 ZNF562\n##  rowData names(3): ID Symbol Type\n##  colnames(167780): 1 2 ... 167779 167780\n##  colData names(8): cell_id transcript_counts ... nucleus_area\n##    sample_id\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(4): NegControlProbe NegControlCodeword antisense BLANK\n##  spatialCoords names(2) : x_centroid y_centroid\n##  imgData names(1): sample_id",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>36</span>  <span class='chapter-title'>Spatial registration</span>"
    ]
  },
  {
    "objectID": "pages/crs-spatial-registration.html#alignment",
    "href": "pages/crs-spatial-registration.html#alignment",
    "title": "36  Spatial registration",
    "section": "\n36.2 Alignment",
    "text": "36.2 Alignment\nSpatial omic technologies often generate data modalities that capture morphological features of tissue sections as well as omic profiles of cells, spots or other types of observations. Localization of these profiles can also be defined in different units and even in different perspectives (i.e., coordinate systems). Image alignment and registration methods provide transformations to map spatial locations of observations from one coordinate system to another, thus allowing to transfer data across observations from identical tissue sections, adjacent sections, as well as sections with similar morphology and structure.\nStrategies and approaches for aligning spatial omic assays differ depending on the modalility and/or instrument used to generate these data. These methods could be categorized into two classes, where some incorporate (i) the morphology of microscopy images (image registration) of reference and query data (Friston et al. 1995) and others that rely on the (ii) spatial locations of observations (cells or spots) and the distribution of omic profiles (omics coverage) (Kiessling and Kuppe 2024).\n\n36.2.1 Image-based\nTo facilitate alignment using images, we will showcase how to incorporate VoltRon to align a SpatialExperiment object of Xenium data with a post-Xenium hematoxylin and eosin (H&E) stain of the same tissue section.\nThe SpatialExperiment of the Xenium data does not include any images. To perform the spatial alignment via image registration, we first add an image of the corresponding DAPI staining to the object’s imgData. ome.tiffs of full-resolution DAPI and H&E stains are available at GSM7780153.\nThe RBioFormats package can be used to read a specific resolution from multi-resolution ome.tiff image pyramids. Here, we choose the lowest resolution of the morphology_mip.ome.tif from the standard Xenium output. We also define the parameter (pixel-to-micron ratio) to scale the spatial coordinates of cells accordingly: For more information on image scale factors, see here.\n\nCoderes &lt;- 7 # target resolution\npx &lt;- 0.2125 # px size (um)\nsf &lt;- px*(2^(res-1)) # scale factor\nimg &lt;- RBioFormats::read.image(\n    \"morphology_mip.ome.tif\", \n    resolution=res)\n\n\nBefore adding the selected DAPI image to the SpatialExperiment object, we first normalize the contrast to 1, and then save the image to a temporary .png file:\n\nCodeimg &lt;- img/max(img)\npng &lt;- \"Xenium_DAPI_res7.png\"\nEBImage::writeImage(img, files=png, type=\"png\")\n\n\nWe can now add the DAPI channel to the SpatialExperiment object:\n\nCodexen &lt;- addImg(xen, \n    sample_id=\"Xenium\", \n    image_id=\"DAPI\",\n    imageSource=png, \n    scaleFactor=1/sf,\n    load=TRUE)\nimgData(xen)\n\n##  DataFrame with 1 row and 4 columns\n##      sample_id    image_id   data scaleFactor\n##    &lt;character&gt; &lt;character&gt; &lt;list&gt;   &lt;numeric&gt;\n##  1      Xenium        DAPI   ####   0.0735294\n\n\nLet’s visualize the new DAPI image and overlay with cell centroids using ggspavis:\n\nCode# plot DAPI image\np &lt;- plotVisium(xen, spots=FALSE, image_id=\"DAPI\")\n# overlay cells with image\nimg &lt;- imgRaster(xen)\nsf &lt;- scaleFactors(xen)\nxy &lt;- spatialCoords(xen)*sf\nxy[, 2] &lt;- nrow(img)-xy[, 2]\np + geom_point(\n    aes(x_centroid, y_centroid), data.frame(xy),\n    shape=16, stroke=0, size=0.2, alpha=0.4, \n    col=\"red\", inherit.aes=FALSE) \n\n\n\n\n\n\n\nAt this stage, one may use VoltRon (or another tool) in order to register the query spatial data onto the reference (in this example, query = cell centroids, reference = H&E staining).\nThe return value of VoltRon’s registerSpatialData() function includes an affine transformation matrix that may be used to register spatial coordinates:\n\nCode# affine transformation matrix generated\n# by 'VoltRon::registerSpatialData()'\nmtx &lt;- matrix(ncol=3, byrow=TRUE, c(\n    5.839057e-01, -2.542718e-03, 94.00896, \n    2.372556e-03, 5.848592e-01, 105.44208, \n    -1.500111e-06, 3.715999e-06, 1.00000))\n\n\nAn affine map is generally composed of a linear map (scaling and rotation) and a translation, and can be apply using basic matrix multiplication and vector addition, specifically:\n\\[\\mathbf{y}=A\\mathbf{x}+\\mathbf{b}\\]\nwhere \\(A\\) denotes the linear map, \\(b\\) the translation, and \\(\\mathbf{x}\\) and \\(\\mathbf{y}\\) correspond to original and transformed coordinates, respectively.\nIn R, this translates to the following operations:\n\nCodeimg &lt;- imgRaster(xen)\nxy &lt;- spatialCoords(xen)\nxy &lt;- xy*scaleFactors(xen)\nxy[, 2] &lt;- nrow(img) - xy[, 2]\nxy_reg &lt;- t(mtx %*% rbind(t(xy), 1))\nxy_reg &lt;- xy_reg[, -3]\ncolnames(xy_reg) &lt;- colnames(spatialCoords(xen))\n# create a dataset copy with new coordinates\nreg &lt;- xen\nimgData(reg) &lt;- NULL\nspatialCoords(reg) &lt;- xy_reg\n\n\nNow that the registered Xenium data and the post-Xenium H&E image have identical coordinate systems, we can add the H&E image directly to the registered SpatialExperiment object:\n\nCodetif &lt;- \"GSM7780153_Post-Xenium_HE_Rep1.ome.tif\"\nimg &lt;- RBioFormats::read.image(tif, resolution=7)\npng &lt;- \"Xenium_H&E_res7.png\"\nEBImage::writeImage(tif, files=png, type=\"png\")\n\n\n\nCodereg &lt;- addImg(reg, \n    sample_id=\"Xenium\", \n    image_id=\"H&E\", \n    imageSource=png, \n    scaleFactor=1, \n    load=TRUE)\nimgData(reg)\n\n##  DataFrame with 1 row and 4 columns\n##      sample_id    image_id   data scaleFactor\n##    &lt;character&gt; &lt;character&gt; &lt;list&gt;   &lt;numeric&gt;\n##  1      Xenium         H&E   ####           1\n\n\nAgain, we can visualize the registered Xenium cells on the H&E image:\n\nCode# plot H&E image\np &lt;- plotVisium(reg, spots=FALSE, image_ids=\"H&E\")\n# overlay cells with image\nimg &lt;- imgRaster(reg)\nsf &lt;- scaleFactors(reg)\nxy &lt;- spatialCoords(reg)*sf\nxy[, 2] &lt;- nrow(img)-xy[, 2]\np + geom_point(\n    aes(x_centroid, y_centroid), data.frame(xy),\n    shape=16, stroke=0, size=0.2, alpha=0.4, \n    col=\"red\", inherit.aes=FALSE)\n\n\n\n\n\n\n\n\n\n\n\n\n\nNoteOther methods\n\n\n\n\n\nA number of R/Python frameworks can be used to automatically or manually align microscopy images associated with spatial omic datasets. The Python modules could be used through R packages such as reticulate and basilisk.\n\n\nVoltRon (Manukyan et al. 2023) is an R package that allows alignment between multiple spatially aware datasets of distinct modalities. A Shiny application is provided to enable both automated and manual alignment across adjacent/same tissue sections where users can interactively manipulate microscopy images and choose landmarks points for co-registration.\n\n\n\n\n\n\n\nRNiftyReg is an R wrapper package, and can be combined with mmand for automated image registration using both rigid and non-rigid approaches. Users can extract and apply the resulting transformation matrix on spatial coordinates of a SpatialExperiment object. However, the automation does not work well on images with very different orientation, scale, and intensity (e.g., Xenium and Visium; see also Chapter 38). Here is a demonstration with external data, before and after registration of the two slices:\n\n\n\n\n\nSTalign (Clifton et al. 2023) is a Python module that performs optimal transport across two sets of spatial coordinates with or without associated microscopy images. Rasterization of spatial coordinates could be performed when the one of either query and reference assay missing any background microscopy images with, e.g. H&E and/or DAPI staining.\nspatialdata (Marconato et al. 2025) is a Python framework, maintained by the scverse consortium. Combined with the napari platform, spatialdata allows users to manually select landmark points before performing rigid alignment between two objects. Here we show the registration of Visium onto Xenium in napari:\n\n\n\n\n\n\n\n\n36.2.2 Omics-based\nSpatial alignment approaches that depend only on the spatial distribution of omic profiles are mostly available in Python frameworks which could be used in R through packages such as reticulate and basilisk.\n\n\nPASTE is a Python-based framework (Zeira et al. 2022) that perform pairwise alignment between serial sections by solving a fused Gromov–Wasserstein optimal transport problem. The solution finds a mapping between each pair of adjacent slices by minimizing a transport cost that depends on both gene expression profiles and distance between spots of each slice.\n\n\n\n\n\n\n\nSLAT is another alternative provided as a Python module scSLAT (Xia et al. 2023) that jointly models spatial coordinates and omics features using spatial graph with node embeddings. Here, the node embeddings are generated by batch-corrected embeddings of omics features whereas the graph is constructed using edges detected by either kNN or radial neighbors. The solution is found by minimizing the cost of a bipartite matching problem.",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>36</span>  <span class='chapter-title'>Spatial registration</span>"
    ]
  },
  {
    "objectID": "pages/crs-spatial-registration.html#reconstruction",
    "href": "pages/crs-spatial-registration.html#reconstruction",
    "title": "36  Spatial registration",
    "section": "\n36.3 Reconstruction",
    "text": "36.3 Reconstruction\nWe now move to the second case where the query dataset includes no spatial information, and where we instead would like to leverage spatially-resolved reference data in order to ‘reconstruct’ the spatial coordinates of query single cells.\nBelow we give a list of Python frameworks that reconstruct the spatial locations of single-cell profiles. Some of these methods could be used through R using packages such as reticulate and basilisk.\n\nCeLEry (Zhang et al. 2023) incorporates a supervised deep neural network model to learn the relationship between spot/cell profiles of spatial omics data and associated localization information, and then uses this model to predict the localization of single cell profiles by using the scRNAseq data as input.\nnovosparc (Nitzan et al. 2019) utilizes optimal transport (OT) to find a probabilistic embedding between expression space and physical space of single cells that minimizes the discrepancy between the pairwise graph-based distances in both of these spaces.\nSpaOTsc (Cang and Nie 2020) also reconstructs the spatial localization of single-cell profiles by solving an OT problem. Three distance matrices are calculated which are associated with the dissimilarities between spot/cell profiles within and across two datasets, where one is a scRNAseq and the other is a spatial omics dataset. The solution to the unbalanced and structured OT problems returns an OT plan for mapping single-cell profiles to spatial locations.",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>36</span>  <span class='chapter-title'>Spatial registration</span>"
    ]
  },
  {
    "objectID": "pages/crs-spatial-registration.html#appendix",
    "href": "pages/crs-spatial-registration.html#appendix",
    "title": "36  Spatial registration",
    "section": "\n36.4 Appendix",
    "text": "36.4 Appendix\nReferences\n\n\n\n\nCang, Zixuan, and Qing Nie. 2020. “Inferring Spatial and Signaling Relationships Between Cells from Single Cell Transcriptomic Data.” Nature Communications 11 (2084). https://doi.org/10.1038/s41467-020-15968-5.\n\n\nClifton, Kalen, Manjari Anant, Gohta Aihara, Lyla Atta, Osagie K. Aimiuwu, Justus M. Kebschull, Michael I. Miller, Daniel Tward, and Jean Fan. 2023. “STalign: Alignment of Spatial Transcriptomics Data Using Diffeomorphic Metric Mapping.” Nature Communications 14 (8123). https://doi.org/10.1038/s41467-023-43915-7.\n\n\nFriston, Karl. J., J. Ashburner, C. D. Frith, J.-B. Poline, J. D. Heather, and R. S. J. Frackowiak. 1995. “Spatial Registration and Normalization of Images.” Human Brain Mapping 3: 165–89. https://doi.org/10.1002/hbm.460030303.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.\n\n\nKiessling, Paul, and Christoph Kuppe. 2024. “Spatial Multi-Omics: Novel Tools to Study the Complexity of Cardiovascular Diseases.” Genome Medicine 16 (14). https://doi.org/10.1186/s13073-024-01282-y.\n\n\nLewis, Sabrina M., Marie-Liesse Asselin-Labat, Quan Nguyen, Jean Berthelet, Xiao Tan, Verena C. Wimmer, Delphine Merino, Kelly L. Rogers, and Shalin H. Naik. 2021. “Spatial Omics and Multiplexed Imaging to Explore Cancer Biology.” Nature Methods 18: 997–1012. https://doi.org/10.1038/s41592-021-01203-6.\n\n\nManukyan, Artür, Ella Bahry, Emanuel Wyler, Erik Becher, Anna Pascual-Reguant, Izabela Plumbom, Hasan Onur Dikmen, et al. 2023. “VoltRon: A Spatial Omics Analysis Platform for Multi-Resolution and Multi-Omics Integration Using Image Registration.” bioRxiv. https://doi.org/10.1101/2023.12.15.571667.\n\n\nMarconato, Luca, Giovanni Palla, Kevin A. Yamauchi, Isaac Virshup, Elyas Heidari, Tim Treis, Wouter-Michiel Vierdag, et al. 2025. “SpatialData: An Open and Universal Data Framework for Spatial Omics.” Nature Methods 22: 58–62. https://doi.org/10.1038/s41592-024-02212-x.\n\n\nNitzan, Mor, Nikos Karaiskos, Nir Friedman, and Nikolaus Rajewsky. 2019. “Gene Expression Cartography.” Nature 576: 132–37. https://doi.org/10.1038/s41586-019-1773-3.\n\n\nXia, Chen-Rui, Zhi-Jie Cao, Xin-Ming Tu, and Ge Gao. 2023. “Spatial-Linked Alignment Tool (SLAT) for Aligning Heterogenous Slices.” Nature Communications 14 (7236). https://doi.org/10.1038/s41467-023-43105-5.\n\n\nZeira, Ron, Max Land, Alexander Strzalkowski, and Benjamin J. Raphael. 2022. “Alignment and Integration of Spatial Transcriptomics Data.” Nature Methods 19: 567–75. https://doi.org/10.1038/s41592-022-01459-6.\n\n\nZhang, Qihuang, Shunzhou Jiang, Amelia Schroeder, Jian Hu, Kejie Li, Baohong Zhang, David Dai, Edward B. Lee, Rui Xiao, and Mingyao Li. 2023. “Leveraging Spatial Transcriptomics Data to Recover Cell Locations in Single-Cell RNA-Seq with CeLEry.” Nature Communications 14 (4050). https://doi.org/10.1038/s41467-023-39895-3.",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>36</span>  <span class='chapter-title'>Spatial registration</span>"
    ]
  },
  {
    "objectID": "pages/crs-imputation.html",
    "href": "pages/crs-imputation.html",
    "title": "37  Imputation",
    "section": "",
    "text": "37.1 Preamble",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>37</span>  <span class='chapter-title'>Imputation</span>"
    ]
  },
  {
    "objectID": "pages/crs-imputation.html#preamble",
    "href": "pages/crs-imputation.html#preamble",
    "title": "37  Imputation",
    "section": "",
    "text": "37.1.1 Introduction\nAs was previously discussed, most commonly employed imaging-based ST assays can resolve 100s to 1000s features. Meanwhile, non-spatially resolved single-cell assays are able to capture transcripts across 10,000 gene features. To allow estimating the expression of genes that may not be available in a ST assay, we would like to integrate spatially resolved data with scRNA-seq data using common features, in order to predict missing features using nearest neighbors (i.e., transcriptionally similar) cells.\n\n37.1.2 Dependencies\n\nCodelibrary(BiocParallel)\nlibrary(dplyr)\nlibrary(DropletUtils)\nlibrary(ggspavis)\nlibrary(harmony)\nlibrary(igraph)\nlibrary(OSTA.data)\nlibrary(patchwork)\nlibrary(RANN)\nlibrary(scran)\nlibrary(scater)\nlibrary(SpatialExperiment)\nlibrary(SpatialExperimentIO)\nbp &lt;- MulticoreParam(th &lt;- 4)",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>37</span>  <span class='chapter-title'>Imputation</span>"
    ]
  },
  {
    "objectID": "pages/crs-imputation.html#data-import",
    "href": "pages/crs-imputation.html#data-import",
    "title": "37  Imputation",
    "section": "\n37.2 Data import",
    "text": "37.2 Data import\nThe analyses demonstrated here will use 313-plex Xenium data (10x Genomics) of a human breast cancer biopsy section and the Chromium Single Cell Gene Expression Flex applied to FFPE tissues (scFFPE-Seq) assay with around 18,000 features (Janesick et al. 2023).\n\n37.2.1 Xenium\n\nCodeid &lt;- \"Xenium_HumanBreast1_Janesick\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\nspe &lt;- readXeniumSXE(td, addTx=FALSE)\nspe$sample_id &lt;- \"Xenium\"\ndim(spe)\n\n##  [1]    313 167780\n\n\n\n37.2.2 Chromium\nWe now load the single cell FFPE RNA-Seq assay. To streamline the demonstration, we consolidate some of the cell type annotations provided by 10x Genomics (i.e., Annotation) into the scRNA-seq assay. The single-cell assay has 18,082 features, some of which are available in the Xenium assay as well.\n\nCodeid &lt;- \"Chromium_HumanBreast_Janesick\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\nh5 &lt;- file.path(td, \"filtered_feature_bc_matrix.h5\")\nsce &lt;- read10xCounts(h5, col.names=TRUE)\nsce$sample_id &lt;- \"Chromium\"\n# set gene symbols as feature names\nrownames(sce) &lt;- make.unique(rowData(sce)$Symbol)\n# retrieve cell type labels\nfs &lt;- list.files(td, full.names=TRUE)\ncsv &lt;- grep(\"csv$\", fs, value=TRUE)\ncd &lt;- read.csv(csv, row.names=1)\ncolData(sce)[names(cd)] &lt;- cd[colnames(sce), ]\ndim(sce)\n\n##  [1] 18082 30365",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>37</span>  <span class='chapter-title'>Imputation</span>"
    ]
  },
  {
    "objectID": "pages/crs-imputation.html#analysis",
    "href": "pages/crs-imputation.html#analysis",
    "title": "37  Imputation",
    "section": "\n37.3 Analysis",
    "text": "37.3 Analysis\n\n37.3.1 Integration\n\n\n\n\n\n\nNoteprinciples of single-cell data integration\n\n\n\n\n\nConsidering an omics assay as a matrix of measurement values where rows/columns correspond to features/observations, there are three possible scenarios for integration (Argelaguet et al. 2021). Specifically, methods applicable to each type of integration strategy depend on the choice of anchors used or, otherwise put, the dimension along which to integrate.\nFirstly, experiments may involve multiple (biological or technical) replicates, requiring horizontal integration across cells that share a common feature space. Secondly, multi-modal assays can simultaneously extract di↵erent types of features from a given cell. Integration must then be vertical, i.e., across features measured from the same cells. Thirdly, technological limitations may require measuring different modalities from separate groups of cells, in which case diagonal integration across both di↵erent cells and features is necessary\nSingle-cell transcriptomics data analyses are most commonly faced with horizontal integration. Methods for this task have been benchmarked extensively (Tran et al. 2020; Chazarra-Gil et al. 2021; Luecken et al. 2022). While these span diverse types of approaches, they often share conceptually similar steps. For example, model-based methods explicitly fit the transcriptional effects of batch assignment, while graph-based methods separately link points within and between batches. harmony (Korsunsky et al. 2019), which we demonstrate here, first represents batches in PCA space, and uses maximum diversity clustering followed by linear mixture modeling to compute a corrected embedding.\n\n\n\nTo accomplish data transfer across cells of either two assays (scRNA-seq and imaging-based ST), we first need to find cells that are similar between the two datasets. To this end, we use the common genes of both assays to integrate both datasets into a joint embedding space. Here, the objective is to find the nearest scRNA-seq cell neighbors of each Xenium cell in the joint embedding space, assuming that these cells will have similar transcriptional profiles.\nWe can integrate them on a transcriptional level; here, using harmony (Korsunsky et al. 2019). To this end, we first consolidate the scRNA-seq and Xenium data into one object:\n\nCode# normalization\nsfs &lt;- (. &lt;- spe$cell_area)/median(.)\nspe &lt;- logNormCounts(spe, size.factors=sfs)\nsce &lt;- logNormCounts(sce)\n# concatenate objects\nlength(gs &lt;- intersect(rownames(spe), rownames(sce)))\n\n##  [1] 307\n\nCodecd &lt;- intersect(names(colData(spe)), names(colData(sce)))\nobj &lt;- lapply(list(spe, sce), \\(x) {\n    y &lt;- logcounts(x &lt;- x[gs, ])\n    y &lt;- as(y, \"dgCMatrix\")\n    SingleCellExperiment(\n        assays=list(logcounts=y),\n        colData=colData(x)[cd])\n}) |&gt; do.call(what=cbind)\n# add single-cell annotations\nlab &lt;- match(colnames(obj), colnames(sce))\nobj$Annotation &lt;- sce$Annotation[lab]\n\n\nWe now filter out cells with too few counts, and then perform PC-based harmony integration:\n\nCode# filtering to keep cells with at\n# least 10% of features detected\ndet &lt;- colMeans(logcounts(obj) &gt; 0)\nobj &lt;- obj[, det &gt;= 0.1]\n# principal component analysis\n# (w/o additional feature selection)\nobj &lt;- runPCA(obj, name=\".PCA\")\n# 'harmony' integration\n# (keeping uncorrected PCs)\n# note harmony requires max 2 cores\nncores &lt;- 2\npcs &lt;- RunHarmony(\n    reducedDim(obj, \".PCA\"),\n    meta_data=obj$sample_id,\n    ncores=ncores, verbose=FALSE)\nreducedDim(obj, \"PCA\") &lt;- pcs\n# dimensionality reduction before/after \n# integration (for visualization only)\nobj &lt;- runUMAP(obj, dimred=\".PCA\", name=\".UMAP\", BPPARAM=bp)\nobj &lt;- runUMAP(obj, dimred=\"PCA\", name=\"UMAP\", BPPARAM=bp)\n\n\nLet us now visualize the embedding of both Xenium and scRNA-seq cells to assess the mixing of observations from both datasets. We also check if scRNA-seq cells are well-partitioned given their annotations:\n\nCode.obj &lt;- obj[, obj$sample_id == \"Chromium\"]\nplotUMAP(obj, colour_by=\"sample_id\", point_size=0, dimred=\".UMAP\") + ggtitle(\"uncorrected\") +\nplotUMAP(obj, colour_by=\"sample_id\", point_size=0) + ggtitle(\"corrected\") +\nplotUMAP(.obj, colour_by=\"Annotation\", point_size=0) + ggtitle(\"Chromium\") +\nplot_layout(nrow=1, guides=\"collect\") &\n    guides(col=guide_legend(override.aes=list(alpha=1, size=2))) &\n    theme_void() & theme(\n        aspect.ratio=1, \n        legend.key.size=unit(0, \"pt\"),\n        plot.title=element_text(hjust=0.5))\n\n\n\n\n\n\n\n\n\n\n\n\n\nNotequantifying batch effects and their removal\n\n\n\n\n\nUMAPs like above are perhaps pretty, but not quantiative. We strongly encourage more quantitative metrics to quantify batch effects prior and post correction, e.g., entropy, principal component regression, local inverse simpson index, silhouette width (problematic according to Rautenstrauch and Ohler (2025)), or similat. A number of such metrics have been proposed in benchmarks (see previous box), and many are implemeted in CellMixS (Lütge et al. 2021).\nHere, we will perform principal component regression (PCR) to quantify the variance explained by cluster/batch (before and after correction); after corresion, we want most variation to be attributable to clusters.\n\nCode# helper to perform PCR \n# xs = 'colData' to use as predictor(s)\n# dr = 'reducedDim' slot to use as response\n.pcr &lt;- \\(obj, xs, dr) {\n    pcs &lt;- reducedDim(obj, dr)\n    lapply(xs, \\(x) {\n        fit &lt;- summary(lm(pcs ~ obj[[x]]))\n        r2 &lt;- sapply(fit, \\(.) .$adj.r.squared)\n        data.frame(x, pc=seq_along(r2), r2)\n    }) |&gt; do.call(what=rbind)  \n}\n\n# analysis\nxs &lt;- c(\"sample_id\", \"Annotation\")\npcs &lt;- list(before=\".PCA\", after=\"PCA\")\npcr &lt;- lapply(pcs, \\(dr) .pcr(obj, xs, dr))\n\n# wrangling\ndf &lt;- bind_rows(pcr, .id=\"id\")\ndf$id &lt;- factor(df$id, names(pcs))\nrownames(df) &lt;- NULL\nhead(df)\n\n##        id         x pc          r2\n##  1 before sample_id  1 0.005112371\n##  2 before sample_id  2 0.032356284\n##  3 before sample_id  3 0.023072209\n##  4 before sample_id  4 0.031942048\n##  5 before sample_id  5 0.140255895\n##  6 before sample_id  6 0.001163737\n\n\nVisualizing coefficients of determination (R-squared), we can observe that batch effects were not that strong to begin with, and are virtually absent after correction; meanwhile, clusters explain similar amounts of variation before/after. This is interesting as the UMAPs visualized above would have suggested otherwise.\n\nCode# plot R2 before vs. after\nggplot(df, aes(pc, r2, col=x)) + \n    facet_wrap(~id) +\n    geom_line(show.legend=FALSE) + geom_point() +\n    scale_x_continuous(breaks=c(1, seq(5, 20, 5))) +\n    scale_y_continuous(limits=c(NA, 1), breaks=seq(0, 1, 0.2)) +\n    labs(x=\"principal component\", y=\"coeff. of determination\") +\n    guides(col=guide_legend(\"predictor\", override.aes=list(size=2))) +\n    coord_cartesian(xlim=c(1, 20)) +\n    theme_bw() + theme(\n        panel.grid.minor=element_blank(),\n        legend.key.size=unit(0, \"lines\"))\n\n\n\n\n\n\n\n\n\n\n\n37.3.2 Selection\nHere, we choose a small subset of features to transfer onto the Xenium assay. For this purpose, we test for differentially expressed genes (DEGs) between cell types (Annotation column), and select the top-20 markers for each:\n\nCode# normalize\nsce &lt;- logNormCounts(sce)\n# test for differentially expressed genes \n# (DEGs) to identify subpopulation markers\ncolLabels(sce) &lt;- sce$Annotation\nmgs &lt;- findMarkers(sce, test=\"wilcox\", direction=\"up\", BPPARAM=bp)\n# get top markers per cell type\ntop &lt;- lapply(names(mgs), \\(k) {\n    df &lt;- mgs[[k]][, c(\"FDR\", \"summary.AUC\")]\n    g &lt;- head(rownames(df), 20)\n    data.frame(k, g, df[g, ])\n}) |&gt; do.call(what=rbind)\nrownames(top) &lt;- NULL\nhead(top)\n\n##          k     g FDR summary.AUC\n##  1 B Cells  CD74   0   0.9477608\n##  2 B Cells MS4A1   0   0.8773396\n##  3 B Cells CXCR4   0   0.8271647\n##  4 B Cells SP140   0   0.7843702\n##  5 B Cells BANK1   0   0.7840307\n##  6 B Cells CIITA   0   0.8615623\n\n\n\n37.3.3 Aggregation\nNow that we have shown there is a correction for batch effects between Xenium and Chromium assays, we can transfer counts from single-cell onto Xenium data by identifying the k-nearest neighbors (kNNs) of each Xenium cell in the Chromium data, and imputing missing genes by aggregating their profile across kNNs (here, using mean expression).\n\nCode# find k-nearest neighbors across embeddings\n# (from Xenium to Chromium cells)\nidx &lt;- split(colnames(obj), obj$sample_id)\npcs &lt;- reducedDim(obj, \"PCA\")\nref &lt;- pcs[idx$Chromium, ]\nque &lt;- pcs[idx$Xenium, ]\nknn &lt;- nn2(data=ref, query=que, k=k &lt;- 20)\n# create adjacency matrix\nel &lt;- cbind(\n    rep(idx$Xenium, each=k), \n    idx$Chromium[c(t(knn$nn.idx))])\ng &lt;- graph_from_edgelist(el, directed=TRUE)\nA &lt;- as_adjacency_matrix(g)\n# average Chromium across Xenium neighbors\ngs &lt;- unique(top$g)\ncs &lt;- intersect(rownames(A), idx$Chromium)\nws &lt;- A[idx$Xenium, cs]*(1/k)\ny &lt;- logcounts(sce)[gs, cs] %*% t(ws)",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>37</span>  <span class='chapter-title'>Imputation</span>"
    ]
  },
  {
    "objectID": "pages/crs-imputation.html#downstream",
    "href": "pages/crs-imputation.html#downstream",
    "title": "37  Imputation",
    "section": "\n37.4 Downstream",
    "text": "37.4 Downstream\n\n37.4.1 Visualization\nWe now create two new SpatialExperiment objects by i) subsetting cells that passed our minimal filtering, and ii) replacing observed by imputed counts in one object:\n\nCodespe &lt;- spe[, idx$Xenium]\nspe &lt;- logNormCounts(spe)\nsqe &lt;- SpatialExperiment(\n    assays=list(logcounts=y), \n    spatialCoords=spatialCoords(spe))\n# needed for 'ggspavis' visualization\nspe$in_tissue &lt;- sqe$in_tissue &lt;- 1\n\n\nWe can now compare imputed to observed counts. Here, we visualize ACTA2, which is included in both assays, as well as KRT17, which also marks myoepithelial cells:\n\nCode.p &lt;- \\(obj, col) {\n    plotCoords(obj, \n        point_size=0,\n        annotate=col, \n        assay_name=\"logcounts\")\n}\npal &lt;- scale_color_gradient2(\"obs.\", high=\"red\")\nqal &lt;- scale_color_gradient2(\"imp.\", high=\"blue\")\n.p(spe, \"ACTA2\") + pal +\n.p(sqe, \"ACTA2\") + qal +\n.p(sqe, \"KRT17\") + qal +\n    plot_layout(nrow=1) \n\n\n\n\n\n\n\n\n37.4.2 Comparison\nAs a more systematic comparison, we can visualize the correlation of cell-wise expression values (using shared features only) between observed and imputed data:\n\nCodegs &lt;- intersect(rownames(spe), rownames(sqe))\nimp &lt;- as.matrix(t(logcounts(sqe[gs, ])))\nobs &lt;- as.matrix(t(logcounts(spe[gs, ])))\ncm &lt;- cor(imp, obs, method=\"pearson\")\ndf &lt;- data.frame(g=gs, p=diag(cm))\ndf$g &lt;- factor(df$g, df$g[order(-df$p)])\nggplot(df, aes(g, p, fill=p &gt; 0.5)) + geom_col() +\n    labs(x=\"correlation (observed vs. imputed)\", y=NULL) +\n    geom_hline(yintercept=0.5) +\n    theme_minimal() + theme(\n        legend.position=\"none\",\n        panel.grid=element_blank(),\n        axis.text.x=element_text(angle=90, vjust=0.5, hjust=1))\n\n\n\n\n\n\n\nWe observe the highest correlation between observed and imputed data for KRT7; let’s confirm this by visualizing the gene’s expression in space:\n\nCode.p(spe, \"KRT7\") + pal +\n.p(sqe, \"KRT7\") + qal +\n    plot_layout(nrow=1) \n\n\n\n\n\n\n\nGenes that exhibit the lowest correlation tend to be rarely expressed. This arguably makes it difficult to identify similar Chromium cells and, in turn, accurately transfer information between both assays. By contrast, highly correlated genes are detected in a decent proportion of cells:\n\nCode# quantify proportion of cells for which\n# lowly/highly correlated genes are detected\nfq &lt;- \\(gs) {\n    y &lt;- counts(spe[gs, ])\n    round(rowMeans(y &gt; 0), 2)\n}\ngs &lt;- names(sort(diag(cm)))\nfq(tail(gs)) # high corr.\n\n##     FASN TACSTD2   ERBB2 CEACAM6   EPCAM    KRT7 \n##     0.55    0.59    0.91    0.44    0.62    0.70\n\nCodefq(head(gs)) # low corr.\n\n##   HDC CTSG CPA3 GZMB PLD4 CD83 \n##  0.32 0.01 0.03 0.08 0.03 0.09",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>37</span>  <span class='chapter-title'>Imputation</span>"
    ]
  },
  {
    "objectID": "pages/crs-imputation.html#other-methods",
    "href": "pages/crs-imputation.html#other-methods",
    "title": "37  Imputation",
    "section": "\n37.5 Other methods",
    "text": "37.5 Other methods\nAlternatively, we can use other R/Python frameworks to integrate imaging-based ST assays with scRNA-seq datasets, and impute missing features. Some of these methods could be used through R using packages such as reticulate and basilisk; see Chapter 7.\n\nTangram: is available as a Python module through scvi-tools (Biancalani et al. 2021). The tool performs a softmax optimization to generate a probabilistic mapping between cells of scRNA-seq data and voxels (cells or spots) of ST data, which is then used to transfer labels or feature profiles across datasets.\nLIGER: is available in R via rliger (Welch et al. 2019), and incorporates a similar workflow performed in this chapter using harmony. The only difference between these approaches is how the joint embedding is obtained; here, LIGER uses non-negative matrix factorization (NMF). LIGER has been originally proposed to perform this task for scRNA-seq and scATAC-seq assays.",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>37</span>  <span class='chapter-title'>Imputation</span>"
    ]
  },
  {
    "objectID": "pages/crs-imputation.html#appendix",
    "href": "pages/crs-imputation.html#appendix",
    "title": "37  Imputation",
    "section": "\n37.6 Appendix",
    "text": "37.6 Appendix\nReferences\n\n\n\n\nArgelaguet, Ricard, Anna S E Cuomo, Oliver Stegle, and John C Marioni. 2021. “Computational principles and challenges in single-cell data integration.” Nature Biotechnology 39: 1202–15. https://doi.org/10.1038/s41587-021-00895-7.\n\n\nBiancalani, Tommaso, Gabriele Scalia, Lorenzo Buffoni, Raghav Avasthi, Ziqing Lu, Aman Sanger, Neriman Tokcan, et al. 2021. “Deep Learning and Alignment of Spatially Resolved Single-Cell Transcriptomes with Tangram.” Nature Methods 18: 1352–62. https://doi.org/10.1038/s41592-021-01264-7.\n\n\nChazarra-Gil, Ruben, Stijn van Dongen, Vladimir Yu Kiselev, and Martin Hemberg. 2021. “Flexible comparison of batch correction methods for single-cell RNA-seq using BatchBench.” Nucleic Acids Research 49 (7): e42. https://doi.org/10.1093/nar/gkab004.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.\n\n\nKorsunsky, Ilya, Nghia Millard, Jean Fan, Kamil Slowikowski, Fan Zhang, Kevin Wei, Yuriy Baglaenko, Michael Brenner, Po-Ru Loh, and Soumya Raychaudhuri. 2019. “Fast, sensitive and accurate integration of single-cell data with Harmony.” Nature Methods 16 (12): 1289–96. https://doi.org/10.1038/s41592-019-0619-0.\n\n\nLuecken, Malte D, M Büttner, K Chaichoompu, A Danese, M Interlandi, M F Mueller, D C Strobl, et al. 2022. “Benchmarking atlas-level data integration in single-cell genomics.” Nature Methods 19 (1): 41–50. https://doi.org/10.1038/s41592-021-01336-8.\n\n\nLütge, Almut, Joanna Zyprych-Walczak, Urszula Brykczynska Kunzmann, Helena L Crowell, Daniela Calini, Dheeraj Malhotra, Charlotte Soneson, and Mark D Robinson. 2021. “CellMixS: quantifying and visualizing batch effects in single-cell RNA-seq data.” Life Science Alliance 4 (6): e202001004. https://doi.org/10.26508/lsa.202001004.\n\n\nRautenstrauch, Pia, and Uwe Ohler. 2025. “Shortcomings of silhouette in single-cell integration benchmarking.” Nature Biotechnology, 1–5. https://doi.org/10.1038/s41587-025-02743-4.\n\n\nTran, Hoa Thi Nhu, Kok Siong Ang, Marion Chevrier, Xiaomeng Zhang, Nicole Yee Shin Lee, Michelle Goh, and Jinmiao Chen. 2020. “A benchmark of batch-effect correction methods for single-cell RNA sequencing data.” Genome Biology 21 (1): 12. https://doi.org/10.1186/s13059-019-1850-9.\n\n\nWelch, Joshua D., Velina Kozareva, Ashley Ferreira, Charles Vanderburg, Carly Martin, and Evan Z. Macosko. 2019. “Single-Cell Multi-Omic Integration Compares and Contrasts Features of Brain Cell Identity.” Cell 177: 1873–87. https://doi.org/10.1016/j.cell.2019.05.006.",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>37</span>  <span class='chapter-title'>Imputation</span>"
    ]
  },
  {
    "objectID": "pages/crs-workflow-xenvis.html",
    "href": "pages/crs-workflow-xenvis.html",
    "title": "38  Workflow: Xenium + Visium",
    "section": "",
    "text": "38.1 Preamble",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>38</span>  <span class='chapter-title'>Workflow: Xenium + Visium</span>"
    ]
  },
  {
    "objectID": "pages/crs-workflow-xenvis.html#preamble",
    "href": "pages/crs-workflow-xenvis.html#preamble",
    "title": "38  Workflow: Xenium + Visium",
    "section": "",
    "text": "38.1.1 Dependencies\n\nCodelibrary(RANN)\nlibrary(scater)\nlibrary(scuttle)\nlibrary(harmony)\nlibrary(ggspavis)\nlibrary(VisiumIO)\nlibrary(patchwork)\nlibrary(OSTA.data)\nlibrary(BayesSpace)\nlibrary(SpatialExperiment)\nlibrary(SpatialExperimentIO)\n# set seed for random number generation\n# in order to make results reproducible\nset.seed(194849)\n\n\n\n38.1.2 Introduction\nIn this demo, we will rely on a dataset from Janesick et al. (2023), which includes same-section Visium and Xenium measurements on human breast cancer tissue.",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>38</span>  <span class='chapter-title'>Workflow: Xenium + Visium</span>"
    ]
  },
  {
    "objectID": "pages/crs-workflow-xenvis.html#sec-crs-workflow-xenvis-load-data",
    "href": "pages/crs-workflow-xenvis.html#sec-crs-workflow-xenvis-load-data",
    "title": "38  Workflow: Xenium + Visium",
    "section": "\n38.2 Setup",
    "text": "38.2 Setup\nWe start out by retrieving these datasets from the OSF repository, and reading them into R as separate SpatialExperiment objects:\n\nCode# Visium\nid &lt;- \"Visium_HumanBreast_Janesick\"\npa &lt;- OSTA.data_load(id)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\nobj &lt;- TENxVisium(\n    spacerangerOut=file.path(td, \"outs\"), \n    images=\"lowres\", \n    format=\"h5\")\n(vis &lt;- import(obj))\n\n##  class: SpatialExperiment \n##  dim: 18085 4992 \n##  metadata(2): resources spatialList\n##  assays(1): counts\n##  rownames(18085): ENSG00000187634 ENSG00000188976 ... ENSG00000198695\n##    ENSG00000198727\n##  rowData names(3): ID Symbol Type\n##  colnames(4992): AACACCTACTATCGAA-1 AACACGTGCATCGCAC-1 ...\n##    TGTTGGCCAGACCTAC-1 TGTTGGCCTACACGTG-1\n##  colData names(4): in_tissue array_row array_col sample_id\n##  reducedDimNames(0):\n##  mainExpName: Gene Expression\n##  altExpNames(0):\n##  spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres\n##  imgData names(4): sample_id image_id data scaleFactor\n\nCode# Xenium\nid &lt;- \"Xenium_HumanBreast1_Janesick\"\npa &lt;- OSTA.data_load(id, mol=FALSE)\ndir.create(td &lt;- tempfile())\nunzip(pa, exdir=td)\n(xen &lt;- readXeniumSXE(td, addTx=FALSE))\n\n##  class: SpatialExperiment \n##  dim: 313 167780 \n##  metadata(3): experiment.xenium cell_boundaries nucleus_boundaries\n##  assays(1): counts\n##  rownames(313): ABCC11 ACTA2 ... ZEB2 ZNF562\n##  rowData names(3): ID Symbol Type\n##  colnames(167780): 1 2 ... 167779 167780\n##  colData names(8): cell_id transcript_counts ... nucleus_area\n##    sample_id\n##  reducedDimNames(0):\n##  mainExpName: NULL\n##  altExpNames(4): NegControlProbe NegControlCodeword antisense BLANK\n##  spatialCoords names(2) : x_centroid y_centroid\n##  imgData names(0):\n\nCode# also retrieve cell subpopulation labels\ndf &lt;- read.csv(file.path(td, \"annotation.csv\"))\nxen$anno &lt;- df$Annotation[match(xen$cell_id, df$Barcode)]\n\n\nWe’ll also do some data wrangling to simplify spatial coordinate names, and use gene symbols (rather than ensembl identifiers) as feature names for both data:\n\nCode# simplify spatial coordinate names\nspatialCoordsNames(vis) &lt;- spatialCoordsNames(xen) &lt;- c(\"x\", \"y\")\n# use gene symbols as feature names\nrownames(vis) &lt;- make.unique(rowData(vis)$Symbol)\nrownames(xen) &lt;- make.unique(rowData(xen)$Symbol)",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>38</span>  <span class='chapter-title'>Workflow: Xenium + Visium</span>"
    ]
  },
  {
    "objectID": "pages/crs-workflow-xenvis.html#alignment",
    "href": "pages/crs-workflow-xenvis.html#alignment",
    "title": "38  Workflow: Xenium + Visium",
    "section": "\n38.3 Alignment",
    "text": "38.3 Alignment\nTo align Xenium and Visium sections, we use the affine transformation matrix provided by 10x Genomics, which was obtained by registration of Xenium onto Visium in Python with the Fiji Java plug-in; see Chapter 36 for details.\n\nCode# affine matrix for aligning Xenium onto Visium\nmtx &lt;- matrix(nrow=2, byrow=TRUE, c(\n    8.82797498e-02, -1.91831377e+00, 1.63476055e+04,\n    1.84141210e+00,  5.96797885e-02, 4.12499099e+03),\n    dimnames=list(c(\"x\", \"y\"), c(\"x\", \"y\", \"z\")))\n\n\n\nCode# stash original coordinates\nold &lt;- spatialCoords(xen)\ncolData(xen)[c(\".x\", \".y\")] &lt;- old\n# apply affine transformation\nnew &lt;- old %*% t(mtx[, -3]) # scale/rotate &\nnew &lt;- sweep(new, 2, mtx[, 3], `+`) # offset\nspatialCoords(xen) &lt;- new\n\n\n\nCodedf &lt;- data.frame(spatialCoords(vis))\nfd &lt;- data.frame(spatialCoords(xen))\nggplot() + coord_equal() + theme_void() +\n    geom_point(aes(x, y), df, col=\"grey\", stroke=0, size=1) +\n    geom_point(aes(x, y), fd, col=\"blue\", stroke=0, size=0.1)",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>38</span>  <span class='chapter-title'>Workflow: Xenium + Visium</span>"
    ]
  },
  {
    "objectID": "pages/crs-workflow-xenvis.html#aggregation",
    "href": "pages/crs-workflow-xenvis.html#aggregation",
    "title": "38  Workflow: Xenium + Visium",
    "section": "\n38.4 Aggregation",
    "text": "38.4 Aggregation\nBinning single-cell resolution spatial data into spots can be useful for checking correlations between technical replicates of the same technology, identifying artifacts across technologies, and checking cell density (number of cells per spot). In general, it is possible to bin at the transcript-level (sub-cellular) or cell-level.\nTo aggregate single cell-level data from Xenium at the spot level, we first carry out a fixed-radius neighborhood search using RANN (see Chapter 21) to identify, for every spot, cells whose centroid lies within a \\(\\sim130\\)um distance (Visium spot diameter of 55um, divided by two 2, divided by 0.2115 = Xenium px size in um):\n\nCode# do a fixed-radius search to get cell \n# centroids that fall on a given spot\nnns &lt;- nn2(\n    searchtype=\"radius\", radius=55/2/0.2125, k=200,\n    data=spatialCoords(xen), query=spatialCoords(vis))\n\n\nLet’s count and visualize the number of cells that overlap each spot:\n\nCode# get cell indices and number of cells per spot\nvis$n_cells &lt;- rowSums((idx &lt;- nns$nn.idx) &gt; 0)\nplotCoords(vis, annotate=\"n_cells\")\n\n\n\n\n\n\n\nNext, we can aggregate single cell-level Xenium data into pseudo-spots. In addition, we propagate the Visium data’s spatial coordinates, excluding spots without any overlapping cells:\n\nCode# aggregate Xenium data into pseudo-spots\nxem &lt;- aggregateAcrossCells(xen[, c(t(idx))], rep.int(seq(ncol(vis)), vis$n_cells))\n# propagate Visium data's spatial coordinates, excluding empty pseudo-spots\nspatialCoords(xem) &lt;- spatialCoords(vis)[vis$n_cells &gt; 0, ] \ncolnames(xem) &lt;- colnames(vis)[vis$n_cells &gt; 0]\nxem$in_tissue &lt;- 1\n\n\nBecause we’ve aligned the Xenium to the Visium data, we can also propagate the Visium data’s imgData (low resolution H&E staining) to the object containing pseudo-spot Xenium data:\n\nCodeimgData(xem) &lt;- imgData(vis)\n\n\nNext, let’s compute some standard quality control metrics on both, the Visium and pseudo-spot Xenium data. Besides dataset-specific metrics, we also specify the subset of genes that are shared between both datasets in order to obtain comparable metrics:\n\nCodesub &lt;- list(gs=intersect(rownames(vis), rownames(xen)))\nvis &lt;- addPerCellQCMetrics(vis, subsets=sub)\nxem &lt;- addPerCellQCMetrics(xem, subsets=sub)\n\n\nLet’s visually compare the total counts per (pseudo-)spot between Visium and Xenium:\n\nCodeplotVisium(vis, \n    annotate=\"subsets_gs_sum\",\n    zoom=TRUE, facets=NULL) +\n    ggtitle(\"Visium\") +\nplotVisium(xem, \n    annotate=\"subsets_gs_sum\",\n    zoom=TRUE, facets=NULL) +\n    ggtitle(\"Xenium\")\n\n\n\n\n\n\n\nWe can also use a scatter plot - where points = (pseudo-)spots - to directly compare total counts between both technologies:\n\nCodedf &lt;- data.frame(\n    n_cells=xem$ncells,\n    Xenium=xem$subsets_gs_sum,\n    Visium=vis[, colnames(xem)]$subsets_gs_sum)\nggplot(df, aes(Xenium, Visium, col=n_cells)) + \n    scale_color_gradientn(colors=rev(hcl.colors(9, \"Mako\"))) +\n    geom_point(alpha=0.5) + theme_bw() + theme(aspect.ratio=1)",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>38</span>  <span class='chapter-title'>Workflow: Xenium + Visium</span>"
    ]
  },
  {
    "objectID": "pages/crs-workflow-xenvis.html#integration",
    "href": "pages/crs-workflow-xenvis.html#integration",
    "title": "38  Workflow: Xenium + Visium",
    "section": "\n38.5 Integration",
    "text": "38.5 Integration\nBesides physically aligning both datasets, we can integrate them on a transcriptional level; here, using harmony.\nTo this end, we first consolidate the Visium and Xenium data into one object:\n\nCode# pool datasets together\ngs &lt;- intersect(rownames(vis), rownames(xem))\ncs &lt;- intersect(colnames(vis), colnames(xem))\ncd &lt;- intersect(names(colData(vis)), names(colData(xem)))\nlys &lt;- list(Visium=vis, Xenium=xem)\nlys &lt;- mapply(spe=lys, sid=names(lys), \\(spe, sid) {\n    spe &lt;- spe[gs, cs]\n    spe$sample_id &lt;- sid\n    rowData(spe) &lt;- NULL\n    colData(spe) &lt;- colData(spe)[cd]\n    assay(spe) &lt;- as(assay(spe), \"dgCMatrix\")\n    return(spe)\n}, SIMPLIFY=FALSE)\n(obj &lt;- do.call(cbind, lys))\n\n##  class: SpatialExperiment \n##  dim: 307 7954 \n##  metadata(5): resources spatialList experiment.xenium cell_boundaries\n##    nucleus_boundaries\n##  assays(1): counts\n##  rownames(307): FBLIM1 C1QA ... IL2RG TCEAL7\n##  rowData names(0):\n##  colnames(7954): AACACGTGCATCGCAC-1 AACACTTGGCAAGGAA-1 ...\n##    TGTTGGATGGACTTCT-1 TGTTGGCCAGACCTAC-1\n##  colData names(8): in_tissue sample_id ... subsets_gs_percent total\n##  reducedDimNames(0):\n##  mainExpName: Gene Expression\n##  altExpNames(0):\n##  spatialCoords names(2) : x y\n##  imgData names(4): sample_id image_id data scaleFactor\n\n\nIn order to perform joint spatial clustering of both modalities, we construct array coordinates for Xenium pseudo-spots that are offset from Visium spots:\n\nCode# offset the spatial location for joint clustering\n# of Visium and adjacent pseudo-spot Xenium data\nobj$array_row &lt;- c(ar &lt;- vis[, cs]$array_row, 100+ar)\nobj$array_col &lt;- c(ac &lt;- vis[, cs]$array_col, 100+ac)\n\n\nNext, we run a standard pipeline to perform log-library size normalization (using scater), principal component analysis (PCA), harmony integration, and dimension reduction (UMAP). Notably, the feature selection step that typically precedes PCA is skipped here, as the Xenium experiment includes only a curated selection of \\(\\sim300\\) targets by design.\n\nCode# minimal filtering\nobj &lt;- obj[, obj$subsets_gs_sum &gt; 0]\n# library size normalization \nobj &lt;- logNormCounts(obj)\n# principal component analysis\n# (w/o additional feature selection)\nobj &lt;- runPCA(obj)\n# 'harmony' integration\npcs &lt;- RunHarmony(\n    data_mat=reducedDim(obj, \"PCA\"), \n    meta_data=obj$sample_id, \n    verbose=FALSE)\nreducedDim(obj, \"PCA\") &lt;- pcs\n# dimensionality reduction\nmap &lt;- calculateUMAP(t(pcs))\nreducedDim(obj, \"UMAP\") &lt;- map\n\n\n\nCodeplotUMAP(obj, colour_by=\"sample_id\", point_size=0.1) +\n    guides(col=guide_legend(override.aes=list(alpha=1, size=2))) +\n    theme_void() + theme(aspect.ratio=1, legend.key.size=unit(0, \"pt\"))",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>38</span>  <span class='chapter-title'>Workflow: Xenium + Visium</span>"
    ]
  },
  {
    "objectID": "pages/crs-workflow-xenvis.html#clustering",
    "href": "pages/crs-workflow-xenvis.html#clustering",
    "title": "38  Workflow: Xenium + Visium",
    "section": "\n38.6 Clustering",
    "text": "38.6 Clustering\nThe spatialCluster() function clusters the spots, and adds the predicted cluster labels to the object. The authors recommend running with at least 10,000 iterations (nrep=1e4); we use fewer iterations in this demo for the sake of runtime. (Note that a random seed must be set (set.seed()) for the results to be reproducible.)\n\nCode# 'BayesSpace' clustering\nres &lt;- spatialCluster(obj, q=10, burn.in=100, nrep=1e3)\ntable(res$k &lt;- factor(res$spatial.cluster))\n\n##  \n##     1    2    3    4    5    6    7    8    9   10 \n##   618  767 1010  588 1278  489  723 1035 1035  410\n\n\nWe see high concordance between the two modalities, although the aggregated Xenium data appears to yield slightly higher granularity:\n\nCodeplotVisium(res, \n    image=FALSE, annotate=\"k\") +\n    theme(legend.key.size=unit(0, \"pt\"))\n\n\n\n\n\n\n\nFrom here on out, both datasets could be analyzed together and/or independently, e.g., in order to identify cluster markers, annotate cell subpopulations etc.",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>38</span>  <span class='chapter-title'>Workflow: Xenium + Visium</span>"
    ]
  },
  {
    "objectID": "pages/crs-workflow-xenvis.html#appendix",
    "href": "pages/crs-workflow-xenvis.html#appendix",
    "title": "38  Workflow: Xenium + Visium",
    "section": "\n38.7 Appendix",
    "text": "38.7 Appendix\nReferences\n\n\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.",
    "crumbs": [
      "Cross-platform analyses",
      "<span class='chapter-number'>38</span>  <span class='chapter-title'>Workflow: Xenium + Visium</span>"
    ]
  },
  {
    "objectID": "pages/apx-acknowledgments.html",
    "href": "pages/apx-acknowledgments.html",
    "title": "Appendix A — Acknowledgments",
    "section": "",
    "text": "References\nFor authors and citation details, see Appendix D.\nThe authors also thank Aaron T. L. Lun for feedback, advice, as well as his substantial contributions to the Bioconductor ecosystem; Abby Spangler, Madhavi Tippani, and Brenda Pardo for initial work and discussions on Visium data analysis workflows and preprocessing procedures carried out at the Lieber Institute for Brain Development; and members of the Bioconductor Core Team and community for computational assistance and advice. In addition, the authors thank readers from the Bioconductor and wider research communities for feedback, suggestions, and contributions.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>A</span>  <span class='chapter-title'>Acknowledgments</span>"
    ]
  },
  {
    "objectID": "pages/apx-acknowledgments.html#references",
    "href": "pages/apx-acknowledgments.html#references",
    "title": "Appendix A — Acknowledgments",
    "section": "",
    "text": "Amezquita, Robert A., Aaron T. L. Lun, Etienne Becht, Vince J. Carey, Lindsay N. Carpp, Ludwig Geistlinger, Federico Marini, et al. 2020. “Orchestrating Single-Cell Analysis with Bioconductor.” Nature Methods 17: 137–45. https://doi.org/10.1038/s41592-019-0654-x.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>A</span>  <span class='chapter-title'>Acknowledgments</span>"
    ]
  },
  {
    "objectID": "pages/apx-related-resources.html",
    "href": "pages/apx-related-resources.html",
    "title": "Appendix B — Related resources",
    "section": "",
    "text": "B.1 Introduction\nThis chapter provides links to several related resources from the Bioconductor and other communities.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>B</span>  <span class='chapter-title'>Related resources</span>"
    ]
  },
  {
    "objectID": "pages/apx-related-resources.html#data-preprocessing-procedures",
    "href": "pages/apx-related-resources.html#data-preprocessing-procedures",
    "title": "Appendix B — Related resources",
    "section": "B.2 Data preprocessing procedures",
    "text": "B.2 Data preprocessing procedures\n\nVisium data preprocessing: Online book containing details on data preprocessing procedures for spatial transcriptomics data from the 10x Genomics Visium platform (using tools outside R and Bioconductor).",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>B</span>  <span class='chapter-title'>Related resources</span>"
    ]
  },
  {
    "objectID": "pages/apx-related-resources.html#resources-for-other-spatial-omics-platforms",
    "href": "pages/apx-related-resources.html#resources-for-other-spatial-omics-platforms",
    "title": "Appendix B — Related resources",
    "section": "B.3 Resources for other spatial omics platforms",
    "text": "B.3 Resources for other spatial omics platforms\nWorkflows and other resources for data from other spatial omics platforms:\n\nAnalysis workflow for IMC data: Online book providing a workflow highlighting the use of R/Bioconductor packages to analyze single-cell data obtained from segmented imaging mass cytometry (IMC) images. Examples focus on IMC data and can also be applied to images obtained by other highly-multiplexed imaging technologies, e.g. CODEX, MIBI, and mIF.\nVectraPolarisData: Bioconductor data package providing multiplex single-cell imaging datasets collected on Vectra Polaris and Vectra 3 instruments.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>B</span>  <span class='chapter-title'>Related resources</span>"
    ]
  },
  {
    "objectID": "pages/apx-related-resources.html#data-structures",
    "href": "pages/apx-related-resources.html#data-structures",
    "title": "Appendix B — Related resources",
    "section": "B.4 Data structures",
    "text": "B.4 Data structures\nData structures for storing data from spatial transcriptomics and other spatial omics platforms outside R/Bioconductor:\n\nAnnData: Python class for storing single-cell and spatial data in the scverse framework.\nGiotto classes: R classes used to store spatial omics data within the Giotto Suite framework (Chen et al. 2025; Dries et al. 2021).\nSpatialData: Python class for storing data from spatial transcriptomics and other spatial omics platforms.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>B</span>  <span class='chapter-title'>Related resources</span>"
    ]
  },
  {
    "objectID": "pages/apx-related-resources.html#statistical-concepts",
    "href": "pages/apx-related-resources.html#statistical-concepts",
    "title": "Appendix B — Related resources",
    "section": "B.5 Statistical concepts",
    "text": "B.5 Statistical concepts\n\nModern Statistics for Modern Biology: Online textbook on concepts in modern statistics for high-throughput and high-dimensional biology. This book includes a detailed chapter on image data and spatial statistics.\nHarnessing the Potential of Spatial Statistics for Spatial Omics Data with pasta: Online resource describing concepts from spatial statistics that apply to spatial -omics datasets. This online resource also has a preprint published at arXiv:2412.01561.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>B</span>  <span class='chapter-title'>Related resources</span>"
    ]
  },
  {
    "objectID": "pages/apx-related-resources.html#references",
    "href": "pages/apx-related-resources.html#references",
    "title": "Appendix B — Related resources",
    "section": "References",
    "text": "References\n\n\n\n\nChen, Jiaji G, Joselyn C Chávez-Fuentes, Matthew O’Brien, Junxiang Xu, Edward C Ruiz, Wen Wang, Iqra Amin, et al. 2025. “Giotto Suite: A Multiscale and Technology-Agnostic Spatial Multiomics Analysis Ecosystem.” Nature Methods, 1–13. https://doi.org/10.1038/s41592-025-02817-w.\n\n\nDries, Ruben, Qian Zhu, Rui Dong, Chee-Huat Linus Eng, Huipeng Li, Kan Liu, Yuntian Fu, et al. 2021. “Giotto: A Toolbox for Integrative Analysis and Visualization of Spatial Expression Data.” Genome Biology 22 (78). https://doi.org/10.1186/s13059-021-02286-2.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>B</span>  <span class='chapter-title'>Related resources</span>"
    ]
  },
  {
    "objectID": "pages/apx-session-info.html",
    "href": "pages/apx-session-info.html",
    "title": "Appendix C — Session information",
    "section": "",
    "text": "Runtimes\nChapters without code are greyed out, slowest chapters highlighted in bold, and Σ = overall runtime (hh:mm:ss).",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>C</span>  <span class='chapter-title'>Session information</span>"
    ]
  },
  {
    "objectID": "pages/apx-session-info.html#runtimes",
    "href": "pages/apx-session-info.html#runtimes",
    "title": "Appendix C — Session information",
    "section": "",
    "text": "bkg-introduction \n00:00:00\n\n\n bkg-spatial-omics \n00:00:00\n\n\n bkg-infrastructure \n00:00:00\n\n\nbkg-ecosystem\n00:00:36\n\n\n bkg-importing-data \n00:00:00\n\n\nbkg-example-datasets\n00:00:11\n\n\nbkg-python-interoperability\n00:00:49\n\n\n seq-introduction \n00:00:00\n\n\n seq-reads-to-counts \n00:00:00\n\n\nseq-quality-control\n00:02:38\n\n\nseq-intermediate-processing\n00:03:19\n\n\n seq-deconvolution \n00:14:49\n\n\nseq-workflow-dlpfc\n00:03:00\n\n\n seq-workflow-visium-crc \n00:10:12\n\n\n seq-workflow-visium-hd-seg \n00:16:03\n\n\n img-introduction \n00:00:00\n\n\n img-segmentation \n00:00:00\n\n\nimg-quality-control\n00:02:01\n\n\n img-intermediate-processing \n00:07:32\n\n\nimg-neighborhood-analysis\n00:04:17\n\n\nimg-cell-cell-communication\n00:04:22\n\n\n img-sub-cellular-analysis \n00:00:00\n\n\nimg-workflow-xenium\n00:03:44\n\n\nimg-workflow-cosmx\n00:02:18\n\n\nind-normalization\n00:00:26\n\n\n ind-dimensionality-reduction \n00:05:48\n\n\n ind-clustering \n00:07:58\n\n\n ind-feature-selection-testing \n00:10:43\n\n\nind-feature-set-signatures\n00:01:25\n\n\n ind-spatial-statistics \n00:06:06\n\n\n ind-image-analysis \n00:00:00\n\n\nmult-diff-spatial-patterns\n00:00:49\n\n\n mult-diff-colocalization \n00:07:10\n\n\nmult-structure-based\n00:04:00\n\n\ncrs-spatial-registration\n00:00:23\n\n\n crs-imputation \n00:14:00\n\n\ncrs-workflow-xenvis\n00:03:05\n\n\nΣ\n02:17:58",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>C</span>  <span class='chapter-title'>Session information</span>"
    ]
  },
  {
    "objectID": "pages/apx-session-info.html#session-info",
    "href": "pages/apx-session-info.html#session-info",
    "title": "Appendix C — Session information",
    "section": "Session info",
    "text": "Session info\nSession information from the current build of the book.\n\nCodesessioninfo::session_info(\n  installed.packages()[, \"Package\"], \n  include_base = TRUE\n)\n\n##  ─ Session info ────────────────────────────────────────────────────────────\n##   setting  value\n##   version  R Under development (unstable) (2026-03-05 r89546)\n##   os       Ubuntu 24.04.4 LTS\n##   system   x86_64, linux-gnu\n##   ui       X11\n##   language (EN)\n##   collate  C\n##   ctype    en_US.UTF-8\n##   tz       America/New_York\n##   date     2026-03-13\n##   pandoc   2.7.3 @ /usr/bin/ (via rmarkdown)\n##   quarto   1.8.25 @ /usr/local/bin/quarto\n##  \n##  ─ Packages ────────────────────────────────────────────────────────────────\n##   package                                       * version        date (UTC) lib source\n##   a4                                              1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   a4Base                                          1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   a4Classif                                       1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   a4Core                                          1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   a4Preproc                                       1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   a4Reporting                                     1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ABarray                                         1.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   abdiv                                           0.2.0          2020-01-20 [2] CRAN (R 4.6.0)\n##   abind                                           1.4-8          2024-09-12 [2] CRAN (R 4.6.0)\n##   abseqR                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ABSSeq                                          1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   acde                                            1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ACE                                             1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   aCGH                                            1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ACME                                            2.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   actuar                                          3.3-7          2026-03-02 [2] CRAN (R 4.6.0)\n##   ada                                             2.0-5.1        2026-02-17 [2] CRAN (R 4.6.0)\n##   adabag                                          5.1            2025-07-28 [2] CRAN (R 4.6.0)\n##   ADaCGH2                                         2.51.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ADAM                                            1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ADAMgui                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ADAPT                                           1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   adductData                                      1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ade4                                            1.7-23         2025-02-14 [2] CRAN (R 4.6.0)\n##   ADGofTest                                       0.3            2011-12-28 [2] CRAN (R 4.6.0)\n##   ADImpute                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   admisc                                          0.39           2025-11-02 [2] CRAN (R 4.6.0)\n##   adSplit                                         1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   adverSCarial                                    1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Aerith                                          0.99.11        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   afex                                            1.5-1          2025-12-14 [2] CRAN (R 4.6.0)\n##   AffiXcan                                        1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affxparser                                      1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affy                                            1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affycomp                                        1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affycompData                                    1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affyContam                                      1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affycoretools                                   1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affydata                                        1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Affyhgu133A2Expr                                1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Affyhgu133aExpr                                 1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Affyhgu133Plus2Expr                             1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affyILM                                         1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affyio                                          1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affylmGUI                                       1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AffymetrixDataTestFiles                         0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Affymoe4302Expr                                 1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   affyPLM                                         1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AffyRNADegradation                              1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AGDEX                                           1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   aggregateBioVar                                 1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   aggregation                                     1.0.1          2018-01-25 [2] CRAN (R 4.6.0)\n##   agilp                                           3.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AgiMicroRna                                     2.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   agricolae                                       1.3-7          2023-10-22 [2] CRAN (R 4.6.0)\n##   AHCytoBands                                     0.99.1         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AHEnsDbs                                        1.7.0          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AHLRBaseDbs                                     1.8.0          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AHMassBank                                      1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AHMeSHDbs                                       1.8.0          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AhoCorasickTrie                                 0.1.3          2025-02-05 [2] CRAN (R 4.6.0)\n##   AHPathbankDbs                                   0.99.5         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AHPubMedDbs                                     1.8.0          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AHWikipathwaysDbs                               0.99.4         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AICcmodavg                                      2.3-4          2025-03-06 [2] CRAN (R 4.6.0)\n##   AIMS                                            1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   airpart                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   airway                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   akima                                           0.6-3.6        2025-06-02 [2] CRAN (R 4.6.0)\n##   akmbiclust                                      0.1.0          2020-09-24 [2] CRAN (R 4.6.0)\n##   alabama                                         2025.1.0       2026-01-15 [2] CRAN (R 4.6.0)\n##   alabaster                                       1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.base                                  1.11.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.bumpy                                 1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.files                                 1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.mae                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.matrix                                1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.ranges                                1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.sce                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.schemas                               1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.se                                    1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.sfe                                   1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.spatial                               1.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.string                                1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alabaster.vcf                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ALDEx2                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alevinQC                                        1.27.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AlgDesign                                       1.2.1.2        2025-04-06 [2] CRAN (R 4.6.0)\n##   ALL                                             1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AllelicImbalance                                1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ALLMLL                                          1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alluvial                                        0.1-2          2016-09-09 [2] CRAN (R 4.6.0)\n##   AlphaBeta                                       1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alphahull                                       2.5            2022-06-16 [2] CRAN (R 4.6.0)\n##   AlphaMissense.v2023.hg19                        3.18.2         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AlphaMissense.v2023.hg38                        3.18.2         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   AlphaMissenseR                                  1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AlpsNMR                                         4.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   altcdfenvs                                      2.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   alternativeSplicingEvents.hg19                  1.1.0          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   alternativeSplicingEvents.hg38                  1.1.0          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   amap                                            0.8-20         2024-10-21 [2] CRAN (R 4.6.0)\n##   AMARETTO                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ami                                             0.2.1          2024-11-15 [2] CRAN (R 4.6.0)\n##   AMOUNTAIN                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AmpAffyExample                                  1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   amplican                                        1.33.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   analogue                                        0.18.1         2025-06-25 [2] CRAN (R 4.6.0)\n##   anansi                                          1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Anaquin                                         2.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ANF                                             1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   anglemania                                      1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   animalcules                                     1.27.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   animation                                       2.8            2025-08-26 [2] CRAN (R 4.6.0)\n##   annaffy                                         1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   anndata                                         0.8.0          2025-05-27 [2] CRAN (R 4.6.0)\n##   anndataR                                        1.1.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   annmap                                          1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   annoLinker                                      0.99.7         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   annotate                                        1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   annotation                                      1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnnotationDbi                                   1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnnotationFilter                                1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnnotationForge                                 1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnnotationHub                                   4.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnnotationHubData                               1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   annotationTools                                 1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   annotatr                                        1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   anota                                           1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   anota2seq                                       1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   antiProfiles                                    1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   antiProfilesData                                1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnVIL                                           1.23.8         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnVILAz                                         1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnVILBase                                       1.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnVILBilling                                    1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnVILGCP                                        1.5.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnVILPublish                                    1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AnVILWorkflow                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   anytime                                         0.3.12         2025-07-14 [2] CRAN (R 4.6.0)\n##   aod                                             1.3.3          2023-12-13 [2] CRAN (R 4.6.0)\n##   aods3                                           0.6            2026-01-19 [2] CRAN (R 4.6.0)\n##   APAlyzer                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   apcluster                                       1.4.14         2025-09-22 [2] CRAN (R 4.6.0)\n##   apComplex                                       2.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ape                                             5.8-1          2024-12-16 [2] CRAN (R 4.6.0)\n##   apeglm                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   APL                                             1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   aplot                                           0.2.9          2025-09-12 [2] CRAN (R 4.6.0)\n##   appreci8R                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   aracne.networks                                 1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   archive                                         1.1.12.1       2025-12-24 [2] CRAN (R 4.6.0)\n##   argparse                                        2.3.1          2025-10-08 [2] CRAN (R 4.6.0)\n##   argparser                                       0.7.3          2026-02-24 [2] CRAN (R 4.6.0)\n##   aricode                                         1.0.3          2023-10-20 [2] CRAN (R 4.6.0)\n##   arm                                             1.14-4         2024-04-01 [2] CRAN (R 4.6.0)\n##   aroma.affymetrix                                3.2.3          2025-08-19 [2] CRAN (R 4.6.0)\n##   aroma.apd                                       0.7.1          2025-04-06 [2] CRAN (R 4.6.0)\n##   aroma.core                                      3.3.2          2025-08-18 [2] CRAN (R 4.6.0)\n##   aroma.light                                     3.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   arrangements                                    1.1.9          2020-09-13 [2] CRAN (R 4.6.0)\n##   ArrayExpress                                    1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   arrayhelpers                                    1.1-0          2020-02-04 [2] CRAN (R 4.6.0)\n##   arrayMvout                                      1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   arrayQuality                                    1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   arrayQualityMetrics                             3.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   arrays                                          1.37.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   ARRmData                                        1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ARRmNormalization                               1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   arrow                                           23.0.1.1       2026-02-24 [2] CRAN (R 4.6.0)\n##   arsenal                                         3.6.3          2021-06-04 [2] CRAN (R 4.6.0)\n##   artMS                                           1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   arules                                          1.7.13         2026-01-10 [2] CRAN (R 4.6.0)\n##   ASAFE                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ASEB                                            1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ASGSCA                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ash                                             1.0-15         2015-09-01 [2] CRAN (R 4.6.0)\n##   AshkenazimSonChr21                              1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ashr                                            2.2-63         2023-08-21 [2] CRAN (R 4.6.0)\n##   ASICS                                           2.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ASICSdata                                       1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AsioHeaders                                     1.30.2-1       2025-04-15 [2] CRAN (R 4.6.0)\n##   askpass                                         1.2.1          2024-10-04 [2] CRAN (R 4.6.0)\n##   asmbPLS                                         1.0.0          2023-04-17 [2] CRAN (R 4.6.0)\n##   ASpli                                           2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   assertr                                         3.0.1          2023-11-23 [2] CRAN (R 4.6.0)\n##   assertthat                                      0.2.1          2019-03-21 [2] CRAN (R 4.6.0)\n##   AssessORF                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AssessORFData                                   1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ASSET                                           2.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ASSIGN                                          1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   assorthead                                      1.5.13         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ASURAT                                          1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   asuri                                           0.99.19        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ATACseqQC                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ATACseqTFEA                                     1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   atena                                           1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ath1121501cdf                                   2.18.0         2026-03-10 [2] Bioconductor\n##   atSNP                                           1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   attempt                                         0.3.1          2020-05-03 [2] CRAN (R 4.6.0)\n##   attract                                         1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AUCell                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   audio                                           0.1-12         2025-12-15 [2] CRAN (R 4.6.0)\n##   automap                                         1.1-20         2025-07-13 [2] CRAN (R 4.6.0)\n##   autonomics                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   autothresholdr                                  1.4.3          2025-09-26 [2] CRAN (R 4.6.0)\n##   av                                              0.9.6          2025-10-20 [2] CRAN (R 4.6.0)\n##   available                                       1.1.0          2022-07-10 [2] CRAN (R 4.6.0)\n##   AWAggregator                                    1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AWAggregatorData                                1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AWFisher                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   aws                                             2.5-6          2024-09-30 [2] CRAN (R 4.6.0)\n##   aws.s3                                          0.3.22         2025-08-19 [2] CRAN (R 4.6.0)\n##   aws.signature                                   0.6.0          2020-06-01 [2] CRAN (R 4.6.0)\n##   awsMethods                                      1.1-1          2019-05-08 [2] CRAN (R 4.6.0)\n##   awst                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   AzureAuth                                       1.3.4          2025-12-20 [2] CRAN (R 4.6.0)\n##   AzureGraph                                      1.3.5          2025-07-31 [2] CRAN (R 4.6.0)\n##   AzureRMR                                        2.4.5          2025-07-31 [2] CRAN (R 4.6.0)\n##   AzureStor                                       3.7.1          2025-08-25 [2] CRAN (R 4.6.0)\n##   BaalChIP                                        1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   babelgene                                       22.9           2022-09-29 [2] CRAN (R 4.6.0)\n##   backbone                                        3.0.3          2025-12-08 [2] CRAN (R 4.6.0)\n##   backports                                       1.5.0          2024-05-23 [2] CRAN (R 4.6.0)\n##   bacon                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BADER                                           1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   badger                                          0.2.5          2025-07-31 [2] CRAN (R 4.6.0)\n##   BadRegionFinder                                 1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ballgown                                        2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bambu                                           3.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bamlss                                          1.2-5          2024-10-11 [2] CRAN (R 4.6.0)\n##   BAMMtools                                       2.1.12         2024-09-12 [2] CRAN (R 4.6.0)\n##   bamsignals                                      1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BANDITS                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bandle                                          1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Banksy                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   banocc                                          1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   barbieQ                                         1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   barcodetrackR                                   1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   base                                          * 4.6.0          2026-03-06 [3] local\n##   base64                                          2.0.2          2024-10-04 [2] CRAN (R 4.6.0)\n##   base64enc                                       0.1-6          2026-02-02 [2] CRAN (R 4.6.0)\n##   base64url                                       1.4            2018-05-14 [2] CRAN (R 4.6.0)\n##   basecallQC                                      1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   baseline                                        1.3-7          2025-06-18 [2] CRAN (R 4.6.0)\n##   BaseSpaceR                                      1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Basic4Cseq                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BASiCS                                          2.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BASiCStan                                       1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BasicSTARRseq                                   1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   basilisk                                        1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   basilisk.utils                                  1.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   batchCorr                                       1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   batchelor                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BatchJobs                                       1.10           2025-09-10 [2] CRAN (R 4.6.0)\n##   BatchSVG                                        1.3.5          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   batchtools                                      0.9.18         2025-08-20 [2] CRAN (R 4.6.0)\n##   Battlefield                                     0.99.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bayesbio                                        1.0.0          2016-05-24 [2] CRAN (R 4.6.0)\n##   BayesKnockdown                                  1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bayesm                                          3.1-7          2025-11-11 [2] CRAN (R 4.6.0)\n##   bayesplot                                       1.15.0         2025-12-12 [2] CRAN (R 4.6.0)\n##   BayesSpace                                      1.21.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bayestestR                                      0.17.0         2025-08-29 [2] CRAN (R 4.6.0)\n##   bayNorm                                         1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   baySeq                                          2.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BB                                              2026.1.0       2026-02-19 [2] CRAN (R 4.6.0)\n##   BBCAnalyzer                                     1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BBmisc                                          1.13.1         2026-01-21 [2] CRAN (R 4.6.0)\n##   bbmle                                           1.0.25.1       2023-12-09 [2] CRAN (R 4.6.0)\n##   bbotk                                           1.9.0          2026-02-28 [2] CRAN (R 4.6.0)\n##   bcellViper                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BCRANK                                          1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bcSeq                                           1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bdsmatrix                                       1.3-7          2024-03-02 [2] CRAN (R 4.6.0)\n##   beachmat                                        2.27.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   beachmat.hdf5                                   1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   beachmat.tiledb                                 1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   beadarray                                       2.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   beadarrayExampleData                            1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BeadArrayUseCases                               1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BeadDataPackR                                   1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BeadSorted.Saliva.EPIC                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   beanplot                                        1.3.1          2022-04-09 [2] CRAN (R 4.6.0)\n##   BEAT                                            1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BEclear                                         2.27.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BEDASSLE                                        1.6.1          2024-01-11 [2] CRAN (R 4.6.0)\n##   bedbaser                                        1.3.6          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BEDMatrix                                       2.0.4          2024-09-06 [2] CRAN (R 4.6.0)\n##   beepr                                           2.0            2024-07-06 [2] CRAN (R 4.6.0)\n##   beer                                            1.15.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   beeswarm                                        0.4.0          2021-06-01 [2] CRAN (R 4.6.0)\n##   bench                                           1.1.4          2025-01-16 [2] CRAN (R 4.6.0)\n##   benchmarkme                                     1.0.8          2022-06-12 [2] CRAN (R 4.6.0)\n##   benchmarkmeData                                 2.0.0          2026-01-19 [2] CRAN (R 4.6.0)\n##   berryFunctions                                  1.22.13        2025-07-28 [2] CRAN (R 4.6.0)\n##   BERT                                            1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bestNormalize                                   1.9.2          2025-11-30 [2] CRAN (R 4.6.0)\n##   beta7                                           1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   betaHMM                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   betareg                                         3.2-4          2025-08-19 [2] CRAN (R 4.6.0)\n##   bettr                                           1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bezier                                          1.1.2          2018-12-14 [2] CRAN (R 4.6.0)\n##   BG2                                             1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BgeeDB                                          2.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BH                                              1.90.0-1       2025-12-14 [2] CRAN (R 4.6.0)\n##   BiasedUrn                                       2.0.12         2024-06-16 [2] CRAN (R 4.6.0)\n##   bibtex                                          0.5.2          2026-02-03 [2] CRAN (R 4.6.0)\n##   BicARE                                          1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiFET                                           1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biganalytics                                    1.1.22         2024-03-28 [2] CRAN (R 4.6.0)\n##   bigassertr                                      0.1.7          2025-06-27 [2] CRAN (R 4.6.0)\n##   bigD                                            0.3.1          2025-04-03 [2] CRAN (R 4.6.0)\n##   biglm                                           0.9-3          2024-06-12 [2] CRAN (R 4.6.0)\n##   bigmelon                                        1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bigmemory                                       4.6.4          2024-01-09 [2] CRAN (R 4.6.0)\n##   bigmemory.sri                                   0.1.8          2024-01-10 [2] CRAN (R 4.6.0)\n##   bigparallelr                                    0.3.2          2021-10-02 [2] CRAN (R 4.6.0)\n##   bigreadr                                        0.2.5          2022-12-06 [2] CRAN (R 4.6.0)\n##   bigrquery                                       1.6.1          2025-09-10 [2] CRAN (R 4.6.0)\n##   bigsnpr                                         1.12.21        2025-08-21 [2] CRAN (R 4.6.0)\n##   bigsparser                                      0.7.3          2024-09-06 [2] CRAN (R 4.6.0)\n##   bigstatsr                                       1.6.2          2025-07-29 [2] CRAN (R 4.6.0)\n##   bigutilsr                                       0.3.11         2025-07-30 [2] CRAN (R 4.6.0)\n##   billboarder                                     0.5.1          2026-01-29 [2] CRAN (R 4.6.0)\n##   BindingSiteFinder                               2.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   binom                                           1.1-1.1        2022-05-02 [2] CRAN (R 4.6.0)\n##   binr                                            1.1.2          2026-02-25 [2] CRAN (R 4.6.0)\n##   bio3d                                           2.4-5          2024-10-29 [2] CRAN (R 4.6.0)\n##   bioassayR                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Biobase                                         2.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biobroom                                        1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biobtreeR                                       1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Bioc.gff                                        1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bioCancer                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioCartaImage                                   1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocBaseUtils                                   1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocBook                                        1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocBookDemo                                    1.9.0          2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocCheck                                       1.47.18        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocFHIR                                        1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocFileCache                                   3.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocGenerics                                    0.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biocGraph                                       1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocHail                                        1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocHubsShiny                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocIO                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocMaintainerApp                               0.99.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biocmake                                        1.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocManager                                     1.30.27        2025-11-14 [2] CRAN (R 4.6.0)\n##   BiocNeighbors                                   2.5.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioCor                                          1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocParallel                                    1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocPkgTools                                    1.29.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biocroxytest                                    1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocSet                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocSingular                                    1.27.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocSklearn                                     1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocStyle                                       2.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biocthis                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocVersion                                     3.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biocViews                                       1.79.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiocWorkflowTools                               1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biodb                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biodbChebi                                      1.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bioDist                                         1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioGA                                           1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioImageDbs                                     1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biomaRt                                         2.67.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioMartGOGeneSets                               0.99.12        2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   biomartr                                        1.0.7          2023-12-02 [2] CRAN (R 4.6.0)\n##   biomformat                                      1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioMVCClass                                     1.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biomvRCNS                                       1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioNAR                                          1.13.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioNERO                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioNet                                          1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bionetdata                                      1.1            2022-09-12 [2] CRAN (R 4.6.0)\n##   BioPlex                                         1.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioQC                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bioseq                                          0.1.5          2025-09-29 [2] CRAN (R 4.6.0)\n##   biosigner                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Biostrings                                      2.79.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioTIP                                          1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biotmle                                         1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biotmleData                                     1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BioVenn                                         1.1.3          2021-06-19 [2] CRAN (R 4.6.0)\n##   biovizBase                                      1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiRewire                                        3.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biscale                                         1.1.0          2025-09-01 [2] CRAN (R 4.6.0)\n##   biscuiteer                                      1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   biscuiteerData                                  1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BiSeq                                           1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bit                                             4.6.0          2025-03-06 [2] CRAN (R 4.6.0)\n##   bit64                                           4.6.0-1        2025-01-16 [2] CRAN (R 4.6.0)\n##   bitops                                          1.0-9          2024-10-03 [2] CRAN (R 4.6.0)\n##   biwt                                            1.0.1          2022-06-13 [2] CRAN (R 4.6.0)\n##   blacksheepr                                     1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bladderbatch                                    1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BlandAltmanLeh                                  0.3.1          2015-12-23 [2] CRAN (R 4.6.0)\n##   blase                                           1.1.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   blastula                                        0.3.6          2025-04-03 [2] CRAN (R 4.6.0)\n##   blima                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   blimaTestingData                                1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BLMA                                            1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   blme                                            1.0-7          2026-01-10 [2] CRAN (R 4.6.0)\n##   blob                                            1.3.0          2026-01-14 [2] CRAN (R 4.6.0)\n##   blockmodeling                                   1.1.8          2025-07-25 [2] CRAN (R 4.6.0)\n##   BloodCancerMultiOmics2017                       1.31.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BloodGen3Module                                 1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bluster                                         1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BMA                                             3.18.20        2025-01-11 [2] CRAN (R 4.6.0)\n##   bmp                                             0.3.1          2025-09-22 [2] CRAN (R 4.6.0)\n##   bnbc                                            1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bnem                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bnlearn                                         5.1            2025-08-20 [2] CRAN (R 4.6.0)\n##   bnstruct                                        1.0.15         2024-01-09 [2] CRAN (R 4.6.0)\n##   bnviewer                                        0.1.6          2020-09-14 [2] CRAN (R 4.6.0)\n##   BOBaFIT                                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bodymapRat                                      1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bookdown                                        0.46           2025-12-05 [2] CRAN (R 4.6.0)\n##   BoolNet                                         2.1.9          2023-10-02 [2] CRAN (R 4.6.0)\n##   boot                                            1.3-32         2025-08-29 [3] CRAN (R 4.6.0)\n##   bootstrap                                       2019.6         2019-06-17 [2] CRAN (R 4.6.0)\n##   BoutrosLab.plotting.general                     7.1.5          2026-01-22 [2] CRAN (R 4.6.0)\n##   BP4RNAseq                                       1.21.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   BPRMeth                                         1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BRAIN                                           1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   branchpointer                                   1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bread                                           0.4.1          2023-06-26 [2] CRAN (R 4.6.0)\n##   breakaway                                       4.8.4          2022-11-22 [2] CRAN (R 4.6.0)\n##   breakpointR                                     1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   breakpointRdata                                 1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   breastCancerMAINZ                               1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   breastCancerNKI                                 1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   breastCancerTRANSBIG                            1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   breastCancerUNT                                 1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   breastCancerUPP                                 1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   breastCancerVDX                                 1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BreastSubtypeR                                  1.3.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   brendaDb                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   brew                                            1.0-10         2023-12-16 [2] CRAN (R 4.6.0)\n##   BREW3R.r                                        1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   brgedata                                        1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   brglm                                           0.7.3          2025-09-16 [2] CRAN (R 4.6.0)\n##   BridgeDbR                                       2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   brio                                            1.1.5          2024-04-24 [2] CRAN (R 4.6.0)\n##   BRISC                                           1.0.6          2024-10-02 [2] CRAN (R 4.6.0)\n##   broadSeq                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   broman                                          0.92           2025-12-08 [2] CRAN (R 4.6.0)\n##   bronchialIL13                                   1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   broom                                           1.0.12         2026-01-27 [2] CRAN (R 4.6.0)\n##   broom.mixed                                     0.2.9.7        2026-02-17 [2] CRAN (R 4.6.0)\n##   BrowserViz                                      2.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bs4Dash                                         2.3.5          2025-08-25 [2] CRAN (R 4.6.0)\n##   BSDA                                            1.2.2          2023-09-18 [2] CRAN (R 4.6.0)\n##   BSgenome                                        1.79.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BSgenome.Btaurus.UCSC.bosTau6                   1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Btaurus.UCSC.bosTau6.masked            1.3.99         2026-03-06 [2] Bioconductor\n##   BSgenome.Celegans.UCSC.ce10                     1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Celegans.UCSC.ce11                     1.4.2          2026-03-06 [2] Bioconductor\n##   BSgenome.Celegans.UCSC.ce2                      1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Dmelanogaster.UCSC.dm3                 1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Dmelanogaster.UCSC.dm6                 1.4.1          2026-03-06 [2] Bioconductor\n##   BSgenome.Drerio.UCSC.danRer10                   1.4.2          2026-03-06 [2] Bioconductor\n##   BSgenome.Drerio.UCSC.danRer7                    1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Ecoli.NCBI.20080805                    1.3.1000       2026-03-06 [2] Bioconductor\n##   BSgenome.Ggallus.UCSC.galGal3                   1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Hsapiens.1000genomes.hs37d5            0.99.1         2026-03-06 [2] Bioconductor\n##   BSgenome.Hsapiens.NCBI.GRCh38                   1.3.1000       2026-03-06 [2] Bioconductor\n##   BSgenome.Hsapiens.UCSC.hg18                     1.3.1000       2026-03-06 [2] Bioconductor\n##   BSgenome.Hsapiens.UCSC.hg18.masked              1.3.99         2026-03-06 [2] Bioconductor\n##   BSgenome.Hsapiens.UCSC.hg19                     1.4.3          2026-03-06 [2] Bioconductor\n##   BSgenome.Hsapiens.UCSC.hg19.masked              1.3.993        2026-03-06 [2] Bioconductor\n##   BSgenome.Hsapiens.UCSC.hg38                     1.4.5          2026-03-06 [2] Bioconductor\n##   BSgenome.Hsapiens.UCSC.hg38.masked              1.4.5          2026-03-06 [2] Bioconductor\n##   BSgenome.Mmulatta.UCSC.rheMac10                 1.4.2          2026-03-06 [2] Bioconductor\n##   BSgenome.Mmusculus.UCSC.mm10                    1.4.3          2026-03-06 [2] Bioconductor\n##   BSgenome.Mmusculus.UCSC.mm10.masked             1.4.3          2026-03-06 [2] Bioconductor\n##   BSgenome.Mmusculus.UCSC.mm39                    1.4.3          2026-03-06 [2] Bioconductor\n##   BSgenome.Mmusculus.UCSC.mm8                     1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Mmusculus.UCSC.mm8.masked              1.3.99         2026-03-06 [2] Bioconductor\n##   BSgenome.Mmusculus.UCSC.mm9                     1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Mmusculus.UCSC.mm9.masked              1.3.99         2026-03-06 [2] Bioconductor\n##   BSgenome.Rnorvegicus.UCSC.rn4                   1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Rnorvegicus.UCSC.rn5                   1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Rnorvegicus.UCSC.rn5.masked            1.3.99         2026-03-06 [2] Bioconductor\n##   BSgenome.Rnorvegicus.UCSC.rn6                   1.4.1          2026-03-06 [2] Bioconductor\n##   BSgenome.Rnorvegicus.UCSC.rn7                   1.4.3          2026-03-06 [2] Bioconductor\n##   BSgenome.Scerevisiae.UCSC.sacCer1               1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Scerevisiae.UCSC.sacCer2               1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenome.Scerevisiae.UCSC.sacCer3               1.4.0          2026-03-06 [2] Bioconductor\n##   BSgenomeForge                                   1.11.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bsicons                                         0.1.2          2023-11-04 [2] CRAN (R 4.6.0)\n##   bslib                                           0.10.0         2026-01-26 [2] CRAN (R 4.6.0)\n##   bsplus                                          0.1.5          2025-04-06 [2] CRAN (R 4.6.0)\n##   bsseq                                           1.47.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bsseqData                                       0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bst                                             0.3-24         2023-01-06 [2] CRAN (R 4.6.0)\n##   BubbleTree                                      2.41.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BufferedMatrix                                  1.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BufferedMatrixMethods                           1.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bugphyzz                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bugsigdbr                                       1.17.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BulkSignalR                                     1.3.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BUMHMM                                          1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   bumphunter                                      1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BumpyMatrix                                     1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BUS                                             1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BUScorrect                                      1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BUSpaRse                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   BUSseq                                          1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   butcher                                         0.4.0          2025-12-09 [2] CRAN (R 4.6.0)\n##   BWStest                                         0.2.3          2023-10-10 [2] CRAN (R 4.6.0)\n##   c3net                                           1.1.1.1        2022-06-24 [2] CRAN (R 4.6.0)\n##   C50                                             0.2.0          2025-04-03 [2] CRAN (R 4.6.0)\n##   ca                                              0.71.1         2020-01-24 [2] CRAN (R 4.6.0)\n##   cachem                                          1.1.0          2024-05-16 [2] CRAN (R 4.6.0)\n##   cadd.v1.6.hg19                                  3.18.1         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   cadd.v1.6.hg38                                  3.18.1         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   CaDrA                                           1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CAEN                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CAFE                                            1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cageminer                                       1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Cairo                                           1.7-0          2025-10-29 [2] CRAN (R 4.6.0)\n##   CalibraCurve                                    1.1.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   calibrate                                       1.7.7          2020-06-19 [2] CRAN (R 4.6.0)\n##   callr                                           3.7.6          2024-03-25 [2] CRAN (R 4.6.0)\n##   calm                                            1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CAMERA                                          1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CaMutQC                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   canceR                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cancerclass                                     1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cancerdata                                      1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   capushe                                         1.1.3          2025-09-10 [2] CRAN (R 4.6.0)\n##   car                                             3.1-5          2026-02-03 [2] CRAN (R 4.6.0)\n##   carData                                         3.0-6          2026-01-30 [2] CRAN (R 4.6.0)\n##   Cardinal                                        3.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CardinalIO                                      1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CARDspa                                         1.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   caret                                           7.0-1          2024-12-10 [2] CRAN (R 4.6.0)\n##   caretEnsemble                                   4.0.1          2024-09-12 [2] CRAN (R 4.6.0)\n##   carnation                                       0.99.8         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CARNIVAL                                        2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   casper                                          2.45.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   catdata                                         1.2.5          2025-12-04 [2] CRAN (R 4.6.0)\n##   Category                                        2.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   categoryCompare                                 1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CatEncoders                                     0.1.1          2017-03-08 [2] CRAN (R 4.6.0)\n##   caTools                                         1.18.3         2024-09-04 [2] CRAN (R 4.6.0)\n##   CatsCradle                                      1.5.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CATT                                            2.0            2017-05-19 [2] CRAN (R 4.6.0)\n##   CausalR                                         1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cba                                             0.2-25         2024-08-16 [2] CRAN (R 4.6.0)\n##   cbaf                                            1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cBioPortalData                                  2.23.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CBN2Path                                        1.1.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CBNplot                                         1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cbpManager                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CCAFE                                           1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ccaPP                                           0.3.5          2025-10-02 [2] CRAN (R 4.6.0)\n##   ccdata                                          1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ccfindR                                         1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ccImpute                                        1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CCl4                                            1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CCP                                             1.2            2022-04-21 [2] CRAN (R 4.6.0)\n##   CCPROMISE                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ccrepe                                          1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ccTensor                                        1.0.3          2025-08-25 [2] CRAN (R 4.6.0)\n##   CDFt                                            1.2            2021-02-18 [2] CRAN (R 4.6.0)\n##   CDI                                             1.9.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CDM                                             8.3-14         2025-07-13 [2] CRAN (R 4.6.0)\n##   celaref                                         1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   celarefData                                     1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   celda                                           1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   celestial                                       1.5.8          2025-09-02 [2] CRAN (R 4.6.0)\n##   CellBarcode                                     1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cellbaseR                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CellBench                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   celldex                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CelliD                                          1.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cellity                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CellMapper                                      1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CellMapperData                                  1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CellMentor                                      0.99.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cellmig                                         1.1.7          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cellmigRation                                   1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CellMixS                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CellNOptR                                       1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cellranger                                      1.1.0          2016-07-27 [2] CRAN (R 4.6.0)\n##   cellscape                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CellTrails                                      1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cellxgenedp                                     1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CEMiTool                                        1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CENTREannotation                                0.99.1         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   CENTREprecomputed                               1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Cepo                                            1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ceRNAnetsim                                     1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CexoR                                           1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CFAssay                                         1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cfdnakit                                        1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cfDNAPro                                        1.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cfTools                                         1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cfToolsData                                     1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CGEN                                            3.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CGHbase                                         1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CGHcall                                         2.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cghMCR                                          1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CGHnormaliter                                   1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CGHregions                                      1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChAMP                                           2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChAMPdata                                       2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   changepoint                                     2.3            2024-11-04 [2] CRAN (R 4.6.0)\n##   changepoint.np                                  1.0.5          2022-10-20 [2] CRAN (R 4.6.0)\n##   checkmate                                       2.3.4          2026-02-03 [2] CRAN (R 4.6.0)\n##   ChemmineDrugs                                   1.0.2          2026-03-12 [2] Bioconductor\n##   ChemmineR                                       3.63.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chemometrics                                    1.4.4          2023-08-25 [2] CRAN (R 4.6.0)\n##   ChemoSpec                                       6.3.1          2025-09-09 [2] CRAN (R 4.6.0)\n##   ChemoSpecUtils                                  1.0.5          2025-04-12 [2] CRAN (R 4.6.0)\n##   CHETAH                                          1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chevreulPlot                                    1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chevreulProcess                                 1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chevreulShiny                                   1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Chicago                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chihaya                                         1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chimeraviz                                      1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChimpHumanBrainData                             1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPanalyser                                    1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPDBData                                      1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chipenrich                                      2.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chipenrich.data                                 2.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPexoQual                                     1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPexoQualExample                              1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPpeakAnno                                    3.45.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPseeker                                      1.47.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chipseq                                         1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chipseqDB                                       1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   chipseqDBData                                   1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPseqR                                        1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPsim                                         1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPXpress                                      1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChIPXpressData                                  1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chk                                             0.10.0         2025-01-24 [2] CRAN (R 4.6.0)\n##   Chromatograms                                   1.1.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chromDraw                                       2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ChromHeatMap                                    1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chromhmmData                                    0.99.2         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   chromote                                        0.5.1          2025-04-24 [2] CRAN (R 4.6.0)\n##   chromPlot                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chron                                           2.3-62         2024-12-31 [2] CRAN (R 4.6.0)\n##   CHRONOS                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   chunked                                         0.6.2          2026-02-05 [2] CRAN (R 4.6.0)\n##   cicero                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cicerone                                        1.0.4          2021-01-10 [2] CRAN (R 4.6.0)\n##   cigarillo                                       1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CIMICE                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   circlize                                        0.4.17         2025-12-08 [2] CRAN (R 4.6.0)\n##   CircSeqAlignTk                                  1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CircStats                                       0.2-7          2025-06-19 [2] CRAN (R 4.6.0)\n##   circular                                        0.5-2          2025-09-25 [2] CRAN (R 4.6.0)\n##   CiteFuse                                        1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Ckmeans.1d.dp                                   4.3.5          2023-08-19 [2] CRAN (R 4.6.0)\n##   class                                           7.3-23         2025-01-01 [3] CRAN (R 4.6.0)\n##   ClassifyR                                       3.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   classInt                                        0.4-11         2025-01-08 [2] CRAN (R 4.6.0)\n##   cleanUpdTSeq                                    1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CleanUpRNAseq                                   1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cleaver                                         1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clevr                                           0.1.2          2023-09-16 [2] CRAN (R 4.6.0)\n##   clevRvis                                        1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cli                                             3.6.5          2025-04-23 [2] CRAN (R 4.6.0)\n##   clinfun                                         1.1.5          2023-10-19 [2] CRAN (R 4.6.0)\n##   clippda                                         1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clipper                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clipr                                           0.8.0          2022-02-22 [2] CRAN (R 4.6.0)\n##   cliProfiler                                     1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cliqueMS                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clisymbols                                      1.2.0          2017-05-21 [2] CRAN (R 4.6.0)\n##   CLL                                             1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CLLmethylation                                  1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clock                                           0.7.4          2026-01-13 [2] CRAN (R 4.6.0)\n##   Clomial                                         1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clst                                            1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clstutils                                       1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clue                                            0.3-67         2026-02-18 [2] CRAN (R 4.6.0)\n##   ClueR                                           1.4.2          2023-11-15 [2] CRAN (R 4.6.0)\n##   CluMSID                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CluMSIDdata                                     1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ClustAll                                        1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clustComp                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cluster                                         2.1.8.2        2026-02-05 [3] CRAN (R 4.6.0)\n##   clusterCrit                                     1.3.0          2023-11-23 [2] CRAN (R 4.6.0)\n##   clusterExperiment                               2.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ClusterFoldSimilarity                           1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clusterGeneration                               1.3.8          2023-08-16 [2] CRAN (R 4.6.0)\n##   ClusterGVis                                     0.99.9         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ClusterJudge                                    1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clusterProfiler                                 4.19.6         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ClusterR                                        1.3.6          2025-12-22 [2] CRAN (R 4.6.0)\n##   clusterRepro                                    0.9            2018-10-15 [2] CRAN (R 4.6.0)\n##   clusterSeq                                      1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ClusterSignificance                             1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clusterStab                                     1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clustifyr                                       1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clustifyrdatahub                                1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clustree                                        0.5.1          2023-11-05 [2] CRAN (R 4.6.0)\n##   clustSIGNAL                                     1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   clustvarsel                                     2.3.5          2025-04-02 [2] CRAN (R 4.6.0)\n##   clValid                                         0.7            2021-02-14 [2] CRAN (R 4.6.0)\n##   CMA                                             1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cMAP                                            1.15.1         2026-03-06 [2] local\n##   cMap2data                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cmapR                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cmdfun                                          1.0.2          2020-10-10 [2] CRAN (R 4.6.0)\n##   cmprsk                                          2.2-12         2024-05-19 [2] CRAN (R 4.6.0)\n##   cn.farms                                        1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cn.mops                                         1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNAnorm                                         1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNEr                                            1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNORdt                                          1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNORfeeder                                      1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNORfuzzy                                       1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNORode                                         1.53.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNTools                                         1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNVfilteR                                       1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cnvGSA                                          1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cnvGSAdata                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNViz                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNVMetrics                                      1.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNVPanelizer                                    1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNVRanger                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CNVrd2                                          1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cobalt                                          4.6.2          2026-01-29 [2] CRAN (R 4.6.0)\n##   cobs                                            1.3-9-1        2025-07-02 [2] CRAN (R 4.6.0)\n##   CoCiteStats                                     1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   COCOA                                           2.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   coda                                            0.19-4.1       2024-01-31 [2] CRAN (R 4.6.0)\n##   CodeDepends                                     0.6.7          2026-03-03 [2] CRAN (R 4.6.0)\n##   codelink                                        1.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   codemeta                                        0.1.1          2021-12-22 [2] CRAN (R 4.6.0)\n##   codemetar                                       0.3.7          2026-02-11 [2] CRAN (R 4.6.0)\n##   codetools                                       0.2-20         2024-03-31 [3] CRAN (R 4.6.0)\n##   CODEX                                           1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   codingMatrices                                  0.4.0          2023-02-01 [2] CRAN (R 4.6.0)\n##   CoGAPS                                          3.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cogena                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cogeqc                                          1.15.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Cogito                                          1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   coGPS                                           1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   COHCAPanno                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   coin                                            1.4-3          2023-09-27 [2] CRAN (R 4.6.0)\n##   cola                                            2.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   collapse                                        2.1.6          2026-01-11 [2] CRAN (R 4.6.0)\n##   collections                                     0.3.11         2026-02-05 [2] CRAN (R 4.6.0)\n##   colonCA                                         1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   colorBlindness                                  0.1.9          2021-04-17 [2] CRAN (R 4.6.0)\n##   colorRamps                                      2.3.4          2024-03-07 [2] CRAN (R 4.6.0)\n##   colorspace                                      2.1-2          2025-09-22 [2] CRAN (R 4.6.0)\n##   colourpicker                                    1.3.0          2023-08-21 [2] CRAN (R 4.6.0)\n##   colourvalues                                    0.3.11         2025-11-29 [2] CRAN (R 4.6.0)\n##   comapr                                          1.15.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   combi                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   combinat                                        0.0-8          2012-10-29 [2] CRAN (R 4.6.0)\n##   coMethDMR                                       1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   common                                          1.1.5          2026-02-23 [2] CRAN (R 4.6.0)\n##   commonmark                                      2.0.0          2025-07-07 [2] CRAN (R 4.6.0)\n##   compareGroups                                   4.10.2         2026-01-08 [2] CRAN (R 4.6.0)\n##   COMPASS                                         1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   compcodeR                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CompensAID                                      0.99.6         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   compEpiTools                                    1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   compiler                                        4.6.0          2026-03-06 [3] local\n##   ComplexHeatmap                                  2.27.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ComplexUpset                                    1.3.3          2021-12-11 [2] CRAN (R 4.6.0)\n##   COMPoissonReg                                   0.8.1          2023-11-29 [2] CRAN (R 4.6.0)\n##   compositions                                    2.0-9          2025-08-21 [2] CRAN (R 4.6.0)\n##   CompoundDb                                      1.15.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CompQuadForm                                    1.4.4          2025-07-13 [2] CRAN (R 4.6.0)\n##   ComPrAn                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   comprehenr                                      0.6.10         2021-01-31 [2] CRAN (R 4.6.0)\n##   compSPOT                                        1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   concaveman                                      1.2.0          2025-10-06 [2] CRAN (R 4.6.0)\n##   concordexR                                      1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   condformat                                      0.10.1         2023-10-08 [2] CRAN (R 4.6.0)\n##   condiments                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   conf.design                                     2.0.0          2013-02-23 [2] CRAN (R 4.6.0)\n##   CONFESS                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CONFESSdata                                     1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   config                                          0.3.2          2023-08-30 [2] CRAN (R 4.6.0)\n##   configr                                         0.3.5          2020-07-17 [2] CRAN (R 4.6.0)\n##   confintr                                        1.0.2          2023-06-04 [2] CRAN (R 4.6.0)\n##   conflicted                                      1.2.0          2023-02-01 [2] CRAN (R 4.6.0)\n##   conicfit                                        1.0.4          2015-10-05 [2] CRAN (R 4.6.0)\n##   ConnectivityMap                                 1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   consensus                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ConsensusClusterPlus                            1.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   consensusOV                                     1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   consensusSeekeR                                 1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   consICA                                         2.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ConsRank                                        3.0            2026-02-25 [2] CRAN (R 4.6.0)\n##   CONSTANd                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   contrast                                        0.24.2         2022-10-05 [2] CRAN (R 4.6.0)\n##   conumee                                         1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   convert                                         1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CooccurrenceAffinity                            2.0.0          2026-02-12 [2] CRAN (R 4.6.0)\n##   coop                                            0.6-3          2021-09-19 [2] CRAN (R 4.6.0)\n##   copa                                            1.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   COPDSexualDimorphism.data                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   copula                                          1.1-7          2026-02-20 [2] CRAN (R 4.6.0)\n##   CopyhelpeR                                      1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CopyNeutralIMA                                  1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CopyNumberPlots                                 1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Coralysis                                       1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   coRdon                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CoreGx                                          2.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Cormotif                                        1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   corncob                                         0.4.2          2025-03-29 [2] CRAN (R 4.6.0)\n##   coro                                            1.1.0          2024-11-05 [2] CRAN (R 4.6.0)\n##   corpcor                                         1.6.10         2021-09-16 [2] CRAN (R 4.6.0)\n##   corral                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   corrgram                                        1.14           2021-04-29 [2] CRAN (R 4.6.0)\n##   corrplot                                        0.95           2024-10-14 [2] CRAN (R 4.6.0)\n##   coseq                                           1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CoSIA                                           1.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CoSIAdata                                       1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   COSMIC.67                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cosmiq                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cosmosR                                         1.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   COSNet                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   COTAN                                           2.11.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   countrycode                                     1.7.0          2026-02-27 [2] CRAN (R 4.6.0)\n##   countsimQC                                      1.29.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   covEB                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CoverageView                                    1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   covr                                            3.6.5          2025-11-09 [2] CRAN (R 4.6.0)\n##   covRNA                                          1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cowplot                                         1.2.0          2025-07-07 [2] CRAN (R 4.6.0)\n##   coxme                                           2.2-22         2024-08-23 [2] CRAN (R 4.6.0)\n##   coxrobust                                       1.0.2          2025-08-18 [2] CRAN (R 4.6.0)\n##   cp4p                                            0.3.6          2019-02-24 [2] CRAN (R 4.6.0)\n##   cplm                                            0.7-12.1       2024-09-21 [2] CRAN (R 4.6.0)\n##   cpp11                                           0.5.3          2026-01-20 [2] CRAN (R 4.6.0)\n##   CPSM                                            1.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cpvSNP                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cqn                                             1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cramer                                          0.9-4          2024-02-05 [2] CRAN (R 4.6.0)\n##   crayon                                          1.5.3          2024-06-20 [2] CRAN (R 4.6.0)\n##   CRCL18                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   credentials                                     2.0.3          2025-09-12 [2] CRAN (R 4.6.0)\n##   crew                                            1.3.0          2025-09-13 [2] CRAN (R 4.6.0)\n##   CRImage                                         1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CRISPRball                                      1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprBase                                      1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprBowtie                                    1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprBwa                                       1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprDesign                                    1.13.10        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprScore                                     1.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprScoreData                                 1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CRISPRseek                                      1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprShiny                                     1.7.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CrispRVariants                                  1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprVerse                                     1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crisprViz                                       1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crlmm                                           1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crmn                                            0.0.21         2020-02-10 [2] CRAN (R 4.6.0)\n##   crochet                                         2.3.0          2020-05-20 [2] CRAN (R 4.6.0)\n##   crosstalk                                       1.2.2          2025-08-26 [2] CRAN (R 4.6.0)\n##   crul                                            1.6.0          2025-07-23 [2] CRAN (R 4.6.0)\n##   crumblr                                         1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   crupR                                           1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CSAR                                            1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   csaw                                            1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   csawBook                                        1.19.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   csawUsersGuide                                  1.27.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   csdR                                            1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CSOA                                            1.1.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CSSQ                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ctc                                             1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CTCF                                            0.99.14        2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   CTdata                                          1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CTDquerier                                      2.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CTexploreR                                      1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ctsGE                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CTSV                                            1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cubature                                        2.1.4-1        2025-11-22 [2] CRAN (R 4.6.0)\n##   Cubist                                          0.6.0          2026-03-02 [2] CRAN (R 4.6.0)\n##   cummeRbund                                      2.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedAdipoArray                               1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedAdipoChIP                                1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedAdipoRNA                                 1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CuratedAtlasQueryR                              1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedBladderData                              1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedBreastData                               2.39.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedMetagenomicData                          3.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedOvarianData                              1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedPCaData                                  1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedTBData                                   2.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curatedTCGAData                                 1.33.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   curl                                            7.0.0          2025-08-19 [2] CRAN (R 4.6.0)\n##   customCMPdb                                     1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   customProDB                                     1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cvar                                            0.6            2025-12-17 [2] CRAN (R 4.6.0)\n##   cvAUC                                           1.1.4          2022-01-17 [2] CRAN (R 4.6.0)\n##   cvms                                            2.0.0          2025-11-10 [2] CRAN (R 4.6.0)\n##   cvTools                                         0.3.3          2024-03-13 [2] CRAN (R 4.6.0)\n##   cyanoFilter                                     1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cycle                                           1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cydar                                           1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cypress                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CytoDx                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CytoGLMM                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cytoKernel                                      1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cytolib                                         2.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cytomapper                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CytoMDS                                         1.7.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cytoMEM                                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CytoMethIC                                      1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cytometree                                      2.0.6          2025-07-24 [2] CRAN (R 4.6.0)\n##   CytoPipeline                                    1.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   CytoPipelineGUI                                 1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   cytoviewer                                      1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dada2                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dagLogo                                         1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   daMA                                            1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DAMEfinder                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   damidBind                                       0.99.14        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DaMiRseq                                        2.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Damsel                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DAPAR                                           1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DAPARdata                                       1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dar                                             1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DART                                            1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dashboardthemes                                 1.1.6          2022-07-13 [2] CRAN (R 4.6.0)\n##   data.table                                      1.18.2.1       2026-01-27 [2] CRAN (R 4.6.0)\n##   data.tree                                       1.2.0          2025-08-25 [2] CRAN (R 4.6.0)\n##   DataEditR                                       0.1.5          2022-03-08 [2] CRAN (R 4.6.0)\n##   datamods                                        1.5.3          2024-10-02 [2] CRAN (R 4.6.0)\n##   datasets                                      * 4.6.0          2026-03-06 [3] local\n##   DataVisualizations                              1.4.0          2025-10-31 [2] CRAN (R 4.6.0)\n##   datawizard                                      1.3.0          2025-10-11 [2] CRAN (R 4.6.0)\n##   davidTiling                                     1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DBI                                             1.3.0          2026-02-25 [2] CRAN (R 4.6.0)\n##   dbplyr                                          2.5.2          2026-02-13 [2] CRAN (R 4.6.0)\n##   dbscan                                          1.2.4          2025-12-19 [2] CRAN (R 4.6.0)\n##   dcanr                                           1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DCATS                                           1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dcGSA                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dcurver                                         0.9.3          2025-10-24 [2] CRAN (R 4.6.0)\n##   ddCt                                            1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ddPCRclust                                      1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DDRTree                                         0.1.6          2026-03-03 [2] CRAN (R 4.6.0)\n##   deadwood                                        0.9.0-3        2026-02-21 [2] CRAN (R 4.6.0)\n##   dearseq                                         1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   debugme                                         1.2.0          2024-04-25 [2] CRAN (R 4.6.0)\n##   decemedip                                       0.99.8         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DECIPHER                                        3.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   decompTumor2Sig                                 2.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DeconRNASeq                                     1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   decontam                                        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   decontX                                         1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DeconvoBuddies                                  1.3.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   deconvR                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   decor                                           1.0.2          2023-07-01 [2] CRAN (R 4.6.0)\n##   decoupleR                                       2.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DeeDeeExperiment                                1.1.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DeepPINCS                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   deepSNV                                         1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DeepTarget                                      1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DEFormats                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DegCre                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DegNorm                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DEGraph                                         1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DEGreport                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DEGseq                                          1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Delaporte                                       8.4.3          2026-01-09 [2] CRAN (R 4.6.0)\n##   DelayedArray                                    0.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DelayedDataFrame                                1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DelayedMatrixStats                              1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DelayedRandomArray                              1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DelayedTensor                                   1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   deldir                                          2.0-4          2024-02-28 [2] CRAN (R 4.6.0)\n##   DELocal                                         1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   deltaCaptureC                                   1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   deltaGseg                                       1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DeMAND                                          1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   deming                                          1.4-1          2024-06-26 [2] CRAN (R 4.6.0)\n##   demuxmix                                        1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   demuxSNP                                        1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dendextend                                      1.19.1         2025-07-15 [2] CRAN (R 4.6.0)\n##   dendsort                                        0.3.4          2021-04-20 [2] CRAN (R 4.6.0)\n##   DenoIST                                         0.99.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   densEstBayes                                    1.0-2.2        2023-03-31 [2] CRAN (R 4.6.0)\n##   densityClust                                    0.3.3          2024-01-29 [2] CRAN (R 4.6.0)\n##   densvis                                         1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DEoptim                                         2.2-8          2022-11-11 [2] CRAN (R 4.6.0)\n##   DEoptimR                                        1.1-4          2025-07-27 [2] CRAN (R 4.6.0)\n##   DepecheR                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DepInfeR                                        1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   depmap                                          1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   depmixS4                                        1.5-1          2025-05-11 [2] CRAN (R 4.6.0)\n##   DEqMS                                           1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   derfinder                                       1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   derfinderData                                   2.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   derfinderHelper                                 1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   derfinderPlot                                   1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Deriv                                           4.2.0          2025-06-20 [2] CRAN (R 4.6.0)\n##   desc                                            1.4.3          2023-12-10 [2] CRAN (R 4.6.0)\n##   DEScan2                                         1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DescTools                                       0.99.60        2025-03-28 [2] CRAN (R 4.6.0)\n##   DESeq2                                          1.51.6         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DEsingle                                        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   deSolve                                         1.41           2026-02-06 [2] CRAN (R 4.6.0)\n##   DeSousa2013                                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DESpace                                         2.3.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DEsubs                                          1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   detectseparation                                0.3            2022-08-26 [2] CRAN (R 4.6.0)\n##   devEMF                                          4.5-1          2025-03-24 [2] CRAN (R 4.6.0)\n##   devtools                                        2.4.6          2025-10-03 [2] CRAN (R 4.6.0)\n##   DEWSeq                                          1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DExMAdata                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DEXSeq                                          1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DFP                                             1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DFplyr                                          1.5.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DGEobj                                          1.1.2          2022-05-16 [2] CRAN (R 4.6.0)\n##   DGEobj.utils                                    1.0.6          2022-05-19 [2] CRAN (R 4.6.0)\n##   dgof                                            1.5.1          2024-10-09 [2] CRAN (R 4.6.0)\n##   DHARMa                                          0.4.7          2024-10-18 [2] CRAN (R 4.6.0)\n##   diagram                                         1.6.5          2020-09-30 [2] CRAN (R 4.6.0)\n##   DiagrammeR                                      1.0.11         2024-02-02 [2] CRAN (R 4.6.0)\n##   DiceKriging                                     1.6.1          2025-10-21 [2] CRAN (R 4.6.0)\n##   diceR                                           3.1.0          2025-06-19 [2] CRAN (R 4.6.0)\n##   dichromat                                       2.0-0.1        2022-05-02 [2] CRAN (R 4.6.0)\n##   DiffBind                                        3.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diffcoexp                                       1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DiffCorr                                        0.4.5          2025-06-08 [2] CRAN (R 4.6.0)\n##   DifferentialRegulation                          2.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diffGeneAnalysis                                1.93.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diffHic                                         1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DiffLogo                                        2.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diffloopdata                                    1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diffobj                                         0.3.6          2025-04-21 [2] CRAN (R 4.6.0)\n##   diffuStats                                      1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diffUTR                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diffviewer                                      0.1.2          2024-06-12 [2] CRAN (R 4.6.0)\n##   digest                                          0.6.39         2025-11-19 [2] CRAN (R 4.6.0)\n##   diggit                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diggitdata                                      1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Dino                                            1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dinoR                                           1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   diptest                                         0.77-2         2025-08-20 [2] CRAN (R 4.6.0)\n##   dir.expiry                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   directlabels                                    2025.6.24      2025-06-24 [2] CRAN (R 4.6.0)\n##   directPA                                        1.5.1          2023-11-16 [2] CRAN (R 4.6.0)\n##   DirichletMultinomial                            1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DirichletReg                                    0.7-2          2025-05-31 [2] CRAN (R 4.6.0)\n##   dirmult                                         0.1.3-5        2022-03-21 [2] CRAN (R 4.6.0)\n##   discordant                                      1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DiscoRhythm                                     1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   distances                                       0.1.13         2025-11-24 [2] CRAN (R 4.6.0)\n##   distill                                         1.6            2023-10-06 [2] CRAN (R 4.6.0)\n##   distillery                                      1.2-2          2024-11-28 [2] CRAN (R 4.6.0)\n##   distinct                                        1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   distr                                           2.9.7          2025-01-12 [2] CRAN (R 4.6.0)\n##   distributional                                  0.6.0          2026-01-14 [2] CRAN (R 4.6.0)\n##   distributions3                                  0.2.3          2025-09-12 [2] CRAN (R 4.6.0)\n##   dittoSeq                                        1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   divergence                                      1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dixonTest                                       1.0.4          2022-08-22 [2] CRAN (R 4.6.0)\n##   dks                                             1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DLBCL                                           1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dlstats                                         0.1.7          2023-05-24 [2] CRAN (R 4.6.0)\n##   DMCFB                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DMCHMM                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dmGsea                                          1.1.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dml                                             1.1.0          2015-08-29 [2] CRAN (R 4.6.0)\n##   DMRcaller                                       1.43.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DMRcate                                         3.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DMRcatedata                                     2.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DMRScan                                         1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dmrseq                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DNABarcodeCompatibility                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DNABarcodes                                     1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DNAcopy                                         1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DNAcycP2                                        1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DNAfusion                                       1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DNAshapeR                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DNAZooData                                      1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DNEA                                            1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DO.db                                           2.9            2026-03-06 [2] Bioconductor\n##   doBy                                            4.7.1          2025-12-02 [2] CRAN (R 4.6.0)\n##   docopt                                          0.7.2          2025-03-25 [2] CRAN (R 4.6.0)\n##   DoE.base                                        1.2-5          2025-04-16 [2] CRAN (R 4.6.0)\n##   doFuture                                        1.2.1          2026-02-20 [2] CRAN (R 4.6.0)\n##   doMC                                            1.3.8          2022-02-05 [2] CRAN (R 4.6.0)\n##   dominatR                                        0.99.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dominatRData                                    0.99.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DominoEffect                                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dominoSignal                                    1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DonaPLLP2013                                    1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   doParallel                                      1.0.17         2022-02-07 [2] CRAN (R 4.6.0)\n##   doppelgangR                                     1.39.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DoReMiTra                                       1.1.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   doRNG                                           1.8.6.3        2026-02-05 [2] CRAN (R 4.6.0)\n##   dorothea                                        1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Doscheda                                        1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DOSE                                            4.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   doseR                                           1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   doSNOW                                          1.0.20         2022-02-04 [2] CRAN (R 4.6.0)\n##   dotCall64                                       1.2            2024-10-04 [2] CRAN (R 4.6.0)\n##   DOtools                                         1.1.7          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DOTSeq                                          0.99.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DoubleExpSeq                                    1.1            2015-09-04 [2] CRAN (R 4.6.0)\n##   doubletrouble                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   downlit                                         0.4.5          2025-11-14 [2] CRAN (R 4.6.0)\n##   downloader                                      0.4.1          2025-03-26 [2] CRAN (R 4.6.0)\n##   downloadthis                                    0.5.0          2025-07-11 [2] CRAN (R 4.6.0)\n##   dplyr                                           1.2.0          2026-02-03 [2] CRAN (R 4.6.0)\n##   dqrng                                           0.4.1          2024-05-28 [2] CRAN (R 4.6.0)\n##   drawer                                          0.2.0.1        2022-08-19 [2] CRAN (R 4.6.0)\n##   drawProteins                                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   drc                                             3.0-1          2016-08-30 [2] CRAN (R 4.6.0)\n##   dreamlet                                        1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dressCheck                                      0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DrImpute                                        1.0            2017-07-15 [2] CRAN (R 4.6.0)\n##   DRIMSeq                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DriverNet                                       1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DropletTestFiles                                1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DropletUtils                                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   drosgenome1.db                                  3.13.0         2026-03-06 [2] Bioconductor\n##   drosophila2probe                                2.18.0         2026-03-06 [2] Bioconductor\n##   drtmle                                          1.1.2          2023-01-05 [2] CRAN (R 4.6.0)\n##   drugfindR                                       0.99.2516      2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   drugTargetInteractions                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DrugVsDisease                                   2.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DrugVsDiseasedata                               1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DspikeIn                                        1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dStruct                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DT                                              0.34.0         2025-09-02 [2] CRAN (R 4.6.0)\n##   DTA                                             2.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dtangle                                         2.0.9          2019-12-01 [2] CRAN (R 4.6.0)\n##   dtplyr                                          1.3.3          2026-02-11 [2] CRAN (R 4.6.0)\n##   dtt                                             0.1-2.1        2025-06-17 [2] CRAN (R 4.6.0)\n##   dtw                                             1.23-1         2022-09-19 [2] CRAN (R 4.6.0)\n##   duckdb                                          1.4.4          2026-01-28 [2] CRAN (R 4.6.0)\n##   Dune                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dunn.test                                       1.3.7          2026-02-13 [2] CRAN (R 4.6.0)\n##   DuoClustering2018                               1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DuplexDiscovereR                                1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dupRadar                                        1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   DvDdata                                         1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dyebias                                         1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dyebiasexamples                                 1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   dynamicTreeCut                                  1.63-1         2016-03-11 [2] CRAN (R 4.6.0)\n##   DynDoc                                          1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   e1071                                           1.7-17         2025-12-18 [2] CRAN (R 4.6.0)\n##   earth                                           5.3.5          2026-01-11 [2] CRAN (R 4.6.0)\n##   easier                                          1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   easierData                                      1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EasyCellType                                    1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   easylift                                        1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   easyPubMed                                      3.1.6          2025-08-25 [2] CRAN (R 4.6.0)\n##   easyreporting                                   1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   easyRNASeq                                      2.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EatonEtAlChIPseq                                0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EBarrays                                        2.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EBcoexpress                                     1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EBImage                                         4.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EBSEA                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EBSeq                                           2.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   echarts4r                                       0.5.0          2026-02-10 [2] CRAN (R 4.6.0)\n##   ecodist                                         2.1.3          2023-10-30 [2] CRAN (R 4.6.0)\n##   ecodive                                         2.2.2          2026-01-16 [2] CRAN (R 4.6.0)\n##   ecolicdf                                        2.18.0         2026-03-06 [2] Bioconductor\n##   ecoliLeucine                                    1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ecolitk                                         1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ecp                                             3.1.6          2024-08-26 [2] CRAN (R 4.6.0)\n##   Ecume                                           0.9.2          2024-05-28 [2] CRAN (R 4.6.0)\n##   EDASeq                                          2.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   edge                                            2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   edgeR                                           4.9.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EDIRquery                                       1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   eds                                             1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   effectsize                                      1.0.2          2026-03-11 [2] CRAN (R 4.6.0)\n##   effsize                                         0.8.1          2020-10-05 [2] CRAN (R 4.6.0)\n##   EGAD                                            1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   egg                                             0.4.5          2019-07-13 [2] CRAN (R 4.6.0)\n##   EGSEA                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EGSEA123                                        1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   EGSEAdata                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   einsum                                          0.1.2          2023-08-28 [2] CRAN (R 4.6.0)\n##   eiR                                             1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   eisaR                                           1.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   elasticnet                                      1.3            2020-05-15 [2] CRAN (R 4.6.0)\n##   elitism                                         1.1.1          2023-09-02 [2] CRAN (R 4.6.0)\n##   ellipse                                         0.5.0          2023-07-20 [2] CRAN (R 4.6.0)\n##   ellipsis                                        0.3.2          2021-04-29 [2] CRAN (R 4.6.0)\n##   ellmer                                          0.4.0          2025-11-15 [2] CRAN (R 4.6.0)\n##   ELMER                                           2.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ELMER.data                                      2.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   elsa                                            1.1-28         2020-03-19 [2] CRAN (R 4.6.0)\n##   ELViS                                           1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   embed                                           1.2.2          2026-01-29 [2] CRAN (R 4.6.0)\n##   emdbook                                         1.3.14         2025-07-23 [2] CRAN (R 4.6.0)\n##   emdist                                          0.3-3          2023-08-18 [2] CRAN (R 4.6.0)\n##   EMDomics                                        2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   emmeans                                         2.0.2          2026-03-05 [2] CRAN (R 4.6.0)\n##   emoji                                           16.0.0         2024-10-28 [2] CRAN (R 4.6.0)\n##   emojifont                                       0.6.0          2026-02-27 [2] CRAN (R 4.6.0)\n##   EmpiricalBrownsMethod                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   emtdata                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EMTscoreData                                    0.99.10        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ENCODExplorerData                               0.99.5         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   energy                                          1.7-12         2024-08-24 [2] CRAN (R 4.6.0)\n##   english                                         1.2-6          2021-08-21 [2] CRAN (R 4.6.0)\n##   EnhancedVolcano                                 1.29.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   enhancerHomologSearch                           1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EnMCB                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ENmix                                           1.47.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EnrichDO                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EnrichedHeatmap                                 1.41.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   enrichit                                        0.1.3          2026-03-10 [2] CRAN (R 4.6.0)\n##   EnrichmentBrowser                               2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   enrichplot                                      1.31.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   enrichR                                         3.4            2025-02-02 [2] CRAN (R 4.6.0)\n##   enrichViewNet                                   1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EnsDb.Hsapiens.v75                              2.99.0         2026-03-06 [2] Bioconductor\n##   EnsDb.Hsapiens.v79                              2.99.0         2026-03-06 [2] Bioconductor\n##   EnsDb.Hsapiens.v86                              2.99.0         2026-03-06 [2] Bioconductor\n##   EnsDb.Mmusculus.v79                             2.99.0         2026-03-06 [2] Bioconductor\n##   ensembldb                                       2.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   entropy                                         1.3.2          2025-04-07 [2] CRAN (R 4.6.0)\n##   enviPat                                         2.8            2026-01-29 [2] CRAN (R 4.6.0)\n##   EnvStats                                        3.1.0          2025-04-24 [2] CRAN (R 4.6.0)\n##   eoPredData                                      1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epialleleR                                      1.19.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpiCompare                                      1.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EPICv2manifest                                  0.99.7         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   epidecodeR                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpiDISH                                         2.27.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epigenomix                                      1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epigraHMM                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpiMix                                          1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpiMix.data                                     1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epimutacions                                    1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epimutacionsData                                1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epiNEM                                          1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpipwR                                          1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpipwR.data                                     1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epiR                                            2.0.91         2026-02-23 [2] CRAN (R 4.6.0)\n##   epiregulon                                      2.1.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epiregulon.extra                                1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epiSeeker                                       0.99.15        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epistack                                        1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epistasisGA                                     1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpiTxDb                                         1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpiTxDb.Hs.hg38                                 0.99.7         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpiTxDb.Mm.mm10                                 0.99.6         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   EpiTxDb.Sc.sacCer3                              0.99.5         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   epivizr                                         2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epivizrChart                                    1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epivizrData                                     1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epivizrServer                                   1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   epivizrStandalone                               1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   erccdashboard                                   1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ERSSA                                           1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   escape                                          2.7.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   escheR                                          1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   esetVis                                         1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   esquisse                                        2.1.0          2025-02-21 [2] CRAN (R 4.6.0)\n##   estimability                                    1.5.1          2024-05-12 [2] CRAN (R 4.6.0)\n##   estrogen                                        1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   etec16s                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   etrunct                                         0.1            2016-07-04 [2] CRAN (R 4.6.0)\n##   eudysbiome                                      1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   eulerr                                          7.0.4          2025-09-24 [2] CRAN (R 4.6.0)\n##   EuPathDB                                        1.0.1          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   europepmc                                       0.4.3          2023-09-20 [2] CRAN (R 4.6.0)\n##   eva                                             0.2.6          2020-11-15 [2] CRAN (R 4.6.0)\n##   evaluate                                        1.0.5          2025-08-27 [2] CRAN (R 4.6.0)\n##   evaluomeR                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   evd                                             2.3-7.1        2024-09-21 [2] CRAN (R 4.6.0)\n##   EventPointer                                    3.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   evmix                                           2.12           2019-09-03 [2] CRAN (R 4.6.0)\n##   EWCE                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ewceData                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Exact                                           3.3            2024-07-21 [2] CRAN (R 4.6.0)\n##   exactRankTests                                  0.8-36         2026-03-09 [2] CRAN (R 4.6.0)\n##   excelR                                          0.4.0          2020-03-09 [2] CRAN (R 4.6.0)\n##   excluderanges                                   0.99.11        2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   ExCluster                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ExiMiR                                          2.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ExperimentHub                                   3.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ExperimentHubData                               1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ExperimentSubset                                1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   expint                                          0.2-1          2026-01-27 [2] CRAN (R 4.6.0)\n##   ExploreModelMatrix                              1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   expm                                            1.0-0          2024-08-19 [2] CRAN (R 4.6.0)\n##   ExPosition                                      2.11.0         2025-04-13 [2] CRAN (R 4.6.0)\n##   ExpressionAtlas                                 2.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ExpressionNormalizationWorkflow                 1.37.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   ExtDist                                         0.7-4          2025-09-23 [2] CRAN (R 4.6.0)\n##   extraChIPs                                      1.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   extraDistr                                      1.10.0.2       2026-01-18 [2] CRAN (R 4.6.0)\n##   extRemes                                        2.2-1          2025-05-16 [2] CRAN (R 4.6.0)\n##   EZtune                                          3.1.1          2021-12-10 [2] CRAN (R 4.6.0)\n##   faahKO                                          1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fabia                                           2.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fabiaData                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fabricatr                                       1.0.2          2024-01-16 [2] CRAN (R 4.6.0)\n##   factDesign                                      1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   factoextra                                      2.0.0          2026-03-03 [2] CRAN (R 4.6.0)\n##   FactoInvestigate                                1.9.1          2025-12-29 [2] CRAN (R 4.6.0)\n##   FactoMineR                                      2.13           2026-01-12 [2] CRAN (R 4.6.0)\n##   factR                                           1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   faers                                           1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FamAgg                                          1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fANCOVA                                         0.6-1          2020-11-13 [2] CRAN (R 4.6.0)\n##   fansi                                           1.0.7          2025-11-19 [2] CRAN (R 4.6.0)\n##   FANTOM3and4CAGE                                 1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fanyi                                           0.1.1          2026-02-04 [2] CRAN (R 4.6.0)\n##   farver                                          2.1.2          2024-05-13 [2] CRAN (R 4.6.0)\n##   fastcluster                                     1.3.0          2025-05-07 [2] CRAN (R 4.6.0)\n##   fastDummies                                     1.7.5          2025-01-20 [2] CRAN (R 4.6.0)\n##   fastICA                                         1.2-7          2024-12-11 [2] CRAN (R 4.6.0)\n##   fastLiquidAssociation                           1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fastmap                                         1.2.0          2024-05-15 [2] CRAN (R 4.6.0)\n##   fastmatch                                       1.1-8          2026-01-17 [2] CRAN (R 4.6.0)\n##   fastmatrix                                      0.6-6          2026-01-14 [2] CRAN (R 4.6.0)\n##   FastqCleaner                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fastqcr                                         0.1.3          2023-02-18 [2] CRAN (R 4.6.0)\n##   fastreeR                                        2.1.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fastseg                                         1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fBasics                                         4052.98        2025-12-07 [2] CRAN (R 4.6.0)\n##   fCCAC                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fCI                                             1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fclust                                          2.1.3          2025-10-18 [2] CRAN (R 4.6.0)\n##   FCPS                                            1.3.5          2025-10-30 [2] CRAN (R 4.6.0)\n##   fcScan                                          1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fda                                             6.3.0          2025-05-21 [2] CRAN (R 4.6.0)\n##   fdatest                                         2.1.1          2022-05-04 [2] CRAN (R 4.6.0)\n##   FDb.InfiniumMethylation.hg18                    2.2.0          2026-03-06 [2] Bioconductor\n##   FDb.InfiniumMethylation.hg19                    2.2.0          2026-03-06 [2] Bioconductor\n##   FDb.UCSC.tRNAs                                  1.0.1          2026-03-06 [2] Bioconductor\n##   fdrame                                          1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fdrtool                                         1.2.18         2024-08-20 [2] CRAN (R 4.6.0)\n##   fds                                             1.8            2018-10-31 [2] CRAN (R 4.6.0)\n##   FEAST                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FeatSeekR                                       1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   feature                                         1.2.15         2021-02-10 [2] CRAN (R 4.6.0)\n##   fedup                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FELLA                                           1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fenr                                            1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ff                                              4.5.2          2025-01-13 [2] CRAN (R 4.6.0)\n##   ffpe                                            1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ffpeExampleData                                 1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fftw                                            1.0-9          2024-09-20 [2] CRAN (R 4.6.0)\n##   fftwtools                                       0.9-11         2021-03-01 [2] CRAN (R 4.6.0)\n##   fGarch                                          4052.93        2025-12-12 [2] CRAN (R 4.6.0)\n##   fgga                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FGNet                                           3.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fgsea                                           1.37.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fibroEset                                       1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FieldEffectCrc                                  1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fields                                          17.1           2025-09-08 [2] CRAN (R 4.6.0)\n##   filehash                                        2.4-6          2024-06-25 [2] CRAN (R 4.6.0)\n##   filelock                                        1.0.3          2023-12-11 [2] CRAN (R 4.6.0)\n##   filematrix                                      1.3            2018-02-27 [2] CRAN (R 4.6.0)\n##   filesstrings                                    3.4.0          2024-02-11 [2] CRAN (R 4.6.0)\n##   FilterFFPE                                      1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   findIPs                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FindIT2                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   findpython                                      1.0.9          2024-11-19 [2] CRAN (R 4.6.0)\n##   FinfoMDS                                        1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fingerprint                                     3.5.7          2018-01-07 [2] CRAN (R 4.6.0)\n##   FIs                                             1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FISHalyseR                                      1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fishpond                                        2.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fission                                         1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fit.models                                      0.64           2020-08-02 [2] CRAN (R 4.6.0)\n##   fitdistrplus                                    1.2-6          2026-01-24 [2] CRAN (R 4.6.0)\n##   FitHiC                                          1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flagme                                          1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FLAMES                                          2.5.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flashClust                                      1.1-4          2026-03-03 [2] CRAN (R 4.6.0)\n##   flatxml                                         0.1.1          2020-12-01 [2] CRAN (R 4.6.0)\n##   Fletcher2013a                                   1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Fletcher2013b                                   1.47.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flexclust                                       1.5.0          2025-02-28 [2] CRAN (R 4.6.0)\n##   flexdashboard                                   0.6.3          2026-01-28 [2] CRAN (R 4.6.0)\n##   flexmix                                         2.3-20         2025-02-28 [2] CRAN (R 4.6.0)\n##   FlexParamCurve                                  1.5-7          2025-08-26 [2] CRAN (R 4.6.0)\n##   flextable                                       0.9.11         2026-02-13 [2] CRAN (R 4.6.0)\n##   float                                           0.3-3          2025-03-12 [2] CRAN (R 4.6.0)\n##   flock                                           0.7            2016-11-12 [2] CRAN (R 4.6.0)\n##   flowAI                                          1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowBeads                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowBin                                         1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowcatchR                                      1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowCHIC                                        1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowClean                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowClust                                       3.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowCore                                        2.23.2         2026-03-11 [2] Bioconductor\n##   flowCut                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowCyBar                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowDensity                                     1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowFP                                          1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowGate                                        1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowGraph                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowMatch                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowMeans                                       1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowMerge                                       2.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowPeaks                                       1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowPloidy                                      1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowPloidyData                                  1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowPlots                                       1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FlowSorted.Blood.450k                           1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FlowSorted.Blood.EPIC                           2.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FlowSorted.CordBlood.450k                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FlowSorted.CordBloodCombined.450k               1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FlowSorted.CordBloodNorway.450k                 1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FlowSorted.DLPFC.450k                           1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowSpecs                                       1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowStats                                       4.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowTime                                        1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowTrans                                       1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowViz                                         1.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowVS                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowWorkspace                                   4.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   flowWorkspaceData                               3.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fluentGenomics                                  1.23.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   fmcsR                                           1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   FME                                             1.3.6.4        2025-07-25 [2] CRAN (R 4.6.0)\n##   fmrs                                            1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fmsb                                            0.7.6          2024-01-19 [2] CRAN (R 4.6.0)\n##   FMStable                                        0.1-4          2022-06-06 [2] CRAN (R 4.6.0)\n##   FNN                                             1.1.4.1        2024-09-22 [2] CRAN (R 4.6.0)\n##   fobitools                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fontawesome                                     0.5.3          2024-11-16 [2] CRAN (R 4.6.0)\n##   fontBitstreamVera                               0.1.1          2017-02-01 [2] CRAN (R 4.6.0)\n##   fontLiberation                                  0.1.0          2016-10-15 [2] CRAN (R 4.6.0)\n##   fontquiver                                      0.2.1          2017-02-01 [2] CRAN (R 4.6.0)\n##   forcats                                         1.0.1          2025-09-25 [2] CRAN (R 4.6.0)\n##   foreach                                         1.5.2          2022-02-02 [2] CRAN (R 4.6.0)\n##   forecast                                        9.0.1          2026-02-14 [2] CRAN (R 4.6.0)\n##   foreign                                         0.8-91         2026-01-29 [3] CRAN (R 4.6.0)\n##   forestplot                                      3.2.0          2026-03-04 [2] CRAN (R 4.6.0)\n##   formatR                                         1.14           2023-01-17 [2] CRAN (R 4.6.0)\n##   formattable                                     0.2.1          2021-01-07 [2] CRAN (R 4.6.0)\n##   Formula                                         1.2-5          2023-02-24 [2] CRAN (R 4.6.0)\n##   formula.tools                                   1.7.1          2018-03-01 [2] CRAN (R 4.6.0)\n##   fossil                                          0.4.0          2020-03-23 [2] CRAN (R 4.6.0)\n##   fourDNData                                      1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fpc                                             2.2-14         2026-01-14 [2] CRAN (R 4.6.0)\n##   fracdiff                                        1.5-3          2024-02-01 [2] CRAN (R 4.6.0)\n##   fractional                                      0.1.3          2016-02-15 [2] CRAN (R 4.6.0)\n##   FRASER                                          2.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   frenchFISH                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fresh                                           0.2.2          2025-09-04 [2] CRAN (R 4.6.0)\n##   FrF2                                            2.3-4          2025-04-16 [2] CRAN (R 4.6.0)\n##   FRGEpistasis                                    1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   frma                                            1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   frmaExampleData                                 1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   frmaTools                                       1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   fs                                              1.6.7          2026-03-06 [2] CRAN (R 4.6.0)\n##   FSA                                             0.10.1         2026-01-10 [2] CRAN (R 4.6.0)\n##   fscache                                         1.0.5          2024-06-02 [2] CRAN (R 4.6.0)\n##   FSelector                                       0.34           2023-08-22 [2] CRAN (R 4.6.0)\n##   fst                                             0.9.8          2022-02-08 [2] CRAN (R 4.6.0)\n##   fstcore                                         0.10.0         2025-02-10 [2] CRAN (R 4.6.0)\n##   functional                                      0.6            2014-07-16 [2] CRAN (R 4.6.0)\n##   funkycells                                      1.1.1          2023-08-09 [2] CRAN (R 4.6.0)\n##   funOmics                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   funtooNorm                                      1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   furrowSeg                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   furrr                                           0.3.1          2022-08-15 [2] CRAN (R 4.6.0)\n##   FuseSOM                                         1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   futile.logger                                   1.4.9          2025-12-29 [2] CRAN (R 4.6.0)\n##   futile.options                                  1.0.1          2018-04-20 [2] CRAN (R 4.6.0)\n##   future                                          1.69.0         2026-01-16 [2] CRAN (R 4.6.0)\n##   future.apply                                    1.20.2         2026-02-20 [2] CRAN (R 4.6.0)\n##   fuzzyjoin                                       0.1.8          2026-02-20 [2] CRAN (R 4.6.0)\n##   G4SNVHunter                                     1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GA                                              3.2.5          2026-01-08 [2] CRAN (R 4.6.0)\n##   GA4GHclient                                     1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GA4GHshiny                                      1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gaga                                            2.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gage                                            2.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gageData                                        2.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gam                                             1.22-7         2025-12-10 [2] CRAN (R 4.6.0)\n##   gamlss                                          5.5-0          2025-08-19 [2] CRAN (R 4.6.0)\n##   gamlss.data                                     6.0-7          2025-09-04 [2] CRAN (R 4.6.0)\n##   gamlss.dist                                     6.1-1          2023-08-23 [2] CRAN (R 4.6.0)\n##   gamlss.tr                                       5.1-9          2024-01-30 [2] CRAN (R 4.6.0)\n##   gamm4                                           0.2-7          2025-04-22 [2] CRAN (R 4.6.0)\n##   gap                                             1.14           2026-02-19 [2] CRAN (R 4.6.0)\n##   gap.datasets                                    0.0.6          2023-08-25 [2] CRAN (R 4.6.0)\n##   GAprediction                                    1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   garfield                                        1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gargle                                          1.6.1          2026-01-29 [2] CRAN (R 4.6.0)\n##   GARS                                            1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gaschYHS                                        1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GateFinder                                      1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gatom                                           1.9.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gbm                                             2.2.3          2026-01-22 [2] CRAN (R 4.6.0)\n##   GBScleanR                                       2.5.8          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gbutils                                         0.5.1          2025-12-18 [2] CRAN (R 4.6.0)\n##   gcapc                                           1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gcatest                                         2.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gclus                                           1.3.3          2025-03-28 [2] CRAN (R 4.6.0)\n##   GCPtools                                        1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gCrisprTools                                    2.17.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gcrma                                           2.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gcspikelite                                     1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gdata                                           3.0.1          2024-10-22 [2] CRAN (R 4.6.0)\n##   GDCRNATools                                     1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gDNAinRNAseqData                                1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gDNAx                                           1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gDRstyle                                        1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gDRtestData                                     1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GDSArray                                        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gdsfmt                                          1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gdtools                                         0.5.0          2026-02-09 [2] CRAN (R 4.6.0)\n##   GeDi                                            1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geeM                                            0.10.1         2018-06-18 [2] CRAN (R 4.6.0)\n##   geepack                                         1.3.13         2025-10-14 [2] CRAN (R 4.6.0)\n##   geigen                                          2.3            2019-05-30 [2] CRAN (R 4.6.0)\n##   GEM                                             1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gemini                                          1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gemma.R                                         3.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genalg                                          0.2.1          2022-04-04 [2] CRAN (R 4.6.0)\n##   genArise                                        1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geneAttribution                                 1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneBreak                                       1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geneClassifiers                                 1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geneExpressionFromGEO                           1.3            2025-12-09 [2] CRAN (R 4.6.0)\n##   GeneExpressionSignature                         1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genefilter                                      1.93.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genefu                                          2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneGA                                          1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genekitr                                        1.2.8          2024-09-06 [2] CRAN (R 4.6.0)\n##   geneLenDataBase                                 1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneMeta                                        1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneNet                                         1.2.17         2025-04-07 [2] CRAN (R 4.6.0)\n##   GeneNetworkBuilder                              1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneOverlap                                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geneplast                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geneplast.data                                  0.99.9         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   geneplast.data.string.v91                       0.99.6         2026-03-06 [2] Bioconductor\n##   geneplotter                                     1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geneRecommender                                 1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneRegionScan                                  1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   generegulation                                  1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   generics                                        0.1.4          2025-05-09 [2] CRAN (R 4.6.0)\n##   geneRxCluster                                   1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneSelectMMD                                   2.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geneset                                         0.2.7          2022-11-20 [2] CRAN (R 4.6.0)\n##   GENESIS                                         2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneStructureTools                              1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneSummary                                     0.99.7         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   geNetClassifier                                 1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genetics                                        1.3.8.1.3      2021-03-01 [2] CRAN (R 4.6.0)\n##   GeneticsPed                                     1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeneTonic                                       3.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GENIE3                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genieclust                                      1.3.0          2026-02-23 [2] CRAN (R 4.6.0)\n##   genio                                           1.1.2          2023-01-06 [2] CRAN (R 4.6.0)\n##   genlasso                                        1.6.1          2022-08-22 [2] CRAN (R 4.6.0)\n##   GENLIB                                          1.1.10         2024-02-19 [2] CRAN (R 4.6.0)\n##   genomation                                      1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genomationData                                  1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomAutomorphism                               1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomeInfoDb                                    1.47.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomeInfoDbData                                1.2.15         2026-03-06 [2] Bioconductor\n##   genomeIntervals                                 1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genomes                                         3.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genomewidesnp5Crlmm                             1.0.6          2026-03-06 [2] local\n##   genomewidesnp6Crlmm                             1.0.7          2026-03-06 [2] Bioconductor\n##   GenomicAlignments                               1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicDataCommons                              1.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicDistributions                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicDistributionsData                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicFeatures                                 1.63.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicFiles                                    1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   genomicInstability                              1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicInteractionNodes                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicInteractions                             1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicOZone                                    1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicPlot                                     1.9.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicRanges                                   1.63.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicScores                                   2.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicState                                    0.99.17        2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicSuperSignature                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenomicTuples                                   1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenProSeq                                       1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GenSA                                           1.1.15         2025-11-26 [2] CRAN (R 4.6.0)\n##   GenVisR                                         1.43.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeoDiff                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GEOexplorer                                     1.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GEOfastq                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GEOmetadb                                       1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geomeTriD                                       1.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geometries                                      0.2.5          2025-11-23 [2] CRAN (R 4.6.0)\n##   geometry                                        0.5.2          2025-02-08 [2] CRAN (R 4.6.0)\n##   geomtextpath                                    0.2.0          2025-07-21 [2] CRAN (R 4.6.0)\n##   GeomxTools                                      3.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeoMxWorkflows                                  1.17.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   GEOquery                                        2.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geosphere                                       1.6-5          2026-03-02 [2] CRAN (R 4.6.0)\n##   GEOsubmission                                   1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GeoTcgaData                                     2.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gep2pep                                         1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gert                                            2.3.1          2026-01-11 [2] CRAN (R 4.6.0)\n##   getDEE2                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   getopt                                          1.20.4         2023-10-01 [2] CRAN (R 4.6.0)\n##   GetoptLong                                      1.1.0          2025-11-28 [2] CRAN (R 4.6.0)\n##   getPass                                         0.2-4          2023-12-10 [2] CRAN (R 4.6.0)\n##   GeuvadisTranscriptExpr                          1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geva                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GEWIST                                          1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   geyser                                          1.3.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GFA                                             1.0.5          2023-10-21 [2] CRAN (R 4.6.0)\n##   gg4way                                          1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggalluvial                                      0.12.6         2026-02-22 [2] CRAN (R 4.6.0)\n##   GGally                                          2.4.0          2025-08-23 [2] CRAN (R 4.6.0)\n##   gganimate                                       1.0.11         2025-09-04 [2] CRAN (R 4.6.0)\n##   ggarchery                                       0.4.4          2025-07-24 [2] CRAN (R 4.6.0)\n##   ggbeeswarm                                      0.7.3          2025-11-29 [2] CRAN (R 4.6.0)\n##   ggbio                                           1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggcorrplot                                      0.1.4.1        2023-09-05 [2] CRAN (R 4.6.0)\n##   ggcyto                                          1.39.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggdendro                                        0.2.0          2024-02-23 [2] CRAN (R 4.6.0)\n##   ggdensity                                       1.0.1          2026-02-26 [2] CRAN (R 4.6.0)\n##   ggdist                                          3.3.3          2025-04-23 [2] CRAN (R 4.6.0)\n##   ggeasy                                          0.1.6          2025-06-15 [2] CRAN (R 4.6.0)\n##   ggeffects                                       2.3.2          2025-12-16 [2] CRAN (R 4.6.0)\n##   ggExtra                                         0.11.0         2025-09-01 [2] CRAN (R 4.6.0)\n##   ggfittext                                       0.10.3         2025-12-13 [2] CRAN (R 4.6.0)\n##   ggforce                                         0.5.0          2025-06-18 [2] CRAN (R 4.6.0)\n##   ggformula                                       1.0.1          2026-01-17 [2] CRAN (R 4.6.0)\n##   ggfortify                                       0.4.19         2025-07-27 [2] CRAN (R 4.6.0)\n##   ggfun                                           0.2.0          2025-07-15 [2] CRAN (R 4.6.0)\n##   gggenes                                         0.6.0          2025-12-14 [2] CRAN (R 4.6.0)\n##   ggh4x                                           0.3.1          2025-05-30 [2] CRAN (R 4.6.0)\n##   gghighlight                                     0.5.0          2025-06-14 [2] CRAN (R 4.6.0)\n##   ggHoriPlot                                      1.0.1          2022-10-11 [2] CRAN (R 4.6.0)\n##   ggimage                                         0.3.5          2026-01-08 [2] CRAN (R 4.6.0)\n##   gginnards                                       0.2.0-2        2025-11-12 [2] CRAN (R 4.6.0)\n##   ggiraph                                         0.9.6          2026-02-21 [2] CRAN (R 4.6.0)\n##   ggiraphExtra                                    0.3.0          2020-10-06 [2] CRAN (R 4.6.0)\n##   ggkegg                                          1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggm                                             2.5.2          2025-07-25 [2] CRAN (R 4.6.0)\n##   ggmanh                                          1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggmcmc                                          1.5.1.2        2025-10-02 [2] CRAN (R 4.6.0)\n##   ggmsa                                           1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggnetwork                                       0.5.14         2025-09-10 [2] CRAN (R 4.6.0)\n##   ggnewscale                                      0.5.2          2025-06-20 [2] CRAN (R 4.6.0)\n##   GGPA                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggpattern                                       1.3.1          2026-03-07 [2] CRAN (R 4.6.0)\n##   ggplot.multistats                               1.0.1          2024-09-25 [2] CRAN (R 4.6.0)\n##   ggplot2                                         4.0.2          2026-02-03 [2] CRAN (R 4.6.0)\n##   ggplotify                                       0.1.3          2025-09-20 [2] CRAN (R 4.6.0)\n##   ggpmisc                                         0.6.3          2025-11-29 [2] CRAN (R 4.6.0)\n##   ggpointdensity                                  0.2.1          2025-11-18 [2] CRAN (R 4.6.0)\n##   ggpp                                            0.6.0          2026-01-18 [2] CRAN (R 4.6.0)\n##   ggprism                                         1.0.7          2025-08-23 [2] CRAN (R 4.6.0)\n##   ggpubr                                          0.6.3          2026-02-24 [2] CRAN (R 4.6.0)\n##   ggraph                                          2.2.2          2025-08-24 [2] CRAN (R 4.6.0)\n##   ggrastr                                         1.0.2          2023-06-01 [2] CRAN (R 4.6.0)\n##   ggrepel                                         0.9.7          2026-02-25 [2] CRAN (R 4.6.0)\n##   ggridges                                        0.5.7          2025-08-27 [2] CRAN (R 4.6.0)\n##   ggsc                                            1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggsci                                           4.2.0          2025-12-17 [2] CRAN (R 4.6.0)\n##   ggseqalign                                      1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggseqlogo                                       0.2.2          2025-12-22 [2] CRAN (R 4.6.0)\n##   ggside                                          0.4.1          2025-11-25 [2] CRAN (R 4.6.0)\n##   ggsignif                                        0.6.4          2022-10-13 [2] CRAN (R 4.6.0)\n##   ggspavis                                        1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggstance                                        0.3.7          2024-04-05 [2] CRAN (R 4.6.0)\n##   ggstar                                          1.0.6          2025-09-19 [2] CRAN (R 4.6.0)\n##   ggstats                                         0.13.0         2026-03-06 [2] CRAN (R 4.6.0)\n##   ggsurvfit                                       1.2.0          2025-09-13 [2] CRAN (R 4.6.0)\n##   ggtangle                                        0.1.1          2026-01-16 [2] CRAN (R 4.6.0)\n##   ggtern                                          4.0.0          2025-11-26 [2] CRAN (R 4.6.0)\n##   ggtext                                          0.1.2          2022-09-16 [2] CRAN (R 4.6.0)\n##   ggthemes                                        5.2.0          2025-11-30 [2] CRAN (R 4.6.0)\n##   ggtree                                          4.1.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggtreeDendro                                    1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggtreeExtra                                     1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggtreeSpace                                     1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ggupset                                         0.4.1          2025-02-11 [2] CRAN (R 4.6.0)\n##   ggvenn                                          0.1.19         2025-10-08 [2] CRAN (R 4.6.0)\n##   ggVennDiagram                                   1.5.7          2026-01-10 [2] CRAN (R 4.6.0)\n##   ggvis                                           0.4.10         2026-02-10 [2] CRAN (R 4.6.0)\n##   ggwordcloud                                     0.6.2          2024-05-30 [2] CRAN (R 4.6.0)\n##   gh                                              1.5.0          2025-05-26 [2] CRAN (R 4.6.0)\n##   GIGSEA                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GIGSEAdata                                      1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ginmappeR                                       1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gINTomics                                       1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   git2r                                           0.36.2         2025-03-29 [2] CRAN (R 4.6.0)\n##   gitcreds                                        0.1.2          2022-09-08 [2] CRAN (R 4.6.0)\n##   GLAD                                            2.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GladiaTOX                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   glasso                                          1.11           2019-10-01 [2] CRAN (R 4.6.0)\n##   glassoFast                                      1.0.1          2023-08-21 [2] CRAN (R 4.6.0)\n##   gld                                             2.6.8          2025-09-14 [2] CRAN (R 4.6.0)\n##   Glimma                                          2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   glm2                                            1.2.1          2018-08-11 [2] CRAN (R 4.6.0)\n##   glmGamPoi                                       1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   glmmSeq                                         0.5.7          2025-10-02 [2] CRAN (R 4.6.0)\n##   glmmTMB                                         1.1.14         2026-01-15 [2] CRAN (R 4.6.0)\n##   glmnet                                          4.1-10         2025-07-17 [2] CRAN (R 4.6.0)\n##   glmnetUtils                                     1.1.9          2023-09-10 [2] CRAN (R 4.6.0)\n##   glmpca                                          0.2.0          2020-07-18 [2] CRAN (R 4.6.0)\n##   glmSparseNet                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GlobalAncova                                    4.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GlobalOptions                                   0.1.3          2025-11-28 [2] CRAN (R 4.6.0)\n##   globals                                         0.19.0         2026-02-02 [2] CRAN (R 4.6.0)\n##   globalSeq                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   globaltest                                      5.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GloScope                                        2.1.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   glue                                            1.8.0          2024-09-30 [2] CRAN (R 4.6.0)\n##   glycoTraitR                                     0.99.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gmapR                                           1.53.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GmicR                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gmm                                             1.9-1          2025-08-26 [2] CRAN (R 4.6.0)\n##   gmodels                                         2.19.1         2024-03-06 [2] CRAN (R 4.6.0)\n##   gmoviz                                          1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gmp                                             0.7-5.1        2026-02-09 [2] CRAN (R 4.6.0)\n##   GMRP                                            1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GNET2                                           1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gnm                                             1.1-5          2023-09-16 [2] CRAN (R 4.6.0)\n##   GNOSIS                                          1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GO.db                                           3.22.0         2026-03-06 [2] Bioconductor\n##   goat                                            1.1.5          2026-02-04 [2] CRAN (R 4.6.0)\n##   goatea                                          1.99.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GOexpress                                       1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GOfan                                           0.99.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GoFKernel                                       2.1-3          2024-12-06 [2] CRAN (R 4.6.0)\n##   goftest                                         1.2-3          2021-10-07 [2] CRAN (R 4.6.0)\n##   golem                                           0.5.1          2024-08-27 [2] CRAN (R 4.6.0)\n##   golubEsets                                      1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   googledrive                                     2.1.2          2025-09-10 [2] CRAN (R 4.6.0)\n##   googlesheets4                                   1.1.2          2025-09-03 [2] CRAN (R 4.6.0)\n##   googleVis                                       0.7.3          2024-05-25 [2] CRAN (R 4.6.0)\n##   GOpro                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   goProfiles                                      1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GOSemSim                                        2.37.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   goseq                                           1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   goSorensen                                      1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   goSTAG                                          1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GOstats                                         2.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GOTHiC                                          1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   goTools                                         1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gower                                           1.0.2          2024-12-17 [2] CRAN (R 4.6.0)\n##   GPA                                             1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gpaExample                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GPArotation                                     2025.3-1       2025-04-12 [2] CRAN (R 4.6.0)\n##   gplots                                          3.3.0          2025-11-30 [2] CRAN (R 4.6.0)\n##   gpls                                            1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gProfileR                                       0.7.0          2019-11-04 [2] CRAN (R 4.6.0)\n##   gprofiler2                                      0.2.4          2025-11-11 [2] CRAN (R 4.6.0)\n##   GrafGen                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gRain                                           1.4.6          2026-03-02 [2] CRAN (R 4.6.0)\n##   GRaNIE                                          1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   granulator                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   graper                                          1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   graph                                           1.89.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GraphAlignment                                  1.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GraphAT                                         1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   graphics                                      * 4.6.0          2026-03-06 [3] local\n##   graphite                                        1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   graphlayouts                                    1.2.3          2026-02-21 [2] CRAN (R 4.6.0)\n##   grasp2db                                        1.1.1          2026-03-06 [2] local\n##   gRbase                                          2.0.3          2024-10-22 [2] CRAN (R 4.6.0)\n##   grDevices                                     * 4.6.0          2026-03-06 [3] local\n##   GRENITS                                         1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GreyListChIP                                    1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   grid                                            4.6.0          2026-03-06 [3] local\n##   gridBase                                        0.4-7          2014-02-24 [2] CRAN (R 4.6.0)\n##   gridExtra                                       2.3            2017-09-09 [2] CRAN (R 4.6.0)\n##   gridGraphics                                    0.5-1          2020-12-13 [2] CRAN (R 4.6.0)\n##   gridpattern                                     1.3.1          2025-01-16 [2] CRAN (R 4.6.0)\n##   gridSVG                                         1.7-7          2025-10-31 [2] CRAN (R 4.6.0)\n##   gridtext                                        0.1.6          2026-02-19 [2] CRAN (R 4.6.0)\n##   grImport                                        0.9-7          2023-03-09 [2] CRAN (R 4.6.0)\n##   grImport2                                       0.3-3          2024-07-30 [2] CRAN (R 4.6.0)\n##   GRmetrics                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   grndata                                         1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   groHMM                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   groupdata2                                      2.0.5          2024-12-18 [2] CRAN (R 4.6.0)\n##   grpreg                                          3.5.0          2024-09-03 [2] CRAN (R 4.6.0)\n##   GSA                                             1.03.3         2024-04-20 [2] CRAN (R 4.6.0)\n##   GSALightning                                    1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSAR                                            1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSBenchMark                                     1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSCA                                            2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gscreend                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSE103322                                       1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSE13015                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSE159526                                       1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSE62944                                        1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSEABase                                        1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSEABenchmarkeR                                 1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSEAlm                                          1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSEAmining                                      1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gsean                                           1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSgalgoR                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gsignal                                         0.3-7          2024-09-11 [2] CRAN (R 4.6.0)\n##   gsl                                             2.1-9          2025-11-10 [2] CRAN (R 4.6.0)\n##   gson                                            0.1.0          2023-03-07 [2] CRAN (R 4.6.0)\n##   GSReg                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSRI                                            2.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gss                                             2.2-10         2025-11-19 [2] CRAN (R 4.6.0)\n##   gstat                                           2.1-5          2026-02-13 [2] CRAN (R 4.6.0)\n##   gsubfn                                          0.7            2018-03-16 [2] CRAN (R 4.6.0)\n##   GSVA                                            2.5.18         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GSVAdata                                        1.47.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gt                                              1.3.0          2026-01-22 [2] CRAN (R 4.6.0)\n##   gtable                                          0.3.6          2024-10-25 [2] CRAN (R 4.6.0)\n##   gtools                                          3.9.5          2023-11-20 [2] CRAN (R 4.6.0)\n##   gtrellis                                        1.43.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GUIDEseq                                        1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Guitar                                          2.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GUniFrac                                        1.9            2025-08-25 [2] CRAN (R 4.6.0)\n##   gVenn                                           1.1.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Gviz                                            1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GWAS.BAYES                                      1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gwascatData                                     0.99.6         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   GWASdata                                        1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GWASExactHW                                     1.2            2024-03-12 [2] CRAN (R 4.6.0)\n##   gwasrapidd                                      0.99.18        2025-05-31 [2] CRAN (R 4.6.0)\n##   GWASTools                                       1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gwasurvivr                                      1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   GWENA                                           1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   gypsum                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   h2o                                             3.44.0.3       2024-01-11 [2] CRAN (R 4.6.0)\n##   h5mread                                         1.3.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   h5vc                                            2.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   h5vcData                                        2.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hapFabia                                        1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   haplo.stats                                     1.9.8.2        2026-02-13 [2] CRAN (R 4.6.0)\n##   hapmap100khind                                  1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hapmap100kxba                                   1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hapmap500knsp                                   1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hapmap500ksty                                   1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hapmapsnp5                                      1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hapmapsnp6                                      1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   harbChIP                                        1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hardhat                                         1.4.2          2025-08-20 [2] CRAN (R 4.6.0)\n##   HardyWeinberg                                   1.7.9          2025-09-10 [2] CRAN (R 4.6.0)\n##   HarmanData                                      1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   harmonicmeanp                                   3.0.1          2024-01-17 [2] CRAN (R 4.6.0)\n##   HarmonizedTCGAData                              1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HarmonizR                                       1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   harmony                                         1.2.4          2025-10-10 [2] CRAN (R 4.6.0)\n##   hash                                            2.2.6.4        2026-01-21 [2] CRAN (R 4.6.0)\n##   haven                                           2.5.5          2025-05-30 [2] CRAN (R 4.6.0)\n##   hca                                             1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HCAData                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HCATonsilData                                   1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HD2013SGI                                       1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HDCI                                            1.0-2          2017-06-06 [2] CRAN (R 4.6.0)\n##   HDCytoData                                      1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HDF5Array                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hdf5r                                           1.3.12         2025-01-20 [2] CRAN (R 4.6.0)\n##   HDInterval                                      0.2.4          2022-11-17 [2] CRAN (R 4.6.0)\n##   hdrcde                                          3.5.0          2026-01-11 [2] CRAN (R 4.6.0)\n##   HDTD                                            1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hdxmsqc                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   healthyControlsPresenceChecker                  1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   healthyFlowData                                 1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   heatmap3                                        1.1.9          2021-01-06 [2] CRAN (R 4.6.0)\n##   heatmaply                                       1.6.0          2025-07-12 [2] CRAN (R 4.6.0)\n##   heatmaps                                        1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Heatplus                                        3.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HEEBOdata                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HelloRanges                                     1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HelloRangesData                                 1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HELP                                            1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HEM                                             1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   henna                                           0.7.5          2026-02-17 [2] CRAN (R 4.6.0)\n##   here                                            1.0.2          2025-09-15 [2] CRAN (R 4.6.0)\n##   hermes                                          1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HERON                                           1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Herper                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hexbin                                          1.28.5         2024-11-13 [2] CRAN (R 4.6.0)\n##   hexDensity                                      1.4.10         2025-09-28 [2] CRAN (R 4.6.0)\n##   HGC                                             1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hgfocuscdf                                      2.18.0         2026-03-06 [2] Bioconductor\n##   hgfocusprobe                                    2.18.0         2026-03-06 [2] Bioconductor\n##   HGNChelper                                      0.8.15         2024-11-16 [2] CRAN (R 4.6.0)\n##   hgu133a.db                                      3.13.0         2026-03-06 [2] Bioconductor\n##   hgu133a2.db                                     3.13.0         2026-03-06 [2] Bioconductor\n##   hgu133abarcodevecs                              1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hgu133acdf                                      2.18.0         2026-03-06 [2] Bioconductor\n##   hgu133afrmavecs                                 1.5.0          2026-03-06 [2] Bioconductor\n##   hgu133aprobe                                    2.18.0         2026-03-06 [2] Bioconductor\n##   hgu133atagcdf                                   2.18.0         2026-03-06 [2] Bioconductor\n##   hgu133atagprobe                                 2.18.0         2026-03-06 [2] Bioconductor\n##   hgu133plus2.db                                  3.13.0         2026-03-06 [2] Bioconductor\n##   hgu133plus2barcodevecs                          1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hgu133plus2cdf                                  2.18.0         2026-03-06 [2] Bioconductor\n##   hgu133plus2CellScore                            1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hgu133plus2frmavecs                             1.5.0          2026-03-10 [2] Bioconductor\n##   hgu133plus2probe                                2.18.0         2026-03-06 [2] Bioconductor\n##   hgu2beta7                                       1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hgu95acdf                                       2.18.0         2026-03-06 [2] Bioconductor\n##   hgu95av2                                        2.2.0          2026-03-06 [2] Bioconductor\n##   hgu95av2.db                                     3.13.0         2026-03-06 [2] Bioconductor\n##   hgu95av2cdf                                     2.18.0         2026-03-06 [2] Bioconductor\n##   hgu95av2probe                                   2.18.0         2026-03-06 [2] Bioconductor\n##   HIBAG                                           1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiBED                                           1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HicAggR                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCaptuRe                                       1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCBricks                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCcompare                                      1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCDataHumanIMR90                               1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCDataLymphoblast                              1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCDCPlus                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCDOC                                          1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCExperiment                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiContacts                                      1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiContactsData                                  1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCool                                          1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCParser                                       1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiCPotts                                        1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hicVennDiagram                                  1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiddenMarkov                                    1.8-14         2025-01-28 [2] CRAN (R 4.6.0)\n##   hierGWAS                                        1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hierinf                                         1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   highcharter                                     0.9.4          2022-01-03 [2] CRAN (R 4.6.0)\n##   HighlyReplicatedRNASeq                          1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   highr                                           0.12           2026-03-06 [2] CRAN (R 4.6.0)\n##   highs                                           1.12.0-3       2026-02-08 [2] CRAN (R 4.6.0)\n##   highthroughputassays                            1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   Hiiragi2013                                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HilbertCurve                                    2.5.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HilbertVis                                      1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HilbertVisGUI                                   1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiLDA                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hipathia                                        3.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HIPPO                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HIREewas                                        1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hitandrun                                       0.5-6          2022-05-27 [2] CRAN (R 4.6.0)\n##   HiTC                                            1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HIVcDNAvantWout03                               1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HiveR                                           0.4.0          2024-07-18 [2] CRAN (R 4.6.0)\n##   hmdbQuery                                       1.31.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Hmisc                                           5.2-5          2026-01-09 [2] CRAN (R 4.6.0)\n##   HMM                                             1.0.2          2025-05-16 [2] CRAN (R 4.6.0)\n##   HMMcopy                                         1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HMP                                             2.0.1          2019-08-31 [2] CRAN (R 4.6.0)\n##   HMP16SData                                      1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hms                                             1.1.4          2025-10-17 [2] CRAN (R 4.6.0)\n##   HoloFoodR                                       1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Homo.sapiens                                    1.3.1          2026-03-06 [2] Bioconductor\n##   homologene                                      1.4.68.19.3.27 2019-03-28 [2] CRAN (R 4.6.0)\n##   homosapienDEE2CellScore                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hoodscanR                                       1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hopach                                          2.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HPAanalyze                                      1.29.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hpAnnot                                         1.1.1          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   hpar                                            1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HPiP                                            1.17.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HSMMSingleCell                                  1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   htm2txt                                         2.2.2          2022-06-12 [2] CRAN (R 4.6.0)\n##   htmlTable                                       2.4.3          2024-07-21 [2] CRAN (R 4.6.0)\n##   htmltools                                       0.5.9          2025-12-04 [2] CRAN (R 4.6.0)\n##   HTMLUtils                                       0.1.9          2024-01-25 [2] CRAN (R 4.6.0)\n##   htmlwidgets                                     1.6.4          2023-12-06 [2] CRAN (R 4.6.0)\n##   HTqPCR                                          1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HTSCluster                                      2.0.11         2023-09-05 [2] CRAN (R 4.6.0)\n##   HTSFilter                                       1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   httpcode                                        0.3.0          2020-04-10 [2] CRAN (R 4.6.0)\n##   httptest                                        4.2.3          2025-11-15 [2] CRAN (R 4.6.0)\n##   httptest2                                       1.2.2          2025-11-16 [2] CRAN (R 4.6.0)\n##   httpuv                                          1.6.16         2025-04-16 [2] CRAN (R 4.6.0)\n##   httr                                            1.4.8          2026-02-13 [2] CRAN (R 4.6.0)\n##   httr2                                           1.2.2          2025-12-08 [2] CRAN (R 4.6.0)\n##   hu6800.db                                       3.13.0         2026-03-06 [2] Bioconductor\n##   HuBMAPR                                         1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HubPub                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hues                                            0.2.0          2019-12-01 [2] CRAN (R 4.6.0)\n##   huge                                            1.5            2026-03-11 [2] CRAN (R 4.6.0)\n##   hugene10sttranscriptcluster.db                  8.8.0          2026-03-10 [2] Bioconductor\n##   human.db0                                       3.22.0         2026-03-06 [2] Bioconductor\n##   human370v1cCrlmm                                1.0.2          2026-03-06 [2] Bioconductor\n##   human610quadv1bCrlmm                            1.0.3          2026-03-06 [2] Bioconductor\n##   HumanAffyData                                   1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   humanCHRLOC                                     2.1.6          2026-03-06 [2] Bioconductor\n##   humanHippocampus2024                            1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   humanStemCell                                   0.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hummingbird                                     1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hunspell                                        3.0.6          2025-03-22 [2] CRAN (R 4.6.0)\n##   HVP                                             1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hwriter                                         1.3.2.1        2022-04-08 [2] CRAN (R 4.6.0)\n##   HybridExpress                                   1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   HybridMTest                                     1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hypeR                                           2.9.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hyperdraw                                       1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   hypergraph                                      1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iASeq                                           1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iasva                                           1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Ibex                                            1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ibh                                             1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iBMQ                                            1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iC10                                            2.0.2          2024-07-19 [2] CRAN (R 4.6.0)\n##   iC10TrainingData                                2.0.1          2024-07-16 [2] CRAN (R 4.6.0)\n##   ica                                             1.0-3          2022-07-08 [2] CRAN (R 4.6.0)\n##   iCARE                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iCellR                                          1.7.0          2025-10-28 [2] CRAN (R 4.6.0)\n##   Icens                                           1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   icetea                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iCheck                                          1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iChip                                           1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iClusterPlus                                    1.47.0         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   iCNV                                            1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iCOBRA                                          1.39.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ICS                                             1.4-2          2025-03-18 [2] CRAN (R 4.6.0)\n##   ICSNP                                           1.1-2          2023-09-18 [2] CRAN (R 4.6.0)\n##   ideal                                           2.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IdeoViz                                         1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   idiogram                                        1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IDPmisc                                         1.1.21         2024-02-08 [2] CRAN (R 4.6.0)\n##   idpr                                            1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   idr                                             1.3            2022-06-21 [2] CRAN (R 4.6.0)\n##   idr2d                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ids                                             1.0.1          2017-05-31 [2] CRAN (R 4.6.0)\n##   ieugwasr                                        1.1.0          2025-07-31 [2] CRAN (R 4.6.0)\n##   IFAA                                            1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   igblastr                                        1.1.23         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iGC                                             1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IgGeneUsage                                     1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   igraph                                          2.2.2          2026-02-12 [2] CRAN (R 4.6.0)\n##   igraphdata                                      1.0.1          2015-07-13 [2] CRAN (R 4.6.0)\n##   igvR                                            1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   igvShiny                                        1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IHW                                             1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IHWpaper                                        1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ijtiff                                          3.2.0          2026-01-26 [2] CRAN (R 4.6.0)\n##   Illumina450ProbeVariants.db                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IlluminaDataTestFiles                           1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IlluminaHumanMethylation450kanno.ilmn12.hg19    0.6.1          2026-03-06 [2] Bioconductor\n##   IlluminaHumanMethylation450kmanifest            0.4.0          2026-03-06 [2] Bioconductor\n##   IlluminaHumanMethylationEPICanno.ilm10b2.hg19   0.6.0          2026-03-06 [2] Bioconductor\n##   IlluminaHumanMethylationEPICanno.ilm10b4.hg19   0.6.0          2026-03-06 [2] Bioconductor\n##   IlluminaHumanMethylationEPICmanifest            0.3.0          2026-03-06 [2] Bioconductor\n##   IlluminaHumanMethylationEPICv2anno.20a1.hg38    1.0.1          2026-03-06 [2] Bioconductor\n##   IlluminaHumanMethylationEPICv2manifest          1.0.1          2026-03-06 [2] Bioconductor\n##   illuminaHumanv1.db                              1.26.0         2026-03-06 [2] Bioconductor\n##   illuminaHumanv2.db                              1.26.0         2026-03-10 [2] Bioconductor\n##   illuminaHumanv3.db                              1.26.0         2026-03-06 [2] Bioconductor\n##   illuminaHumanv4.db                              1.26.0         2026-03-06 [2] Bioconductor\n##   illuminaio                                      0.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ILoReg                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   imager                                          1.0.8          2025-12-23 [2] CRAN (R 4.6.0)\n##   imageTCGA                                       1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IMAS                                            1.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   imcdatasets                                     1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   imcRtools                                       1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iml                                             0.11.4         2025-02-24 [2] CRAN (R 4.6.0)\n##   IMMAN                                           1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   immApex                                         1.5.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   immReferent                                     0.99.6         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   immunoClust                                     1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   immunogenViewer                                 1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   immunotation                                    1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iModMix                                         1.1.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iModMixData                                     1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   imp4p                                           1.2            2021-09-02 [2] CRAN (R 4.6.0)\n##   IMPCdata                                        1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   import                                          1.3.4          2025-10-19 [2] CRAN (R 4.6.0)\n##   impute                                          1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   imputeLCMD                                      2.1            2022-06-10 [2] CRAN (R 4.6.0)\n##   inaparc                                         1.2.1          2025-09-14 [2] CRAN (R 4.6.0)\n##   INDEED                                          2.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ineq                                            0.2-13         2014-07-21 [2] CRAN (R 4.6.0)\n##   iNETgrate                                       1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iNEXT                                           3.0.2          2025-07-30 [2] CRAN (R 4.6.0)\n##   infercnv                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   infinityFlow                                    1.21.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   inflection                                      1.3.7          2025-07-17 [2] CRAN (R 4.6.0)\n##   Informeasure                                    1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   infotheo                                        1.2.0.1        2022-04-08 [2] CRAN (R 4.6.0)\n##   ini                                             0.3.1          2018-05-20 [2] CRAN (R 4.6.0)\n##   inline                                          0.3.21         2025-01-09 [2] CRAN (R 4.6.0)\n##   InPAS                                           2.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   INPower                                         1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   insight                                         1.4.6          2026-02-04 [2] CRAN (R 4.6.0)\n##   INSPEcT                                         1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   instantiate                                     0.2.3          2024-10-02 [2] CRAN (R 4.6.0)\n##   INTACT                                          1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   InTAD                                           1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   intansv                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   interacCircos                                   1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   InteractionSet                                  1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   InteractiveComplexHeatmap                       1.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   InterCellar                                     2.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IntEREst                                        1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   intergraph                                      2.0-4          2024-02-01 [2] CRAN (R 4.6.0)\n##   interp                                          1.1-6          2024-01-26 [2] CRAN (R 4.6.0)\n##   intervals                                       0.15.5         2024-08-23 [2] CRAN (R 4.6.0)\n##   IntramiRExploreR                                1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   intrinsicDimension                              1.2.0          2019-06-07 [2] CRAN (R 4.6.0)\n##   inum                                            1.0-5          2023-03-09 [2] CRAN (R 4.6.0)\n##   InvariantCausalPrediction                       0.8            2019-11-10 [2] CRAN (R 4.6.0)\n##   invgamma                                        1.2            2025-07-02 [2] CRAN (R 4.6.0)\n##   IONiseR                                         2.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iPath                                           1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ipdDb                                           1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ipflasso                                        1.1            2019-12-10 [2] CRAN (R 4.6.0)\n##   IPO                                             1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ipred                                           0.9-15         2024-07-18 [2] CRAN (R 4.6.0)\n##   IRanges                                         2.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IRdisplay                                       1.1            2022-01-04 [2] CRAN (R 4.6.0)\n##   IRkernel                                        1.3.2          2023-01-20 [2] CRAN (R 4.6.0)\n##   irlba                                           2.3.7          2026-01-30 [2] CRAN (R 4.6.0)\n##   irr                                             0.84.1         2019-01-26 [2] CRAN (R 4.6.0)\n##   isa2                                            0.3.6          2023-02-21 [2] CRAN (R 4.6.0)\n##   ISAnalytics                                     1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iscream                                         1.1.6          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEE                                            2.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEEde                                          1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEEfier                                        1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEEhex                                         1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEEhub                                         1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEEindex                                       1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEEpathways                                    1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEEtree                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSEEu                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iSeq                                            1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ISLET                                           1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   islify                                          1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Iso                                             0.0-21         2023-10-02 [2] CRAN (R 4.6.0)\n##   isoband                                         0.3.0          2025-12-07 [2] CRAN (R 4.6.0)\n##   isobar                                          1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IsoBayes                                        1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ISOcodes                                        2025.05.18     2025-05-18 [2] CRAN (R 4.6.0)\n##   IsoCorrectoR                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IsoCorrectoRGUI                                 1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IsoformSwitchAnalyzeR                           2.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ISoLDE                                          1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   isomiRs                                         1.39.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   isotree                                         0.6.1-5        2026-03-05 [2] CRAN (R 4.6.0)\n##   isva                                            1.9            2017-01-14 [2] CRAN (R 4.6.0)\n##   ITALICS                                         2.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ITALICSData                                     2.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iterativeBMA                                    1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iterativeBMAsurv                                1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   iterators                                       1.0.14         2022-02-05 [2] CRAN (R 4.6.0)\n##   itertools                                       0.1-3          2014-03-12 [2] CRAN (R 4.6.0)\n##   IVAS                                            2.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ivygapSE                                        1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   IWTomics                                        1.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Iyer517                                         1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   JADE                                            2.0-4          2023-09-17 [2] CRAN (R 4.6.0)\n##   janeaustenr                                     1.0.0          2022-08-26 [2] CRAN (R 4.6.0)\n##   janitor                                         2.2.1          2024-12-22 [2] CRAN (R 4.6.0)\n##   JASPAR2014                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   JASPAR2016                                      1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   JASPAR2018                                      1.1.1          2026-03-06 [2] Bioconductor\n##   JASPAR2020                                      0.99.10        2026-03-11 [2] Bioconductor\n##   JASPAR2022                                      0.99.8         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   JASPAR2024                                      0.99.7         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   jazzPanda                                       1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   JohnsonKinaseData                               1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   jomo                                            2.7-6          2023-04-15 [2] CRAN (R 4.6.0)\n##   jose                                            1.2.1          2024-10-04 [2] CRAN (R 4.6.0)\n##   jpeg                                            0.1-11         2025-03-21 [2] CRAN (R 4.6.0)\n##   jquerylib                                       0.1.4          2021-04-26 [2] CRAN (R 4.6.0)\n##   jsonlite                                        2.0.0          2025-03-27 [2] CRAN (R 4.6.0)\n##   jsonvalidate                                    1.5.0          2025-02-07 [2] CRAN (R 4.6.0)\n##   juicyjuice                                      0.1.0          2022-11-10 [2] CRAN (R 4.6.0)\n##   kableExtra                                      1.4.0          2024-01-24 [2] CRAN (R 4.6.0)\n##   karyoploteR                                     1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   katdetectr                                      1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   KBoost                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   KCsmart                                         2.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   kde1d                                           1.1.1          2025-06-12 [2] CRAN (R 4.6.0)\n##   kebabs                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   KEGGandMetacoreDzPathwaysGEO                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   KEGGdzPathwaysGEO                               1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   KEGGgraph                                       1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   KEGGlincs                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   keggorthology                                   2.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   KEGGREST                                        1.51.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Kendall                                         2.2.2          2025-12-22 [2] CRAN (R 4.6.0)\n##   keras                                           2.16.1         2026-02-14 [2] CRAN (R 4.6.0)\n##   KernelKnn                                       1.1.6          2025-09-15 [2] CRAN (R 4.6.0)\n##   kernelshap                                      0.9.1          2025-09-20 [2] CRAN (R 4.6.0)\n##   kernlab                                         0.9-33         2024-08-13 [2] CRAN (R 4.6.0)\n##   KernSmooth                                      2.23-26        2025-01-01 [3] CRAN (R 4.6.0)\n##   kerntools                                       1.2.1          2026-01-28 [2] CRAN (R 4.6.0)\n##   keys                                            0.1.1          2021-07-11 [2] CRAN (R 4.6.0)\n##   kidpack                                         1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   kinship2                                        1.9.6.2        2025-09-04 [2] CRAN (R 4.6.0)\n##   KinSwingR                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   kknn                                            1.4.1          2025-05-19 [2] CRAN (R 4.6.0)\n##   klaR                                            1.7-4          2026-02-23 [2] CRAN (R 4.6.0)\n##   kmcut                                           1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   kmer                                            1.1.3          2026-01-23 [2] CRAN (R 4.6.0)\n##   knitcitations                                   1.0.12         2021-01-10 [2] CRAN (R 4.6.0)\n##   knitr                                           1.51           2025-12-20 [2] CRAN (R 4.6.0)\n##   knitrBootstrap                                  1.0.4          2025-12-08 [2] CRAN (R 4.6.0)\n##   knn.covertree                                   1.1            2025-12-08 [2] CRAN (R 4.6.0)\n##   knnmi                                           1.0            2024-04-02 [2] CRAN (R 4.6.0)\n##   KnowSeq                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   knowYourCG                                      1.7.14         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   KOdata                                          1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   kohonen                                         3.0.13         2026-01-22 [2] CRAN (R 4.6.0)\n##   koinar                                          1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   koRpus                                          0.13-9         2026-02-03 [2] CRAN (R 4.6.0)\n##   koRpus.lang.en                                  0.1-4          2020-10-24 [2] CRAN (R 4.6.0)\n##   kpeaks                                          1.1.0          2020-02-08 [2] CRAN (R 4.6.0)\n##   kriging                                         1.2            2022-06-24 [2] CRAN (R 4.6.0)\n##   ks                                              1.15.1         2025-05-04 [2] CRAN (R 4.6.0)\n##   kSamples                                        1.2-12         2025-08-26 [2] CRAN (R 4.6.0)\n##   labdsv                                          2.1-2          2025-07-31 [2] CRAN (R 4.6.0)\n##   labeling                                        0.4.3          2023-08-29 [2] CRAN (R 4.6.0)\n##   labelled                                        2.16.0         2025-10-22 [2] CRAN (R 4.6.0)\n##   LACE                                            2.15.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LACHESIS                                        0.99.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   laeken                                          0.5.3          2024-01-25 [2] CRAN (R 4.6.0)\n##   LaF                                             0.8.6          2024-12-13 [2] CRAN (R 4.6.0)\n##   lambda.r                                        1.2.4          2019-09-18 [2] CRAN (R 4.6.0)\n##   LambertW                                        0.6.9-2        2025-08-21 [2] CRAN (R 4.6.0)\n##   lamW                                            2.2.6          2026-01-08 [2] CRAN (R 4.6.0)\n##   LaplacesDemon                                   16.1.8         2026-02-17 [2] CRAN (R 4.6.0)\n##   lars                                            1.3            2022-04-13 [2] CRAN (R 4.6.0)\n##   later                                           1.4.8          2026-03-05 [2] CRAN (R 4.6.0)\n##   latex2exp                                       0.9.8          2026-01-09 [2] CRAN (R 4.6.0)\n##   lattice                                         0.22-9         2026-02-09 [3] CRAN (R 4.6.0)\n##   latticeExtra                                    0.6-31         2025-09-10 [2] CRAN (R 4.6.0)\n##   lava                                            1.8.2          2025-10-30 [2] CRAN (R 4.6.0)\n##   lavaan                                          0.6-21         2025-12-21 [2] CRAN (R 4.6.0)\n##   lazyeval                                        0.2.2          2019-03-15 [2] CRAN (R 4.6.0)\n##   LBE                                             1.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lbfgs                                           1.2.1.2        2022-06-23 [2] CRAN (R 4.6.0)\n##   lcmsPlot                                        0.99.17        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ldblock                                         1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LDlinkR                                         1.4.0          2024-04-10 [2] CRAN (R 4.6.0)\n##   LEA                                             3.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   leaflet                                         2.2.3          2025-09-04 [2] CRAN (R 4.6.0)\n##   leaflet.providers                               2.0.0          2023-10-17 [2] CRAN (R 4.6.0)\n##   leapR                                           0.99.8         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   leaps                                           3.2            2024-06-10 [2] CRAN (R 4.6.0)\n##   LearnBayes                                      2.15.2         2026-01-31 [2] CRAN (R 4.6.0)\n##   learnr                                          0.11.6         2025-11-13 [2] CRAN (R 4.6.0)\n##   LedPred                                         1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   leeBamViews                                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lefser                                          1.21.7         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LegATo                                          1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   leiden                                          0.4.3.1        2023-11-17 [2] CRAN (R 4.6.0)\n##   leidenAlg                                       1.1.6          2026-03-06 [2] CRAN (R 4.6.0)\n##   leidenbase                                      0.1.36         2025-12-16 [2] CRAN (R 4.6.0)\n##   lemur                                           1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   les                                             1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   leukemiasEset                                   1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   levi                                            1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lexicon                                         1.2.1          2019-03-21 [2] CRAN (R 4.6.0)\n##   lfa                                             2.11.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lfda                                            1.1.3          2019-07-31 [2] CRAN (R 4.6.0)\n##   lgr                                             0.5.2          2026-01-30 [2] CRAN (R 4.6.0)\n##   Lheuristic                                      1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lhs                                             1.2.1          2026-03-01 [2] CRAN (R 4.6.0)\n##   libcoin                                         1.0-11         2026-03-06 [2] CRAN (R 4.6.0)\n##   LiblineaR                                       2.10-24        2024-09-13 [2] CRAN (R 4.6.0)\n##   LiebermanAidenHiC2009                           0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lifecycle                                       1.0.5          2026-01-08 [2] CRAN (R 4.6.0)\n##   lime                                            0.5.4          2025-12-11 [2] CRAN (R 4.6.0)\n##   limma                                           3.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   limmaGUI                                        1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   limpa                                           1.3.8          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   limpca                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LimROTS                                         1.3.15         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   limSolve                                        2.0.1          2025-06-24 [2] CRAN (R 4.6.0)\n##   lineagespot                                     1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LinkHD                                          1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   linkSet                                         1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Linnorm                                         2.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   linprog                                         0.9-6          2026-01-19 [2] CRAN (R 4.6.0)\n##   lintr                                           3.3.0-1        2025-11-27 [2] CRAN (R 4.6.0)\n##   lionessR                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lipidr                                          2.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LipidTrend                                      1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LiquidAssociation                               1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lisaClust                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   listenv                                         0.10.1         2026-03-10 [2] CRAN (R 4.6.0)\n##   ListerEtAlBSseq                                 1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   listviewer                                      4.0.0          2023-09-30 [2] CRAN (R 4.6.0)\n##   litedown                                        0.9            2025-12-18 [2] CRAN (R 4.6.0)\n##   liver                                           1.27           2026-02-18 [2] CRAN (R 4.6.0)\n##   lmdme                                           1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lme4                                            2.0-1          2026-03-05 [2] CRAN (R 4.6.0)\n##   lmerTest                                        3.2-1          2026-03-05 [2] CRAN (R 4.6.0)\n##   lmodel2                                         1.7-4          2024-12-05 [2] CRAN (R 4.6.0)\n##   lmom                                            3.2            2024-09-30 [2] CRAN (R 4.6.0)\n##   Lmoments                                        1.3-2          2025-09-18 [2] CRAN (R 4.6.0)\n##   lmtest                                          0.9-40         2022-03-21 [2] CRAN (R 4.6.0)\n##   LOBSTAHS                                        1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lobstr                                          1.2.0          2026-02-18 [2] CRAN (R 4.6.0)\n##   locfdr                                          1.1-8          2015-07-15 [2] CRAN (R 4.6.0)\n##   locfit                                          1.5-9.12       2025-03-05 [2] CRAN (R 4.6.0)\n##   loci2path                                       1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   locStra                                         1.9            2022-04-12 [2] CRAN (R 4.6.0)\n##   log4r                                           0.4.4          2024-10-12 [2] CRAN (R 4.6.0)\n##   logger                                          0.4.1          2025-09-11 [2] CRAN (R 4.6.0)\n##   logging                                         0.10-108       2019-07-14 [2] CRAN (R 4.6.0)\n##   logicFS                                         2.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LogicReg                                        1.6.6          2023-08-08 [2] CRAN (R 4.6.0)\n##   logistf                                         1.26.1         2025-04-16 [2] CRAN (R 4.6.0)\n##   logitnorm                                       0.8.39         2024-01-24 [2] CRAN (R 4.6.0)\n##   logNormReg                                      0.5-0          2021-11-08 [2] CRAN (R 4.6.0)\n##   logr                                            1.3.9          2025-03-26 [2] CRAN (R 4.6.0)\n##   lokern                                          1.1-12         2024-07-30 [2] CRAN (R 4.6.0)\n##   LOLA                                            1.41.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   longitudinal                                    1.1.13         2021-11-13 [2] CRAN (R 4.6.0)\n##   loo                                             2.9.0          2025-12-23 [2] CRAN (R 4.6.0)\n##   looking4clusters                                1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LoomExperiment                                  1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LPE                                             1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lpNet                                           2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lpSolve                                         5.6.23         2024-12-14 [2] CRAN (R 4.6.0)\n##   lpSolveAPI                                      5.5.2.0-17.15  2026-02-13 [2] CRAN (R 4.6.0)\n##   lpsymphony                                      1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LRBaseDbi                                       2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LRcell                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LRcellTypeMarkers                               1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lsa                                             0.73.4         2026-01-11 [2] CRAN (R 4.6.0)\n##   LSD                                             4.1-0          2020-06-17 [2] CRAN (R 4.6.0)\n##   lsr                                             0.5.2          2021-12-01 [2] CRAN (R 4.6.0)\n##   lubridate                                       1.9.5          2026-02-04 [2] CRAN (R 4.6.0)\n##   lumi                                            2.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lumiBarnes                                      1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lumiHumanAll.db                                 1.22.0         2026-03-06 [2] Bioconductor\n##   lumiHumanIDMapping                              1.10.1         2026-03-06 [2] Bioconductor\n##   LungCancerACvsSCCGEO                            1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LungCancerLines                                 0.49.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lungExpression                                  0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   lwgeom                                          0.2-15         2026-01-12 [2] CRAN (R 4.6.0)\n##   lydata                                          1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LymphoSeq                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   LymphoSeqDB                                     0.99.2         2026-03-06 [2] Bioconductor\n##   M3C                                             1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   M3DExampleData                                  1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   M3Drop                                          1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   m6Aboost                                        1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Maaslin2                                        1.25.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   maaslin3                                        1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Macarron                                        1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   maCorrPlot                                      1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   macrophage                                      1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MACSdata                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MACSQuantifyR                                   1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MACSr                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   made4                                           1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   maEndToEnd                                      2.31.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   MafDb.1Kgenomes.phase1.hs37d5                   3.10.0         2026-03-06 [2] Bioconductor\n##   MafDb.1Kgenomes.phase3.GRCh38                   3.10.0         2026-03-06 [2] Bioconductor\n##   MafDb.1Kgenomes.phase3.hs37d5                   3.10.0         2026-03-06 [2] Bioconductor\n##   MafDb.ExAC.r1.0.hs37d5                          3.10.0         2026-03-06 [2] Bioconductor\n##   MafDb.gnomADex.r2.1.hs37d5                      3.10.0         2026-03-06 [2] Bioconductor\n##   MafH5.gnomAD.v4.0.GRCh38                        3.19.0         2026-03-06 [2] Bioconductor\n##   maftools                                        2.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   magic                                           1.6-1          2022-11-16 [2] CRAN (R 4.6.0)\n##   magicaxis                                       2.5.1          2025-09-02 [2] CRAN (R 4.6.0)\n##   magick                                          2.9.1          2026-02-28 [2] CRAN (R 4.6.0)\n##   magpie                                          1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   magrene                                         1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   magrittr                                        2.0.4          2025-09-12 [2] CRAN (R 4.6.0)\n##   MAI                                             1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MAIT                                            1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   makecdfenv                                      1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MALDIquant                                      1.22.3         2024-08-19 [2] CRAN (R 4.6.0)\n##   MALDIquantForeign                               0.14.1         2024-01-22 [2] CRAN (R 4.6.0)\n##   mammaPrintData                                  1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   manipulateWidget                                0.11.2         2026-01-13 [2] CRAN (R 4.6.0)\n##   MANOR                                           1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MantelCorr                                      1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MAPFX                                           1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mapplots                                        1.5.3          2025-06-26 [2] CRAN (R 4.6.0)\n##   mapproj                                         1.2.12         2025-05-19 [2] CRAN (R 4.6.0)\n##   maPredictDSC                                    1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   maps                                            3.4.3          2025-05-26 [2] CRAN (R 4.6.0)\n##   mapscape                                        1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   maptree                                         1.4-9          2025-07-22 [2] CRAN (R 4.6.0)\n##   maqcExpression4plex                             1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MAQCsubset                                      1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mariner                                         1.11.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   marinerData                                     1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   markdown                                        2.0            2025-03-23 [2] CRAN (R 4.6.0)\n##   markeR                                          1.1.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   marr                                            1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   marray                                          1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   maser                                           1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mashr                                           0.2.79         2023-10-18 [2] CRAN (R 4.6.0)\n##   maSigPro                                        1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   maskBAD                                         1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MASS                                            7.3-65         2025-02-28 [3] CRAN (R 4.6.0)\n##   MassArray                                       1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   massiR                                          1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MassSpecWavelet                                 1.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MAST                                            1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mastR                                           1.11.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   matchBox                                        1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   matchingR                                       2.0.0          2025-09-23 [2] CRAN (R 4.6.0)\n##   MatchIt                                         4.7.2          2025-05-30 [2] CRAN (R 4.6.0)\n##   mathjaxr                                        2.0-0          2025-12-01 [2] CRAN (R 4.6.0)\n##   matlab                                          1.0.4.1        2024-07-01 [2] CRAN (R 4.6.0)\n##   Matrix                                          1.7-4          2025-08-28 [3] CRAN (R 4.6.0)\n##   matrixcalc                                      1.0-6          2022-09-14 [2] CRAN (R 4.6.0)\n##   MatrixCorrelation                               0.10.1         2025-07-28 [2] CRAN (R 4.6.0)\n##   MatrixEQTL                                      2.3            2019-12-22 [2] CRAN (R 4.6.0)\n##   MatrixExtra                                     0.1.15         2024-01-22 [2] CRAN (R 4.6.0)\n##   MatrixGenerics                                  1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MatrixModels                                    0.5-4          2025-03-26 [2] CRAN (R 4.6.0)\n##   MatrixQCvis                                     1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MatrixRider                                     1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   matrixStats                                     1.5.0          2025-01-07 [2] CRAN (R 4.6.0)\n##   matrixTests                                     0.2.3.1        2025-10-17 [2] CRAN (R 4.6.0)\n##   matter                                          2.13.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   maxLik                                          1.5-2.2        2025-12-29 [2] CRAN (R 4.6.0)\n##   maxstat                                         0.7-26         2025-05-02 [2] CRAN (R 4.6.0)\n##   MBA                                             0.1-2          2024-09-23 [2] CRAN (R 4.6.0)\n##   MBAmethyl                                       1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MBASED                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MBCB                                            1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MBECS                                           1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mbest                                           0.6.1          2025-04-24 [2] CRAN (R 4.6.0)\n##   mbkmeans                                        1.27.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mboost                                          2.9-11         2024-08-22 [2] CRAN (R 4.6.0)\n##   mBPCR                                           1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MBQN                                            2.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mbQTL                                           1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MBttest                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MCbiclust                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mcbiopi                                         1.1.7          2026-01-25 [2] CRAN (R 4.6.0)\n##   MCL                                             1.0            2015-03-11 [2] CRAN (R 4.6.0)\n##   mclust                                          6.1.2          2025-10-31 [2] CRAN (R 4.6.0)\n##   mclustcomp                                      0.3.5          2025-09-22 [2] CRAN (R 4.6.0)\n##   mcmc                                            0.9-8          2023-11-16 [2] CRAN (R 4.6.0)\n##   MCMCglmm                                        2.36           2024-05-06 [2] CRAN (R 4.6.0)\n##   MCMCpack                                        1.7-1          2024-08-27 [2] CRAN (R 4.6.0)\n##   MCMCprecision                                   0.4.2          2025-07-22 [2] CRAN (R 4.6.0)\n##   mco                                             1.17           2024-08-19 [2] CRAN (R 4.6.0)\n##   mcprogress                                      0.1.1          2024-09-26 [2] CRAN (R 4.6.0)\n##   mcr                                             1.3.3.1        2024-09-23 [2] CRAN (R 4.6.0)\n##   mCSEA                                           1.31.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mCSEAdata                                       1.31.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mcsurvdata                                      1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mdendro                                         2.2.3          2025-09-04 [2] CRAN (R 4.6.0)\n##   mdp                                             1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mdqc                                            1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MDSvis                                          0.99.7         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MDTS                                            1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MEAL                                            1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MeasurementError.cor                            1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MEAT                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MEB                                             1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mediation                                       4.5.1          2025-06-07 [2] CRAN (R 4.6.0)\n##   MEDIPS                                          1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MEDIPSData                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MEDME                                           1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MEEBOdata                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mefa                                            3.2-10         2025-07-13 [2] CRAN (R 4.6.0)\n##   megadepth                                       1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MEIGOR                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Melissa                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   memes                                           1.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   memoise                                         2.0.1          2021-11-26 [2] CRAN (R 4.6.0)\n##   memuse                                          4.2-3          2023-01-24 [2] CRAN (R 4.6.0)\n##   MerfishData                                     1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Mergeomics                                      1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MeSHDbi                                         1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   meshes                                          1.37.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   meshr                                           2.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MesKit                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MESS                                            0.6.0          2025-09-13 [2] CRAN (R 4.6.0)\n##   messina                                         1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   meta                                            8.2-1          2025-09-01 [2] CRAN (R 4.6.0)\n##   metabCombiner                                   1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metabinR                                        1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaboAnnotation                                1.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaboCoreUtils                                 1.19.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaboDynamics                                  2.1.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metaboliteIDmapping                             1.0.0          2026-03-11 [2] Bioconductor\n##   metabolomicsWorkbenchR                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metabomxtr                                      1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaboSignal                                    1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metaCCA                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaCycle                                       1.2.1          2026-02-02 [2] CRAN (R 4.6.0)\n##   metadat                                         1.4-0          2025-02-04 [2] CRAN (R 4.6.0)\n##   MetaDICT                                        1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metafor                                         4.8-0          2025-01-28 [2] CRAN (R 4.6.0)\n##   metagene2                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metagenomeSeq                                   1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaGxBreast                                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaGxOvarian                                   1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaGxPancreas                                  1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metahdep                                        1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metaMS                                          1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metaMSdata                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetaNeighbor                                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metap                                           1.13           2025-12-18 [2] CRAN (R 4.6.0)\n##   MetaPhOR                                        1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metapod                                         1.19.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metapone                                        1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metaRNASeq                                      1.0.8          2025-03-26 [2] CRAN (R 4.6.0)\n##   MetaScope                                       1.99.10        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metaSeq                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetBrewer                                       0.2.0          2022-03-21 [2] CRAN (R 4.6.0)\n##   MetCirc                                         1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methimpute                                      1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methInheritSim                                  1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methodical                                      1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methods                                       * 4.6.0          2026-03-06 [3] local\n##   MethPed                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MethReg                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methrix                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MethTargetedNGS                                 1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MethylAid                                       1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MethylAidData                                   1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylationArrayAnalysis                        1.35.2         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylCC                                        1.25.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylclock                                     1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylclockData                                 1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylGSA                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methyLImp2                                      1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylInheritance                               1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylKit                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MethylMix                                       2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylMnM                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylPipe                                      1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylscaper                                    1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MethylSeekR                                     1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MethylSeqData                                   1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   methylumi                                       2.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetID                                           1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetMashR                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MetNet                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   metR                                            0.18.3         2025-12-09 [2] CRAN (R 4.6.0)\n##   metrica                                         2.1.0          2024-06-30 [2] CRAN (R 4.6.0)\n##   Metrics                                         0.1.4          2018-07-09 [2] CRAN (R 4.6.0)\n##   mets                                            1.3.9          2026-01-11 [2] CRAN (R 4.6.0)\n##   mfa                                             1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Mfuzz                                           2.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mgcv                                            1.9-4          2025-11-07 [3] CRAN (R 4.6.0)\n##   MGFM                                            1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MGFR                                            1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MGLM                                            0.2.1          2022-04-13 [2] CRAN (R 4.6.0)\n##   MGnifyR                                         1.7.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mgsa                                            1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mgsub                                           1.7.3          2021-07-28 [2] CRAN (R 4.6.0)\n##   mhsmm                                           0.4.21         2023-08-23 [2] CRAN (R 4.6.0)\n##   mia                                             1.19.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miaDash                                         1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miaSim                                          1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miaTime                                         1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miaViz                                          1.19.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mice                                            3.19.0         2025-12-10 [2] CRAN (R 4.6.0)\n##   miceadds                                        3.18-36        2025-09-12 [2] CRAN (R 4.6.0)\n##   MiChip                                          1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   microbenchmark                                  1.5.0          2024-09-04 [2] CRAN (R 4.6.0)\n##   microbiome                                      1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MicrobiomeBenchmarkData                         1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   microbiomeDASim                                 1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   microbiomeDataSets                              1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   microbiomeExplorer                              1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MicrobiomeProfiler                              1.17.1         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   MicrobiomeStat                                  1.4            2026-03-03 [2] CRAN (R 4.6.0)\n##   MicrobiotaProcess                               1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   microRNA                                        1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   microRNAome                                     1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   microSTASIS                                     1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MICSQTL                                         1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   midasHLA                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mimager                                         1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mime                                            0.13           2025-03-17 [2] CRAN (R 4.6.0)\n##   mina                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MineICA                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   minerva                                         1.5.10         2021-06-17 [2] CRAN (R 4.6.0)\n##   minet                                           3.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   minfi                                           1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   minfiData                                       0.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   minfiDataEPIC                                   1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MinimumDistance                                 1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   minionSummaryData                               1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miniUI                                          0.1.2          2025-04-17 [2] CRAN (R 4.6.0)\n##   minpack.lm                                      1.2-4          2023-09-11 [2] CRAN (R 4.6.0)\n##   minqa                                           1.2.8          2024-08-17 [2] CRAN (R 4.6.0)\n##   minty                                           0.0.6          2026-01-23 [2] CRAN (R 4.6.0)\n##   MiPP                                            1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miQC                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MIRA                                            1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MiRaGE                                          1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mirai                                           2.6.1          2026-03-02 [2] CRAN (R 4.6.0)\n##   miRBaseConverter                                1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miRBaseVersions.db                              1.1.0          2026-03-06 [2] Bioconductor\n##   miRcomp                                         1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miRcompData                                     1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mirIntegrator                                   1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MIRit                                           1.7.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miRLAB                                          1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mirna10cdf                                      2.18.0         2026-03-06 [2] Bioconductor\n##   miRNAmeConverter                                1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miRNApath                                       1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miRNAtap                                        1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miRNAtap.db                                     0.99.10        2026-03-06 [2] Bioconductor\n##   miRNATarget                                     1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miRSM                                           2.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   miRspongeR                                      2.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mirt                                            1.46.1         2026-03-07 [2] CRAN (R 4.6.0)\n##   mirTarRnaSeq                                    1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   misc3d                                          0.9-2          2026-01-28 [2] CRAN (R 4.6.0)\n##   miscTools                                       0.6-30         2026-01-20 [2] CRAN (R 4.6.0)\n##   missForest                                      1.6.1          2025-10-26 [2] CRAN (R 4.6.0)\n##   missMDA                                         1.21           2026-02-12 [2] CRAN (R 4.6.0)\n##   missMethyl                                      1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   missRows                                        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mist                                            1.3.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mistyR                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mitch                                           1.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mitml                                           0.4-5          2023-03-08 [2] CRAN (R 4.6.0)\n##   mitoClone2                                      1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mitology                                        1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mitools                                         2.4            2019-04-26 [2] CRAN (R 4.6.0)\n##   mixOmics                                        6.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mixsmsn                                         1.1-12         2026-01-21 [2] CRAN (R 4.6.0)\n##   mixsqp                                          0.3-54         2023-12-20 [2] CRAN (R 4.6.0)\n##   mixtools                                        2.0.0.1        2025-03-08 [2] CRAN (R 4.6.0)\n##   MKdescr                                         0.9            2025-09-10 [2] CRAN (R 4.6.0)\n##   MKinfer                                         1.3            2025-12-15 [2] CRAN (R 4.6.0)\n##   MKmisc                                          1.9            2022-11-19 [2] CRAN (R 4.6.0)\n##   mlapi                                           0.1.1          2022-04-24 [2] CRAN (R 4.6.0)\n##   mlbench                                         2.1-7          2026-02-18 [2] CRAN (R 4.6.0)\n##   MLeval                                          0.3            2020-02-12 [2] CRAN (R 4.6.0)\n##   MLInterfaces                                    1.91.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MLmetrics                                       1.1.3          2024-04-13 [2] CRAN (R 4.6.0)\n##   MLP                                             1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mlr                                             2.19.3         2025-08-22 [2] CRAN (R 4.6.0)\n##   mlr3                                            1.5.0          2026-02-27 [2] CRAN (R 4.6.0)\n##   mlr3learners                                    0.14.0         2025-12-13 [2] CRAN (R 4.6.0)\n##   mlr3mbo                                         1.0.0          2026-02-27 [2] CRAN (R 4.6.0)\n##   mlr3measures                                    1.2.0          2025-11-25 [2] CRAN (R 4.6.0)\n##   mlr3misc                                        0.21.0         2026-02-26 [2] CRAN (R 4.6.0)\n##   mlr3pipelines                                   0.11.0         2026-03-01 [2] CRAN (R 4.6.0)\n##   mlr3tuning                                      1.5.1          2025-12-14 [2] CRAN (R 4.6.0)\n##   mlrMBO                                          1.1.6          2026-03-01 [2] CRAN (R 4.6.0)\n##   MLSeq                                           2.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mltools                                         0.3.5          2018-05-12 [2] CRAN (R 4.6.0)\n##   mmand                                           1.6.3          2023-02-07 [2] CRAN (R 4.6.0)\n##   MMDiff2                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MMDiffBamSubset                                 1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MMUPHin                                         1.99.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mnem                                            1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mnormt                                          2.1.2          2026-01-27 [2] CRAN (R 4.6.0)\n##   moanin                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mobileRNA                                       1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mockery                                         0.4.5          2025-09-04 [2] CRAN (R 4.6.0)\n##   mockr                                           0.2.2          2025-05-01 [2] CRAN (R 4.6.0)\n##   MODA                                            1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ModCon                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   modeest                                         2.4.0          2019-11-18 [2] CRAN (R 4.6.0)\n##   ModelMetrics                                    1.2.2.2        2020-03-17 [2] CRAN (R 4.6.0)\n##   modelr                                          0.1.11         2023-03-22 [2] CRAN (R 4.6.0)\n##   modeltools                                      0.2-24         2025-05-02 [2] CRAN (R 4.6.0)\n##   Modstrings                                      1.27.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MOFA2                                           1.21.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MOFAdata                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MOGAMUN                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mogsa                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MoleculeExperiment                              1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MOMA                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   moments                                         0.14.1         2022-05-02 [2] CRAN (R 4.6.0)\n##   monaLisa                                        1.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   monocle                                         2.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MonoPoly                                        0.3-10         2019-04-24 [2] CRAN (R 4.6.0)\n##   Moonlight2R                                     1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MoonlightR                                      1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mosaicCore                                      0.9.5          2025-07-30 [2] CRAN (R 4.6.0)\n##   mosaics                                         2.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mosaicsExample                                  1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MOSClip                                         1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mosdef                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MOSim                                           2.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Motif2Site                                      1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   motifbreakR                                     2.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   motifcounter                                    1.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MotifDb                                         1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   motifmatchr                                     1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MotifPeeker                                     1.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   motifStack                                      1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   motifTestR                                      1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mouse4302.db                                    3.13.0         2026-03-06 [2] Bioconductor\n##   mouse4302barcodevecs                            1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mouse4302cdf                                    2.18.0         2026-03-06 [2] Bioconductor\n##   mouse4302frmavecs                               1.5.0          2026-03-06 [2] Bioconductor\n##   MouseAgingData                                  1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MouseFM                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MouseGastrulationData                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MouseThymusAgeing                               1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MPAC                                            1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mpath                                           0.4-2.26       2024-06-27 [2] CRAN (R 4.6.0)\n##   MPFE                                            1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mpm                                             1.0-23         2022-04-01 [2] CRAN (R 4.6.0)\n##   MPO.db                                          0.99.8         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   mpra                                            1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MPRAnalyze                                      1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mrfDepth                                        1.0.17         2024-05-24 [2] CRAN (R 4.6.0)\n##   mRMRe                                           2.1.2.2        2024-11-05 [2] CRAN (R 4.6.0)\n##   msa                                             1.43.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSA2dist                                        1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsBackendMassbank                               1.19.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsBackendMetaboLights                           1.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsBackendMgf                                    1.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsBackendMsp                                    1.15.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsBackendRawFileReader                          1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsBackendSql                                    1.11.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsCoreUtils                                     1.23.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msd16s                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msdata                                          0.51.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsDataHub                                       1.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msentropy                                       0.1.4          2023-08-07 [2] CRAN (R 4.6.0)\n##   MsExperiment                                    1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsFeatures                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msgbsR                                          1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msigdb                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msigdbr                                         26.1.0         2026-03-12 [2] CRAN (R 4.6.0)\n##   msImpute                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mslp                                            1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msm                                             1.8.2          2024-11-07 [2] CRAN (R 4.6.0)\n##   MSMB                                            1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msmsEDA                                         1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msmsTests                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSnbase                                         2.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSnID                                           1.45.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mspms                                           1.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSPrep                                          1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msPurity                                        1.37.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msPurityData                                    1.39.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msqc1                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   msqrob2                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MsQuality                                       1.11.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstats                                         4.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsBig                                      1.9.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsBioNet                                   1.3.5          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsConvert                                  1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsLiP                                      1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsLOBD                                     1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsPTM                                      2.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsQC                                       2.29.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsQCgui                                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsResponse                                 1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsShiny                                    1.13.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MSstatsTMT                                      2.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mstate                                          0.3.3          2024-07-11 [2] CRAN (R 4.6.0)\n##   mtbls2                                          1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MTLR                                            0.2.1          2019-06-03 [2] CRAN (R 4.6.0)\n##   MuData                                          1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MUGAExampleData                                 1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Mulcom                                          1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   muleaData                                       1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multcomp                                        1.4-30         2026-03-09 [2] CRAN (R 4.6.0)\n##   multcompView                                    0.1-11         2026-02-16 [2] CRAN (R 4.6.0)\n##   MultiAssayExperiment                            1.37.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MultiBaC                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multiClust                                      1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multicool                                       1.0.1          2024-02-05 [2] CRAN (R 4.6.0)\n##   multicrispr                                     1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MultiDataSet                                    1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multiGSEA                                       1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multiHiCcompare                                 1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MultiMed                                        2.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multiMiR                                        1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MultimodalExperiment                            1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MultiRNAflow                                    1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multiscan                                       1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multistateQTL                                   2.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multitaper                                      1.0-17         2023-07-20 [2] CRAN (R 4.6.0)\n##   multiWGCNA                                      1.9.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multiWGCNAdata                                  1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   multtest                                        2.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MuMIn                                           1.48.11        2025-04-01 [2] CRAN (R 4.6.0)\n##   mumosa                                          1.19.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MungeSumstats                                   1.19.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Mus.musculus                                    1.3.1          2026-03-06 [2] Bioconductor\n##   muscat                                          1.25.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   muscData                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   muscle                                          3.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   musicatk                                        2.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   muSpaData                                       1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MutationalPatterns                              3.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mutoss                                          0.1-14         2026-01-08 [2] CRAN (R 4.6.0)\n##   mutscan                                         1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MutSeqR                                         0.99.9         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MutSeqRData                                     0.99.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   MUVR2                                           0.1.0          2024-09-16 [2] CRAN (R 4.6.0)\n##   MVCClass                                        1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mvnfast                                         0.2.8          2023-02-23 [2] CRAN (R 4.6.0)\n##   mvoutData                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mvoutlier                                       2.1.4          2026-02-26 [2] CRAN (R 4.6.0)\n##   mvtnorm                                         1.3-5          2026-03-11 [2] CRAN (R 4.6.0)\n##   MWASTools                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mwcsr                                           0.1.10         2025-11-05 [2] CRAN (R 4.6.0)\n##   mycor                                           0.1.1          2018-04-10 [2] CRAN (R 4.6.0)\n##   mygene                                          1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   myvariant                                       1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mzID                                            1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   mzR                                             2.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nabor                                           0.5.0          2018-07-11 [2] CRAN (R 4.6.0)\n##   NADfinder                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   naivebayes                                      1.0.0          2024-03-16 [2] CRAN (R 4.6.0)\n##   naniar                                          1.1.0          2024-03-05 [2] CRAN (R 4.6.0)\n##   nanoarrow                                       0.8.0          2026-02-10 [2] CRAN (R 4.6.0)\n##   NanoMethViz                                     3.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nanonext                                        1.8.1          2026-03-08 [2] CRAN (R 4.6.0)\n##   nanoparquet                                     0.4.3          2025-12-17 [2] CRAN (R 4.6.0)\n##   NanoporeRNASeq                                  1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NanoStringDiff                                  1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NanoStringNCTools                               1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nanotime                                        0.3.13         2026-03-09 [2] CRAN (R 4.6.0)\n##   NanoTube                                        1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nanotubes                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nat                                             1.8.25         2025-08-18 [2] CRAN (R 4.6.0)\n##   nat.utils                                       0.6.1          2023-06-07 [2] CRAN (R 4.6.0)\n##   naturalsort                                     0.1.3          2016-08-30 [2] CRAN (R 4.6.0)\n##   NBAMSeq                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NbClust                                         3.0.1          2022-05-02 [2] CRAN (R 4.6.0)\n##   NBPSeq                                          0.3.1          2022-06-09 [2] CRAN (R 4.6.0)\n##   ncdf4                                           1.24           2025-03-25 [2] CRAN (R 4.6.0)\n##   ncdfFlow                                        2.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ncGTW                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NCIgraph                                        1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NCIgraphData                                    1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NCmisc                                          1.3.1          2026-02-19 [2] CRAN (R 4.6.0)\n##   ncRNAtools                                      1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ndexr                                           1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Nebulosa                                        1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nempi                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NestLink                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NetActivity                                     1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NetActivityData                                 1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   netboost                                        2.19.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   netgsa                                          4.0.7          2026-01-16 [2] CRAN (R 4.6.0)\n##   nethet                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NetPathMiner                                    1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   netprioR                                        1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NetRep                                          1.2.9          2025-10-23 [2] CRAN (R 4.6.0)\n##   netresponse                                     1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NetSAM                                          1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   netSmooth                                       1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   network                                         1.20.0         2026-02-07 [2] CRAN (R 4.6.0)\n##   networkD3                                       0.4.1          2025-04-14 [2] CRAN (R 4.6.0)\n##   Neve2006                                        0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NGLVieweR                                       1.4.0          2024-11-22 [2] CRAN (R 4.6.0)\n##   NGScopyData                                     1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ngsReports                                      2.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NHPoisson                                       3.4            2026-01-26 [2] CRAN (R 4.6.0)\n##   nipals                                          1.0            2024-12-02 [2] CRAN (R 4.6.0)\n##   nipalsMCIA                                      1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NISTunits                                       1.0.1          2016-08-11 [2] CRAN (R 4.6.0)\n##   nlcv                                            0.3.6          2025-05-06 [2] CRAN (R 4.6.0)\n##   nleqslv                                         3.3.6          2026-03-05 [2] CRAN (R 4.6.0)\n##   nlme                                            3.1-168        2025-03-31 [3] CRAN (R 4.6.0)\n##   nloptr                                          2.2.1          2025-03-17 [2] CRAN (R 4.6.0)\n##   NLP                                             0.3-2          2024-11-20 [2] CRAN (R 4.6.0)\n##   nls2                                            0.3-4          2024-07-14 [2] CRAN (R 4.6.0)\n##   NMF                                             0.28           2024-08-22 [2] CRAN (R 4.6.0)\n##   NMFN                                            2.0.1          2022-06-23 [2] CRAN (R 4.6.0)\n##   NMI                                             2.0            2016-08-20 [2] CRAN (R 4.6.0)\n##   nmrdata                                         1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NMRphasing                                      1.0.7          2025-06-24 [2] CRAN (R 4.6.0)\n##   nnet                                            7.3-20         2025-01-01 [3] CRAN (R 4.6.0)\n##   nnlasso                                         0.3            2016-03-10 [2] CRAN (R 4.6.0)\n##   nnls                                            1.6            2024-10-23 [2] CRAN (R 4.6.0)\n##   nnNorm                                          2.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nnSVG                                           1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nnTensor                                        1.3.0          2024-05-13 [2] CRAN (R 4.6.0)\n##   NOISeq                                          2.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nondetects                                      2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nor1mix                                         1.3-3          2024-04-06 [2] CRAN (R 4.6.0)\n##   NoRCE                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   norm                                            1.0-11.1       2023-06-18 [2] CRAN (R 4.6.0)\n##   normalize450K                                   1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NormalyzerDE                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NormqPCR                                        1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   normr                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nortest                                         1.0-4          2015-07-30 [2] CRAN (R 4.6.0)\n##   notame                                          1.1.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   notameStats                                     1.1.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   notameViz                                       1.1.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   np                                              0.60-20        2026-02-12 [2] CRAN (R 4.6.0)\n##   NPARC                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   npGSEA                                          1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nsga2R                                          1.1            2022-05-23 [2] CRAN (R 4.6.0)\n##   NTW                                             1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nucleoSim                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nucleR                                          2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nuCpos                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nullranges                                      1.17.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   nullrangesData                                  1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   numbers                                         0.9-2          2025-11-20 [2] CRAN (R 4.6.0)\n##   numDeriv                                        2016.8-1.1     2019-06-06 [2] CRAN (R 4.6.0)\n##   NuPoP                                           2.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   NxtIRFdata                                      1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OAtools                                         0.99.13        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   objectProperties                                0.6.8          2022-05-02 [2] CRAN (R 4.6.0)\n##   objectSignals                                   0.10.3         2022-04-05 [2] CRAN (R 4.6.0)\n##   ObMiTi                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   occugene                                        1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OCplus                                          1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   oct4                                            1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   octad.db                                        1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   odseq                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   officer                                         0.7.3          2026-01-16 [2] CRAN (R 4.6.0)\n##   OGRE                                            1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OHCA                                            1.7.0          2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   oligo                                           1.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   oligoClasses                                    1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   oligoData                                       1.8.0          2026-03-06 [2] Bioconductor\n##   OLIN                                            1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OLINgui                                         1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OlinkAnalyze                                    4.5.0          2026-01-28 [2] CRAN (R 4.6.0)\n##   omada                                           1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OmaDB                                           2.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   omicade4                                        1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OmicCircos                                      1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   omicplotR                                       1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   omicsGMF                                        1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OmicsMLRepoR                                    1.5.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OMICsPCA                                        1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OMICsPCAdata                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   omicsPrint                                      1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   omicsViewer                                     1.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Omixer                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OmnipathR                                       3.19.7         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ompBAM                                          1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   omXplore                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OnassisJavaLibs                                 1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   oncomix                                         1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   oncoscanR                                       1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OncoScore                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OncoSimulR                                      4.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Oncotree                                        0.3.5          2023-09-27 [2] CRAN (R 4.6.0)\n##   onlineFDR                                       2.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ontologyIndex                                   2.12           2024-02-27 [2] CRAN (R 4.6.0)\n##   ontologyPlot                                    1.7            2024-02-20 [2] CRAN (R 4.6.0)\n##   ontoProc                                        2.5.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ontoProcData                                    0.99.9904      2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   openair                                         2.19.0         2025-08-28 [2] CRAN (R 4.6.0)\n##   opencpu                                         2.2.14         2024-10-04 [2] CRAN (R 4.6.0)\n##   openEBGM                                        0.9.1          2023-09-14 [2] CRAN (R 4.6.0)\n##   openPrimeR                                      1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   openssl                                         2.3.5          2026-02-26 [2] CRAN (R 4.6.0)\n##   OpenStats                                       1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   openxlsx                                        4.2.8.1        2025-10-31 [2] CRAN (R 4.6.0)\n##   operator.tools                                  1.6.3.1        2026-01-29 [2] CRAN (R 4.6.0)\n##   oposSOM                                         2.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   oppar                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   optimalFlow                                     1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   optimalFlowData                                 1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   optimParallel                                   1.0-2          2021-02-11 [2] CRAN (R 4.6.0)\n##   optimx                                          2025-4.9       2025-04-10 [2] CRAN (R 4.6.0)\n##   optparse                                        1.7.5          2024-04-16 [2] CRAN (R 4.6.0)\n##   OPWeight                                        1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OrderedList                                     1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ordinal                                         2025.12-29     2026-01-10 [2] CRAN (R 4.6.0)\n##   ore                                             1.7.5.1        2025-03-14 [2] CRAN (R 4.6.0)\n##   ORFhunteR                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ORFik                                           1.31.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   org.Ag.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.At.tair.db                                  3.22.0         2026-03-06 [2] Bioconductor\n##   org.Bt.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Ce.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Cf.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Dm.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Dr.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.EcK12.eg.db                                 3.22.0         2026-03-06 [2] Bioconductor\n##   org.EcSakai.eg.db                               3.22.0         2026-03-06 [2] Bioconductor\n##   org.Gg.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Hbacteriophora.eg.db                        0.99.1         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   org.Hs.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Mm.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Mmu.eg.db                                   3.22.0         2026-03-06 [2] Bioconductor\n##   org.Mxanthus.db                                 1.0.27         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   org.Pt.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Rn.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Sc.sgd.db                                   3.22.0         2026-03-06 [2] Bioconductor\n##   org.Ss.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   org.Xl.eg.db                                    3.22.0         2026-03-06 [2] Bioconductor\n##   Organism.dplyr                                  1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OrganismDbi                                     1.53.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OrgMassSpecR                                    0.5-4          2026-01-27 [2] CRAN (R 4.6.0)\n##   origami                                         1.0.7          2022-10-19 [2] CRAN (R 4.6.0)\n##   orthogene                                       1.17.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   orthos                                          1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   orthosData                                      1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OSAT                                            1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OSCA                                            1.21.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   OSCA.advanced                                   1.19.1         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   OSCA.basic                                      1.19.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   OSCA.intro                                      1.19.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   OSCA.multisample                                1.19.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   OSCA.workflows                                  1.19.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   Oscope                                          1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   osfr                                            0.2.9          2022-09-25 [2] CRAN (R 4.6.0)\n##   osqp                                            1.0.0          2026-03-01 [2] CRAN (R 4.6.0)\n##   OSTA                                            1.1.10         2026-03-13 [1] Bioconductor 3.23 (R 4.6.0)\n##   OSTA.data                                       1.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   otel                                            0.2.0          2025-08-29 [2] CRAN (R 4.6.0)\n##   OTUbase                                         1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   outliers                                        0.15           2022-03-26 [2] CRAN (R 4.6.0)\n##   OUTRIDER                                        1.29.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OutSplice                                       1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   OVESEG                                          1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PAA                                             1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   packcircles                                     0.3.7          2024-11-21 [2] CRAN (R 4.6.0)\n##   packFinder                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   padma                                           1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PADOG                                           1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pageRank                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   paintmap                                        1.0            2016-08-31 [2] CRAN (R 4.6.0)\n##   PAIRADISE                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   paircompviz                                     1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PairedData                                      1.1.1          2018-06-02 [2] CRAN (R 4.6.0)\n##   pairedGSEA                                      1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pairkat                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pairsD3                                         0.1.3          2022-06-06 [2] CRAN (R 4.6.0)\n##   pak                                             0.9.2          2025-12-22 [2] CRAN (R 4.6.0)\n##   paletteer                                       1.7.0          2026-01-08 [2] CRAN (R 4.6.0)\n##   palmerpenguins                                  0.1.1          2022-08-15 [2] CRAN (R 4.6.0)\n##   pals                                            1.10           2025-03-07 [2] CRAN (R 4.6.0)\n##   pamr                                            1.57           2024-07-01 [2] CRAN (R 4.6.0)\n##   pan                                             1.9            2023-12-07 [2] CRAN (R 4.6.0)\n##   pandaR                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pander                                          0.6.6          2025-03-01 [2] CRAN (R 4.6.0)\n##   panelcn.mops                                    1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PanomiR                                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   panp                                            1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PANR                                            1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PANTHER.db                                      1.0.12         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   paradox                                         1.0.1          2024-07-09 [2] CRAN (R 4.6.0)\n##   parallel                                        4.6.0          2026-03-06 [3] local\n##   parallelDist                                    0.2.7          2025-09-27 [2] CRAN (R 4.6.0)\n##   ParallelLogger                                  3.5.1          2025-10-29 [2] CRAN (R 4.6.0)\n##   parallelly                                      1.46.1         2026-01-08 [2] CRAN (R 4.6.0)\n##   parallelMap                                     1.5.1          2021-06-28 [2] CRAN (R 4.6.0)\n##   parameters                                      0.28.3         2025-11-25 [2] CRAN (R 4.6.0)\n##   ParamHelpers                                    1.14.2         2025-01-09 [2] CRAN (R 4.6.0)\n##   parglms                                         1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   parmigene                                       1.1.1          2024-10-21 [2] CRAN (R 4.6.0)\n##   parody                                          1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   parsedate                                       1.3.2          2024-12-09 [2] CRAN (R 4.6.0)\n##   partCNV                                         1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   partitions                                      1.10-9         2025-04-30 [2] CRAN (R 4.6.0)\n##   party                                           1.3-19         2026-03-10 [2] CRAN (R 4.6.0)\n##   partykit                                        1.2-26         2026-03-06 [2] CRAN (R 4.6.0)\n##   pasilla                                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pasillaBamSubset                                0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PasillaTranscriptExpr                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PAST                                            1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pastecs                                         1.4.2          2024-02-01 [2] CRAN (R 4.6.0)\n##   patchwork                                       1.3.2          2025-08-25 [2] CRAN (R 4.6.0)\n##   Path2PPI                                        1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pathifier                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pathlinkR                                       1.7.21         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pathMED                                         1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PathNet                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PathNetData                                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PathoStat                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pathRender                                      1.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pathview                                        1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pathwayPCA                                      1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   patrick                                         0.3.1          2025-12-02 [2] CRAN (R 4.6.0)\n##   paws.common                                     0.8.9          2026-02-17 [2] CRAN (R 4.6.0)\n##   paws.storage                                    0.9.0          2025-03-14 [2] CRAN (R 4.6.0)\n##   pbapply                                         1.7-4          2025-07-20 [2] CRAN (R 4.6.0)\n##   pbdZMQ                                          0.3-14         2025-04-13 [2] CRAN (R 4.6.0)\n##   pbivnorm                                        0.6.0          2015-01-23 [2] CRAN (R 4.6.0)\n##   pbkrtest                                        0.5.5          2025-07-18 [2] CRAN (R 4.6.0)\n##   pbmcapply                                       1.5.1          2022-04-28 [2] CRAN (R 4.6.0)\n##   pbs                                             1.1            2013-06-08 [2] CRAN (R 4.6.0)\n##   pbv                                             0.5-47         2023-11-30 [2] CRAN (R 4.6.0)\n##   pcaExplorer                                     3.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pcalg                                           2.7-12         2024-09-12 [2] CRAN (R 4.6.0)\n##   pcaMethods                                      2.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PCAN                                            1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pcaPP                                           2.0-5          2024-08-19 [2] CRAN (R 4.6.0)\n##   PCAtools                                        2.23.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PCHiCdata                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pd.atdschip.tiling                              0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pd.genomewidesnp.5                              3.14.1         2026-03-06 [2] Bioconductor\n##   pd.genomewidesnp.6                              3.14.1         2026-03-06 [2] Bioconductor\n##   pd.hg.u95a                                      3.12.0         2026-03-06 [2] Bioconductor\n##   pd.hg.u95av2                                    3.12.0         2026-03-06 [2] Bioconductor\n##   pd.hg18.60mer.expr                              3.12.0         2026-03-06 [2] Bioconductor\n##   pd.huex.1.0.st.v2                               3.14.1         2026-03-06 [2] Bioconductor\n##   pd.hugene.1.0.st.v1                             3.14.1         2026-03-06 [2] Bioconductor\n##   pd.mapping250k.nsp                              3.12.0         2026-03-06 [2] Bioconductor\n##   pd.mapping250k.sty                              3.12.0         2026-03-06 [2] Bioconductor\n##   pd.mapping50k.hind240                           3.12.0         2026-03-06 [2] Bioconductor\n##   pd.mapping50k.xba240                            3.12.0         2026-03-06 [2] Bioconductor\n##   PDATK                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pdfCluster                                      1.0-4          2022-12-02 [2] CRAN (R 4.6.0)\n##   pdftools                                        3.7.0          2026-01-30 [2] CRAN (R 4.6.0)\n##   pdInfoBuilder                                   1.75.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pdist                                           1.2.1          2022-05-02 [2] CRAN (R 4.6.0)\n##   PeacoQC                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   peakCombiner                                    1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   peakPantheR                                     1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pec                                             2025.06.24     2025-07-24 [2] CRAN (R 4.6.0)\n##   PECA                                            1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   peco                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Pedixplorer                                     1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   penalized                                       0.9-53         2025-10-02 [2] CRAN (R 4.6.0)\n##   pengls                                          1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pepDat                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PepSetTest                                      1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PepsNMR                                         1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PepsNMRData                                     1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pepStat                                         1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Peptides                                        2.4.6          2023-12-13 [2] CRAN (R 4.6.0)\n##   pepXMLTab                                       1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PerfMeas                                        1.2.5          2022-09-14 [2] CRAN (R 4.6.0)\n##   performance                                     0.16.0         2026-02-04 [2] CRAN (R 4.6.0)\n##   PerformanceAnalytics                            2.0.8          2024-12-09 [2] CRAN (R 4.6.0)\n##   periodicDNA                                     1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PERMANOVA                                       0.2.0          2021-09-06 [2] CRAN (R 4.6.0)\n##   permute                                         0.9-10         2026-02-06 [2] CRAN (R 4.6.0)\n##   perturbR                                        0.1.3          2019-02-19 [2] CRAN (R 4.6.0)\n##   PFAM.db                                         3.22.0         2026-03-06 [2] Bioconductor\n##   pfamAnalyzeR                                    1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pgca                                            1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pgxRpi                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phangorn                                        2.12.1         2024-09-17 [2] CRAN (R 4.6.0)\n##   phantasus                                       1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phantasusLite                                   1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PharmacoGx                                      3.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phastCons100way.UCSC.hg19                       3.7.2          2026-03-06 [2] Bioconductor\n##   phastCons100way.UCSC.hg38                       3.7.1          2026-03-06 [2] Bioconductor\n##   phastCons30way.UCSC.hg38                        3.13.1         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   pheatmap                                        1.0.13         2025-06-05 [2] CRAN (R 4.6.0)\n##   PhenoGeneRanker                                 1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phenomis                                        1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phenopath                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phenoTest                                       1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   philentropy                                     0.10.0         2025-11-03 [2] CRAN (R 4.6.0)\n##   philr                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PhIPData                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phosphonormalizer                               1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phosphoricons                                   0.2.1          2024-04-08 [2] CRAN (R 4.6.0)\n##   PhosR                                           1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phyclust                                        0.1-34         2023-09-06 [2] CRAN (R 4.6.0)\n##   phylobase                                       0.8.12         2024-01-30 [2] CRAN (R 4.6.0)\n##   phylogram                                       2.1.0          2018-06-25 [2] CRAN (R 4.6.0)\n##   phylolm                                         2.6.5          2024-09-30 [2] CRAN (R 4.6.0)\n##   PhyloProfile                                    2.3.5          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PhyloProfileData                                1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phyloseq                                        1.55.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   phytools                                        2.5-2          2025-09-19 [2] CRAN (R 4.6.0)\n##   piano                                           2.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PICB                                            1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pickgene                                        1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Pigengene                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   piggyback                                       0.1.5          2023-07-10 [2] CRAN (R 4.6.0)\n##   pillar                                          1.11.1         2025-09-17 [2] CRAN (R 4.6.0)\n##   pinfsc50                                        1.3.0          2023-12-05 [2] CRAN (R 4.6.0)\n##   pingr                                           2.0.5          2024-12-12 [2] CRAN (R 4.6.0)\n##   pipeComp                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pipeFrame                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PIPETS                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Pirat                                           1.5.8          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   piton                                           1.0.1          2025-11-30 [2] CRAN (R 4.6.0)\n##   PIUMA                                           1.7.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pixmap                                          0.4-14         2025-07-26 [2] CRAN (R 4.6.0)\n##   PK                                              1.3-6          2023-09-12 [2] CRAN (R 4.6.0)\n##   pkgbuild                                        1.4.8          2025-05-26 [2] CRAN (R 4.6.0)\n##   pkgcond                                         0.1.1          2021-04-28 [2] CRAN (R 4.6.0)\n##   pkgconfig                                       2.0.3          2019-09-22 [2] CRAN (R 4.6.0)\n##   pkgdown                                         2.2.0          2025-11-06 [2] CRAN (R 4.6.0)\n##   pkgload                                         1.5.0          2026-02-03 [2] CRAN (R 4.6.0)\n##   pkgndep                                         1.99.3         2023-10-13 [2] CRAN (R 4.6.0)\n##   pkgsearch                                       3.1.5          2025-04-12 [2] CRAN (R 4.6.0)\n##   plaid                                           0.99.19        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   planet                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   planttfhunter                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plasmodiumanophelescdf                          2.18.0         2026-03-06 [2] Bioconductor\n##   plasmut                                         1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plgem                                           1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plier                                           1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plot3D                                          1.4.2          2025-07-25 [2] CRAN (R 4.6.0)\n##   plot3Drgl                                       1.0.5          2025-07-25 [2] CRAN (R 4.6.0)\n##   plotfunctions                                   1.5            2025-12-22 [2] CRAN (R 4.6.0)\n##   plotgardener                                    1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plotgardenerData                                1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plotGrouper                                     1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plotly                                          4.12.0         2026-01-24 [2] CRAN (R 4.6.0)\n##   plotmo                                          3.7.0          2026-01-09 [2] CRAN (R 4.6.0)\n##   plotrix                                         3.8-14         2026-02-13 [2] CRAN (R 4.6.0)\n##   plotROC                                         2.3.3          2025-08-25 [2] CRAN (R 4.6.0)\n##   PlotTools                                       0.4.0          2026-01-29 [2] CRAN (R 4.6.0)\n##   PLPE                                            1.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pls                                             2.9-0          2026-02-21 [2] CRAN (R 4.6.0)\n##   PLSDAbatch                                      1.99.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plsgenomics                                     1.5-3          2024-03-28 [2] CRAN (R 4.6.0)\n##   plsVarSel                                       0.10.0         2026-02-13 [2] CRAN (R 4.6.0)\n##   plyinteractions                                 1.9.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plyr                                            1.8.9          2023-10-02 [2] CRAN (R 4.6.0)\n##   plyranges                                       1.31.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   plyxp                                           1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PMA                                             1.2-4          2024-09-03 [2] CRAN (R 4.6.0)\n##   PMCMRplus                                       1.9.12         2024-09-08 [2] CRAN (R 4.6.0)\n##   pmm                                             1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pmp                                             1.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PMScanR                                         1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   png                                             0.1-8          2022-11-29 [2] CRAN (R 4.6.0)\n##   PoDCall                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   podkat                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   poem                                            1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pogos                                           1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   poibin                                          1.6            2024-08-23 [2] CRAN (R 4.6.0)\n##   PoiClaClu                                       1.0.2.1        2019-01-04 [2] CRAN (R 4.6.0)\n##   polspline                                       1.1.25         2024-05-10 [2] CRAN (R 4.6.0)\n##   Polychrome                                      1.5.4          2025-04-06 [2] CRAN (R 4.6.0)\n##   polyclip                                        1.10-7         2024-07-23 [2] CRAN (R 4.6.0)\n##   polycor                                         0.8-2          2025-12-14 [2] CRAN (R 4.6.0)\n##   polyCub                                         0.9.2          2025-02-11 [2] CRAN (R 4.6.0)\n##   polylabelr                                      1.0.0          2026-01-19 [2] CRAN (R 4.6.0)\n##   polynom                                         1.4-1          2022-04-11 [2] CRAN (R 4.6.0)\n##   PolynomF                                        2.0-8          2024-03-03 [2] CRAN (R 4.6.0)\n##   PolyPhen.Hsapiens.dbSNP131                      1.0.2          2026-03-06 [2] Bioconductor\n##   PolySTest                                       1.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Polytect                                        1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   POMA                                            1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pool                                            1.0.4          2024-10-07 [2] CRAN (R 4.6.0)\n##   poolr                                           1.2-0          2025-05-07 [2] CRAN (R 4.6.0)\n##   poorman                                         0.2.7          2023-10-30 [2] CRAN (R 4.6.0)\n##   posDemux                                        0.99.11        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   posterior                                       1.6.1          2025-02-27 [2] CRAN (R 4.6.0)\n##   poweRlaw                                        1.0.0          2025-02-03 [2] CRAN (R 4.6.0)\n##   powerTCR                                        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   POWSC                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ppclust                                         1.1.0.1        2023-12-13 [2] CRAN (R 4.6.0)\n##   ppcor                                           1.1            2015-12-03 [2] CRAN (R 4.6.0)\n##   ppcseq                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PPInfer                                         1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pqsfinder                                       2.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   prabclus                                        2.3-5          2026-01-14 [2] CRAN (R 4.6.0)\n##   pracma                                          2.4.6          2025-10-22 [2] CRAN (R 4.6.0)\n##   praise                                          1.0.0          2015-08-11 [2] CRAN (R 4.6.0)\n##   pram                                            1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   praznik                                         12.0.0         2025-11-11 [2] CRAN (R 4.6.0)\n##   prebs                                           1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   prebsdata                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   preciseTAD                                      1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   preciseTADhub                                   1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   precrec                                         0.14.5         2025-05-15 [2] CRAN (R 4.6.0)\n##   PREDA                                           1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PREDAsampledata                                 0.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   preprocessCore                                  1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   preseqR                                         4.0.0          2018-06-27 [2] CRAN (R 4.6.0)\n##   prettydoc                                       0.4.1          2021-01-10 [2] CRAN (R 4.6.0)\n##   prettyGraphs                                    2.2.0          2025-04-12 [2] CRAN (R 4.6.0)\n##   prettyunits                                     1.2.0          2023-09-24 [2] CRAN (R 4.6.0)\n##   primirTSS                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PRIMME                                          3.2-6          2024-01-09 [2] CRAN (R 4.6.0)\n##   PrInCE                                          1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   princurve                                       2.1.6          2021-01-18 [2] CRAN (R 4.6.0)\n##   printr                                          0.3            2023-03-08 [2] CRAN (R 4.6.0)\n##   prismatic                                       1.1.2          2024-04-10 [2] CRAN (R 4.6.0)\n##   proActiv                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   proBAMr                                         1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   proBatch                                        1.99.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pROC                                            1.19.0.1       2025-07-31 [2] CRAN (R 4.6.0)\n##   PROcess                                         1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   processx                                        3.8.6          2025-02-21 [2] CRAN (R 4.6.0)\n##   procoil                                         2.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   proDA                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ProData                                         1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   prodlim                                         2026.03.11     2026-03-11 [2] CRAN (R 4.6.0)\n##   profileModel                                    0.6.2          2026-02-06 [2] CRAN (R 4.6.0)\n##   profileScoreDist                                1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   profmem                                         0.7.0          2025-05-02 [2] CRAN (R 4.6.0)\n##   profvis                                         0.4.0          2024-09-20 [2] CRAN (R 4.6.0)\n##   progeny                                         1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   progress                                        1.2.3          2023-12-06 [2] CRAN (R 4.6.0)\n##   progressr                                       0.18.0         2025-11-06 [2] CRAN (R 4.6.0)\n##   projectR                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pRoloc                                          1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pRolocdata                                      1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pRolocGUI                                       2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PROMISE                                         1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   promises                                        1.5.0          2025-11-01 [2] CRAN (R 4.6.0)\n##   prompter                                        1.2.1          2025-07-01 [2] CRAN (R 4.6.0)\n##   PRONE                                           1.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   propagate                                       1.1-0          2026-02-25 [2] CRAN (R 4.6.0)\n##   PROPER                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PROPS                                           1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Prostar                                         1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   prostateCancerCamcap                            1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   prostateCancerGrasso                            1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   prostateCancerStockholm                         1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   prostateCancerTaylor                            1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   prostateCancerVarambally                        1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ProteinGymR                                     1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   proteinProfiles                                 1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ProteoDisco                                     1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ProteoMM                                        1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   protGear                                        1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ProtGenerics                                    1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   proto                                           1.0.0          2016-10-29 [2] CRAN (R 4.6.0)\n##   protolite                                       2.3.1          2024-10-04 [2] CRAN (R 4.6.0)\n##   protr                                           1.7-5          2025-08-21 [2] CRAN (R 4.6.0)\n##   protViz                                         0.7.9          2023-12-12 [2] CRAN (R 4.6.0)\n##   proxy                                           0.4-29         2025-12-29 [2] CRAN (R 4.6.0)\n##   proxyC                                          0.5.2          2025-04-25 [2] CRAN (R 4.6.0)\n##   PRROC                                           1.4            2025-03-18 [2] CRAN (R 4.6.0)\n##   ps                                              1.9.1          2025-04-12 [2] CRAN (R 4.6.0)\n##   PSCBS                                           0.68.0         2025-04-18 [2] CRAN (R 4.6.0)\n##   pscl                                            1.5.9          2024-01-31 [2] CRAN (R 4.6.0)\n##   psichomics                                      1.37.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PSMatch                                         1.15.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pspline                                         1.0-21         2024-12-11 [2] CRAN (R 4.6.0)\n##   psych                                           2.6.1          2026-02-03 [2] CRAN (R 4.6.0)\n##   ptairData                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ptairMS                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PtH2O2lipids                                    1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PTMods                                          0.99.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ptw                                             1.9-17         2026-01-22 [2] CRAN (R 4.6.0)\n##   Publish                                         2025.07.24     2025-07-24 [2] CRAN (R 4.6.0)\n##   puma                                            3.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pumadata                                        2.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PureCN                                          2.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   purrr                                           1.2.1          2026-01-09 [2] CRAN (R 4.6.0)\n##   pushbar                                         0.1.0          2019-03-15 [2] CRAN (R 4.6.0)\n##   pvac                                            1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pvca                                            1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pvclust                                         2.2-0          2019-11-19 [2] CRAN (R 4.6.0)\n##   Pviz                                            1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pwalign                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PWMEnrich                                       4.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PWMEnrich.Dmelanogaster.background              4.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PWMEnrich.Hsapiens.background                   4.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   PWMEnrich.Mmusculus.background                  4.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   pwr                                             1.3-0          2020-03-17 [2] CRAN (R 4.6.0)\n##   qap                                             0.1-2          2022-06-27 [2] CRAN (R 4.6.0)\n##   qcmetrics                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qdapRegex                                       0.7.10         2025-03-24 [2] CRAN (R 4.6.0)\n##   qdapTools                                       1.3.7          2023-05-10 [2] CRAN (R 4.6.0)\n##   QDNAseq                                         1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   QDNAseq.hg19                                    1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   QDNAseq.mm10                                    1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   QFeatures                                       1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qgam                                            2.0.0          2025-04-10 [2] CRAN (R 4.6.0)\n##   qgraph                                          1.9.8          2023-11-03 [2] CRAN (R 4.6.0)\n##   qlcMatrix                                       0.9.9          2025-07-23 [2] CRAN (R 4.6.0)\n##   qmtools                                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qpcR                                            1.4-2          2025-06-10 [2] CRAN (R 4.6.0)\n##   qpcrNorm                                        1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qpdf                                            1.4.1          2025-07-02 [2] CRAN (R 4.6.0)\n##   qpgraph                                         2.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qPLEXanalyzer                                   1.29.6         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qPLEXdata                                       1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qqconf                                          1.3.2          2023-04-14 [2] CRAN (R 4.6.0)\n##   qqman                                           0.1.9          2023-08-23 [2] CRAN (R 4.6.0)\n##   QRscore                                         1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qs2                                             0.1.7          2026-01-20 [2] CRAN (R 4.6.0)\n##   qsea                                            1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qsmooth                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   QSutils                                         1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qsvaR                                           1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qtl                                             1.74           2025-12-08 [2] CRAN (R 4.6.0)\n##   QTLExperiment                                   2.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Qtlizer                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   quadprog                                        1.5-8          2019-11-20 [2] CRAN (R 4.6.0)\n##   qualV                                           0.3-5          2023-07-02 [2] CRAN (R 4.6.0)\n##   quanteda                                        4.3.1          2025-07-10 [2] CRAN (R 4.6.0)\n##   quantiseqr                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   quantmod                                        0.4.28         2025-06-19 [2] CRAN (R 4.6.0)\n##   quantreg                                        6.1            2025-03-10 [2] CRAN (R 4.6.0)\n##   quantro                                         1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   quantsmooth                                     1.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   quarto                                          1.5.1          2025-09-04 [2] CRAN (R 4.6.0)\n##   QuasR                                           1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   QuaternaryProd                                  1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   QUBICdata                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   queryup                                         1.0.5          2023-06-05 [2] CRAN (R 4.6.0)\n##   questionr                                       0.8.2          2026-01-21 [2] CRAN (R 4.6.0)\n##   QuickJSR                                        1.9.0          2026-01-25 [2] CRAN (R 4.6.0)\n##   quitefastmst                                    0.9.1          2026-02-11 [2] CRAN (R 4.6.0)\n##   qusage                                          2.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qvalue                                          2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   qvcalc                                          1.0.4          2025-01-24 [2] CRAN (R 4.6.0)\n##   R.cache                                         0.17.0         2025-05-02 [2] CRAN (R 4.6.0)\n##   R.devices                                       2.17.3         2025-12-18 [2] CRAN (R 4.6.0)\n##   R.filesets                                      2.15.1         2024-01-24 [2] CRAN (R 4.6.0)\n##   R.huge                                          0.10.1         2024-01-24 [2] CRAN (R 4.6.0)\n##   R.matlab                                        3.7.0          2022-08-25 [2] CRAN (R 4.6.0)\n##   R.methodsS3                                     1.8.2          2022-06-13 [2] CRAN (R 4.6.0)\n##   R.oo                                            1.27.1         2025-05-02 [2] CRAN (R 4.6.0)\n##   R.rsp                                           0.46.0         2024-02-17 [2] CRAN (R 4.6.0)\n##   R.utils                                         2.13.0         2025-02-24 [2] CRAN (R 4.6.0)\n##   r2glmm                                          0.1.3          2025-04-28 [2] CRAN (R 4.6.0)\n##   R2HTML                                          2.3.4          2024-06-16 [2] CRAN (R 4.6.0)\n##   R2jags                                          0.8-9          2024-10-13 [2] CRAN (R 4.6.0)\n##   r2r                                             0.1.2          2024-11-09 [2] CRAN (R 4.6.0)\n##   R2WinBUGS                                       2.1-24         2026-02-23 [2] CRAN (R 4.6.0)\n##   R3CPET                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   r3Cseq                                          1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   r3dmol                                          0.1.2          2021-03-14 [2] CRAN (R 4.6.0)\n##   R453Plus1Toolbox                                1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   R4RNA                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   R6                                              2.6.1          2025-02-15 [2] CRAN (R 4.6.0)\n##   R6P                                             0.4.0          2024-12-22 [2] CRAN (R 4.6.0)\n##   radiant.data                                    1.6.8          2025-09-16 [2] CRAN (R 4.6.0)\n##   RadioGx                                         2.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rae230a.db                                      3.13.0         2026-03-06 [2] Bioconductor\n##   rae230aprobe                                    2.18.0         2026-03-06 [2] Bioconductor\n##   raer                                            1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   raerdata                                        1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rafalib                                         1.0.4          2025-04-08 [2] CRAN (R 4.6.0)\n##   ragg                                            1.5.1          2026-03-06 [2] CRAN (R 4.6.0)\n##   RaggedExperiment                                1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RAIDS                                           1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rain                                            1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rainbow                                         3.8            2024-01-23 [2] CRAN (R 4.6.0)\n##   ramr                                            1.19.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RaMS                                            1.4.3          2024-10-09 [2] CRAN (R 4.6.0)\n##   ramwas                                          1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   randomcoloR                                     1.1.0.1        2019-11-24 [2] CRAN (R 4.6.0)\n##   randomForest                                    4.7-1.2        2024-09-22 [2] CRAN (R 4.6.0)\n##   randomForestSRC                                 3.5.1          2026-02-12 [2] CRAN (R 4.6.0)\n##   randomizr                                       1.0.1          2026-02-02 [2] CRAN (R 4.6.0)\n##   randPack                                        1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   randRotation                                    1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   randtests                                       1.0.2          2024-04-23 [2] CRAN (R 4.6.0)\n##   randtoolbox                                     2.0.5          2024-10-18 [2] CRAN (R 4.6.0)\n##   ranger                                          0.18.0         2026-01-16 [2] CRAN (R 4.6.0)\n##   RankAggreg                                      0.6.6          2020-05-09 [2] CRAN (R 4.6.0)\n##   RankProd                                        3.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RANN                                            2.6.2          2024-08-25 [2] CRAN (R 4.6.0)\n##   rapiclient                                      0.1.8          2024-09-30 [2] CRAN (R 4.6.0)\n##   rapidjsonr                                      1.2.1          2025-11-24 [2] CRAN (R 4.6.0)\n##   rappdirs                                        0.3.4          2026-01-17 [2] CRAN (R 4.6.0)\n##   rapportools                                     1.2            2025-02-28 [2] CRAN (R 4.6.0)\n##   RAREsim                                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RareVariantVis                                  2.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rARPACK                                         0.11-0         2016-03-10 [2] CRAN (R 4.6.0)\n##   Rarr                                            1.11.30        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   raster                                          3.6-32         2025-03-28 [2] CRAN (R 4.6.0)\n##   rat2302frmavecs                                 0.99.11        2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rattus.norvegicus                               1.3.1          2026-03-06 [2] Bioconductor\n##   rawDiag                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rawrr                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RbcBook1                                        1.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rbec                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RBedMethyl                                      0.99.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rbenchmark                                      1.0.0          2012-08-30 [2] CRAN (R 4.6.0)\n##   rBeta2009                                       1.0.1          2024-11-04 [2] CRAN (R 4.6.0)\n##   RBGL                                            1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rbibutils                                       2.4.1          2026-01-21 [2] CRAN (R 4.6.0)\n##   rbioapi                                         0.8.3          2025-07-03 [2] CRAN (R 4.6.0)\n##   RBioFormats                                     1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rBiopaxParser                                   2.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rBLAST                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RBM                                             1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rbowtie                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rbowtie2                                        2.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rbsurv                                          2.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rbwa                                            1.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rcapture                                        1.4-4          2022-05-04 [2] CRAN (R 4.6.0)\n##   RCAS                                            1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RCASPAR                                         1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rcdd                                            1.6-1          2026-01-12 [2] CRAN (R 4.6.0)\n##   rcdk                                            3.8.2          2025-11-30 [2] CRAN (R 4.6.0)\n##   rcdklibs                                        2.9            2024-03-03 [2] CRAN (R 4.6.0)\n##   rcellminer                                      2.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rcellminerData                                  2.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rCGH                                            1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RCircos                                         1.2.2          2021-12-19 [2] CRAN (R 4.6.0)\n##   RcisTarget                                      1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RcisTarget.hg19.motifDBs.cisbpOnly.500bp        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rclipboard                                      0.2.1          2023-11-15 [2] CRAN (R 4.6.0)\n##   RCM                                             1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rcmdcheck                                       1.4.0          2021-09-27 [2] CRAN (R 4.6.0)\n##   Rcollectl                                       1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RColorBrewer                                    1.1-3          2022-04-03 [2] CRAN (R 4.6.0)\n##   rcompanion                                      2.5.2          2026-01-11 [2] CRAN (R 4.6.0)\n##   Rcpi                                            1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rcpp                                            1.1.1          2026-01-10 [2] CRAN (R 4.6.0)\n##   RcppAlgos                                       2.10.0         2026-03-08 [2] CRAN (R 4.6.0)\n##   RcppAnnoy                                       0.0.23         2026-01-12 [2] CRAN (R 4.6.0)\n##   RcppArmadillo                                   15.2.3-1       2025-12-17 [2] CRAN (R 4.6.0)\n##   RcppCCTZ                                        0.2.14         2026-01-08 [2] CRAN (R 4.6.0)\n##   RcppDate                                        0.0.6          2025-05-29 [2] CRAN (R 4.6.0)\n##   RcppDE                                          0.1.9          2026-03-11 [2] CRAN (R 4.6.0)\n##   RcppDist                                        0.1.1.1        2025-06-12 [2] CRAN (R 4.6.0)\n##   RcppEigen                                       0.3.4.0.2      2024-08-24 [2] CRAN (R 4.6.0)\n##   RcppGSL                                         0.3.14         2026-03-05 [2] CRAN (R 4.6.0)\n##   RcppHMM                                         1.2.2.1        2025-09-17 [2] CRAN (R 4.6.0)\n##   RcppHNSW                                        0.6.0          2024-02-04 [2] CRAN (R 4.6.0)\n##   RcppHungarian                                   0.3            2023-09-05 [2] CRAN (R 4.6.0)\n##   RcppInt64                                       0.0.5          2024-04-30 [2] CRAN (R 4.6.0)\n##   RcppML                                          0.3.7.1        2026-03-09 [2] CRAN (R 4.6.0)\n##   RcppNumerical                                   0.7-0          2026-02-28 [2] CRAN (R 4.6.0)\n##   RcppParallel                                    5.1.11-2       2026-03-05 [2] CRAN (R 4.6.0)\n##   RcppProgress                                    0.4.2          2020-02-06 [2] CRAN (R 4.6.0)\n##   RcppRoll                                        0.3.1          2024-07-07 [2] CRAN (R 4.6.0)\n##   RcppSpdlog                                      0.0.27         2026-02-12 [2] CRAN (R 4.6.0)\n##   RcppThread                                      2.3.0          2026-01-16 [2] CRAN (R 4.6.0)\n##   RcppTOML                                        0.2.3          2025-03-08 [2] CRAN (R 4.6.0)\n##   RCSL                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RCurl                                           1.98-1.17      2025-03-22 [2] CRAN (R 4.6.0)\n##   Rcwl                                            1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RcwlPipelines                                   1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RCX                                             1.15.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RCy3                                            2.31.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RCyjs                                           2.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rdisop                                          1.71.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rdist                                           0.0.5          2020-05-04 [2] CRAN (R 4.6.0)\n##   Rdpack                                          2.6.6          2026-02-08 [2] CRAN (R 4.6.0)\n##   RDRToolbox                                      1.61.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   reactable                                       0.4.5          2025-12-01 [2] CRAN (R 4.6.0)\n##   reactome.db                                     1.95.0         2026-03-06 [2] Bioconductor\n##   ReactomeGSA                                     1.25.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ReactomeGSA.data                                1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ReactomePA                                      1.55.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   reactR                                          0.6.1          2024-09-14 [2] CRAN (R 4.6.0)\n##   readbitmap                                      0.1.5          2018-06-27 [2] CRAN (R 4.6.0)\n##   readBrukerFlexData                              1.9.3          2024-10-02 [2] CRAN (R 4.6.0)\n##   reader                                          1.1.0          2026-02-19 [2] CRAN (R 4.6.0)\n##   readJDX                                         0.6.4          2023-11-18 [2] CRAN (R 4.6.0)\n##   readMzXmlData                                   2.8.4          2025-10-17 [2] CRAN (R 4.6.0)\n##   readODS                                         2.3.2          2025-01-13 [2] CRAN (R 4.6.0)\n##   ReadqPCR                                        1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   readr                                           2.2.0          2026-02-19 [2] CRAN (R 4.6.0)\n##   readxl                                          1.4.5          2025-03-07 [2] CRAN (R 4.6.0)\n##   rearrr                                          0.3.5          2025-03-03 [2] CRAN (R 4.6.0)\n##   REBET                                           1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rebook                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rebus                                           0.1-3          2017-04-25 [2] CRAN (R 4.6.0)\n##   rebus.base                                      0.0-3          2017-04-25 [2] CRAN (R 4.6.0)\n##   rebus.datetimes                                 0.0-2.1        2025-12-22 [2] CRAN (R 4.6.0)\n##   rebus.numbers                                   0.0-1.1        2025-07-10 [2] CRAN (R 4.6.0)\n##   rebus.unicode                                   0.0-2.1        2025-09-23 [2] CRAN (R 4.6.0)\n##   receptLoss                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   recipes                                         1.3.1          2025-05-21 [2] CRAN (R 4.6.0)\n##   recommenderlab                                  1.0.7          2025-05-31 [2] CRAN (R 4.6.0)\n##   reconsi                                         1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RecordLinkage                                   0.4-12.6       2026-01-25 [2] CRAN (R 4.6.0)\n##   recosystem                                      0.5.1          2023-05-05 [2] CRAN (R 4.6.0)\n##   recount                                         1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   recount3                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   recountmethylation                              1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   recountWorkflow                                 1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   recoup                                          1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RedeR                                           3.7.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RedisParam                                      1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   REDseq                                          1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ReducedExperiment                               1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   redux                                           1.1.5          2025-09-01 [2] CRAN (R 4.6.0)\n##   RefManageR                                      1.4.0          2022-09-30 [2] CRAN (R 4.6.0)\n##   reformulas                                      0.4.4          2026-02-02 [2] CRAN (R 4.6.0)\n##   refund                                          0.1-38         2025-11-17 [2] CRAN (R 4.6.0)\n##   RegEnrich                                       1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   regionalpcs                                     1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RegionalST                                      1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   regioneR                                        1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   regioneReloaded                                 1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   regionReport                                    1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   registry                                        0.5-1          2019-03-05 [2] CRAN (R 4.6.0)\n##   RegParallel                                     1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   regsplice                                       1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   regutools                                       1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   relations                                       0.6-16         2026-02-18 [2] CRAN (R 4.6.0)\n##   reldist                                         1.7-2          2023-02-17 [2] CRAN (R 4.6.0)\n##   relimp                                          1.0-5          2016-03-30 [2] CRAN (R 4.6.0)\n##   remaCor                                         0.0.20         2025-08-20 [2] CRAN (R 4.6.0)\n##   rematch                                         2.0.0          2023-08-30 [2] CRAN (R 4.6.0)\n##   rematch2                                        2.1.2          2020-05-01 [2] CRAN (R 4.6.0)\n##   remotes                                         2.5.0          2024-03-17 [2] CRAN (R 4.6.0)\n##   REMP                                            1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rentrez                                         1.2.4          2025-06-11 [2] CRAN (R 4.6.0)\n##   renv                                            1.1.8          2026-03-05 [2] CRAN (R 4.6.0)\n##   repmis                                          0.5.1          2025-07-02 [2] CRAN (R 4.6.0)\n##   repo                                            2.1.5          2020-02-08 [2] CRAN (R 4.6.0)\n##   ReportingTools                                  2.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   reportr                                         1.3.1          2025-03-29 [2] CRAN (R 4.6.0)\n##   reportROC                                       3.6            2022-06-17 [2] CRAN (R 4.6.0)\n##   repr                                            1.1.7          2024-03-22 [2] CRAN (R 4.6.0)\n##   reprex                                          2.1.1          2024-07-06 [2] CRAN (R 4.6.0)\n##   RepViz                                          1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   reshape                                         0.8.10         2025-06-19 [2] CRAN (R 4.6.0)\n##   reshape2                                        1.4.5          2025-11-12 [2] CRAN (R 4.6.0)\n##   ResidualMatrix                                  1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RESOLVE                                         1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   restfulr                                        0.0.16         2025-06-27 [2] CRAN (R 4.6.0)\n##   reticulate                                      1.45.0         2026-02-13 [2] CRAN (R 4.6.0)\n##   retrofit                                        1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ReUseData                                       1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rex                                             1.2.1          2021-11-26 [2] CRAN (R 4.6.0)\n##   rfaRm                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rfast                                           2.1.5.2        2025-10-10 [2] CRAN (R 4.6.0)\n##   Rfastp                                          1.21.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RFLOMICS                                        1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RforProteomics                                  1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rfPred                                          1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RGCCA                                           3.0.3          2023-12-11 [2] CRAN (R 4.6.0)\n##   rGenomeTracks                                   1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rGenomeTracksData                               0.99.0         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   rgenoud                                         5.9-0.11       2024-09-04 [2] CRAN (R 4.6.0)\n##   rgl                                             1.3.36         2026-03-06 [2] CRAN (R 4.6.0)\n##   RgnTX                                           1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rgoslin                                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RGraph2js                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rgraphviz                                       2.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rGREAT                                          2.13.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RGSEA                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rgsepd                                          1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rhandsontable                                   0.3.8          2021-05-27 [2] CRAN (R 4.6.0)\n##   rhdf5                                           2.55.16        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rhdf5client                                     1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rhdf5filters                                    1.23.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rhdf5lib                                        1.33.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rheumaticConditionWOLLBOLD                      1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rhinotypeR                                      1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rhisat2                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RhpcBLASctl                                     0.23-42        2023-02-11 [2] CRAN (R 4.6.0)\n##   Rhtslib                                         3.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RiboCrypt                                       1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RiboDiPA                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RiboProfiling                                   1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ribor                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   riboSeqR                                        1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ribosomeProfilingQC                             1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ridge                                           3.3            2022-04-11 [2] CRAN (R 4.6.0)\n##   rifi                                            1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rifiComparative                                 1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rigraphlib                                      1.3.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rigvf                                           1.3.6          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RImageJROI                                      0.1.3          2024-08-17 [2] CRAN (R 4.6.0)\n##   RImmPort                                        1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rintrojs                                        0.3.4          2024-01-11 [2] CRAN (R 4.6.0)\n##   rio                                             1.2.4          2025-09-26 [2] CRAN (R 4.6.0)\n##   riskRegression                                  2026.02.13     2026-02-16 [2] CRAN (R 4.6.0)\n##   RISmed                                          2.3.0          2021-07-05 [2] CRAN (R 4.6.0)\n##   RITAN                                           1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RITANdata                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RIVER                                           1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rjags                                           4-17           2025-03-24 [2] CRAN (R 4.6.0)\n##   rJava                                           1.0-15         2026-03-11 [2] CRAN (R 4.6.0)\n##   RJMCMCNucleosomes                               1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rjson                                           0.2.23         2024-09-16 [2] CRAN (R 4.6.0)\n##   rjsoncons                                       1.3.2          2025-03-15 [2] CRAN (R 4.6.0)\n##   RJSONIO                                         2.0.0          2025-04-05 [2] CRAN (R 4.6.0)\n##   Rlab                                            4.5.1          2026-02-11 [2] CRAN (R 4.6.0)\n##   rlang                                           1.1.7          2026-01-09 [2] CRAN (R 4.6.0)\n##   RLassoCox                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rlecuyer                                        0.3-8          2023-12-02 [2] CRAN (R 4.6.0)\n##   rlist                                           0.4.6.2        2021-09-03 [2] CRAN (R 4.6.0)\n##   RLMM                                            1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RLRsim                                          3.1-9          2025-11-28 [2] CRAN (R 4.6.0)\n##   Rmagpie                                         1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RMariaDB                                        1.3.5          2026-02-06 [2] CRAN (R 4.6.0)\n##   rmarkdown                                       2.30           2025-09-28 [2] CRAN (R 4.6.0)\n##   RMassBank                                       3.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RMassBankData                                   1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rmcorr                                          0.7.0          2024-07-26 [2] CRAN (R 4.6.0)\n##   rmdformats                                      1.0.4          2022-05-17 [2] CRAN (R 4.6.0)\n##   rmelting                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rmeta                                           3.0            2018-03-20 [2] CRAN (R 4.6.0)\n##   rmio                                            0.4.0          2022-02-17 [2] CRAN (R 4.6.0)\n##   Rmisc                                           1.5.1          2022-05-02 [2] CRAN (R 4.6.0)\n##   Rmixmod                                         2.1.10         2023-12-13 [2] CRAN (R 4.6.0)\n##   Rmmquant                                        1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rmpfr                                           1.1-2          2025-10-27 [2] CRAN (R 4.6.0)\n##   Rmpi                                            0.7-3.3        2025-01-13 [2] CRAN (R 4.6.0)\n##   rms                                             8.1-1          2026-02-18 [2] CRAN (R 4.6.0)\n##   rmspc                                           1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RMTstat                                         0.3.1          2022-04-12 [2] CRAN (R 4.6.0)\n##   rmutil                                          1.1.10         2022-10-27 [2] CRAN (R 4.6.0)\n##   RMySQL                                          0.11.2         2026-03-02 [2] CRAN (R 4.6.0)\n##   rmzqc                                           0.7.0          2025-07-16 [2] CRAN (R 4.6.0)\n##   RNAAgeCalc                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAdecay                                        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rnaEditr                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAmodR                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAmodR.AlkAnilineSeq                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAmodR.Data                                    1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAmodR.ML                                      1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAmodR.RiboMethSeq                             1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAsense                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAseq123                                       1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   rnaseqcomp                                      1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAseqCovarImpute                               1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNAseqData.HNRNPC.bam.chr14                     0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rnaseqDTU                                       1.31.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   rnaseqGene                                      1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnaSeqGeneEdgeRQL                               1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNASeqPower                                     1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnaSeqSampleSize                                2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnaSeqSampleSizeData                            1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnBeads                                         2.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnBeads.hg19                                    1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnBeads.hg38                                    1.43.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnBeads.mm10                                    2.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnBeads.mm9                                     1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RnBeads.rn5                                     1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rncl                                            0.8.9          2026-01-21 [2] CRAN (R 4.6.0)\n##   RNeXML                                          2.4.11         2023-02-01 [2] CRAN (R 4.6.0)\n##   rngtools                                        1.5.2          2021-09-20 [2] CRAN (R 4.6.0)\n##   rngWELL                                         0.10-10        2024-10-17 [2] CRAN (R 4.6.0)\n##   RNifti                                          1.9.0          2026-01-13 [2] CRAN (R 4.6.0)\n##   Rnits                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RNOmni                                          1.0.1.2        2023-09-11 [2] CRAN (R 4.6.0)\n##   roar                                            1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   roastgsa                                        1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   robin                                           2.0.0          2025-01-22 [2] CRAN (R 4.6.0)\n##   robslopes                                       1.1.4          2025-12-19 [2] CRAN (R 4.6.0)\n##   robust                                          0.7-5          2024-08-17 [2] CRAN (R 4.6.0)\n##   robustbase                                      0.99-7         2026-02-05 [2] CRAN (R 4.6.0)\n##   RobustRankAggreg                                1.2.1          2022-10-03 [2] CRAN (R 4.6.0)\n##   ROC                                             1.87.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ROCit                                           2.1.2          2024-05-16 [2] CRAN (R 4.6.0)\n##   ROCpAI                                          1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ROCR                                            1.0-12         2026-01-23 [2] CRAN (R 4.6.0)\n##   ROI                                             1.0-2          2026-01-12 [2] CRAN (R 4.6.0)\n##   ROI.plugin.lpsolve                              1.0-2          2023-07-07 [2] CRAN (R 4.6.0)\n##   RolDE                                           1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   roll                                            1.2.0          2025-08-22 [2] CRAN (R 4.6.0)\n##   rols                                            3.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ROntoTools                                      2.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rook                                            1.2            2022-11-07 [2] CRAN (R 4.6.0)\n##   rootSolve                                       1.8.2.4        2023-09-21 [2] CRAN (R 4.6.0)\n##   ropls                                           1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   roptim                                          0.1.7          2025-10-03 [2] CRAN (R 4.6.0)\n##   ROSeq                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ROTS                                            2.3.8          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   roxygen2                                        7.3.3          2025-09-03 [2] CRAN (R 4.6.0)\n##   roxyglobals                                     1.0.0          2023-08-21 [2] CRAN (R 4.6.0)\n##   roxytest                                        0.0.2          2023-01-11 [2] CRAN (R 4.6.0)\n##   RPA                                             1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rpart                                           4.1.24         2025-01-07 [3] CRAN (R 4.6.0)\n##   rpart.plot                                      3.1.4          2026-01-08 [2] CRAN (R 4.6.0)\n##   rphylopic                                       1.6.0          2025-11-18 [2] CRAN (R 4.6.0)\n##   RPMM                                            1.25           2017-02-28 [2] CRAN (R 4.6.0)\n##   RPostgres                                       1.4.10         2026-02-16 [2] CRAN (R 4.6.0)\n##   RPostgreSQL                                     0.7-8          2025-03-28 [2] CRAN (R 4.6.0)\n##   rprimer                                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rprojroot                                       2.1.1          2025-08-26 [2] CRAN (R 4.6.0)\n##   RProtoBufLib                                    2.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rpx                                             2.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rqc                                             1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rqt                                             1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rrapply                                         1.2.8          2025-11-25 [2] CRAN (R 4.6.0)\n##   rrBLUP                                          4.6.3          2023-12-10 [2] CRAN (R 4.6.0)\n##   RRBSdata                                        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rrcov                                           1.7-7          2025-04-21 [2] CRAN (R 4.6.0)\n##   RRHO                                            1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rrvgo                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rsample                                         1.3.2          2026-01-30 [2] CRAN (R 4.6.0)\n##   Rsamtools                                       2.27.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rsbml                                           2.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rScudo                                          1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rsemmed                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RSeqAn                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RSKC                                            2.4.2          2016-08-28 [2] CRAN (R 4.6.0)\n##   rslurm                                          0.6.2          2023-02-24 [2] CRAN (R 4.6.0)\n##   rsm                                             2.10.6         2025-03-24 [2] CRAN (R 4.6.0)\n##   RSNNS                                           0.4-18         2026-01-30 [2] CRAN (R 4.6.0)\n##   Rsolnp                                          2.0.1          2025-06-30 [2] CRAN (R 4.6.0)\n##   rsparse                                         0.5.3          2025-02-17 [2] CRAN (R 4.6.0)\n##   RSpectra                                        0.16-2         2024-07-18 [2] CRAN (R 4.6.0)\n##   rSpectral                                       1.0.0.14       2025-12-07 [2] CRAN (R 4.6.0)\n##   rsq                                             2.7            2024-09-29 [2] CRAN (R 4.6.0)\n##   RSQLite                                         2.4.6          2026-02-06 [2] CRAN (R 4.6.0)\n##   rstan                                           2.32.7         2025-03-10 [2] CRAN (R 4.6.0)\n##   rstantools                                      2.6.0          2026-01-10 [2] CRAN (R 4.6.0)\n##   rstatix                                         0.7.3          2025-10-18 [2] CRAN (R 4.6.0)\n##   rstudioapi                                      0.18.0         2026-01-16 [2] CRAN (R 4.6.0)\n##   Rsubread                                        2.25.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rsvd                                            1.0.5          2021-04-16 [2] CRAN (R 4.6.0)\n##   rsvg                                            2.7.0          2025-09-08 [2] CRAN (R 4.6.0)\n##   RSVSim                                          1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rSWeeP                                          1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCA                                            1.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA                                           1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.clinical                                  20151101.41.0  2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.CNV                                       1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.methylation                               1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.miRNASeq                                  1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.mRNA                                      1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.mutations                                 20151101.41.0  2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.PANCAN12                                  1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.rnaseq                                    20151101.41.0  2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGA.RPPA                                      1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTCGAToolbox                                    2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rTensor                                         1.4.9          2025-08-25 [2] CRAN (R 4.6.0)\n##   RTN                                             2.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTNduals                                        1.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTNsurvival                                     1.35.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTopper                                         1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rtpca                                           1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rtracklayer                                     1.71.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RTriangle                                       1.6-0.15       2025-04-14 [2] CRAN (R 4.6.0)\n##   rTRM                                            1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rTRMui                                          1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Rtsne                                           0.17           2023-12-07 [2] CRAN (R 4.6.0)\n##   RUCova                                          1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RUnit                                           0.4.33.1       2025-06-17 [2] CRAN (R 4.6.0)\n##   runonce                                         0.3.3          2025-10-07 [2] CRAN (R 4.6.0)\n##   ruv                                             0.9.7.1        2019-08-30 [2] CRAN (R 4.6.0)\n##   RUVcorr                                         1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RUVnormalize                                    1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RUVnormalizeData                                1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RUVSeq                                          1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   rvcheck                                         0.2.1          2021-10-22 [2] CRAN (R 4.6.0)\n##   rversions                                       3.0.0          2025-10-09 [2] CRAN (R 4.6.0)\n##   rvest                                           1.0.5          2025-08-29 [2] CRAN (R 4.6.0)\n##   rvinecopulib                                    0.7.3.1.0      2025-06-13 [2] CRAN (R 4.6.0)\n##   Rvisdiff                                        1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   RWeka                                           0.4-47         2026-02-18 [2] CRAN (R 4.6.0)\n##   RWekajars                                       3.9.3-2        2019-10-19 [2] CRAN (R 4.6.0)\n##   rWikiPathways                                   1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   s2                                              1.1.9          2025-05-23 [2] CRAN (R 4.6.0)\n##   S4Arrays                                        1.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   S4Vectors                                       0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   S7                                              0.2.1          2025-11-14 [2] CRAN (R 4.6.0)\n##   sabre                                           0.4.3          2022-08-17 [2] CRAN (R 4.6.0)\n##   safe                                            3.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   safetensors                                     0.2.0          2025-08-18 [2] CRAN (R 4.6.0)\n##   sagenhaft                                       1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sampleClassifier                                1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sampleClassifierData                            1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sampling                                        2.11           2025-07-10 [2] CRAN (R 4.6.0)\n##   samr                                            3.0            2018-10-16 [2] CRAN (R 4.6.0)\n##   SamSPECTRAL                                     1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sandwich                                        3.1-1          2024-09-15 [2] CRAN (R 4.6.0)\n##   sangeranalyseR                                  1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sangerseqR                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SanityR                                         1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SANTA                                           2.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sarks                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   saseR                                           1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sass                                            0.4.10         2025-04-11 [2] CRAN (R 4.6.0)\n##   satuRn                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SAVER                                           1.1.2          2019-11-13 [2] CRAN (R 4.6.0)\n##   SBGNview                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SBGNview.data                                   1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SBMLR                                           2.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SC3                                             1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scaeData                                        1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scafari                                         1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Scale4C                                         1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ScaledMatrix                                    1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scales                                          1.4.0          2025-04-24 [2] CRAN (R 4.6.0)\n##   scam                                            1.2-22         2026-03-12 [2] CRAN (R 4.6.0)\n##   SCAN.UPC                                        2.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scanMiR                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scanMiRApp                                      1.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scanMiRData                                     1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scAnnotatR                                      1.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scAnnotatR.models                               0.99.10        2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCANVIS                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCArray                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCArray.sat                                     1.11.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scATAC.Explorer                                 1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scater                                          1.39.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scatterHatch                                    1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scattermore                                     1.2            2023-06-12 [2] CRAN (R 4.6.0)\n##   scatterpie                                      0.2.6          2025-09-12 [2] CRAN (R 4.6.0)\n##   scatterplot3d                                   0.3-45         2026-02-23 [2] CRAN (R 4.6.0)\n##   scBFA                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCBN                                            1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scBubbletree                                    1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scCB2                                           1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scClassify                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sccomp                                          2.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sccore                                          1.0.6          2025-04-13 [2] CRAN (R 4.6.0)\n##   scCustomize                                     3.2.4          2025-12-11 [2] CRAN (R 4.6.0)\n##   scDataviz                                       1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scDblFinder                                     1.25.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scDD                                            1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scDDboost                                       1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scde                                            2.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scDesign3                                       1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scDiagnostics                                   1.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scDotPlot                                       1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scds                                            1.99.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCFA                                            1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scFeatureFilter                                 1.31.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scFeatures                                      1.11.7         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scGPS                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scGraphVerse                                    1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sched                                           1.0.3          2024-10-02 [2] CRAN (R 4.6.0)\n##   schex                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scHiCcompare                                    1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scHOT                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scico                                           1.5.0          2023-08-14 [2] CRAN (R 4.6.0)\n##   scider                                          1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scifer                                          1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scLANE                                          1.1.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCLCBam                                         1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scmap                                           1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scMerge                                         1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scMET                                           1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scmeth                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scMitoMut                                       1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scMultiome                                      1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scMultiSim                                      1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCnorm                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scone                                           1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Sconify                                         1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCOPE                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scoup                                           1.5.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scp                                             1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scPCA                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scpdata                                         1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scPipe                                          2.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SCpubr                                          3.0.1          2026-01-09 [2] CRAN (R 4.6.0)\n##   scQTLtools                                      1.3.5          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scran                                           1.39.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scrapper                                        1.5.15         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scReClassify                                    1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scRecover                                       1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   screenCounter                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ScreenR                                         1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scRepertoire                                    2.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scrime                                          1.3.7          2026-01-25 [2] CRAN (R 4.6.0)\n##   scRNAseq                                        2.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scRNAseqApp                                     1.11.24        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scruff                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scry                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scrypt                                          0.1.6          2023-01-29 [2] CRAN (R 4.6.0)\n##   scs                                             3.2.7          2025-04-14 [2] CRAN (R 4.6.0)\n##   scShapes                                        1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scTensor                                        2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scTGIF                                          1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scTHI                                           1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scTHI.data                                      1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sctransform                                     0.4.3          2026-01-10 [2] CRAN (R 4.6.0)\n##   scTreeViz                                       1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scuttle                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   scviR                                           1.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sda                                             1.3.9          2025-04-08 [2] CRAN (R 4.6.0)\n##   SDAMS                                           1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seahtrue                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sechm                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seewave                                         2.2.4          2025-08-19 [2] CRAN (R 4.6.0)\n##   segclust2d                                      0.3.3          2024-04-24 [2] CRAN (R 4.6.0)\n##   segmented                                       2.2-1          2026-01-29 [2] CRAN (R 4.6.0)\n##   segmenter                                       1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   segmentSeq                                      2.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   selectKSigs                                     1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   selectr                                         0.5-1          2025-12-17 [2] CRAN (R 4.6.0)\n##   SELEX                                           1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SemDist                                         1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   semisup                                         1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sendmailR                                       1.4-0          2023-01-12 [2] CRAN (R 4.6.0)\n##   seq.hotSPOT                                     1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seq2pathway                                     1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seq2pathway.data                                1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SeqArray                                        1.51.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seqc                                            1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seqCAT                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seqcombo                                        1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SeqGate                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SeqGSEA                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Seqinfo                                         1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seqinr                                          4.2-36         2023-12-08 [2] CRAN (R 4.6.0)\n##   seqLogo                                         1.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seqmagick                                       0.1.8          2026-01-31 [2] CRAN (R 4.6.0)\n##   seqminer                                        9.9            2026-02-24 [2] CRAN (R 4.6.0)\n##   seqpac                                          1.11.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   seqPattern                                      1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seqsetvis                                       1.31.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SeqSQC                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sequencing                                      1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   SeqVarTools                                     1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SEraster                                        1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seriation                                       1.5.8          2025-08-20 [2] CRAN (R 4.6.0)\n##   serumStimulation                                1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   servr                                           0.32           2024-10-04 [2] CRAN (R 4.6.0)\n##   sesame                                          1.29.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sesameData                                      1.29.10        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sessioninfo                                     1.2.3          2025-02-05 [2] CRAN (R 4.6.0)\n##   SETA                                            1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SEtools                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   setRNG                                          2024.2-1       2024-02-18 [2] CRAN (R 4.6.0)\n##   sets                                            1.0-25         2023-12-06 [2] CRAN (R 4.6.0)\n##   settings                                        0.2.7          2021-05-07 [2] CRAN (R 4.6.0)\n##   Seurat                                          5.4.0          2025-12-14 [2] CRAN (R 4.6.0)\n##   SeuratObject                                    5.3.0          2025-12-12 [2] CRAN (R 4.6.0)\n##   sevenbridges                                    1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sevenC                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   seventyGeneData                                 1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sf                                              1.1-0          2026-02-24 [2] CRAN (R 4.6.0)\n##   sfarrow                                         0.4.1          2021-10-27 [2] CRAN (R 4.6.0)\n##   SFEData                                         1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sfheaders                                       0.4.5          2025-11-25 [2] CRAN (R 4.6.0)\n##   sfsmisc                                         1.1-23         2025-11-21 [2] CRAN (R 4.6.0)\n##   sftime                                          0.3.1          2025-08-19 [2] CRAN (R 4.6.0)\n##   SGCP                                            1.11.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sgdGMF                                          1.0.1          2025-05-17 [2] CRAN (R 4.6.0)\n##   sgeostat                                        1.0-27         2016-02-03 [2] CRAN (R 4.6.0)\n##   SGSeq                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   shades                                          1.4.0          2019-08-02 [2] CRAN (R 4.6.0)\n##   shadowtext                                      0.1.6          2025-08-24 [2] CRAN (R 4.6.0)\n##   shape                                           1.4.6.1        2024-02-23 [2] CRAN (R 4.6.0)\n##   shapefiles                                      0.7.2          2022-08-25 [2] CRAN (R 4.6.0)\n##   shapr                                           1.0.8          2026-01-20 [2] CRAN (R 4.6.0)\n##   shiny                                           1.13.0         2026-02-20 [2] CRAN (R 4.6.0)\n##   shiny.gosling                                   1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   shiny.react                                     0.4.0          2024-05-20 [2] CRAN (R 4.6.0)\n##   shinyAce                                        0.4.4          2025-02-03 [2] CRAN (R 4.6.0)\n##   shinyalert                                      3.1.0          2024-04-27 [2] CRAN (R 4.6.0)\n##   shinybiocloader                                 1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   shinyBS                                         0.64.0         2026-03-11 [2] CRAN (R 4.6.0)\n##   shinybusy                                       0.3.3          2024-03-09 [2] CRAN (R 4.6.0)\n##   shinycssloaders                                 1.1.0          2024-07-30 [2] CRAN (R 4.6.0)\n##   shinycustomloader                               0.9.0          2018-03-27 [2] CRAN (R 4.6.0)\n##   shinyCyJS                                       1.0.0          2023-09-26 [2] CRAN (R 4.6.0)\n##   shinydashboard                                  0.7.3          2025-04-21 [2] CRAN (R 4.6.0)\n##   shinydashboardPlus                              2.0.6          2025-08-25 [2] CRAN (R 4.6.0)\n##   shinyDSP                                        1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   shinyepico                                      1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   shinyFeedback                                   0.4.0          2021-09-23 [2] CRAN (R 4.6.0)\n##   shinyFiles                                      0.9.3          2022-08-19 [2] CRAN (R 4.6.0)\n##   shinyHeatmaply                                  0.2.0          2020-04-06 [2] CRAN (R 4.6.0)\n##   shinyhelper                                     0.3.2          2019-11-09 [2] CRAN (R 4.6.0)\n##   shinyjqui                                       0.4.1          2022-02-03 [2] CRAN (R 4.6.0)\n##   shinyjs                                         2.1.1          2026-01-15 [2] CRAN (R 4.6.0)\n##   shinylogs                                       0.2.1          2022-04-18 [2] CRAN (R 4.6.0)\n##   shinymanager                                    1.0.410        2022-09-27 [2] CRAN (R 4.6.0)\n##   shinyMatrix                                     0.8.1          2026-03-05 [2] CRAN (R 4.6.0)\n##   shinymeta                                       0.2.2          2026-03-02 [2] CRAN (R 4.6.0)\n##   shinyMethyl                                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   shinyMethylData                                 1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   shinyscreenshot                                 0.2.1          2023-08-21 [2] CRAN (R 4.6.0)\n##   shinytest                                       1.6.1          2024-05-30 [2] CRAN (R 4.6.0)\n##   shinytest2                                      0.5.1          2026-02-25 [2] CRAN (R 4.6.0)\n##   shinythemes                                     1.2.0          2021-01-25 [2] CRAN (R 4.6.0)\n##   shinytitle                                      0.1.0          2021-06-16 [2] CRAN (R 4.6.0)\n##   shinytoastr                                     2.2.0          2023-08-30 [2] CRAN (R 4.6.0)\n##   shinyTree                                       0.3.1          2023-08-07 [2] CRAN (R 4.6.0)\n##   shinyvalidate                                   0.1.3          2023-10-04 [2] CRAN (R 4.6.0)\n##   shinyWidgets                                    0.9.1          2026-03-09 [2] CRAN (R 4.6.0)\n##   ShortRead                                       1.69.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   showimage                                       1.0.0          2018-01-24 [2] CRAN (R 4.6.0)\n##   showtext                                        0.9-7          2024-03-02 [2] CRAN (R 4.6.0)\n##   showtextdb                                      3.0            2020-06-04 [2] CRAN (R 4.6.0)\n##   SIAMCAT                                         2.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SICtools                                        1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SIFT.Hsapiens.dbSNP132                          1.0.2          2026-03-06 [2] Bioconductor\n##   SIFT.Hsapiens.dbSNP137                          1.0.0          2026-03-06 [2] Bioconductor\n##   SigCheck                                        2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sigclust                                        1.1.0.1        2022-06-27 [2] CRAN (R 4.6.0)\n##   sigFeature                                      1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SigFuge                                         1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   siggenes                                        1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sights                                          1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sigmajs                                         0.1.5          2020-06-18 [2] CRAN (R 4.6.0)\n##   Signac                                          1.16.0         2025-10-10 [2] CRAN (R 4.6.0)\n##   signal                                          1.8-1          2024-06-26 [2] CRAN (R 4.6.0)\n##   signalHsmm                                      1.5            2018-11-15 [2] CRAN (R 4.6.0)\n##   signatureSearch                                 1.25.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   signatureSearchData                             1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   signeR                                          2.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   signifinder                                     1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sigora                                          3.1.1          2021-11-30 [2] CRAN (R 4.6.0)\n##   SigsPack                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sigsquared                                      1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SIM                                             1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SIMAT                                           1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SimBenchData                                    1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SimBu                                           1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SIMD                                            1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SimDesign                                       2.24           2026-02-24 [2] CRAN (R 4.6.0)\n##   SimFFPE                                         1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   similaRpeak                                     1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SIMLR                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   simona                                          1.9.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   simPIC                                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   simpIntLists                                    1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   simpleCache                                     0.5.0          2026-03-01 [2] CRAN (R 4.6.0)\n##   simpleSeg                                       1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   simpleSingleCell                                1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   SimpleUpset                                     0.1.4          2025-11-29 [2] CRAN (R 4.6.0)\n##   simplifyEnrichment                              2.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sincell                                         1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   singIST                                         0.99.85        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Single.mTEC.Transcriptomes                      1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SingleCellAlleleExperiment                      1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SingleCellExperiment                            1.33.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SingleCellMultiModal                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SingleCellSignalR                               2.1.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   singleCellTK                                    2.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SingleMoleculeFootprintingData                  1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SingleR                                         2.13.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SingleRBook                                     1.21.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   singscore                                       1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SingscoreAMLMutations                           1.27.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   SiPSiC                                          1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sirt                                            4.2-133        2025-09-27 [2] CRAN (R 4.6.0)\n##   sitadela                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Site2Target                                     1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sitePath                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sitmo                                           2.0.2          2021-10-13 [2] CRAN (R 4.6.0)\n##   sizepower                                       1.81.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sjlabelled                                      1.2.0          2022-04-10 [2] CRAN (R 4.6.0)\n##   sjmisc                                          2.8.11         2025-07-30 [2] CRAN (R 4.6.0)\n##   SKAT                                            2.2.5          2023-01-15 [2] CRAN (R 4.6.0)\n##   sketchR                                         1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   skewr                                           1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   skmeans                                         0.2-19         2026-02-04 [2] CRAN (R 4.6.0)\n##   slalom                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   slam                                            0.1-55         2024-11-13 [2] CRAN (R 4.6.0)\n##   slider                                          0.3.3          2025-11-14 [2] CRAN (R 4.6.0)\n##   slingshot                                       2.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SLqPCR                                          1.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sm                                              2.2-6.0        2024-02-17 [2] CRAN (R 4.6.0)\n##   smacof                                          2.1-7          2024-10-10 [2] CRAN (R 4.6.0)\n##   SMAD                                            1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   smartid                                         1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SmartPhos                                       1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SmartSVA                                        0.1.3          2017-05-28 [2] CRAN (R 4.6.0)\n##   smatr                                           3.4-8          2018-03-18 [2] CRAN (R 4.6.0)\n##   SMITE                                           1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   smokingMouse                                    1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   smoof                                           1.7.0          2026-02-24 [2] CRAN (R 4.6.0)\n##   smoothclust                                     1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   smoothie                                        1.0-4          2024-11-28 [2] CRAN (R 4.6.0)\n##   smoothr                                         1.2.1          2025-10-21 [2] CRAN (R 4.6.0)\n##   smoppix                                         1.3.4          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   smurf                                           1.1.8          2025-09-19 [2] CRAN (R 4.6.0)\n##   sn                                              2.1.3          2026-02-24 [2] CRAN (R 4.6.0)\n##   sna                                             2.8            2024-09-08 [2] CRAN (R 4.6.0)\n##   SNAData                                         1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SNAGEE                                          1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SNAGEEdata                                      1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   snakecase                                       0.11.1         2023-08-27 [2] CRAN (R 4.6.0)\n##   snapcount                                       1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SNFtool                                         2.3.1          2021-06-11 [2] CRAN (R 4.6.0)\n##   snifter                                         1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   snm                                             1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   snow                                            0.4-4          2021-10-27 [2] CRAN (R 4.6.0)\n##   SnowballC                                       0.7.1          2023-04-25 [2] CRAN (R 4.6.0)\n##   snowfall                                        1.84-6.3       2023-11-26 [2] CRAN (R 4.6.0)\n##   SNPediaR                                        1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SNPhood                                         1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SNPhoodData                                     1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SNPlocs.Hsapiens.dbSNP144.GRCh37                0.99.20        2026-03-06 [2] Bioconductor\n##   SNPlocs.Hsapiens.dbSNP144.GRCh38                0.99.20        2026-03-06 [2] Bioconductor\n##   SNPlocs.Hsapiens.dbSNP155.GRCh37                0.99.24        2026-03-06 [2] Bioconductor\n##   SNPlocs.Hsapiens.dbSNP155.GRCh38                0.99.24        2026-03-06 [2] Bioconductor\n##   SNPRelate                                       1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   softImpute                                      1.4-3          2025-05-12 [2] CRAN (R 4.6.0)\n##   soGGi                                           1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   som                                             0.3-5.2        2024-09-18 [2] CRAN (R 4.6.0)\n##   SomaDataIO                                      6.5.0          2026-02-06 [2] CRAN (R 4.6.0)\n##   SomaScan.db                                     0.99.10        2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   SomatiCAData                                    1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SomaticCancerAlterations                        1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SomaticSignatures                               2.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SOMbrero                                        1.5.0          2025-10-06 [2] CRAN (R 4.6.0)\n##   SOMNiBUS                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sortable                                        0.6.0          2025-12-14 [2] CRAN (R 4.6.0)\n##   sosta                                           1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SoupX                                           1.6.2          2022-11-01 [2] CRAN (R 4.6.0)\n##   sourcetools                                     0.1.7-1        2023-02-01 [2] CRAN (R 4.6.0)\n##   sp                                              2.2-1          2026-02-13 [2] CRAN (R 4.6.0)\n##   spacefillr                                      0.4.0          2025-02-24 [2] CRAN (R 4.6.0)\n##   SpaceMarkers                                    2.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spacetime                                       1.3-3          2025-02-13 [2] CRAN (R 4.6.0)\n##   SpaceTrooper                                    1.1.7          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spacexr                                         1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spam                                            2.11-3         2026-01-08 [2] CRAN (R 4.6.0)\n##   Spaniel                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpaNorm                                         1.5.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sparcl                                          1.0.4          2018-10-24 [2] CRAN (R 4.6.0)\n##   spARI                                           1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sparkline                                       2.0            2016-11-12 [2] CRAN (R 4.6.0)\n##   sparklyr                                        1.9.3          2025-11-19 [2] CRAN (R 4.6.0)\n##   sparrow                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SparseArray                                     1.11.11        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SparseDC                                        0.1.17         2018-01-04 [2] CRAN (R 4.6.0)\n##   SparseM                                         1.84-2         2024-07-17 [2] CRAN (R 4.6.0)\n##   sparseMatrixStats                               1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sparseMVN                                       0.2.2          2021-10-25 [2] CRAN (R 4.6.0)\n##   sparsenetgls                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sparsepca                                       0.1.2          2018-04-11 [2] CRAN (R 4.6.0)\n##   SparseSignatures                                2.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sparsesvd                                       0.2-3          2025-08-18 [2] CRAN (R 4.6.0)\n##   sparsevctrs                                     0.3.6          2026-01-27 [2] CRAN (R 4.6.0)\n##   spaSim                                          1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SPAtest                                         3.1.2          2020-09-04 [2] CRAN (R 4.6.0)\n##   spatial                                         7.3-18         2025-01-01 [3] CRAN (R 4.6.0)\n##   SpatialCPie                                     1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpatialDatasets                                 1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spatialDE                                       1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpatialDecon                                    1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spatialDmelxsim                                 1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spatialEco                                      2.0-3          2025-09-30 [2] CRAN (R 4.6.0)\n##   SpatialExperiment                               1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpatialExperimentIO                             1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpatialExtremes                                 2.1-0          2022-04-19 [2] CRAN (R 4.6.0)\n##   spatialFDA                                      1.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpatialFeatureExperiment                        1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spatialHeatmap                                  2.17.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spatialLIBD                                     1.23.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpatialOmicsOverlay                             1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpatialPack                                     0.4-1          2024-09-29 [2] CRAN (R 4.6.0)\n##   spatialreg                                      1.4-2          2025-09-06 [2] CRAN (R 4.6.0)\n##   spatialSimGP                                    1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpatialTools                                    1.0.5          2023-07-18 [2] CRAN (R 4.6.0)\n##   spatstat                                        3.5-1          2026-02-01 [2] CRAN (R 4.6.0)\n##   spatstat.data                                   3.1-9          2025-10-18 [2] CRAN (R 4.6.0)\n##   spatstat.explore                                3.7-0          2026-01-22 [2] CRAN (R 4.6.0)\n##   spatstat.geom                                   3.7-0          2026-01-20 [2] CRAN (R 4.6.0)\n##   spatstat.linnet                                 3.4-1          2026-01-31 [2] CRAN (R 4.6.0)\n##   spatstat.model                                  3.6-1          2026-01-29 [2] CRAN (R 4.6.0)\n##   spatstat.random                                 3.4-4          2026-01-21 [2] CRAN (R 4.6.0)\n##   spatstat.sparse                                 3.1-0          2024-06-21 [2] CRAN (R 4.6.0)\n##   spatstat.univar                                 3.1-6          2026-01-17 [2] CRAN (R 4.6.0)\n##   spatstat.utils                                  3.2-2          2026-03-10 [2] CRAN (R 4.6.0)\n##   spatzie                                         1.17.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spBayes                                         0.4-8          2024-09-23 [2] CRAN (R 4.6.0)\n##   spData                                          2.3.4          2025-01-08 [2] CRAN (R 4.6.0)\n##   spdep                                           1.4-2          2026-02-13 [2] CRAN (R 4.6.0)\n##   spdl                                            0.0.5          2023-06-18 [2] CRAN (R 4.6.0)\n##   speaq                                           2.7.0          2022-05-23 [2] CRAN (R 4.6.0)\n##   speckle                                         1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   specL                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpeCond                                         1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Spectra                                         1.21.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpectralTAD                                     1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpectraQL                                       1.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpectriPy                                       1.1.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   speedglm                                        0.3-5          2023-05-06 [2] CRAN (R 4.6.0)\n##   spelling                                        2.3.2          2025-08-18 [2] CRAN (R 4.6.0)\n##   SPEM                                            1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SPIA                                            2.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SPIAT                                           1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SPICEY                                          1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spicyR                                          1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpikeIn                                         1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpikeInSubset                                   1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spikeLI                                         2.71.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spiky                                           1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spkTools                                        1.67.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   splancs                                         2.01-45        2024-05-27 [2] CRAN (R 4.6.0)\n##   splatter                                        1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpliceWiz                                       1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SplicingFactory                                 1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SplicingGraphs                                  1.51.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SplineDV                                        1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   splines                                         4.6.0          2026-03-06 [3] local\n##   splines2                                        0.5.4          2025-02-28 [2] CRAN (R 4.6.0)\n##   splineTimeR                                     1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SPLINTER                                        1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   splitstackshape                                 1.4.8          2019-04-21 [2] CRAN (R 4.6.0)\n##   splots                                          1.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   splus2R                                         1.3-5          2024-02-18 [2] CRAN (R 4.6.0)\n##   SPONGE                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spoon                                           1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpotClean                                       1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SPOTlight                                       1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SpotSweeper                                     1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spqn                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spqnData                                        1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spsComps                                        0.3.4.0        2025-07-23 [2] CRAN (R 4.6.0)\n##   SPsimSeq                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   spsUtil                                         0.2.2.1        2025-09-28 [2] CRAN (R 4.6.0)\n##   SQLDataFrame                                    1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sqldf                                           0.4-12         2026-01-30 [2] CRAN (R 4.6.0)\n##   sqlq                                            1.0.1          2025-09-16 [2] CRAN (R 4.6.0)\n##   SQN                                             1.0.6          2022-06-10 [2] CRAN (R 4.6.0)\n##   squallms                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SQUAREM                                         2026.1         2026-03-12 [2] CRAN (R 4.6.0)\n##   squash                                          1.0.9          2020-02-20 [2] CRAN (R 4.6.0)\n##   sRACIPE                                         2.3.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SRAdb                                           1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   srnadiff                                        1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ssc                                             2.1-0          2019-12-15 [2] CRAN (R 4.6.0)\n##   sscu                                            2.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SSEparser                                       0.1.0          2023-12-14 [2] CRAN (R 4.6.0)\n##   sSeq                                            1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ssize                                           1.85.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sSNAPPY                                         1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ssPATHS                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ssrch                                           1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ssviz                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   st                                              1.2.7          2021-11-27 [2] CRAN (R 4.6.0)\n##   stable                                          1.1.7          2026-02-15 [2] CRAN (R 4.6.0)\n##   stabledist                                      0.7-2          2024-08-17 [2] CRAN (R 4.6.0)\n##   StabMap                                         1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   stabs                                           0.7-1          2026-01-31 [2] CRAN (R 4.6.0)\n##   STADyUM                                         1.1.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   stageR                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   standR                                          1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   StanHeaders                                     2.32.10        2024-07-15 [2] CRAN (R 4.6.0)\n##   staRgate                                        0.99.6         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   stars                                           0.7-1          2026-02-13 [2] CRAN (R 4.6.0)\n##   startupmsg                                      1.0.0          2025-01-12 [2] CRAN (R 4.6.0)\n##   statebins                                       1.4.0          2020-07-08 [2] CRAN (R 4.6.0)\n##   STATegRa                                        1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   StatescopeR                                     0.99.34        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   statip                                          0.2.3          2019-11-17 [2] CRAN (R 4.6.0)\n##   statmod                                         1.5.1          2025-10-09 [2] CRAN (R 4.6.0)\n##   statnet.common                                  4.13.0         2025-12-16 [2] CRAN (R 4.6.0)\n##   stats                                         * 4.6.0          2026-03-06 [3] local\n##   stats4                                          4.6.0          2026-03-06 [3] local\n##   statTarget                                      1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   stemHypoxia                                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   stepNorm                                        1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   STexampleData                                   1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   stJoincount                                     1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   stopwords                                       2.3            2021-10-28 [2] CRAN (R 4.6.0)\n##   storr                                           1.2.6          2025-04-15 [2] CRAN (R 4.6.0)\n##   stPipe                                          1.1.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   strandCheckR                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   strawr                                          0.0.92         2024-07-16 [2] CRAN (R 4.6.0)\n##   strex                                           2.0.1          2024-10-03 [2] CRAN (R 4.6.0)\n##   STRINGdb                                        2.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   stringdist                                      0.9.17         2026-01-16 [2] CRAN (R 4.6.0)\n##   stringfish                                      0.18.0         2026-01-18 [2] CRAN (R 4.6.0)\n##   stringi                                         1.8.7          2025-03-27 [2] CRAN (R 4.6.0)\n##   stringr                                         1.6.0          2025-11-04 [2] CRAN (R 4.6.0)\n##   strucchange                                     1.5-4          2024-09-02 [2] CRAN (R 4.6.0)\n##   struct                                          1.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Structstrings                                   1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   structToolbox                                   1.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   StructuralVariantAnnotation                     1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   styler                                          1.11.0         2025-10-13 [2] CRAN (R 4.6.0)\n##   SubCellBarCode                                  1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SubcellularSpatialData                          1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   subSeq                                          1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SUITOR                                          1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SummarizedExperiment                            1.41.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   summarytools                                    1.1.5          2026-01-27 [2] CRAN (R 4.6.0)\n##   Summix                                          2.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SuperCell                                       1.1            2025-12-16 [2] CRAN (R 4.6.0)\n##   SuperCellCyto                                   1.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SuperExactTest                                  1.1.0          2022-03-23 [2] CRAN (R 4.6.0)\n##   superheat                                       0.1.0          2017-02-04 [2] CRAN (R 4.6.0)\n##   SuperLearner                                    2.0-40         2025-12-21 [2] CRAN (R 4.6.0)\n##   supersigs                                       1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SuppDists                                       1.1-9.9        2025-03-24 [2] CRAN (R 4.6.0)\n##   surfaltr                                        1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SurfR                                           1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   survClust                                       1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   survcomp                                        1.61.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   survey                                          4.5            2026-02-24 [2] CRAN (R 4.6.0)\n##   survival                                        3.8-6          2026-01-16 [3] CRAN (R 4.6.0)\n##   survivalROC                                     1.0.3.1        2022-12-05 [2] CRAN (R 4.6.0)\n##   survivalsvm                                     0.0.6          2025-04-04 [2] CRAN (R 4.6.0)\n##   SurvMetrics                                     0.5.1          2025-02-05 [2] CRAN (R 4.6.0)\n##   survminer                                       0.5.2          2026-02-25 [2] CRAN (R 4.6.0)\n##   survtype                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sva                                             3.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   svaNUMT                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   svaRetro                                        1.17.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   svd                                             0.5.8          2025-01-10 [2] CRAN (R 4.6.0)\n##   svglite                                         2.2.2          2025-10-21 [2] CRAN (R 4.6.0)\n##   svgPanZoom                                      0.3.4          2020-02-15 [2] CRAN (R 4.6.0)\n##   SVM2CRMdata                                     1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SVMDO                                           1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   svMisc                                          1.4.3          2024-11-14 [2] CRAN (R 4.6.0)\n##   SVP                                             1.3.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   svUnit                                          1.0.8          2025-08-26 [2] CRAN (R 4.6.0)\n##   swamp                                           1.5.1          2019-12-06 [2] CRAN (R 4.6.0)\n##   SWATH2stats                                     1.41.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SwathXtend                                      2.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   swfdr                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   switchBox                                       1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   switchde                                        1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sylly                                           0.1-7          2026-02-02 [2] CRAN (R 4.6.0)\n##   sylly.en                                        0.1-3          2018-03-19 [2] CRAN (R 4.6.0)\n##   synapsis                                        1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   synaptome.data                                  0.99.6         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   synaptome.db                                    0.99.17        2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   synergyfinder                                   3.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SynExtend                                       1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   synlet                                          2.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   SynMut                                          1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   syntenet                                        1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   sys                                             3.4.3          2024-10-04 [2] CRAN (R 4.6.0)\n##   sysfonts                                        0.8.9          2024-03-02 [2] CRAN (R 4.6.0)\n##   systemfonts                                     1.3.2          2026-03-05 [2] CRAN (R 4.6.0)\n##   systemPipeR                                     2.17.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   systemPipeRdata                                 2.15.6         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   systemPipeShiny                                 1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   systemPipeTools                                 1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   syuzhet                                         1.0.7          2023-08-11 [2] CRAN (R 4.6.0)\n##   TabulaMurisData                                 1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TabulaMurisSenisData                            1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tadar                                           1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TADCompare                                      1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tagcloud                                        0.7.0          2025-06-28 [2] CRAN (R 4.6.0)\n##   TAM                                             4.3-25         2025-08-28 [2] CRAN (R 4.6.0)\n##   tanggle                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TAPseq                                          1.23.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   target                                          1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TargetDecoy                                     1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TargetScore                                     1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TargetScoreData                                 1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TargetSearch                                    2.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TargetSearchData                                1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tartare                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   taxonomizr                                      0.11.1         2025-03-13 [2] CRAN (R 4.6.0)\n##   TaxSEA                                          1.3.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TBSignatureProfiler                             1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TBX20BamSubset                                  1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TCA                                             1.2.1          2021-02-14 [2] CRAN (R 4.6.0)\n##   TCC                                             1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TCGAbiolinks                                    2.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TCGAbiolinksGUI.data                            1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TCGAcrcmiRNA                                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TCGAcrcmRNA                                     1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TCGAMethylation450k                             1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TCGAutils                                       1.31.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TCGAWorkflowData                                1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tcltk                                           4.6.0          2026-03-06 [3] local\n##   tcltk2                                          1.6.1          2025-06-01 [2] CRAN (R 4.6.0)\n##   TCseq                                           1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TDbasedUFE                                      1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TDbasedUFEadv                                   1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TeachingDemos                                   2.13           2024-02-16 [2] CRAN (R 4.6.0)\n##   TEKRABber                                       1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TENET                                           1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TENET.AnnotationHub                             1.1.0          2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   TENET.ExperimentHub                             1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tensor                                          1.5.1          2025-06-17 [2] CRAN (R 4.6.0)\n##   tensorA                                         0.36.2.1       2023-12-13 [2] CRAN (R 4.6.0)\n##   tensorflow                                      2.20.0         2025-08-22 [2] CRAN (R 4.6.0)\n##   TENxBrainData                                   1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TENxBUSData                                     1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TENxIO                                          1.13.3         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TENxPBMCData                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tenXplore                                       1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TENxVisiumData                                  1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TENxXeniumData                                  1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TEQC                                            4.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   terapadog                                       1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ternarynet                                      1.55.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   terra                                           1.9-1          2026-03-08 [2] CRAN (R 4.6.0)\n##   terraTCGAdata                                   1.15.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tester                                          0.3.0          2025-09-22 [2] CRAN (R 4.6.0)\n##   testthat                                        3.3.2          2026-01-11 [2] CRAN (R 4.6.0)\n##   text2vec                                        0.6.6          2025-12-01 [2] CRAN (R 4.6.0)\n##   textclean                                       0.9.7          2026-03-05 [2] CRAN (R 4.6.0)\n##   textshape                                       1.7.5          2024-04-01 [2] CRAN (R 4.6.0)\n##   textshaping                                     1.0.5          2026-03-06 [2] CRAN (R 4.6.0)\n##   textstem                                        0.1.4          2018-04-09 [2] CRAN (R 4.6.0)\n##   TFARM                                           1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tfautograph                                     0.3.2          2021-09-17 [2] CRAN (R 4.6.0)\n##   TFBSTools                                       1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TFEA.ChIP                                       1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TFHAZ                                           1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TFisher                                         0.2.0          2018-03-21 [2] CRAN (R 4.6.0)\n##   TFMPvalue                                       1.0.0          2026-01-19 [2] CRAN (R 4.6.0)\n##   tfruns                                          1.5.4          2025-08-20 [2] CRAN (R 4.6.0)\n##   TFutils                                         1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TH.data                                         1.1-5          2025-11-17 [2] CRAN (R 4.6.0)\n##   threejs                                         0.3.4          2025-04-21 [2] CRAN (R 4.6.0)\n##   tibble                                          3.3.1          2026-01-11 [2] CRAN (R 4.6.0)\n##   tictoc                                          1.2.1          2024-03-18 [2] CRAN (R 4.6.0)\n##   tidybayes                                       3.0.7          2024-09-15 [2] CRAN (R 4.6.0)\n##   tidybulk                                        2.1.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidyCoverage                                    1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidydr                                          0.0.6          2025-07-25 [2] CRAN (R 4.6.0)\n##   tidyexposomics                                  0.99.12        2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidyFlowCore                                    1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidygate                                        1.0.19         2025-12-10 [2] CRAN (R 4.6.0)\n##   tidygraph                                       1.3.1          2024-01-30 [2] CRAN (R 4.6.0)\n##   tidyHeatmap                                     1.13.1         2025-10-30 [2] CRAN (R 4.6.0)\n##   tidyomics                                       1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidyprint                                       0.99.9         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidyr                                           1.3.2          2025-12-19 [2] CRAN (R 4.6.0)\n##   tidysbml                                        1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidyselect                                      1.2.1          2024-03-11 [2] CRAN (R 4.6.0)\n##   tidyseurat                                      0.8.10         2026-02-26 [2] CRAN (R 4.6.0)\n##   tidySingleCellExperiment                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidySpatialExperiment                           1.7.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidySummarizedExperiment                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidytext                                        0.4.3          2025-07-25 [2] CRAN (R 4.6.0)\n##   tidytof                                         1.5.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tidytree                                        0.4.7          2026-01-08 [2] CRAN (R 4.6.0)\n##   tidyverse                                       2.0.0          2023-02-22 [2] CRAN (R 4.6.0)\n##   tidyxl                                          1.0.10         2023-12-21 [2] CRAN (R 4.6.0)\n##   tiff                                            0.1-12         2023-11-28 [2] CRAN (R 4.6.0)\n##   tightClust                                      1.1            2018-06-12 [2] CRAN (R 4.6.0)\n##   tigre                                           1.65.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tiledb                                          0.33.0         2025-10-01 [2] CRAN (R 4.6.0)\n##   TileDBArray                                     1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tilingArray                                     1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   timechange                                      0.4.0          2026-01-29 [2] CRAN (R 4.6.0)\n##   timecourse                                      1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   timecoursedata                                  1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   timeDate                                        4052.112       2026-01-28 [2] CRAN (R 4.6.0)\n##   timeOmics                                       1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   timereg                                         2.0.7          2025-08-18 [2] CRAN (R 4.6.0)\n##   TimerQuant                                      1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   timescape                                       1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   timeSeries                                      4052.112       2025-12-12 [2] CRAN (R 4.6.0)\n##   timsac                                          1.3.8-4        2023-09-30 [2] CRAN (R 4.6.0)\n##   TIN                                             1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tinesath1cdf                                    1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tinesath1probe                                  1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tinytest                                        1.4.1          2023-02-22 [2] CRAN (R 4.6.0)\n##   tinytex                                         0.58           2025-11-19 [2] CRAN (R 4.6.0)\n##   tippy                                           0.1.0          2021-01-11 [2] CRAN (R 4.6.0)\n##   TissueEnrich                                    1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tissueTreg                                      1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tkrplot                                         0.0-30         2025-05-26 [2] CRAN (R 4.6.0)\n##   tkWidgets                                       1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tLOH                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tm                                              0.7-18         2026-02-18 [2] CRAN (R 4.6.0)\n##   TMB                                             1.9.19         2025-12-15 [2] CRAN (R 4.6.0)\n##   TMExplorer                                      1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TMixClust                                       1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TMSig                                           1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tmvtnorm                                        1.7            2025-09-01 [2] CRAN (R 4.6.0)\n##   tnet                                            3.0.16         2020-02-24 [2] CRAN (R 4.6.0)\n##   TnT                                             1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TOAST                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   toastui                                         0.4.0          2025-04-03 [2] CRAN (R 4.6.0)\n##   tofsimsData                                     1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tokenizers                                      0.3.0          2022-12-22 [2] CRAN (R 4.6.0)\n##   tomoda                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tomoseqr                                        1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tools                                           4.6.0          2026-03-06 [3] local\n##   toOrdinal                                       1.4-0.0        2026-02-06 [2] CRAN (R 4.6.0)\n##   TOP                                             1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   topconfects                                     1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TopDom                                          0.10.1         2021-05-06 [2] CRAN (R 4.6.0)\n##   topdownr                                        1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   topdownrdata                                    1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   topGO                                           2.63.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   topicdoc                                        0.1.1          2022-07-17 [2] CRAN (R 4.6.0)\n##   topicmodels                                     0.2-17         2024-08-14 [2] CRAN (R 4.6.0)\n##   topologyGSA                                     1.5.0          2023-09-25 [2] CRAN (R 4.6.0)\n##   toppgene                                        0.99.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   torch                                           0.16.3         2025-11-02 [2] CRAN (R 4.6.0)\n##   ToxicoGx                                        2.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TPP                                             3.39.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TPP2D                                           1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tpSVG                                           1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tracktables                                     1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   trackViewer                                     1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tractor.base                                    3.5.0          2025-10-29 [2] CRAN (R 4.6.0)\n##   tradeSeq                                        1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TrajectoryGeometry                              1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TrajectoryUtils                                 1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   transcriptogramer                               1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   transcriptR                                     1.39.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   transformGamPoi                                 1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   transformr                                      0.1.5          2024-02-26 [2] CRAN (R 4.6.0)\n##   transite                                        1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tRanslatome                                     1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   transmogR                                       1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   transomics2cytoscape                            1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TransOmicsData                                  1.7.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   transport                                       0.15-4         2024-09-16 [2] CRAN (R 4.6.0)\n##   traseR                                          1.41.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TreeAndLeaf                                     1.23.2         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   treeio                                          1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   treemap                                         2.4-4          2023-05-25 [2] CRAN (R 4.6.0)\n##   TreeSummarizedExperiment                        2.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TreeTools                                       2.1.0          2026-02-11 [2] CRAN (R 4.6.0)\n##   TREG                                            1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Trendy                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TRESS                                           1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tricycle                                        1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TrIdent                                         1.3.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   triebeard                                       0.4.1          2023-03-04 [2] CRAN (R 4.6.0)\n##   trio                                            3.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   triplex                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tripr                                           1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tRNA                                            1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tRNAdbImport                                    1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tRNAscanImport                                  1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TRONCO                                          2.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   truncdist                                       1.0-2          2016-08-30 [2] CRAN (R 4.6.0)\n##   truncnorm                                       1.0-9          2023-03-20 [2] CRAN (R 4.6.0)\n##   trust                                           0.1-9          2026-02-11 [2] CRAN (R 4.6.0)\n##   TSAR                                            1.9.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TSCAN                                           1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tseries                                         0.10-60        2026-02-18 [2] CRAN (R 4.6.0)\n##   tsne                                            0.1-3.1        2022-03-28 [2] CRAN (R 4.6.0)\n##   TSP                                             1.2.6          2025-11-27 [2] CRAN (R 4.6.0)\n##   ttgsea                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TTMap                                           1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TTR                                             0.24.4         2023-11-28 [2] CRAN (R 4.6.0)\n##   ttservice                                       0.5.3          2025-07-10 [2] CRAN (R 4.6.0)\n##   tuberculosis                                    1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TumourMethData                                  1.9.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tuneR                                           1.4.7          2024-04-17 [2] CRAN (R 4.6.0)\n##   TurboNorm                                       1.59.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TVTB                                            1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tweeDEseq                                       1.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tweeDEseqCountData                              1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tweedie                                         3.0.17         2026-02-27 [2] CRAN (R 4.6.0)\n##   tweenr                                          2.0.3          2024-02-26 [2] CRAN (R 4.6.0)\n##   twilight                                        1.87.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   twoddpcr                                        1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   txcutr                                          1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   TxDb.Athaliana.BioMart.plantsmart22             3.0.1          2026-03-06 [2] Bioconductor\n##   TxDb.Athaliana.BioMart.plantsmart28             3.2.2          2026-03-06 [2] Bioconductor\n##   TxDb.Celegans.UCSC.ce11.ensGene                 3.15.0         2026-03-06 [2] Bioconductor\n##   TxDb.Celegans.UCSC.ce11.refGene                 3.4.6          2026-03-06 [2] Bioconductor\n##   TxDb.Celegans.UCSC.ce6.ensGene                  3.2.2          2026-03-06 [2] Bioconductor\n##   TxDb.Dmelanogaster.UCSC.dm3.ensGene             3.2.2          2026-03-06 [2] Bioconductor\n##   TxDb.Dmelanogaster.UCSC.dm6.ensGene             3.12.0         2026-03-06 [2] Bioconductor\n##   TxDb.Drerio.UCSC.danRer10.refGene               3.4.6          2026-03-06 [2] Bioconductor\n##   TxDb.Drerio.UCSC.danRer11.refGene               3.4.6          2026-03-06 [2] Bioconductor\n##   TxDb.Ggallus.UCSC.galGal5.refGene               3.12.0         2026-03-06 [2] Bioconductor\n##   TxDb.Hsapiens.UCSC.hg18.knownGene               3.2.2          2026-03-06 [2] Bioconductor\n##   TxDb.Hsapiens.UCSC.hg19.knownGene               3.22.1         2026-03-06 [2] Bioconductor\n##   TxDb.Hsapiens.UCSC.hg19.lincRNAsTranscripts     3.2.2          2026-03-06 [2] Bioconductor\n##   TxDb.Hsapiens.UCSC.hg19.refGene                 3.22.0         2026-03-06 [2] Bioconductor\n##   TxDb.Hsapiens.UCSC.hg38.knownGene               3.22.0         2026-03-06 [2] Bioconductor\n##   TxDb.Mmulatta.UCSC.rheMac10.refGene             3.14.0         2026-03-06 [2] Bioconductor\n##   TxDb.Mmusculus.UCSC.mm10.ensGene                3.4.0          2026-03-06 [2] Bioconductor\n##   TxDb.Mmusculus.UCSC.mm10.knownGene              3.10.0         2026-03-06 [2] Bioconductor\n##   TxDb.Mmusculus.UCSC.mm39.knownGene              3.22.0         2026-03-06 [2] Bioconductor\n##   TxDb.Mmusculus.UCSC.mm39.refGene                3.19.0         2026-03-06 [2] Bioconductor\n##   TxDb.Mmusculus.UCSC.mm9.knownGene               3.2.2          2026-03-06 [2] Bioconductor\n##   TxDb.Rnorvegicus.UCSC.rn4.ensGene               3.2.2          2026-03-06 [2] Bioconductor\n##   TxDb.Rnorvegicus.UCSC.rn5.refGene               3.12.0         2026-03-06 [2] Bioconductor\n##   TxDb.Rnorvegicus.UCSC.rn6.refGene               3.4.6          2026-03-06 [2] Bioconductor\n##   TxDb.Rnorvegicus.UCSC.rn7.refGene               3.15.0         2026-03-06 [2] Bioconductor\n##   TxDb.Scerevisiae.UCSC.sacCer3.sgdGene           3.2.2          2026-03-06 [2] Bioconductor\n##   txdbmaker                                       1.7.3          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tximeta                                         1.29.9         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tximport                                        1.39.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tximportData                                    1.39.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   tzdb                                            0.5.0          2025-03-15 [2] CRAN (R 4.6.0)\n##   UCell                                           2.15.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   ucminf                                          1.2.2          2024-06-24 [2] CRAN (R 4.6.0)\n##   UCSC.utils                                      1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   UCSCRepeatMasker                                3.22.0         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   Ularcirc                                        1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   umap                                            0.2.10.0       2023-02-01 [2] CRAN (R 4.6.0)\n##   UMI4Cats                                        1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   uncoverappLib                                   1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   UNDO                                            1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   unifiedWMWqPCR                                  1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   UniProt.ws                                      2.51.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   UniProtKeywords                                 0.99.8         2026-03-11 [2] Bioconductor 3.23 (R 4.6.0)\n##   uniqtag                                         1.0.1          2022-06-10 [2] CRAN (R 4.6.0)\n##   Uniquorn                                        2.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   units                                           1.0-1          2026-03-11 [2] CRAN (R 4.6.0)\n##   unittest                                        1.7-0          2024-08-16 [2] CRAN (R 4.6.0)\n##   universalmotif                                  1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   unmarked                                        1.5.1          2025-09-26 [2] CRAN (R 4.6.0)\n##   updateObject                                    1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   UPDhmm                                          1.7.1          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   upsetjs                                         1.11.1         2022-07-13 [2] CRAN (R 4.6.0)\n##   UpSetR                                          1.4.0          2019-05-22 [2] CRAN (R 4.6.0)\n##   urca                                            1.3-4          2024-05-27 [2] CRAN (R 4.6.0)\n##   urlchecker                                      1.0.1          2021-11-30 [2] CRAN (R 4.6.0)\n##   urltools                                        1.7.3.1        2025-06-12 [2] CRAN (R 4.6.0)\n##   usethis                                         3.2.1          2025-09-06 [2] CRAN (R 4.6.0)\n##   uSORT                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   utf8                                            1.2.6          2025-06-08 [2] CRAN (R 4.6.0)\n##   utils                                         * 4.6.0          2026-03-06 [3] local\n##   uuid                                            1.2-2          2026-01-23 [2] CRAN (R 4.6.0)\n##   uwot                                            0.2.4          2025-11-10 [2] CRAN (R 4.6.0)\n##   V8                                              8.0.1          2025-10-10 [2] CRAN (R 4.6.0)\n##   VAExprs                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   validate                                        1.1.7          2025-12-10 [2] CRAN (R 4.6.0)\n##   VAM                                             1.1.0          2023-11-05 [2] CRAN (R 4.6.0)\n##   VanillaICE                                      1.73.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VarCon                                          1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   varhandle                                       2.0.6          2023-09-30 [2] CRAN (R 4.6.0)\n##   variancePartition                               1.41.4         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VariantAnnotation                               1.57.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VariantExperiment                               1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VariantFiltering                                1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   variants                                        1.35.0         2026-03-13 [2] Bioconductor 3.23 (R 4.6.0)\n##   VariantTools                                    1.53.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VariantToolsData                                1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   varSelRF                                        0.7-9          2026-01-30 [2] CRAN (R 4.6.0)\n##   VaSP                                            1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vbmp                                            1.79.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vcd                                             1.4-13         2024-09-16 [2] CRAN (R 4.6.0)\n##   VCFArray                                        1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vcfR                                            1.16.0         2026-02-23 [2] CRAN (R 4.6.0)\n##   vctrs                                           0.7.1          2026-01-23 [2] CRAN (R 4.6.0)\n##   vdiffr                                          1.0.9          2026-02-13 [2] CRAN (R 4.6.0)\n##   VDJdive                                         1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VectraPolarisData                               1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VegaMC                                          3.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vegan                                           2.7-3          2026-03-04 [2] CRAN (R 4.6.0)\n##   velociraptor                                    1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   veloviz                                         1.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   venn                                            1.12           2024-01-08 [2] CRAN (R 4.6.0)\n##   VennDetail                                      1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VennDiagram                                     1.8.2          2026-01-11 [2] CRAN (R 4.6.0)\n##   venneuler                                       1.1-4          2024-01-14 [2] CRAN (R 4.6.0)\n##   verification                                    1.45           2025-08-21 [2] CRAN (R 4.6.0)\n##   VERSO                                           1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VGAM                                            1.1-14         2025-12-04 [2] CRAN (R 4.6.0)\n##   vidger                                          1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VIM                                             7.0.0          2026-01-10 [2] CRAN (R 4.6.0)\n##   vioplot                                         0.5.1          2025-02-23 [2] CRAN (R 4.6.0)\n##   viper                                           1.45.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vipor                                           0.4.7          2023-12-18 [2] CRAN (R 4.6.0)\n##   viridis                                         0.6.5          2024-01-29 [2] CRAN (R 4.6.0)\n##   viridisLite                                     0.4.3          2026-02-04 [2] CRAN (R 4.6.0)\n##   visdat                                          0.6.0          2023-02-02 [2] CRAN (R 4.6.0)\n##   ViSEAGO                                         1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VisiumIO                                        1.7.6          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   visiumStitched                                  1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   visNetwork                                      2.1.4          2025-09-04 [2] CRAN (R 4.6.0)\n##   vissE                                           1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vmrseq                                          1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Voyager                                         1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   VplotR                                          1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vroom                                           1.7.0          2026-01-27 [2] CRAN (R 4.6.0)\n##   vsclust                                         1.13.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vsn                                             3.79.5         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vulcan                                          1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   vulcandata                                      1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   waddR                                           1.25.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   waiter                                          0.2.5.1        2025-09-23 [2] CRAN (R 4.6.0)\n##   waldo                                           0.6.2          2025-07-11 [2] CRAN (R 4.6.0)\n##   warp                                            0.2.3          2026-01-13 [2] CRAN (R 4.6.0)\n##   wateRmelon                                      2.17.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   waveslim                                        1.8.5          2024-06-04 [2] CRAN (R 4.6.0)\n##   wavethresh                                      4.7.3          2024-08-19 [2] CRAN (R 4.6.0)\n##   wdm                                             0.2.6          2025-01-07 [2] CRAN (R 4.6.0)\n##   weaver                                          1.77.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   webbioc                                         1.83.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   webchem                                         1.3.1          2025-07-16 [2] CRAN (R 4.6.0)\n##   webdriver                                       1.0.6          2021-01-12 [2] CRAN (R 4.6.0)\n##   WeberDivechaLCdata                              1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   webshot                                         0.5.5          2023-06-26 [2] CRAN (R 4.6.0)\n##   websocket                                       1.4.4          2025-04-10 [2] CRAN (R 4.6.0)\n##   webutils                                        1.2.2          2024-10-04 [2] CRAN (R 4.6.0)\n##   weights                                         1.1.2          2025-06-18 [2] CRAN (R 4.6.0)\n##   WeightSVM                                       1.7-16         2024-10-12 [2] CRAN (R 4.6.0)\n##   weitrix                                         1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   WES.1KG.WUGSC                                   1.43.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   wesanderson                                     0.3.7          2023-10-31 [2] CRAN (R 4.6.0)\n##   WGCNA                                           1.74           2026-01-30 [2] CRAN (R 4.6.0)\n##   WGSmapp                                         1.23.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   wheatmap                                        0.2.0          2022-02-27 [2] CRAN (R 4.6.0)\n##   whisker                                         0.4.1          2022-12-05 [2] CRAN (R 4.6.0)\n##   widgetTools                                     1.89.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   widyr                                           0.1.5          2022-09-13 [2] CRAN (R 4.6.0)\n##   wiggleplotr                                     1.35.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   withr                                           3.0.2          2024-10-28 [2] CRAN (R 4.6.0)\n##   wk                                              0.9.5          2025-12-18 [2] CRAN (R 4.6.0)\n##   word2vec                                        0.4.1          2025-11-27 [2] CRAN (R 4.6.0)\n##   wordcloud                                       2.6            2018-08-24 [2] CRAN (R 4.6.0)\n##   wordcloud2                                      0.2.1          2018-01-03 [2] CRAN (R 4.6.0)\n##   wpm                                             1.21.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   wppi                                            1.19.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Wrench                                          1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   writexl                                         1.5.4          2025-04-15 [2] CRAN (R 4.6.0)\n##   WriteXLS                                        6.8.0          2025-05-22 [2] CRAN (R 4.6.0)\n##   wrMisc                                          2.0.0          2026-03-09 [2] CRAN (R 4.6.0)\n##   wrswoR                                          1.2.0          2025-11-10 [2] CRAN (R 4.6.0)\n##   XAItest                                         1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   xCell2                                          1.3.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   xcms                                            4.9.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   xcore                                           1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   xcoredata                                       1.15.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   XDE                                             2.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   XeniumIO                                        1.3.2          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   xenLite                                         1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   Xeva                                            1.27.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   xfun                                            0.56           2026-01-18 [2] CRAN (R 4.6.0)\n##   xgboost                                         3.2.0.1        2026-02-10 [2] CRAN (R 4.6.0)\n##   XhybCasneuf                                     1.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   XINA                                            1.29.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   XLConnect                                       1.3.0          2026-02-24 [2] CRAN (R 4.6.0)\n##   xlsx                                            0.6.5          2020-11-10 [2] CRAN (R 4.6.0)\n##   xlsxjars                                        0.9.0          2025-07-02 [2] CRAN (R 4.6.0)\n##   xmapbridge                                      1.69.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   XML                                             3.99-0.22      2026-02-10 [2] CRAN (R 4.6.0)\n##   xml2                                            1.5.2          2026-01-17 [2] CRAN (R 4.6.0)\n##   xmlparsedata                                    1.0.5          2021-03-06 [2] CRAN (R 4.6.0)\n##   xopen                                           1.0.1          2024-04-25 [2] CRAN (R 4.6.0)\n##   xtable                                          1.8-8          2026-02-22 [2] CRAN (R 4.6.0)\n##   XtraSNPlocs.Hsapiens.dbSNP144.GRCh37            0.99.12        2026-03-06 [2] Bioconductor\n##   XtraSNPlocs.Hsapiens.dbSNP144.GRCh38            0.99.12        2026-03-06 [2] Bioconductor\n##   xts                                             0.14.2         2026-02-28 [2] CRAN (R 4.6.0)\n##   XVector                                         0.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   yaImpute                                        1.0-34.1       2024-09-21 [2] CRAN (R 4.6.0)\n##   yaml                                            2.3.12         2025-12-10 [2] CRAN (R 4.6.0)\n##   yamss                                           1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   YAPSA                                           1.37.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   yardstick                                       1.3.2          2025-01-22 [2] CRAN (R 4.6.0)\n##   yarn                                            1.37.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   yeast2.db                                       3.13.0         2026-03-06 [2] Bioconductor\n##   yeastCC                                         1.51.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   yeastExpData                                    0.57.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   yeastGSData                                     0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   yeastNagalakshmi                                1.47.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   yeastRNASeq                                     0.49.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   yesno                                           0.1.3          2024-07-26 [2] CRAN (R 4.6.0)\n##   yulab.utils                                     0.2.4          2026-02-02 [2] CRAN (R 4.6.0)\n##   zCompositions                                   1.6.0          2026-01-20 [2] CRAN (R 4.6.0)\n##   zeallot                                         0.2.0          2025-05-27 [2] CRAN (R 4.6.0)\n##   zebrafishRNASeq                                 1.31.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   zellkonverter                                   1.21.1         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   zenith                                          1.13.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   zFPKM                                           1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   zigg                                            0.0.2          2025-02-07 [2] CRAN (R 4.6.0)\n##   zinbwave                                        1.33.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   zip                                             2.3.3          2025-05-13 [2] CRAN (R 4.6.0)\n##   zitools                                         1.5.0          2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##   zoo                                             1.8-15         2025-12-15 [2] CRAN (R 4.6.0)\n##   ZygosityPredictor                               1.11.0         2026-03-12 [2] Bioconductor 3.23 (R 4.6.0)\n##  \n##   [1] /tmp/RtmpFs7Wpt/Rinstf02fa13a9a064\n##   [2] /home/biocbuild/bbs-3.23-bioc/R/site-library\n##   [3] /home/biocbuild/bbs-3.23-bioc/R/library\n##   * ── Packages attached to the search path.\n##  \n##  ─ Python configuration ────────────────────────────────────────────────────\n##   Python is not available\n##  \n##  ───────────────────────────────────────────────────────────────────────────",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>C</span>  <span class='chapter-title'>Session information</span>"
    ]
  },
  {
    "objectID": "pages/apx-citation.html",
    "href": "pages/apx-citation.html",
    "title": "Appendix D — Citation",
    "section": "",
    "text": "Guidelines\nIf OSTA has been useful to your research, please consider citing:\n(* co-first. † co-senior. ° correspondence.)\nNotably, OSTA pieces together work and information from numerous researchers. As such, we suggest readers cite the pieces of work they have either used or consulted to conduct their research – be it (R, Python, or other) software, benchmarks that informed their methodological decisions, review or perspective pieces, or other. To facilitate this, we provide a list in the section below.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>D</span>  <span class='chapter-title'>Citation</span>"
    ]
  },
  {
    "objectID": "pages/apx-citation.html#guidelines",
    "href": "pages/apx-citation.html#guidelines",
    "title": "Appendix D — Citation",
    "section": "",
    "text": "HL Crowell*°, Y Dong*, I Billato, P Cai, M Emons, S Gunz, B Guo, M Li, A Mahmoud, A Manukyan, H Pagès, P Panwar, S Rao, CJ Sargeant, L Shepherd Kern, M Ramos, J Sun, M Totty, VJ Carey, Y Chen, L Collado-Torres, S Ghazanfar, KD Hansen, K Martinowich, KR Maynard, E Patrick, D Righelli, D Risso, S Tiberi, L Waldron, R Gottardo†°, MD Robinson†°, SC Hicks†°, LM Weber†°. Orchestrating spatial transcriptomics analysis with Bioconductor. bioRxiv (2025). DOI: 10.1101/2025.11.20.688607",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>D</span>  <span class='chapter-title'>Citation</span>"
    ]
  },
  {
    "objectID": "pages/apx-citation.html#collection",
    "href": "pages/apx-citation.html#collection",
    "title": "Appendix D — Citation",
    "section": "Collection",
    "text": "Collection\nWe here make an attempt to collect all biotechnology, dataset, software, review, benchmark, or other, references and resources mentioned throughout the book. If you spot any obvious omissions or mistakes, please let us know!\n\n\nChapter 1, Chapter 8 & Chapter 17: Introduction\n\n\n\n\n\n\n\n\n\nBioconductor\n\nGentleman et al. (2004); Huber et al. (2015); Vincent J. Carey (2025)\n\n\n\nOSCA\nAmezquita et al. (2020)\n\n\nbenchmark\nHartman and Satija (2024)\n\n\nCosMx\nS. He et al. (2022)\n\n\nCurio Seeker\nCurio Bioscience\n\n\nMERFISH\nK. H. Chen et al. (2015)\n\n\nMERSCOPE\nVizgen\n\n\nSlide-seqV2\nStickels et al. (2021)\n\n\nST\nStåhl et al. (2016)\n\n\nStereo-seq\nSTOmics\n\n\nVisium\n10x Genomics\n\n\nVisium HD\n10x Genomics\n\n\nXenium\n10x Genomics\n\n\n\n\n\n\nChapter 2: Spatial omics\n\n\n\n\n\n\n\n\n\n3D ST\nVickovic et al. (2022)\n\n\nOpen-ST\n\nSchott et al. (2024); Schott et al. (2025)\n\n\n\nscMAGS\nBaran and Doğan (2023)\n\n\nCITE-seq\nY. Liu et al. (2023)\n\n\nspatial omics\n\nMoffitt, Lundberg, and Heyn (2022); Bressan, Battistoni, and Hannon (2023)\n\n\n\nspatial analyses\nPalla, Fischer, et al. (2022)\n\n\nspatial proteomics\n\nSemba and Ishimoto (2024); Lundberg and Borner (2019)\n\n\n\nspatial epigenomics\nD. Zhang et al. (2023)\n\n\nspatial transcriptomics\n\nRao et al. (2021); Moses and Pachter (2022); Cheng et al. (2023); Tian, Chen, and Macosko (2023)\n\n\n\nsingle-cell spatial proteomics\n\nPaul et al. (2021); Mund, Brunner, and Mann (2022)\n\n\n\nsingle-cell & spatial transcriptomics\nGulati et al. (2025)\n\n\nprobe selection & panel design\n\nKuemmerle et al. (2024); Y. Zhang et al. (2024)\n\n\n\nmass spectrometry imaging\n\nH. Zhang et al. (2024); Palomino and Muddiman (2025)\n\n\n\n\n\n\n\nChapter 3: Infrastructure\n\n\n\n\n\n\n\n\n\nsf\nPebesma (2018)\n\n\nsp\nPebesma and Bivand (2005)\n\n\nRarr\nSmith and Gruson (2023)\n\n\npizzarr\nn/a\n\n\nalabaster.base\nA. Lun (2023)\n\n\nMoleculeExperiment\nPeters Couto et al. (2023)\n\n\nSingleCellExperiment\nAmezquita et al. (2020)\n\n\nSpatialExperiment\nRighelli et al. (2022)\n\n\nSpatialFeatureExperiment\nMoses et al. (2023)\n\n\nSeurat\nHao et al. (2023)\n\n\nScanpy\nWolf, Angerer, and Theis (2018)\n\n\nSquidpy\nPalla, Spitzer, et al. (2022)\n\n\nGiotto\n\nJ. G. Chen et al. (2025); Dries et al. (2021)\n\n\n\nVoltRon\nManukyan et al. (2023)\n\n\nspatialGE\nOspina et al. (2022)\n\n\nSpatialData\nMarconato et al. (2025)\n\n\nBruker’s CosMx\nAtoMx\n\n\nVizgen’s MERSCOPE\nVisualizer\n\n\n10 Genomic’s Xenium\nXenium Explorer\n\n\n10 Genomic’s Visium\nLoupe Browser\n\n\n\nSeurat-Loupe conversion\nloupeR\n\n\niSEE\nRue-Albrecht et al. (2018)\n\n\nnapari\nSofroniew et al. (2025)\n\n\n\n\n\n\nChapter 4: Ecosystem\n\n\n\n\n\n\n\n\n\nBiocPkgTools\nSu et al. (2025)\n\n\nBiocViews\nV. J. Carey et al. (2025)\n\n\n\n\n\n\nChapter 5: Importing\n\n\n\n\n\n\n\n\n\n10x Genomics’ Visium processing\nSpace Ranger\n\n\n10x Genomics’ Xenium processing\nXenium Ranger\n\n\nBruker’s CosMx processing\nAtoMx\n\n\nBruker’s CosMx tutorials\nscratch space\n\n\nSpatialExperimentIO\n\n\n\nSpatialFeatureExperiment\nMoses et al. (2023)\n\n\nVisiumIO\n\n\n\nXeniumIO\n\n\n\n\n\n\n\nChapter 6: Datasets\n\n\n\n\n\n\n\n\n\nhuman breast cancer (Visium, Xenium)\nJanesick et al. (2023)\n\n\ncolorectal carcinoma (Visium/HD, Xenium)\nde Oliveira et al. (2025)\n\n\nmouse brain (1k-plex CosMx)\nBruker\n\n\nhuman brain (6k-plex CosMx)\nBruker\n\n\nhuman brain (Visium)\nMaynard et al. (2021)\n\n\ntype I diabetes (IMC)\nDamond et al. (2019)\n\n\naxolotl brain (Stereo-seq)\nWei et al. (2022)\n\n\nspatialLIBD\nPardo et al. (2022)\n\n\nSTexampleData\nRighelli et al. (2022)\n\n\n\n\n\n\nChapter 7: Interoperability\n\n\n\n\n\n\n\n\n\n\nanndata`\nVirshup et al. (2024)\n\n\nanndataR\nDeconinck et al. (2025)\n\n\nbasilisk\nA. Lun (2022)\n\n\nreticulate\nUshey, Allaire, and Tang (2017)\n\n\nzellkonverter\nZappia et al. (2020)\n\n\ntechnical publishing systems\n\nR Markdown, Quarto\n\n\n\n\n\n\n\nChapter 9: Reads to counts\n\n\n\n\n\n\n\n\n\nRsubread\nLiao, Smyth, and Shi (2019)\n\n\nstPipe\nY. Xu et al. (2025)\n\n\n10x Genomics’ Visium\nSpaceRanger\n\n\nSTOmics’ Stereo-seq\n\nSAW; Gong et al. (2024)\n\n\n\n\n\n\n\nChapter 10 & Chapter 19: Quality control\n\n\n\n\n\n\n\n\n\ntheory\nBhuva et al. (2024)\n\n\nscater\nMcCarthy et al. (2017)\n\n\nSpotSweeper\nTotty, Hicks, and Guo (2025)\n\n\nSpaceTrooper\nBanzi et al. (2025)\n\n\n\n\n\n\nChapter 11 & Chapter 20: Intermediate processing\n\nChapter 12: Deconvolution\n\n\n\n\n\n\n\n\n\nCARDspa\nMa and Zhou (2022)\n\n\ncell2location\nKleshchevnikov et al. (2022)\n\n\nDSTG\nSong and Su (2021)\n\n\nNMFreg_tutorial\n\n\n\nnovosparc\nNitzan et al. (2019)\n\n\n\nGiotto’s SpatialDWLS\n\nJ. G. Chen et al. (2025)\n\n\n\nscvi-tools’s DestVI\n\nLopez et al. (2022)\n\n\nSD2\nH. Li et al. (2022)\n\n\n\nspacexr’s RCTD\n\nCable, Murray, Zou, et al. (2022)\n\n\nSpaOTsc\nCang and Nie (2020)\n\n\nSpatialDecon\nDanaher et al. (2022)\n\n\nSpiceMIx\nChidester et al. (2023)\n\n\nSPOTlight\nElosua-Bayes et al. (2021)\n\n\nstd-poisson\nBerglund et al. (2018)\n\n\nSTdeconvolve\nMiller et al. (2022)\n\n\nstereoscope\nAndersson et al. (2020)\n\n\nSTRIDE\nD. Sun et al. (2022)\n\n\nTangram\nBiancalani et al. (2021)\n\n\nbenchmarks\n\nSang-aram et al. (2023); H. Li et al. (2023); Gaspard-Boulinc et al. (2025)\n\n\n\n\n\n\n\nChapter 13: Workflow: Visium DLPFC\n\nChapter 14: Workflow: Visium CRC\n\nChapter 15: Workflow: Visium HD\n\nChapter 16: Workflow: Visium HD\n\nChapter 18: Segmentation\n\n\n\n\n\n\n\n\n\nBaysor\nPetukhov et al. (2022)\n\n\ncellpose\nStringer et al. (2021)\n\n\nproseg\nJones et al. (2025)\n\n\nssam\nPark et al. (2021)\n\n\nSPLIT\nBilous et al. (2025)\n\n\ncellAdmix\nMitchel et al. (2026)\n\n\nsegger_dev\nHeidari et al. (2025)\n\n\nFastReseg\nWu, Beechem, and Danaher (2024)\n\n\n\n\n\n\nChapter 21: Neighborhood analysis\n\n\n\n\n\n\n\n\n\nhoodscanR\nN. Liu et al. (2025)\n\n\nimcRtools\nWindhager et al. (2023)\n\n\nscider\nM. Li et al. (2025)\n\n\nlimma\nBaldoni et al. (2025)\n\n\nedgeR\nY. Chen et al. (2025)\n\n\n\n\n\n\nChapter 22: Cell-cell communication\n\n\n\n\n\n\n\n\n\nCCPlotR\nEnnis, Ó Broin, and Szegezdi (2023)\n\n\nCellChatDB\nJin et al. (2021)\n\n\nCellphoneDB\nEfremova et al. (2020)\n\n\nCOMMOT\nCang et al. (2023)\n\n\nGiotto\nJ. G. Chen et al. (2025)\n\n\nmistyR\nTanevski et al. (2022)\n\n\nSpaOTsc\nCang and Nie (2020)\n\n\nSpatialDM\nZhuoxuan Li et al. (2023)\n\n\ntheory\nOyler-Yaniv et al. (2017)\n\n\nreview\nArmingol et al. (2020)\n\n\nbenchmark\nZ. Liu, Sun, and Wang (2022)\n\n\n\n\n\n\nChapter 23: Sub-cellular analysis\n\n\n\n\n\n\n\n\n\ntheory\nCassella and Ephrussi (2022)\n\n\nVisium HD\nNovoselsky et al. (2025)\n\n\nBento\nMah et al. (2024)\n\n\nMoleculeExperiment\nPeters Couto et al. (2023)\n\n\nFISHFactor\nWalter, Stegle, and Velten (2023)\n\n\nClusterMap\nY. He et al. (2021)\n\n\nCellSP\nAggarwal and Sinha (2025)\n\n\nMAGIC\nDijk et al. (2018)\n\n\nTangram\nBiancalani et al. (2021)\n\n\nInSTAnT\nKumar et al. (2024)\n\n\nSPRAWL\nBierman et al. (2024)\n\n\nSpaGNN\nFang et al. (2023)\n\n\n\n\n\n\nChapter 24: Workflow: Xenium\n\nChapter 25: Workflow: CosMx\n\nChapter 26: Normalization\n\n\n\n\n\n\n\n\n\nscater\nMcCarthy et al. (2017)\n\n\nSpaNorm\nSalim et al. (2025)\n\n\ntheory\n\nBhuva et al. (2024); Atta et al. (2024)\n\n\n\n\n\n\n\nChapter 27: Dim. reduction\n\nChapter 28: Clustering\n\n\n\n\n\n\n\n\n\nBANKSY\nSinghal et al. (2024)\n\n\nBayesSpace\nZhao et al. (2021)\n\n\nCellCharter\nVarrone et al. (2024)\n\n\nLeiden\nTraag, Waltman, and Eck (2019)\n\n\nPRECAST\nW. Liu et al. (2023)\n\n\nPROST\nLiang et al. (2024)\n\n\nSpaceFlow\nRen et al. (2022)\n\n\nSTAGATE\nDong and Zhang (2022)\n\n\n\n\n\n\nChapter 29: Feature selection & testing\n\n\n\n\n\n\n\n\n\nC-SIDE\nCable, Murray, Shanmugam, et al. (2022)\n\n\nCTSV\nJ. Yu and Luo (2022)\n\n\nDESpace\nCai, Robinson, and Tiberi (2024)\n\n\nnnSVG\nWeber et al. (2023)\n\n\nscran\nA. T. L. Lun, McCarthy, and Marioni (2016)\n\n\nSPARK\n\nS. Sun, Zhu, and Zhou (2020); Zhu, Sun, and Zhou (2021)\n\n\n\nspatialDE\nSvensson, Teichmann, and Stegle (2018)\n\n\nspVC\nS. Yu and Li (2024)\n\n\nreviews\n\nAdhikari et al. (2024); Yan, Hua, and Li (2024)\n\n\n\nbenchmarks\n\nZhijian Li et al. (2023); C. Chen, Kim, and Yang (2024)\n\n\n\n\n\n\n\nChapter 30: Feature-set signatures\n\n\n\n\n\n\n\n\n\nmsigdb\nn/a\n\n\nmsigdbr\nn/a\n\n\nAUCell\nAibar et al. (2017)\n\n\nMolecular Signatures Database (MSigDB)\nSubramanian et al. (2005)\n\n\n\n\n\n\nChapter 31: Spatial statistics\n\n\n\n\n\n\n\n\n\npasta\nEmons et al. (2025)\n\n\nspatstat\nBaddeley and Turner (2005)\n\n\n1st law of geography\nTobler (1970)\n\n\nspatial analysis\nDale and Fortin (2014)\n\n\nspatial data science\nPebesma and Bivand (2023)\n\n\npoint pattern analysis\nBaddeley, Rubak, and Turner (2015)\n\n\nLee’s L\n\nLee (2001)\n\n\nRipley’s K\n\nRipley (1976)\n\n\nLISA metric\n\nAnselin (1995); Anselin (2019)\n\n\n\njoint count statistics\nGetis (2009)\n\n\n\n\n\n\nChapter 32: Image analysis\n\n\n\n\n\n\n\n\n\nnapari\nSofroniew et al. (2025)\n\n\nQuPath\nBankhead et al. (2017)\n\n\nProv-GigaPath\nH. Xu et al. (2024)\n\n\nThe Cancer Genome Atlas (TCGA)\nTomczak, Czerwińska, and Wiznerowicz (2015)\n\n\nThe Cancer Imaging Archive (TCIA)\nn/a\n\n\nimageTCGA\nn/a\n\n\nTCIAAPI\nn/a\n\n\n\n\n\n\nChapter 33: Differential spatial patterns\n\nChapter 34: Differential colocalization\n\nChapter 35: Structure-based analysis\n\n\n\n\n\n\n\n\n\nC-SIDE\nCable, Murray, Shanmugam, et al. (2022)\n\n\nDESpace\nCai, Robinson, and Tiberi (2024)\n\n\nlme4\nBates et al. (2015)\n\n\nlmerTest\nKuznetsova, Brockhoff, and Christensen (2017)\n\n\nsosta\nGunz, Crowell, and Robinson (2025)\n\n\nspatialFDA\nn/a\n\n\nspicyR\nCanete et al. (2022)\n\n\n\n\n\n\nChapter 36: Registration\n\nChapter 37: Imputation\n\nChapter 38: Workflow: Xenium + Visium\n\n\n\n\n\n\n\n\n\ntheory\nArgelaguet et al. (2021)\n\n\nsilhouette\nRautenstrauch and Ohler (2025)\n\n\nbenchmarks\n\nTran et al. (2020); Chazarra-Gil et al. (2021); Luecken et al. (2022)\n\n\n\nharmony\nKorsunsky et al. (2019)\n\n\nCellMixS\nLütge et al. (2021)\n\n\nrliger\nWelch et al. (2019)\n\n\n\nscvi-tool’s Trangram\n\nBiancalani et al. (2021)",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>D</span>  <span class='chapter-title'>Citation</span>"
    ]
  },
  {
    "objectID": "pages/apx-citation.html#references",
    "href": "pages/apx-citation.html#references",
    "title": "Appendix D — Citation",
    "section": "References",
    "text": "References\n\n\n\n\nAdhikari, Sikta Das, Jiaxin Yang, Jianrong Wang, and Yuehua Cui. 2024. “Recent Advances in Spatially Variable Gene Detection in Spatial Transcriptomics.” Computational and Structural Biotechnology Journal 23: 883–91. https://doi.org/10.1016/j.csbj.2024.01.016.\n\n\nAggarwal, Bhavay, and Saurabh Sinha. 2025. “CellSP: Module Discovery and Visualization for Subcellular Spatial Transcriptomics Data.” bioRxiv, January. https://doi.org/10.1101/2025.01.12.632553.\n\n\nAibar, Sara, Carmen Bravo González-Blas, Thomas Moerman, Vân Anh Huynh-Thu, Hana Imrichova, Gert Hulselmans, Florian Rambow, et al. 2017. “SCENIC: Single-Cell Regulatory Network Inference and Clustering.” Nature Methods 14: 1083–86. https://doi.org/10.1038/nmeth.4463.\n\n\nAmezquita, Robert A., Aaron T. L. Lun, Etienne Becht, Vince J. Carey, Lindsay N. Carpp, Ludwig Geistlinger, Federico Marini, et al. 2020. “Orchestrating Single-Cell Analysis with Bioconductor.” Nature Methods 17: 137–45. https://doi.org/10.1038/s41592-019-0654-x.\n\n\nAndersson, Alma, Joseph Bergenstråhle, Michaela Asp, Ludvig Bergenstråhle, Aleksandra Jurek, José Fernández Navarro, and Joakim Lundeberg. 2020. “Single-Cell and Spatial Transcriptomics Enables Probabilistic Inference of Cell Type Topography.” Communications Biology 3 (1): 565. https://doi.org/10.1038/s42003-020-01247-y.\n\n\nAnselin, Luc. 1995. “Local Indicators of Spatial Association—LISA.” Geographical Analysis 27: 93–115. https://doi.org/10.1111/j.1538-4632.1995.tb00338.x.\n\n\n———. 2019. “A Local Indicator of Multivariate Spatial Association: Extending Geary’s c.” Geographical Analysis 51: 133–50. https://doi.org/10.1111/gean.12164.\n\n\nArgelaguet, Ricard, Anna S E Cuomo, Oliver Stegle, and John C Marioni. 2021. “Computational principles and challenges in single-cell data integration.” Nature Biotechnology 39: 1202–15. https://doi.org/10.1038/s41587-021-00895-7.\n\n\nArmingol, Erick, Adam Officer, Olivier Harismendy, and Nathan E Lewis. 2020. “Deciphering Cell–Cell Interactions and Communication from Gene Expression.” Nature Reviews Genetics 22 (2): 71–88. https://doi.org/10.1038/s41576-020-00292-x.\n\n\nAtta, Lyla, Kalen Clifton, Manjari Anant, Gohta Aihara, and Jean Fan. 2024. “Gene Count Normalization in Single-Cell Imaging-Based Spatially Resolved Transcriptomics.” Genome Biology 25 (153). https://doi.org/10.1186/s13059-024-03303-w.\n\n\nBaddeley, Adrian, Ege Rubak, and Rolf Turner. 2015. Spatial Point Patterns: Methodology and Applications with r. 1st Edition. Chapman; Hall/CRC. https://doi.org/10.1201/b19708.\n\n\nBaddeley, Adrian, and Rolf Turner. 2005. “Spatstat: An r Package for Analyzing Spatial Point Patterns.” Journal of Statistical Software 12: 1–42. https://doi.org/10.18637/jss.v012.i06.\n\n\nBaldoni, Pedro L., Lizhong Chen, Mengbo Li, Yunshun Chen, and Gordon K. Smyth. 2025. “Dividing Out Quantification Uncertainty Enables Assessment of Differential Transcript Usage with Limma and edgeR.” bioRxiv. https://doi.org/10.1101/2025.04.07.647659.\n\n\nBankhead, Peter, Maurice B Loughrey, José A Fernández, Yvonne Dombrowski, Darragh G McArt, Philip D Dunne, Stephen McQuaid, et al. 2017. “QuPath: Open Source Software for Digital Pathology Image Analysis.” Scientific Reports 7 (1): 1–7. https://doi.org/10.1038/s41598-017-17204-5.\n\n\nBanzi, Benedetta, Dario Righelli, Matteo Marchionni, Oriana Romano, Mattia Forcato, Davide Risso, and Silvio Bicciato. 2025. “SpaceTrooper: A Quality Control Framework for Imaging-Based Spatial Omics Data.” bioRxiv. https://doi.org/10.64898/2025.12.24.696336.\n\n\nBaran, Yusuf, and Berat Doğan. 2023. “scMAGS: Marker Gene Selection from scRNA-Seq Data for Spatial Transcriptomics Studies.” Computers in Biology and Medicine 155 (106634). https://doi.org/10.1016/j.compbiomed.2023.106634.\n\n\nBates, Douglas, Martin Mächler, Ben Bolker, and Steve Walker. 2015. “Fitting Linear Mixed-Effects Models Using Lme4.” Journal of Statistical Software 67: 1–48. https://doi.org/10.18637/jss.v067.i01.\n\n\nBerglund, Emelie, Jonas Maaskola, Niklas Schultz, Stefanie Friedrich, Maja Marklund, Joseph Bergenstråhle, Firas Tarish, et al. 2018. “Spatial Maps of Prostate Cancer Transcriptomes Reveal an Unexplored Landscape of Heterogeneity.” Nature Communications 9 (1): 2419. https://doi.org/10.1038/s41467-018-04724-5.\n\n\nBhuva, Dharmesh D., Chin Wee Tan, Agus Salim, Claire Marceaux, Marie A. Pickering, Jinjin Chen, Malvika Kharbanda, et al. 2024. “Library Size Confounds Biology in Spatial Transcriptomics Data.” Genome Biology 25 (99). https://doi.org/10.1186/s13059-024-03241-7.\n\n\nBiancalani, Tommaso, Gabriele Scalia, Lorenzo Buffoni, Raghav Avasthi, Ziqing Lu, Aman Sanger, Neriman Tokcan, et al. 2021. “Deep Learning and Alignment of Spatially Resolved Single-Cell Transcriptomes with Tangram.” Nature Methods 18: 1352–62. https://doi.org/10.1038/s41592-021-01264-7.\n\n\nBierman, Rob, Jui M Dave, Daniel M Greif, and Julia Salzman. 2024. “Statistical Analysis Supports Pervasive RNA Subcellular Localization and Alternative 3’ UTR Regulation.” eLife 12 (December). https://doi.org/10.7554/elife.87517.\n\n\nBilous, Mariia, Daria Buszta, Jonathan Bac, Senbai Kang, Yixing Estella Dong, Stephanie Tissot, Sylvie Andre, et al. 2025. “From transcripts to cells: Dissecting sensitivity, signal contamination, and specificity in Xenium spatial transcriptomics.” bioRxiv. https://doi.org/10.1101/2025.04.23.649965.\n\n\nBressan, Dario, Giorgia Battistoni, and Gregory J. Hannon. 2023. “The Dawn of Spatial Omics.” Science 381. https://doi.org/10.1126/science.abq4964.\n\n\nCable, Dylan M., Evan Murray, Vignesh Shanmugam, Simon Zhang, Luli S. Zou, Michael Diao, Haiqi Chen, Evan Z. Macosko, Rafael A. Irizarry, and Fei Chen. 2022. “Cell Type-Specific Inference of Differential Expression in Spatial Transcriptomics.” Nature Methods 19: 1076–87. https://doi.org/10.1038/s41592-022-01575-3.\n\n\nCable, Dylan M., Evan Murray, Luli S. Zou, Aleksandrina Goeva, Evan Z. Macosko, Fei Chen, and Rafael A. Irizarry. 2022. “Robust Decomposition of Cell Type Mixtures in Spatial Transcriptomics.” Nature Biotechnology 40: 517–26. https://doi.org/10.1038/s41587-021-00830-w.\n\n\nCai, Peiying, Mark D Robinson, and Simone Tiberi. 2024. “DESpace: Spatially Variable Gene Detection via Differential Expression Testing of Spatial Clusters.” Bioinformatics 40 (btae027, 2). https://doi.org/10.1093/bioinformatics/btae027.\n\n\nCanete, Nicolas P, Sourish S Iyengar, John T Ormerod, Heeva Baharlou, Andrew N Harman, and Ellis Patrick. 2022. “spicyR: Spatial Analysis of in Situ Cytometry Data in r.” Bioinformatics 38: 3099–3105. https://doi.org/10.1093/bioinformatics/btac268.\n\n\nCang, Zixuan, and Qing Nie. 2020. “Inferring Spatial and Signaling Relationships Between Cells from Single Cell Transcriptomic Data.” Nature Communications 11 (2084). https://doi.org/10.1038/s41467-020-15968-5.\n\n\nCang, Zixuan, Yanxiang Zhao, Axel A. Almet, Adam Stabell, Raul Ramos, Maksim V. Plikus, Scott X. Atwood, and Qing Nie. 2023. “Screening Cell–Cell Communication in Spatial Transcriptomics via Collective Optimal Transport.” Nature Methods 20: 218–28. https://doi.org/10.1038/s41592-022-01728-4.\n\n\nCarey, V. J., B. J. Harshfield, S. Falcon, S. Arora, and L. Shepherd. 2025. “biocViews: Categorized Views of r Package Repositories.” R Package. https://doi.org/10.18129/B9.bioc.biocViews.\n\n\nCarey, Vincent J. 2025. “Bioconductor: Planning a Third Decade of Comprehensive Support for Genomic Data Science.” Patterns 6 (101319, 7). https://doi.org/10.1016/j.patter.2025.101319.\n\n\nCassella, Lucia, and Anne Ephrussi. 2022. “Subcellular Spatial Transcriptomics Identifies Three Mechanistically Different Classes of Localizing RNAs.” Nature Communications 13 (1). https://doi.org/10.1038/s41467-022-34004-2.\n\n\nChazarra-Gil, Ruben, Stijn van Dongen, Vladimir Yu Kiselev, and Martin Hemberg. 2021. “Flexible comparison of batch correction methods for single-cell RNA-seq using BatchBench.” Nucleic Acids Research 49 (7): e42. https://doi.org/10.1093/nar/gkab004.\n\n\nChen, Carissa, Hani Jieun Kim, and Pengyi Yang. 2024. “Evaluating Spatially Variable Gene Detection Methods for Spatial Transcriptomics Data.” Genome Biology 25 (18). https://doi.org/10.1186/s13059-023-03145-y.\n\n\nChen, Jiaji G, Joselyn C Chávez-Fuentes, Matthew O’Brien, Junxiang Xu, Edward C Ruiz, Wen Wang, Iqra Amin, et al. 2025. “Giotto Suite: A Multiscale and Technology-Agnostic Spatial Multiomics Analysis Ecosystem.” Nature Methods, 1–13. https://doi.org/10.1038/s41592-025-02817-w.\n\n\nChen, Kok Hao, Alistair N. Boettiger, Jeffrey R. Moffitt, Siyuan Wang, and Xiaowei Zhuang. 2015. “Spatially Resolved, Highly Multiplexed RNA Profiling in Single Cells.” Science 348. https://doi.org/10.1126/science.aaa6090.\n\n\nChen, Yunshun, Lizhong Chen, Aaron T L Lun, Pedro L Baldoni, and Gordon K Smyth. 2025. “edgeR V4: Powerful Differential Analysis of Sequencing Data with Expanded Functionality and Improved Support for Small Counts and Larger Datasets.” Nucleic Acids Research 53 (gkaf018, 2). https://doi.org/10.1093/nar/gkaf018.\n\n\nCheng, Mengnan, Yujia Jiang, Jiangshan Xu, Alexios-Fotios A. Mentis, Shuai Wang, Huiwen Zheng, Sunil Kumar Sahu, Longqi Liu, and Xun Xu. 2023. “Spatially Resolved Transcriptomics: A Comprehensive Review of Their Technological Advances, Applications, and Challenges.” Journal of Genetics and Genomics 50: 625–40. https://doi.org/10.1016/j.jgg.2023.03.011.\n\n\nChidester, Benjamin, Tianming Zhou, Shahul Alam, and Jian Ma. 2023. “SpiceMix Enables Integrative Single-Cell Spatial Modeling of Cell Identity.” Nat. Genet. 55 (1): 78–88. https://doi.org/10.1038/s41588-022-01256-z.\n\n\nDale, Mark R. T., and Marie-Josée Fortin. 2014. Spatial Analysis: A Guide for Ecologists. 2nd Edition. Cambridge University Press. https://doi.org/10.1017/CBO9780511978913.\n\n\nDamond, Nicolas, Stefanie Engler, Vito R. T. Zanotelli, Denis Schapiro, Clive H. Wasserfall, Irina Kusmartseva, Harry S. Nick, et al. 2019. “A Map of Human Type 1 Diabetes Progression by Imaging Mass Cytometry.” Cell Metabolism 29: 755–68. https://doi.org/10.1016/j.cmet.2018.11.014.\n\n\nDanaher, Patrick, Youngmi Kim, Brenn Nelson, Maddy Griswold, Zhi Yang, Erin Piazza, and Joseph M Beechem. 2022. “Advances in Mixed Cell Deconvolution Enable Quantification of Cell Types in Spatial Transcriptomic Data.” Nature Communications 13 (1): 385. https://doi.org/10.1038/s41467-022-28020-5.\n\n\nde Oliveira, Michelli Faria, Juan Pablo Romero, Meii Chung, Stephen R. Williams, Andrew D. Gottscho, Anushka Gupta, Susan E. Pilipauskas, et al. 2025. “High-Definition Spatial Transcriptomic Profiling of Immune Cell Populations in Colorectal Cancer.” Nature Genetics 57: 1512–23. https://doi.org/10.1038/s41588-025-02193-3.\n\n\nDeconinck, Louise, Luke Zappia, Robrecht Cannoodt, Martin Morgan, scverse core, Isaac Virshup, Chananchida Sang-Aram, et al. 2025. “anndataR Improves Interoperability Between r and Python in Single-Cell Transcriptomics.” bioRxiv. https://doi.org/10.1101/2025.08.18.669052.\n\n\nDijk, David van, Roshan Sharma, Juozas Nainys, Kristina Yim, Pooja Kathail, Ambrose J. Carr, Cassandra Burdziak, et al. 2018. “Recovering Gene Interactions from Single-Cell Data Using Data Diffusion.” Cell 174 (3): 716–729.e27. https://doi.org/10.1016/j.cell.2018.05.061.\n\n\nDong, Kangning, and Shihua Zhang. 2022. “Deciphering Spatial Domains from Spatially Resolved Transcriptomics with an Adaptive Graph Attention Auto-Encoder.” Nature Communications 13 (1739). https://doi.org/10.1038/s41467-022-29439-6.\n\n\nDries, Ruben, Qian Zhu, Rui Dong, Chee-Huat Linus Eng, Huipeng Li, Kan Liu, Yuntian Fu, et al. 2021. “Giotto: A Toolbox for Integrative Analysis and Visualization of Spatial Expression Data.” Genome Biology 22 (78). https://doi.org/10.1186/s13059-021-02286-2.\n\n\nEfremova, Mirjana, Miquel Vento-Tormo, Sarah A Teichmann, and Roser Vento-Tormo. 2020. “CellPhoneDB: Inferring Cell-Cell Communication from Combined Expression of Multi-Subunit Ligand-Receptor Complexes.” Nature Protocols 15 (4): 1484–1506. https://doi.org/10.1038/s41596-020-0292-x.\n\n\nElosua-Bayes, Marc, Paula Nieto, Elisabetta Mereu, Ivo Gut, and Holger Heyn. 2021. “SPOTlight: Seeded NMF Regression to Deconvolute Spatial Transcriptomics Spots with Single-Cell Transcriptomes.” Nucleic Acids Research 49 (9): e50. https://doi.org/10.1093/nar/gkab043.\n\n\nEmons, Martin, Samuel Gunz, Helena L. Crowell, Izaskun Mallona, Reinhard Furrer, and Mark D. Robinson. 2025. “Harnessing the Potential of Spatial Statistics for Spatial Omics Data with Pasta.” Nucleic Acids Research 53 (17): gkaf870. https://doi.org/10.1038/s41467-022-28020-5.\n\n\nEnnis, Sarah, Pilib Ó Broin, and Eva Szegezdi. 2023. “CCPlotR: An R Package for the Visualization of Cell-Cell Interactions.” Bioinformatics Advances 3 (1): vbad130. https://doi.org/10.1093/bioadv/vbad130.\n\n\nFang, Zhou, Adam J. Ford, Thomas Hu, Nicholas Zhang, Athanasios Mantalaris, and Ahmet F. Coskun. 2023. “Subcellular Spatially Resolved Gene Neighborhood Networks in Single Cells.” Cell Reports Methods 3 (5): 100476. https://doi.org/10.1016/j.crmeth.2023.100476.\n\n\nGaspard-Boulinc, Lucie C., Luca Gortana, Thomas Walter, Emmanuel Barillot, and Florence M. G. Cavalli. 2025. “Cell-Type Deconvolution Methods for Spatial Transcriptomics.” Nature Reviews Genetics. https://doi.org/https://doi.org/10.1038/s41576-025-00845-y.\n\n\nGentleman, Robert C., Vincent J. Carey, Ben Bolstad Douglas M Bates, Marcel Dettling, Sandrine Dudoit, Byron Ellis, Laurent Gautier, et al. 2004. “Bioconductor: Open Software Development for Computational Biology and Bioinformatics.” Genome Biology 5 (R80). https://doi.org/10.1186/gb-2004-5-10-r80.\n\n\nGetis, Arthur. 2009. “Spatial Weights Matrices.” Geographical Analysis 41: 404–10. https://doi.org/10.1111/j.1538-4632.2009.00768.x.\n\n\nGong, Chun, Shengkang Li, Leying Wang, Fuxiang Zhao, Shuangsang Fang, Dong Yuan, Zijian Zhao, et al. 2024. “SAW: An Efficient and Accurate Data Analysis Workflow for Stereo-Seq Spatial Transcriptomics.” Gigabyte, 1–12. https://doi.org/10.46471/gigabyte.111.\n\n\nGulati, Gunsagar S., Jeremy Philip D’Silva, Yunhe Liu, Linghua Wang, and Aaron M. Newman. 2025. “Profiling Cell Identity and Tissue Architecture with Single-Cell and Spatial Transcriptomics.” Nature Reviews Molecular Cell Biology 26: 11–31. https://doi.org/10.1038/s41580-024-00768-2.\n\n\nGunz, Samuel, Helena L. Crowell, and Mark D. Robinson. 2025. “Analysis of Anatomical Multi-Cellular Structures from Spatial Omics Data Using Sosta.” bioRxiv. https://doi.org/10.1101/2025.10.13.682065.\n\n\nHao, Yuhan, Tim Stuart, Madeline H Kowalski, Saket Choudhary, Paul Hoffman, Austin Hartman, Avi Srivastava, et al. 2023. “Dictionary Learning for Integrative, Multimodal and Scalable Single-Cell Analysis.” Nature Biotechnology. https://doi.org/10.1038/s41587-023-01767-y.\n\n\nHartman, Austin, and Rahul Satija. 2024. “Comparative Analysis of Multiplexed in Situ Gene Expression Profiling Technologies.” eLife. https://doi.org/10.7554/eLife.96949.1.\n\n\nHe, Shanshan, Ruchir Bhatt, Carl Brown, Emily A. Brown, Derek L. Buhr, Kan Chantranuvatana, Patrick Danaher, et al. 2022. “High-Plex Imaging of RNA and Proteins at Subcellular Resolution in Fixed Tissue by Spatial Molecular Imaging.” Nature Biotechnology 40: 1794–1806. https://doi.org/10.1038/s41587-022-01483-z.\n\n\nHe, Yichun, Xin Tang, Jiahao Huang, Jingyi Ren, Haowen Zhou, Kevin Chen, Albert Liu, et al. 2021. “ClusterMap for Multi-Scale Clustering Analysis of Spatial Gene Expression.” Nature Communications 12 (1). https://doi.org/10.1038/s41467-021-26044-x.\n\n\nHeidari, Elyas, Andrew Moorman, Dániel Unyi, Nikhita Pasnuri, Gleb Rukhovich, Domenico Calafato, Anna Mathioudaki, et al. 2025. “Segger: Fast and Accurate Cell Segmentation of Imaging-Based Spatial Transcriptomics Data.” bioRxiv. https://doi.org/10.1101/2025.03.14.643160.\n\n\nHuber, Wolfgang, Vincent J. Carey, Robert Gentleman, Simon Anders, Marc Carlson, Benilton S. Carvalho, Hector Corrada Bravo, et al. 2015. “Orchestrating High-Throughput Genomic Analysis with Bioconductor.” Nature Methods 12: 115–21. https://doi.org/10.1038/nmeth.3252.\n\n\nJanesick, Amanda, Robert Shelansky, Andrew D. Gottscho, Florian Wagner, Stephen R. Williams, Morgane Rouault, Ghezal Beliakoff, et al. 2023. “High Resolution Mapping of the Tumor Microenvironment Using Integrated Single-Cell, Spatial and in Situ Analysis.” Nature Communications 14 (8353). https://doi.org/10.1038/s41467-023-43458-x.\n\n\nJin, Suoqin, Christian F Guerrero-Juarez, Lihua Zhang, Ivan Chang, Raul Ramos, Chen-Hsiang Kuan, Peggy Myung, Maksim V Plikus, and Qing Nie. 2021. “Inference and Analysis of Cell-Cell Communication Using CellChat.” Nature Communications 12 (1): 1088. https://doi.org/10.1038/s41467-021-21246-9.\n\n\nJones, Daniel C., Anna E. Elz, Azadeh Hadadianpour, Heeju Ryu, David R. Glass, and Evan W. Newell. 2025. “Cell Simulation as Cell Segmentation.” Nature Methods 22: 1331–42. https://doi.org/10.1038/s41592-025-02697-0.\n\n\nKleshchevnikov, Vitalii, Artem Shmatko, Emma Dann, Alexander Aivazidis, Hamish W King, Tong Li, Rasa Elmentaite, et al. 2022. “Cell2location Maps Fine-Grained Cell Types in Spatial Transcriptomics.” Nature Biotechnology 40: 661–71. https://doi.org/10.1038/s41587-021-01139-4.\n\n\nKorsunsky, Ilya, Nghia Millard, Jean Fan, Kamil Slowikowski, Fan Zhang, Kevin Wei, Yuriy Baglaenko, Michael Brenner, Po-Ru Loh, and Soumya Raychaudhuri. 2019. “Fast, sensitive and accurate integration of single-cell data with Harmony.” Nature Methods 16 (12): 1289–96. https://doi.org/10.1038/s41592-019-0619-0.\n\n\nKuemmerle, Louis B., Malte D. Luecken, Alexandra B. Firsova, Lisa Barros de Andrade e Sousa, Lena Straßer, Ilhem Isra Mekki, Francesco Campi, et al. 2024. “Probe Set Selection for Targeted Spatial Transcriptomics.” Nature Methods 21: 2260–70. https://doi.org/10.1038/s41592-024-02496-z.\n\n\nKumar, Anurendra, Alex W. Schrader, Bhavay Aggarwal, Ali Ebrahimpour Boroojeny, Marisa Asadian, JuYeon Lee, You Jin Song, Sihai Dave Zhao, Hee-Sun Han, and Saurabh Sinha. 2024. “Intracellular Spatial Transcriptomic Analysis Toolkit (InSTAnT).” Nature Communications 15 (1). https://doi.org/10.1038/s41467-024-49457-w.\n\n\nKuznetsova, Alexandra, Per B. Brockhoff, and Rune H. B. Christensen. 2017. “lmerTest Package: Tests in Linear Mixed Effects Models.” Journal of Statistical Software 82: 1–26. https://doi.org/10.18637/jss.v082.i13.\n\n\nLee, Sang-Il. 2001. “Developing a Bivariate Spatial Association Measure: An Integration of Pearson’s r and Moran’s i.” Journal of Geographical Systems 3: 369–85. https://doi.org/10.1007/s101090100064.\n\n\nLi, Haoyang, Hanmin Li, Juexiao Zhou, and Xin Gao. 2022. “SD2: Spatially Resolved Transcriptomics Deconvolution Through Integration of Dropout and Spatial Information.” Bioinformatics 38 (21): 4878–84. https://doi.org/10.1093/bioinformatics/btac605.\n\n\nLi, Haoyang, Juexiao Zhou, Zhongxiao Li, Siyuan Chen, Xingyu Liao, Bin Zhang, Ruochi Zhang, Yu Wang, Shiwei Sun, and Xin Gao. 2023. “A Comprehensive Benchmarking with Practical Guidelines for Cellular Deconvolution of Spatial Transcriptomics.” Nature Communications 14 (1548). https://doi.org/10.1038/s41467-023-37168-7.\n\n\nLi, Mengbo, Ning Liu, Quoc Hoang Nguyen, and Yunshun Chen. 2025. “Preserving Tissue Structure Through Density-Based Spatial Analysis with Scider.” bioRxiv. https://doi.org/10.1101/2025.09.11.675745.\n\n\nLi, Zhijian, Zain M. Patel, Dongyuan Song, Guanao Yan, Jingyi Jessica Li, and Luca Pinello. 2023. “Benchmarking Computational Methods to Identify Spatially Variable Genes and Peaks.” bioRxiv. https://doi.org/10.1101/2023.12.02.569717.\n\n\nLi, Zhuoxuan, Tianjie Wang, Pengtao Liu, and Yuanhua Huang. 2023. “SpatialDM: Rapid Identification of Spatially Co-Expressed Ligand-Receptor Reveals Cell-Cell Communication Patterns.” bioRxiv, 2022.08.19.504616. https://doi.org/10.1101/2022.08.19.504616.\n\n\nLiang, Yuchen, Guowei Shi, Runlin Cai, Yuchen Yuan, Ziying Xie, Long Yu, Yingjian Huang, et al. 2024. “PROST: Quantitative Identification of Spatially Variable Genes and Domain Detection in Spatial Transcriptomics.” Nature Communications 15 (600). https://doi.org/10.1038/s41467-024-44835-w.\n\n\nLiao, Yang, Gordon K Smyth, and Wei Shi. 2019. “The r Package Rsubread Is Easier, Faster, Cheaper and Better for Alignment and Quantification of RNA Sequencing Reads.” Nucleic Acids Research 47: e47. https://doi.org/10.1093/nar/gkz114.\n\n\nLiu, Ning, Jarryd Martin, Dharmesh D Bhuva, Jinjin Chen, Mengbo Li, Samuel C. Lee, Malvika Kharbanda, et al. 2025. “hoodscanR: Profiling Single-Cell Neighborhoods in Spatial Transcriptomics Data.” bioRxiv. https://doi.org/10.1101/2024.03.26.586902.\n\n\nLiu, Wei, Xu Liao, Ziye Luo, Yi Yang, Mai Chan Lau, Yuling Jiao, Xingjie Shi, et al. 2023. “Probabilistic Embedding, Clustering, and Alignment for Integrating Spatial Transcriptomics Data with PRECAST.” Nature Communications 14 (296). https://doi.org/10.1038/s41467-023-35947-w.\n\n\nLiu, Yang, Marcello DiStasio, Graham Su, Hiromitsu Asashima, Archibald Enninful, Xiaoyu Qin, Yanxiang Deng, et al. 2023. “High-Plex Protein and Whole Transcriptome Co-Mapping at Cellular Resolution with Spatial CITE-Seq.” Nature Biotechnology 41: 1405–9. https://doi.org/10.1038/s41587-023-01676-0.\n\n\nLiu, Zhaoyang, Dongqing Sun, and Chenfei Wang. 2022. “Evaluation of Cell-Cell Interaction Methods by Integrating Single-Cell RNA Sequencing Data with Spatial Information.” Genome Biology 23 (1): 218. https://doi.org/10.1186/s13059-022-02783-y.\n\n\nLopez, Romain, Baoguo Li, Hadas Keren-Shaul, Pierre Boyeau, Merav Kedmi, David Pilzer, Adam Jelinski, et al. 2022. “DestVI Identifies Continuums of Cell Types in Spatial Transcriptomics Data.” Nature Biotechnology 40: 1360–69. https://doi.org/10.1038/s41587-022-01272-8.\n\n\nLuecken, Malte D, M Büttner, K Chaichoompu, A Danese, M Interlandi, M F Mueller, D C Strobl, et al. 2022. “Benchmarking atlas-level data integration in single-cell genomics.” Nature Methods 19 (1): 41–50. https://doi.org/10.1038/s41592-021-01336-8.\n\n\nLun, Aaron. 2022. “Basilisk: A Bioconductor Package for Managing Python Environments.” Journal of Open Source Software 7. https://doi.org/10.21105/joss.04742.\n\n\n———. 2023. “Alabaster.base: Save Bioconductor Objects to File.” R Package. https://doi.org/10.18129/B9.bioc.alabaster.base.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Research 5 (2122). https://doi.org/10.12688/f1000research.9501.2.\n\n\nLundberg, Emma, and Georg H. H. Borner. 2019. “Spatial Proteomics: A Powerful Discovery Tool for Cell Biology.” Nature Reviews Molecular Cell Biology 20: 285–302. https://doi.org/10.1038/s41580-018-0094-y.\n\n\nLütge, Almut, Joanna Zyprych-Walczak, Urszula Brykczynska Kunzmann, Helena L Crowell, Daniela Calini, Dheeraj Malhotra, Charlotte Soneson, and Mark D Robinson. 2021. “CellMixS: quantifying and visualizing batch effects in single-cell RNA-seq data.” Life Science Alliance 4 (6): e202001004. https://doi.org/10.26508/lsa.202001004.\n\n\nMa, Ying, and Xiang Zhou. 2022. “Spatially Informed Cell-Type Deconvolution for Spatial Transcriptomics.” Nature Biotechnology 40 (9): 1349–59. https://doi.org/10.1038/s41587-022-01273-7.\n\n\nMah, Clarence K., Noorsher Ahmed, Nicole A. Lopez, Dylan C. Lam, Avery Pong, Alexander Monell, Colin Kern, et al. 2024. “Bento: A Toolkit for Subcellular Analysis of Spatial Transcriptomics Data.” Genome Biology 25 (1). https://doi.org/10.1186/s13059-024-03217-7.\n\n\nManukyan, Artür, Ella Bahry, Emanuel Wyler, Erik Becher, Anna Pascual-Reguant, Izabela Plumbom, Hasan Onur Dikmen, et al. 2023. “VoltRon: A Spatial Omics Analysis Platform for Multi-Resolution and Multi-Omics Integration Using Image Registration.” bioRxiv. https://doi.org/10.1101/2023.12.15.571667.\n\n\nMarconato, Luca, Giovanni Palla, Kevin A. Yamauchi, Isaac Virshup, Elyas Heidari, Tim Treis, Wouter-Michiel Vierdag, et al. 2025. “SpatialData: An Open and Universal Data Framework for Spatial Omics.” Nature Methods 22: 58–62. https://doi.org/10.1038/s41592-024-02212-x.\n\n\nMaynard, Kristen R., Leonardo Collado-Torres, Lukas M. Weber, Cedric Uytingco, Brianna K. Barry, Stephen R. Williams, Joseph L. Catallini II, et al. 2021. “Transcriptome-Scale Spatial Gene Expression in the Human Dorsolateral Prefrontal Cortex.” Nature Neuroscience 24: 425–36. https://doi.org/10.1038/s41593-020-00787-0.\n\n\nMcCarthy, Davis J, Kieran R Campbell, Aaron T L Lun, and Quin F Wills. 2017. “Scater: Pre-Processing, Quality Control, Normalization and Visualization of Single-Cell RNA-Seq Data in r.” Bioinformatics 33: 1179–86. https://doi.org/10.1093/bioinformatics/btw777.\n\n\nMiller, Brendan F, Feiyang Huang, Lyla Atta, Arpan Sahoo, and Jean Fan. 2022. “Reference-Free Cell Type Deconvolution of Multi-Cellular Pixel-Resolution Spatially Resolved Transcriptomics Data.” Nature Communications 13 (1): 2339. https://doi.org/10.1038/s41467-022-30033-z.\n\n\nMitchel, Jonathan, Teng Gao, Viktor Petukhov, Eli Cole, and Peter V Kharchenko. 2026. “Impact and correction of segmentation errors in spatial transcriptomics.” Nature Genetics 58 (2): 434–44. https://doi.org/10.1038/s41588-025-02497-4.\n\n\nMoffitt, Jeffrey R., Emma Lundberg, and Holger Heyn. 2022. “The Emerging Landscape of Spatial Profiling Technologies.” Nature Reviews Genetics 23: 741–59. https://doi.org/10.1038/s41576-022-00515-3.\n\n\nMoses, Lambda, Pétur Helgi Einarsson, Kayla Jackson, Laura Luebbert, A. Sina Booeshaghi, Sindri Antonsson, Nicolas Bray, Páll Melsted, and Lior Pachter. 2023. “Voyager: Exploratory Single-Cell Genomics Data Analysis with Geospatial Statistics.” bioRxiv. https://doi.org/10.1101/2023.07.20.549945.\n\n\nMoses, Lambda, and Lior Pachter. 2022. “Museum of Spatial Transcriptomics.” Nature Methods 19: 534–46. https://doi.org/10.1038/s41592-022-01409-2.\n\n\nMund, Andreas, Andreas-David Brunner, and Matthias Mann. 2022. “Unbiased Spatial Proteomics with Single-Cell Resolution in Tissues.” Molecular Cell 82: 2335–49. https://doi.org/10.1016/j.molcel.2022.05.022.\n\n\nNitzan, Mor, Nikos Karaiskos, Nir Friedman, and Nikolaus Rajewsky. 2019. “Gene Expression Cartography.” Nature 576: 132–37. https://doi.org/10.1038/s41586-019-1773-3.\n\n\nNovoselsky, Roy, Ofra Golani, Tal Barkai, Merav Kedmi, Inna Goliand, Michal Fine, Ilan Kent, Ido Nachmany, and Shalev Itzkovitz. 2025. “Subcellular mRNA Localization Patterns Across Tissues Resolved with Spatial Transcriptomics.” bioRxiv, September. https://doi.org/10.1101/2025.09.07.674688.\n\n\nOspina, Oscar E, Christopher M Wilson, Alex C Soupir, Anders Berglund, Inna Smalley, Kenneth Y Tsai, and Brooke L Fridley. 2022. “spatialGE: Quantification and Visualization of the Tumor Microenvironment Heterogeneity Using Spatial Transcriptomics.” Bioinformatics 38 (9): 2645–47. https://doi.org/10.1093/bioinformatics/btac145.\n\n\nOyler-Yaniv, Alon, Jennifer Oyler-Yaniv, Benjamin M Whitlock, Zhiduo Liu, Ronald N Germain, Morgan Huse, Grégoire Altan-Bonnet, and Oleg Krichevsky. 2017. “A Tunable Diffusion-Consumption Mechanism of Cytokine Propagation Enables Plasticity in Cell-to-Cell Communication in the Immune System.” Immunity 46 (4): 609–20. https://doi.org/10.1016/j.immuni.2017.03.011.\n\n\nPalla, Giovanni, David S. Fischer, Aviv Regev, and Fabian J. Theis. 2022. “Spatial Components of Molecular Tissue Biology.” Nature Biotechnology 40: 308–18. https://doi.org/10.1038/s41587-021-01182-1.\n\n\nPalla, Giovanni, Hannah Spitzer, Michal Klein, David Fischer, Anna Christina Schaar, Louis Benedikt Kuemmerle, Sergei Rybakov, et al. 2022. “Squidpy: A Scalable Framework for Spatial Omics Analysis.” Nature Methods 19: 171–78. https://doi.org/10.1038/s41592-021-01358-2.\n\n\nPalomino, Tana V., and David C. Muddiman. 2025. “Mass Spectrometry Imaging of n-Linked Glycans: Fundamentals and Recent Advances.” Mass Spectrometry Reviews, 1–25. https://doi.org/10.1002/mas.21895.\n\n\nPardo, Brenda, Abby Spangler, Lukas M. Weber, Stephanie C. Page, Stephanie C. Hicks, Andrew E. Jaffe, Keri Martinowich, Kristen R. Maynard, and Leonardo Collado-Torres. 2022. “spatialLIBD: An r/Bioconductor Package to Visualize Spatially-Resolved Transcriptomics Data.” BMC Genomics 23 (434). https://doi.org/10.1186/s12864-022-08601-w.\n\n\nPark, Jeongbin, Wonyl Choi, Sebastian Tiesmeyer, Brian Long, Lars E. Borm, Emma Garren, Thuc Nghi Nguyen, et al. 2021. “Cell Segmentation-Free Inference of Cell Types from in Situ Transcriptomics Data.” Nature Communications 12 (3545). https://doi.org/10.1038/s41467-021-23807-4.\n\n\nPaul, Indranil, Carl White, Isabella Turcinovic, and Andrew Emili. 2021. “Imaging the Future: The Emerging Era of Single-Cell Spatial Proteomics.” The FEBS Journal 288: 6990–7001. https://doi.org/10.1111/febs.15685.\n\n\nPebesma, Edzer. 2018. “Simple Features for R: Standardized Support for Spatial Vector Data.” The R Journal 10 (1): 439–46. https://doi.org/10.32614/rj-2018-009.\n\n\nPebesma, Edzer, and Roger Bivand. 2023. Spatial Data Science: With Applications in r. 1st Edition. Chapman; Hall/CRC. https://doi.org/10.1201/9780429459016.\n\n\nPebesma, Edzer, and Roger S Bivand. 2005. “Classes and Methods for Spatial Data: The Sp Package.” The Newsletter of the R Project 5 (2).\n\n\nPeters Couto, Bárbara Zita, Nicholas Robertson, Ellis Patrick, and Shila Ghazanfar. 2023. “MoleculeExperiment Enables Consistent Infrastructure for Molecule-Resolved Spatial Omics Data in Bioconductor.” Bioinformatics 39 (btad550, 9). https://doi.org/10.1093/bioinformatics/btad550.\n\n\nPetukhov, Viktor, Rosalind J. Xu, Ruslan A. Soldatov, Paolo Cadinu, Konstantin Khodosevich, Jeffrey R. Moffitt, and Peter V. Kharchenko. 2022. “Cell Segmentation in Imaging-Based Spatial Transcriptomics.” Nature Biotechnology 40: 345–54. https://doi.org/10.1038/s41587-021-01044-w.\n\n\nRao, Anjali, Dalia Barkley, Gustavo S. França, and Itai Yanai. 2021. “Exploring Tissue Architecture Using Spatial Transcriptomics.” Nature 596: 211–20. https://doi.org/https://doi.org/10.1038/s41586-021-03634-9.\n\n\nRautenstrauch, Pia, and Uwe Ohler. 2025. “Shortcomings of silhouette in single-cell integration benchmarking.” Nature Biotechnology, 1–5. https://doi.org/10.1038/s41587-025-02743-4.\n\n\nRen, Honglei, Benjamin L. Walker, Zixuan Cang, and Qing Nie. 2022. “Identifying Multicellular Spatiotemporal Organization of Cells with SpaceFlow.” Nature Communications 13 (4076). https://doi.org/10.1038/s41467-022-31739-w.\n\n\nRighelli, Dario, Lukas M Weber, Helena L Crowell, Brenda Pardo, Leonardo Collado-Torres, Shila Ghazanfar, Aaron T L Lun, Stephanie C Hicks, and Davide Risso. 2022. “SpatialExperiment: Infrastructure for Spatially-Resolved Transcriptomics Data in r Using Bioconductor.” Bioinformatics 38: 3128–31. https://doi.org/10.1093/bioinformatics/btac299.\n\n\nRipley, B. D. 1976. “The Second-Order Analysis of Stationary Point Processes.” Journal of Applied Probability 13: 255–66. https://doi.org/10.2307/3212829.\n\n\nRue-Albrecht, Kevin, Federico Marini, Charlotte Soneson, and Aaron T. L. Lun. 2018. “iSEE: Interactive SummarizedExperiment Explorer.” F1000Research 7 (741). https://doi.org/10.12688/f1000research.14966.1.\n\n\nSalim, Agus, Dharmesh D. Bhuva, Carissa Chen, Chin Wee Tan, Pengyi Yang, Melissa J. Davis, and Jean Y. H. Yang. 2025. “SpaNorm: Spatially-Aware Normalization for Spatial Transcriptomics Data.” Genome Biology 26 (109). https://doi.org/10.1186/s13059-025-03565-y.\n\n\nSang-aram, Chananchida, Robin Browaeys, Ruth Seurinck, and Yvan Saeys. 2023. “Spotless, a Reproducible Pipeline for Benchmarking Cell Type Deconvolution in Spatial Transcriptomics.” eLife 12 (RP88431). https://doi.org/10.7554/eLife.88431.\n\n\nSchott, Marie, Daniel León-Periñán, Elena Splendiani, Elisabetta Ferretti, Giuseppe Macino, Nikos Karaiskos, and Nikolaus Rajewsky. 2025. “Protocol for High-Resolution 3D Spatial Transcriptomics Using Open-ST.” STAR Protocols 6 (103521, 1). https://doi.org/10.1016/j.xpro.2024.103521.\n\n\nSchott, Marie, Daniel León-Periñán, Elena Splendiani, Leon Strenger, Jan Robin Licha, Tancredi Massimo Pentimalli, Simon Schallenberg, et al. 2024. “Open-ST: High-Resolution Spatial Transcriptomics in 3D.” Cell 187: 3953–72. https://doi.org/10.1016/j.cell.2024.05.055.\n\n\nSemba, Takashi, and Takatsugu Ishimoto. 2024. “Spatial Analysis by Current Multiplexed Imaging Technologies for the Molecular Characterisation of Cancer Tissues.” British Journal of Cancer 131: 1737–47. https://doi.org/10.1038/s41416-024-02882-6.\n\n\nSinghal, Vipul, Nigel Chou, Joseph Lee, Yifei Yue, Jinyue Liu, Wan Kee Chock, Li Lin, et al. 2024. “BANKSY Unifies Cell Typing and Tissue Domain Segmentation for Scalable Spatial Omics Data Analysis.” Nature Genetics 56: 431–41. https://doi.org/10.1038/s41588-024-01664-3.\n\n\nSmith, Mike, and Hugo Gruson. 2023. “Rarr: Read Zarr Files in r.” R Package. https://doi.org/10.18129/B9.bioc.Rarr.\n\n\nSofroniew, Nicholas, Talley Lambert, Grzegorz Bokota, Juan Nunez-Iglesias, Peter Sobolewski, Andrew Sweet, Lorenzo Gaifas, et al. 2025. “Napari: A Multi-Dimensional Image Viewer for Python.” Zenodo. https://doi.org/10.5281/zenodo.16883660.\n\n\nSong, Qianqian, and Jing Su. 2021. “DSTG: Deconvoluting Spatial Transcriptomics Data Through Graph-Based Artificial Intelligence.” Briefings in Bioinformatics 22 (5): bbaa414. https://doi.org/10.1093/bib/bbaa414.\n\n\nStåhl, Patrik L., Fredrik Salmén, Sanja Vickovic, Anna Lundmark, José Fernández Navarro, Jens Magnusson, Stefania Giacomello, et al. 2016. “Visualization and Analysis of Gene Expression in Tissue Sections by Spatial Transcriptomics.” Science 353: 78–82. https://doi.org/10.1126/science.aaf2403.\n\n\nStickels, Robert R., Evan Murray, Pawan Kumar, Jilong Li, Jamie L. Marshall, Daniela J. Di Bella, Paola Arlotta, Evan Z. Macosko, and Fei Chen. 2021. “Highly Sensitive Spatial Transcriptomics at Near-Cellular Resolution with Slide-seqV2.” Nature Biotechnology 39: 313–19. https://doi.org/10.1038/s41587-020-0739-1.\n\n\nStringer, Carsen, Tim Wang, Michalis Michaelos, and Marius Pachitariu. 2021. “Cellpose: A Generalist Algorithm for Cellular Segmentation.” Nature Methods 18: 100–106. https://doi.org/10.1038/s41592-020-01018-x.\n\n\nSu, Shian, Lori Shepherd, Marcel Ramos, Felix G. M. Ernst, Jennifer Wokaty, Charlotte Soneson, Martin Morgan, Vince Carey, and Sean Davis. 2025. “BiocPkgTools: Collection of Simple Tools for Learning about Bioconductor Packages.” R Package. https://doi.org/10.18129/B9.bioc.BiocPkgTools.\n\n\nSubramanian, Aravind, Pablo Tamayo, Vamsi K Mootha, Sayan Mukherjee, Benjamin L Ebert, Michael A Gillette, Amanda Paulovich, et al. 2005. “Gene Set Enrichment Analysis: A Knowledge-Based Approach for Interpreting Genome-Wide Expression Profiles.” Proceedings of the National Academy of Sciences of the USA 102 (43): 15545–50. https://doi.org/10.1073/pnas.0506580102.\n\n\nSun, Dongqing, Zhaoyang Liu, Taiwen Li, Qiu Wu, and Chenfei Wang. 2022. “STRIDE: Accurately Decomposing and Integrating Spatial Transcriptomics Using Single-Cell RNA Sequencing.” Nucleic Acids Research 50 (7): e42. https://doi.org/10.1093/nar/gkac150.\n\n\nSun, Shiquan, Jiaqiang Zhu, and Xiang Zhou. 2020. “Statistical Analysis of Spatial Expression Patterns for Spatially Resolved Transcriptomic Studies.” Nature Methods 17: 193–200. https://doi.org/10.1038/s41592-019-0701-7.\n\n\nSvensson, Valentine, Sarah A Teichmann, and Oliver Stegle. 2018. “SpatialDE: Identification of Spatially Variable Genes.” Nature Methods 15: 343–46. https://doi.org/10.1038/nmeth.4636.\n\n\nTanevski, Jovan, Ricardo Omar Ramirez Flores, Attila Gabor, Denis Schapiro, and Julio Saez-Rodriguez. 2022. “Explainable Multiview Framework for Dissecting Spatial Relationships from Highly Multiplexed Data.” Genome Biology 23 (1): 97. https://doi.org/10.1186/s13059-022-02663-5.\n\n\nTian, Luyi, Fei Chen, and Evan Z. Macosko. 2023. “The Expanding Vistas of Spatial Transcriptomics.” Nature Biotechnology 41: 773–82. https://doi.org/10.1038/s41587-022-01448-2.\n\n\nTobler, W. R. 1970. “A Computer Movie Simulating Urban Growth in the Detroit Region.” Economic Geography 46: 234–40. https://doi.org/10.2307/143141.\n\n\nTomczak, Katarzyna, Patrycja Czerwińska, and Maciej Wiznerowicz. 2015. “The Cancer Genome Atlas (TCGA): An Immeasurable Source of Knowledge.” Contemporary Oncology/Współczesna Onkologia 19: A68–77. https://doi.org/10.5114/wo.2014.47136.\n\n\nTotty, Michael, Stephanie C. Hicks, and Boyi Guo. 2025. “SpotSweeper: Spatially Aware Quality Control for Spatial Transcriptomics.” Nature Methods 22: 1520–30. https://doi.org/10.1038/s41592-025-02713-3.\n\n\nTraag, V. A., L. Waltman, and N. J. van Eck. 2019. “From Louvain to Leiden: Guaranteeing Well-Connected Communities.” Scientific Reports 9 (5233). https://doi.org/10.1038/s41598-019-41695-z.\n\n\nTran, Hoa Thi Nhu, Kok Siong Ang, Marion Chevrier, Xiaomeng Zhang, Nicole Yee Shin Lee, Michelle Goh, and Jinmiao Chen. 2020. “A benchmark of batch-effect correction methods for single-cell RNA sequencing data.” Genome Biology 21 (1): 12. https://doi.org/10.1186/s13059-019-1850-9.\n\n\nUshey, Kevin, Joseph J. Allaire, and Yuan Tang. 2017. “Reticulate: Interface to ’Python’.” R Package. https://doi.org/10.32614/CRAN.package.reticulate.\n\n\nVarrone, Marco, Daniele Tavernari, Albert Santamaria-Martínez, Logan A. Walsh, and Giovanni Ciriello. 2024. “CellCharter Reveals Spatial Cell Niches Associated with Tissue Remodeling and Cell Plasticity.” Nature Genetics 56: 74–84. https://doi.org/10.1038/s41588-023-01588-4.\n\n\nVickovic, Sanja, Denis Schapiro, Konstantin Carlberg, Britta Lötstedt, Ludvig Larsson, Franziska Hildebrandt, Marina Korotkova, et al. 2022. “Three-Dimensional Spatial Transcriptomics Uncovers Cell Type Localizations in the Human Rheumatoid Arthritis Synovium.” Communications Biology 5 (129). https://doi.org/10.1038/s42003-022-03050-3.\n\n\nVirshup, Isaac, Sergei Rybakov, Fabian J Theis, Philipp Angerer, and F Alexander Wolf. 2024. “Anndata: Access and Store Annotated Data Matrices.” Journal of Open Source Software 9 (101): 4371. https://doi.org/10.21105/joss.04371.\n\n\nWalter, Florin C, Oliver Stegle, and Britta Velten. 2023. “FISHFactor: A Probabilistic Factor Model for Spatial Transcriptomics Data with Subcellular Resolution.” Edited by Christina Kendziorski. Bioinformatics 39 (5). https://doi.org/10.1093/bioinformatics/btad183.\n\n\nWeber, Lukas M., Arkajyoti Saha, Abhirup Datta, Kasper D. Hansen, and Stephanie C. Hicks. 2023. “nnSVG for the Scalable Identification of Spatially Variable Genes Using Nearest-Neighbor Gaussian Processes.” Nature Communications 14 (4059). https://doi.org/10.1038/s41467-023-39748-z.\n\n\nWei, Xiaoyu, Sulei Fu, Hanbo Li, Yang Liu, Shuai Wang, Weimin Feng, Yunzhi Yang, et al. 2022. “Single-Cell Stereo-Seq Reveals Induced Progenitor Cells Involved in Axolotl Brain Regeneration.” Science 377. https://doi.org/10.1126/science.abp9444.\n\n\nWelch, Joshua D., Velina Kozareva, Ashley Ferreira, Charles Vanderburg, Carly Martin, and Evan Z. Macosko. 2019. “Single-Cell Multi-Omic Integration Compares and Contrasts Features of Brain Cell Identity.” Cell 177: 1873–87. https://doi.org/10.1016/j.cell.2019.05.006.\n\n\nWindhager, Jonas, Vito Riccardo Tomaso Zanotelli, Daniel Schulz, Lasse Meyer, Michelle Daniel, Bernd Bodenmiller, and Nils Eling. 2023. “An End-to-End Workflow for Multiplexed Image Processing and Analysis.” Nature Protocols 18: 3565–3613. https://doi.org/10.1038/s41596-023-00881-0.\n\n\nWolf, F. Alexander, Philipp Angerer, and Fabian J. Theis. 2018. “SCANPY: Large-Scale Single-Cell Gene Expression Data Analysis.” Genome Biology 19 (15). https://doi.org/10.1186/s13059-017-1382-0.\n\n\nWu, Lidan, Joseph M. Beechem, and Patrick Danaher. 2024. “FastReseg: Using Transcript Locations to Refine Image-Based Cell Segmentation Results in Spatial Transcriptomics.” bioRxiv. https://doi.org/10.1101/2024.12.05.627051.\n\n\nXu, Hanwen, Naoto Usuyama, Jaspreet Bagga, Sheng Zhang, Rajesh Rao, Tristan Naumann, Cliff Wong, et al. 2024. “A Whole-Slide Foundation Model for Digital Pathology from Real-World Data.” Nature 630 (8015): 181–88. https://doi.org/10.1038/s41586-024-07441-w.\n\n\nXu, Yang, Callum J. Sargeant, Yue You, Yupei You, Shian Su, Changqing Wang, Luyi Tian, Yunshun Chen, and Matthew E. Ritchie. 2025. “stPipe: A Flexible and Streamlined r/Bioconductor Pipeline for Preprocessing Sequencing-Based Spatial Transcriptomics Data.” bioRxiv. https://doi.org/10.1101/2025.04.16.649254.\n\n\nYan, Guanao, Shuo Harper Hua, and Jingyi Jessica Li. 2024. “Categorization of 33 Computational Methods to Detect Spatially Variable Genes from Spatially Resolved Transcriptomics Data.” arXiv. https://doi.org/10.48550/arXiv.2405.18779.\n\n\nYu, Jinge, and Xiangyu Luo. 2022. “Identification of Cell-Type-Specific Spatially Variable Genes Accounting for Excess Zeros.” Bioinformatics 38: 4135–44. https://doi.org/10.1093/bioinformatics/btac457.\n\n\nYu, Shan, and Wei Vivian Li. 2024. “spVC for the Detection and Interpretation of Spatial Gene Expression Variation.” Genome Biology 25 (103). https://doi.org/10.1186/s13059-024-03245-3.\n\n\nZappia, Luke, Aaron Lun, Jack Kamm, Robrecht Cannoodt, Gabriel Hoffman, and Marek Cmero. 2020. “anndataR Improves Interoperability Between r and Python in Single-Cell Transcriptomics.” R Package. https://doi.org/10.18129/B9.bioc.zellkonverter.\n\n\nZhang, Di, Yanxiang Deng, Petra Kukanja, Eneritz Agirre, Marek Bartosovic, Mingze Dong, Cong Ma, et al. 2023. “Spatial Epigenome–Transcriptome Co-Profiling of Mammalian Tissues.” Nature 616: 113–22. https://doi.org/10.1038/s41586-023-05795-1.\n\n\nZhang, Hua, Kelly H. Lu, Malik Ebbini, Penghsuan Huang, Haiyan Lu, and Lingjun Li. 2024. “Mass Spectrometry Imaging for Spatially Resolved Multi-Omics Molecular Mapping.” Npj Imaging 2 (20). https://doi.org/10.1038/s44303-024-00025-3.\n\n\nZhang, Yida, Viktor Petukhov, Evan Biederstedt, Richard Que, Kun Zhang, and Peter V. Kharchenko. 2024. “Gene Panel Selection for Targeted Spatial Transcriptomics.” Genome Biology 25 (35). https://doi.org/10.1186/s13059-024-03174-1.\n\n\nZhao, Edward, Matthew R. Stone, Xing Ren, Jamie Guenthoer, Kimberly S. Smythe, Thomas Pulliam, Stephen R. Williams, et al. 2021. “Spatial Transcriptomics at Subspot Resolution with BayesSpace.” Nature Biotechnology 39: 1375–84. https://doi.org/10.1038/s41587-021-00935-2.\n\n\nZhu, Jiaqiang, Shiquan Sun, and Xiang Zhou. 2021. “SPARK-x: Non-Parametric Modeling Enables Scalable and Robust Detection of Spatial Expression Patterns for Large Spatial Transcriptomic Studies.” Genome Biology 22 (184). https://doi.org/10.1186/s13059-021-02404-0.",
    "crumbs": [
      "Appendices",
      "<span class='chapter-number'>D</span>  <span class='chapter-title'>Citation</span>"
    ]
  }
]