From 0776b49166ae8bbfe301e14c199ddcc7da0c36ed Mon Sep 17 00:00:00 2001 From: Gregor Sturm Date: Sat, 21 Mar 2026 21:03:27 +0100 Subject: [PATCH 1/2] Fix #190 --- content/_index.md | 63 -------- content/packages/_index.md | 232 ---------------------------- layouts/packages/list.html | 95 +++++++++--- layouts/partials/main/packages.html | 71 +++++---- 4 files changed, 112 insertions(+), 349 deletions(-) diff --git a/content/_index.md b/content/_index.md index bdffb6c8..507a2f49 100644 --- a/content/_index.md +++ b/content/_index.md @@ -2,69 +2,6 @@ title = "scverse" description = "Foundational tools for single-cell omics data analysis" -# Packages - -[[packages]] - name = "anndata" - description = "Standard for annotated matrices" - url = "https://anndata.readthedocs.io/en/latest/" - -[[packages]] - name = "mudata" - description = "Multimodal data format" - url = "https://mudata.readthedocs.io/en/latest/" - -[[packages]] - name = "spatialdata" - description = "Spatial data format" - url = "https://spatialdata.scverse.org/en/latest/" - -[[packages]] - name = "scanpy" - description = "Single-cell analysis framework" - url = "https://scanpy.readthedocs.io/en/latest/" - -[[packages]] - name = "muon" - description = "Multi-omics analysis framework" - url = "https://muon.scverse.org/" - -[[packages]] - name = "squidpy" - description = "Spatial single-cell analysis" - url = "https://squidpy.readthedocs.io/" - -[[packages]] - name = "scvi-tools" - description = "Single-cell machine learning framework" - url = "https://scvi-tools.org/" - -[[packages]] - name = "scirpy" - description = "Single-cell immune sequencing analysis framework" - url = "https://scirpy.scverse.org/" - -[[packages]] - name = "SnapATAC2" - description = "Single-cell ATAC analysis framework" - url = "https://scverse.org/SnapATAC2/" - no_icon = true - -[[packages]] - name = "rapids-singlecell" - description = "GPU-accelerated framework for scRNA analysis" - url = "https://rapids-singlecell.readthedocs.io/en/latest/" - -[[packages]] - name = "pertpy" - description = "Perturbation data analysis framework" - url = "https://github.com/scverse/pertpy/" - -[[packages]] - name = "decoupler" - description = "Enrichment analysis framework" - url = "https://decoupler.readthedocs.io/en/latest/" - # Mission [mission] diff --git a/content/packages/_index.md b/content/packages/_index.md index c699cf6d..4ee6d1a8 100644 --- a/content/packages/_index.md +++ b/content/packages/_index.md @@ -9,237 +9,5 @@ aliases = ["/projects/"] frameworks = "Frameworks provide essential algorithms and plotting functions for specific analysis steps, building on our data structures." ecosystem = "Many popular packages rely on scverse functionality. For instance, they take advantage of established data format standards such as AnnData and MuData, or are designed to be integrated into the workflow of analysis frameworks. Here, we list ecosystem packages following development best practices (continuous testing, documented, available through standard distribution tools).\n\n *This listing is a work in progress. See [scverse/ecosystem-packages](https://github.com/scverse/ecosystem-packages) for inclusion criteria, and to submit more packages.*" -[[datastructures]] - name = "anndata" - description = "Standard for annotated matrices" - url = "https://anndata.readthedocs.io/en/latest/" - img = "../img/libs/anndata_schema.svg" - details = "AnnData is a Python package for handling annotated data matrices in memory and on disk, positioned between pandas and xarray. anndata offers a broad range of computationally efficient features including, among others, sparse data support, lazy operations, and a PyTorch interface." - [[datastructures.links]] - text = "GitHub" - url = "https://github.com/theislab/anndata" - [[datastructures.links]] - text = "Documentation" - url = "https://anndata.readthedocs.io/en/latest/" - [[datastructures.links]] - text = "PyPI" - url = "https://pypi.org/project/anndata/" - [[datastructures.links]] - text = "Conda" - url = "https://anaconda.org/conda-forge/anndata" - -[[datastructures]] - name = "mudata" - description = "Multimodal data format" - url = "https://mudata.readthedocs.io/en/latest/" - img = "../img/libs/mudata_flat.svg" - details = "MuData is a format for annotated multimodal datasets where each modality is represented by an AnnData object. MuData's reference implementation is in Python, and the cross-language functionality is achieved via HDF5-based .h5mu files with libraries in R and Julia." - [[datastructures.links]] - text = "GitHub" - url = "https://github.com/scverse/mudata" - [[datastructures.links]] - text = "Documentation" - url = "https://mudata.readthedocs.io/en/latest/" - [[datastructures.links]] - text = "PyPI" - url = "https://pypi.org/project/mudata/" - [[datastructures.links]] - text = "Conda" - url = "https://anaconda.org/conda-forge/mudata" - [[datastructures.links]] - text = "Muon.jl" - url = "https://github.com/scverse/Muon.jl" - -[[datastructures]] - name = "spatialdata" - description = "Data format for data with spatial resolution" - url = "https://spatialdata.scverse.org/en/latest/" - img = "../img/icons/spatialdata.svg" - details = "SpatialData is a data framework that comprises a FAIR storage format and a collection of python libraries for performant access, alignment, and processing of uni- and multi-modal spatial omics datasets. This repository contains the core spatialdata library. See the links below to learn more about other packages in the SpatialData ecosystem." - [[datastructures.links]] - text = "GitHub" - url = "https://github.com/scverse/spatialdata" - [[datastructures.links]] - text = "Documentation" - url = "https://spatialdata.scverse.org/en/latest/" - [[datastructures.links]] - text = "PyPI" - url = "https://pypi.org/project/spatialdata/" - [[datastructures.links]] - text = "spatialdata-io" - url = "https://github.com/scverse/spatialdata-io" - - -[[packages]] - name = "scanpy" - description = "Single-cell analysis framework" - url = "https://scanpy.readthedocs.io/en/latest/" - #img = "https://scanpy.readthedocs.io/en/stable/_static/Scanpy_Logo_BrightFG.svg" - img = "../img/icons/scanpy.svg" - details = "Scanpy is a scalable toolkit for analyzing single-cell gene expression data built jointly with anndata. It includes preprocessing, visualization, clustering, trajectory inference and differential expression testing. The Python-based implementation efficiently deals with datasets of more than one million cells." - [[packages.links]] - text = "GitHub" - url = "https://github.com/theislab/scanpy" - [[packages.links]] - text = "Documentation and tutorials" - url = "https://scanpy.readthedocs.io/en/latest/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/scanpy/" - [[packages.links]] - text = "Conda" - url = "https://anaconda.org/conda-forge/scanpy" - -[[packages]] - name = "muon" - description = "Multi-omics analysis framework" - url = "https://gtca.github.io/muon" - #img = "https://muon.readthedocs.io/en/latest/_static/muon_logo.png" - img = "../img/icons/muon.svg" - details = "muon is a Python framework for multimodal omics analysis. While there are many features that muon brings to the table, there are three key areas that its functionality is focused on." - [[packages.links]] - text = "GitHub" - url = "https://github.com/scverse/muon" - [[packages.links]] - text = "Documentation" - url = "https://muon.readthedocs.io/en/latest/" - [[packages.links]] - text = "Tutorials" - url = "https://muon-tutorials.readthedocs.io/en/latest/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/muon/" - [[packages.links]] - text = "Website" - url = "https://muon.scverse.org/" - - -[[packages]] - name = "squidpy" - description = "Spatial Single Cell Analysis" - url = "https://squidpy.readthedocs.io/" - img = "../img/icons/squidpy.svg" - details = "Squidpy is a tool for the analysis and visualization of spatial molecular data. It builds on top of scanpy and anndata, from which it inherits modularity and scalability. It provides analysis tools that leverages the spatial coordinates of the data, as well as tissue images if available." - [[packages.links]] - text = "GitHub" - url = "https://github.com/theislab/squidpy" - [[packages.links]] - text = "Documentation and tutorials" - url = "https://squidpy.readthedocs.io/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/squidpy/" - - -[[packages]] - name = "scvi-tools" - description = "Machine learning model development library and model zoo" - url = "https://scvi-tools.org/" - img = "../img/libs/scvi_tools_graph_model.svg" - details = "scvi-tools is a library for developing and deploying machine learning models based on PyTorch and AnnData. With an emphasis on probabilistic models, scvi-tools streamlines the development process via training, data management, and user interface abstractions. scvi-tools also contains easy-to-use implementations of more than 14 state-of-the-art probabilistic models in the field." - [[packages.links]] - text = "GitHub" - url = "https://github.com/yoseflab/scvi-tools" - [[packages.links]] - text = "Documentation and tutorials" - url = "https://docs.scvi-tools.org/en/stable/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/scvi-tools/" - [[packages.links]] - text = "Website" - url = "https://scvi-tools.org/" - -[[packages]] - name = "scirpy" - description = "Single-cell immune sequencing framework" - url = "https://scirpy.scverse.org" - img = "../img/icons/scirpy.svg" - details = "Scirpy is a scalable toolkit to analyse T-cell receptor or B-cell receptor repertoires from single-cell RNA sequencing data. It seamlessly integrates with scanpy and provides various modules for data import, analysis and visualization." - [[packages.links]] - text = "GitHub" - url = "https://github.com/icbi-lab/scirpy" - [[packages.links]] - text = "Documentation and tutorials" - url = "https://scirpy.scverse.org/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/scirpy/" - [[packages.links]] - text = "Conda" - url = "https://anaconda.org/bioconda/scirpy" - -[[packages]] - name = "SnapATAC2" - description = "Single-cell ATAC analysis framework" - url = "https://scverse.org/SnapATAC2/" - img = "../img/icons/snapatac2.svg" - details = "SnapATAC2 is a scalable and modular pipeline for analyzing single-cell ATAC-seq data, enabling efficient preprocessing, dimensionality reduction, clustering, and integration with single-cell RNA-seq." - [[packages.links]] - text = "GitHub" - url = "https://github.com/scverse/SnapATAC2" - [[packages.links]] - text = "Documentation and tutorials" - url = "https://scverse.org/SnapATAC2/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/snapatac2/" - [[packages.links]] - text = "Conda" - url = "https://anaconda.org/bioconda/snapatac2" - -[[packages]] - name = "rapids-singlecell" - description = "GPU-accelerated framework for scRNA analysis" - url = "https://rapids-singlecell.readthedocs.io/en/latest/" - img = "../img/icons/rapids-singlecell.svg" - details = "rapids-singlecell is a GPU-accelerated single-cell analysis library that serves as a drop-in replacement for scanpy, squidpy, and decoupler." - [[packages.links]] - text = "GitHub" - url = "https://github.com/scverse/rapids_singlecell" - [[packages.links]] - text = "Documentation and tutorials" - url = "https://rapids-singlecell.readthedocs.io/en/latest/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/rapids-singlecell/" - -[[packages]] - name = "pertpy" - description = "Perturbation data analysis framework" - url = "https://pertpy.readthedocs.io/en/stable/" - img = "../img/icons/pertpy.svg" - details = "Pertpy is a framework for analyzing large-scale single-cell perturbation experiments. It harmonizes datasets, automates metadata annotation, calculates perturbation distances, and analyzes cellular responses to genetic modifications, drugs, and environmental changes." - [[packages.links]] - text = "GitHub" - url = "https://github.com/scverse/pertpy" - [[packages.links]] - text = "Documentation and tutorials" - url = "https://pertpy.readthedocs.io/en/stable/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/pertpy/" - [[packages.links]] - text = "Conda" - url = "https://anaconda.org/conda-forge/pertpy" - -[[packages]] - name = "decoupler" - description = "Enrichment analysis framework" - url = "https://decoupler.readthedocs.io/en/latest/" - img = "../img/icons/decoupler.svg" - details = "decoupler is a framework containing different enrichment statistical methods to extract biologically driven scores from omics data within a unified framework." - [[packages.links]] - text = "GitHub" - url = "https://github.com/scverse/decoupler" - [[packages.links]] - text = "Documentation and tutorials" - url = "https://decoupler.readthedocs.io/en/latest/" - [[packages.links]] - text = "PyPI" - url = "https://pypi.org/project/decoupler/" - [[packages.links]] - text = "Conda" - url = "https://anaconda.org/conda-forge/decoupler-py" +++ diff --git a/layouts/packages/list.html b/layouts/packages/list.html index d0ea4712..a01dd7bb 100644 --- a/layouts/packages/list.html +++ b/layouts/packages/list.html @@ -15,29 +15,64 @@

