Skip to contents

This function simulates the action of an enzyme on a glycan. It returns all possible products generated by the enzyme with the given glycans.

Usage

apply_enzyme(glycans, enzyme, return_list = NULL)

Arguments

glycans

A glyrepr::glycan_structure(), or a character vector of glycan structure strings supported by glyparse::auto_parse().

enzyme

An enzyme() or a gene symbol.

return_list

If NULL (default), return a list of glyrepr::glycan_structure() when glycans has length greater than 1, and a single glyrepr::glycan_structure() when glycans has length 1. Set to TRUE to always return a list. This can be useful when you are working programmatically with unknown input length. Note that when return_list = FALSE and length(glycans) > 1, an error will be thrown.

Value

A glyrepr::glycan_structure() vector, or a list of such vectors.

Important notes

Here are some important notes for all functions in the glyenzy package.

Applicability

All algorithms and enzyme information in glyenzy are applicable only to humans, and specifically to N-glycans and O-GalNAc glycans. Results may be inaccurate for other types of glycans (e.g., GAGs, glycolipids) or for glycans in other species (e.g., plants, insects).

Inclusiveness

The algorithm takes an intentionally inclusive approach, assuming that all possible isoenzymes capable of catalyzing a given reaction may be involved. Therefore, results should be interpreted with caution.

For example, in humans, detection of the motif "Neu5Ac(a2-3)Gal(b1-" will return both "ST3GAL3" and "ST3GAL4". In reality, only one of them might be active, depending on factors such as tissue specificity.

Only "concrete" glycans

The function only works for glycans containing concrete residues (e.g., "Glc", "GalNAc"), and not for glycans with generic residues (e.g., "Hex", "HexNAc").

Substituents

Subtituents (e.g. sulfation, phosphorylation) is not supported yet, and the algorithms might fail for glycans with subtituents. If your glycans contains substituents, use glyrepr::remove_substituents() to get clean glycans.

Incomplete glycan structures

If the glycan structure is incomplete or partially degraded, the result may be misleading.

Starting points

Throughout glyenzy, the starting glycan is the Glc(3)Man(9)GlcNAc(2) precursor for N-glycans, and GalNAc(a1- for O-glycans. This means that enzymes involved in N-glycan precursor biosynthesis, mainly ALGs, and OST, which transfered the precursor to Asn, are not considered here. Similarly, GALNTs for O-glycans are not considered.

Examples

library(glyrepr)
library(glyparse)

# Use `glycan_structure()` and `enzyme()`
glycan <- auto_parse("GlcNAc(b1-2)Man(a1-3)[Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(b1-")
apply_enzyme(glycan, enzyme("MGAT3"))
#> <glycan_structure[1]>
#> [1] GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-4)][Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(b1-
#> # Unique structures: 1

# Or use characters directly
apply_enzyme("GlcNAc(b1-2)Man(a1-3)[Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(b1-", "MGAT3")
#> <glycan_structure[1]>
#> [1] GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-4)][Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(b1-
#> # Unique structures: 1

# Vectorized input
glycans <- c(
  "GlcNAc(b1-2)Man(a1-3)[Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(b1-",
  "GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-2)Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(b1-"
)
apply_enzyme(glycans, "MGAT3")
#> [[1]]
#> <glycan_structure[1]>
#> [1] GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-4)][Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(b1-
#> # Unique structures: 1
#> 
#> [[2]]
#> <glycan_structure[1]>
#> [1] GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-4)][GlcNAc(b1-2)Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(b1-
#> # Unique structures: 1
#>