Identify, count, and match recurring substructures in glycan structures. Supports concrete and generic monosaccharide matching, several structural alignment modes, node-to-node mappings, and batch analysis using subgraph isomorphism. Includes curated motif annotations derived from the 'GlycoMotif' resource < https://glycomotif.glyomics.org/>. Integrates with 'glyrepr' and 'glyparse' for structural glycomics workflows.

Provides comprehensive tools for glycan motif analysis and detection in glycobioinformatics research. The package enables users to identify, count, and match glycan motifs (recurring substructures) within complex glycan structures using advanced subgraph isomorphism algorithms. It includes a curated database of known motifs from the GlycoMotif database, supports both concrete and generic monosaccharide matching, and offers flexible alignment options (core, terminal, or anywhere). Key functionalities include motif presence detection, occurrence counting, detailed node-to-node mapping, and batch analysis of multiple glycans against multiple motifs.
Once glymotif is available on CRAN, you can install the latest release from CRAN:
pak::pkg_install("glymotif")
Or from r-universe:
pak::repo_add(glycoverse = "https://glycoverse.r-universe.dev")
pak::pkg_install("glymotif")
Or install the latest GitHub release:
pak::pkg_install("glycoverse/glymotif@*release")
Or install the development version from GitHub:
pak::pkg_install("glycoverse/glymotif")
glycoverseglymotif provides possibilities for one important job in
glyco-bioinformatics: to detect motifs in glycans. The package is
designed to be used directly by users for structural analysis, as well
as to provide backend support for other packages in the glycoverse
ecosystem.
library(glymotif)
library(glyparse)
Say we have a glycan, …
(glycan <- parse_iupac_condensed("Gal(b1-3)GlcNAc(b1-3)Gal(b1-3)GalNAc(a1-"))
#> <glycan_structure[1]>
#> [1] Gal(b1-3)GlcNAc(b1-3)Gal(b1-3)GalNAc(a1-
#> # Unique structures: 1
… and we want to check if it has the O-Glycan core 1 motif.
have_motif(glycan, "Gal(b1-3)GalNAc(a1-", alignment = "core")
#> [1] TRUE
Or use the motif name directly.
have_motif(glycan, "O-Glycan core 1")
#> [1] TRUE