{{ .Title }}

{{ $sections := index .Params.sections 0 }}
- {{ if .Params.packages }} + + {{ $jsonURL := "https://scverse.org/ecosystem-packages/packages.json" }} + {{ $remoteData := resources.GetRemote $jsonURL }} + {{ $allPkgs := transform.Unmarshal $remoteData.Content }} + + {{ $datastructures := slice }} + {{ $frameworks := slice }} + {{ $ecosystem := slice }} + {{ range $allPkgs }} + {{ if eq .category "core-datastructure" }} + {{ $datastructures = $datastructures | append . }} + {{ else if eq .category "core-framework" }} + {{ $frameworks = $frameworks | append . }} + {{ else if eq .category "ecosystem" }} + {{ $ecosystem = $ecosystem | append . }} + {{ end }} + {{ end }} + + {{ if or $datastructures $frameworks }}

Packages maintained by core team

{{ $sections.core_packages | markdownify }} - {{ if .Params.datastructures }} + + {{ if $datastructures }}

Data structures

{{ $sections.datastructures | markdownify }}
- {{ $datastructures := .Params.datastructures }} - {{ range $i, $e := $datastructures }} + {{ range $datastructures }}
- Logo for {{ .name }} + {{ if .logo }} + Logo for {{ .name }} + {{ end }}
-
+
{{ .name }} - {{ .details | markdownify }} + {{ .description | markdownify }}
@@ -50,22 +85,41 @@

Analysis task-specific extensions

Frameworks

{{ $sections.frameworks | markdownify }}
- {{ $packages := .Params.packages }} - {{ range $i, $e := $packages }} + {{ range $frameworks }}
- Logo for {{ .name }} + {{ if .logo }} + Logo for {{ .name }} + {{ end }}
-
+
{{ .name }} - {{ .details | markdownify }} + {{ .description | markdownify }}
@@ -74,21 +128,18 @@

Frameworks

{{ end }} - {{ $jsonURL := "https://scverse.org/ecosystem-packages/packages.json" }} - {{ $remoteData := resources.GetRemote $jsonURL }} - {{ $pkgs := transform.Unmarshal $remoteData.Content }}

Ecosystem packages maintained by scverse community

{{ $sections.ecosystem | markdownify }}

- {{ if $pkgs }} + {{ if $ecosystem }}
@@ -99,7 +150,7 @@

Ecosystem packages maintained by scverse community

- {{ range $lib := $pkgs }} + {{ range $lib := $ecosystem }}