Skip to contents

Extract key properties of N-glycans, including:

  • "glycan_type": N-glycan type: high mannose, hybrid, complex, or paucimannose.

  • "bisecting": Bisecting GlcNAc presence.

  • "antennae": Number of antennae.

  • "core_fuc": Number of core fucoses.

  • "arm_fuc": Number of arm fucoses.

  • "terminal_gal": Number of terminal galactoses.

Usage

describe_n_glycans(glycans, strict = FALSE)

Arguments

glycans

A glyrepr_structure object, or a character vector of glycan structure strings.

strict

A logical value. If TRUE, the glycan must have "concrete" monosaccharides (e.g. "GlcNAc", "Man", "Gal") and linkage information. If FALSE, the function is more lenient, checking monosaacharide identities on the "generic" level (e.g. "Hex", "HexNAc") and ignoring linkage information. Default is FALSE. This is preferred because in most cases the structural resolution could not be high, but we known for sure the glycans are indeed N-glycans.

Value

A tibble with the following columns: "glycan_type", "bisecting", "antennae", "core_fuc", "arm_fuc", "terminal_gal". If the input glycans have names, the tibble will have a "glycan" column. Otherwise, glycan structure strings will be used as the "glycan" column.

Details

This function is designed to work with N-glycans only. If the glycans are not N-glycans, an error is thrown.

Strictness

By default (strict = FALSE), the function is very lenient for motif checking. It only checks the monosaccharide types on the "generic" level (e.g. "Hex", "HexNAc"), and ignores linkage information. This is preferred because in most cases the structural resolution could not be high, e.g. in most glycoproteomics studies. However, the glycans are guaranteed to be N-glycans by the glycosylation sites. In this case, we could make some assumptions about the glycan structures, and extract the key properties. For example, an H-N terminal motif is considered a terminal galactose. If you have high-resolution glycan structures, you can set strict = TRUE.

Examples

library(purrr)

glycans <- c(
  "Man(a1-3)[Man(a1-3)Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(?1-",
  "Man(a1-3)[Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc(?1-"
)
describe_n_glycans(glycans)
#> # A tibble: 2 × 8
#>   glycan             glycan_type bisecting n_antennae n_core_fuc n_arm_fuc n_gal
#>   <chr>              <chr>       <lgl>          <int>      <int>     <int> <int>
#> 1 Man(a1-3)[Man(a1-… paucimanno… FALSE             NA          0         0     0
#> 2 Man(a1-3)[Man(a1-… paucimanno… FALSE             NA          0         0     0
#> # ℹ 1 more variable: n_terminal_gal <int>