normalize_substituents(). This function does not
help outside of glyrepr so we make it an internal
function.glycan_composition() cannot accept empty integer
vectors now. Therefore, glycan_composition(integer(0)) is
not valid anymore.glycan_composition() now checks input types more
strictly.as_glycan_composition() handles NA values and empty
strings (““) more strictly. Now an error will be raised if NA values or
empty strings are passed instead of dropping them silently. This update
makes as_glycan_composition() size-stable and consistent
with as_glycan_structure().get_structure_level() to get the structure
resolution levels of a glycan structure vector.as_glycan_composition() now supports simple composition
strings like “H5N2”, “H5N4F1S2”, “H5N4A1G1”, etc.count_mono() now returns total number of
monosaccharides when mono is NULL.has_linkages() now has a strict parameter
to control the strictness of the check.glycan_composition() now supports
!!!.as_glycan_composition().smap().structure_to_iupac() returns incorrect
sequences with incorrect backbone or branch order.smap2(), spmap(), and
related functions return unexpected results when the input
y is a list.glycan_structure(),
including the new behavior of vertex and edge order introduced in
0.7.0.convert_mono_type() is now replaced by
convert_to_generic(). convert_mono_type() was
created when three monosaccharide types existed: “concrete”, “generic”,
and “simple”. When “simple” was removed, the old
convert_mono_type() seems redundant, as the only valid
conversion is from “concrete” to “generic” now. Therefore, we remove
this function now and add a more straightforward
convert_to_generic().get_structure_graphs() is redesigned.
i parameter is removed, as indexing can be done
manually on the input glyrepr_structure vector or on the
returned list easily.return_list parameter to control the return type.
This parameter makes this function “type-stable”.glycan_structure() and
as_glycan_structure() now reorder the underlying graphs to
be in line with the IUPAC-style sequence. For example, the vertex order
of “Gal(b1-3)[GlcNAc(b1-6)]GalNAc(b1-” is always 1. Gal, 2. GlcNAc, 3.
GalNAc, and edges b1-3, b1-6, no matter what the original graphs are.
Users can assign the indices of vertices and edges easily by printing
the structure to console. This update makes
glymotif::match_motif() more meaningful.glyrepr_structure has colors now in tibbles when
printed to console.glycan_structure() is printed in the console. For
example, the “Neu5Ac” part in “Neu5Ac9Ac(a2-” was printed in black. Now
it is printed in purple, while the “9Ac” part remains in black.n_glycan_core() now has a “b1” reducing end anomer, not
“?1”.glycan_structure() to ensure no
duplicated linkage positions. For example,
“Gal(b1-3)[Fuc(a1-3)]GalNAc(b1-” is invalid now becuase both “Gal” and
“Fuc” are linked to “GalNAc” at position 3.glycan_structure() documentation.remove_linkages() now also removes reducing end
anomers.n_glycan_core(), o_glycan_core_1(), and
o_glycan_core_2() now have “??” anomers when
linkage = FALSE.smap_structure(),
smap2_structure(), spmap_structure(), and
simap_structure() where modifying the structures can create
identical structures, but the unique structures are not updated
correctly. This automatically fixes a similar bug in
remove_linkages().glycan_structure()
objects. This information is rarely used in glycomics and
glycoproteomics data analysis. It is removed according to the razor
principle.as_glycan_structure() now doesn’t allow the input
IUPAC-condensed strings to omit the anomer information. Previously,
something like “Glc(a1-3)GlcNAc” is valid.
as_glycan_structure() assumed that the core “GlcNAc” has a
“?1-” anomer and added it automatically. The problem is that this
behavior was not easily awared by users and might cause confusion.
Again, less is more, so we remove it.glyrepr_structure
from structure to struct.Glycan structures now support multiple substituents on a single monosaccharide. Substituents are stored as comma-separated strings internally and concatenated in IUPAC format for display.
Glycan compositions now support substituents. The
glycan_composition class can now represent and count
substituents alongside monosaccharides.