extract_motif() and extract_branch_motif()
extract motifs faster while preserving motif order. (#59)have_motif(), count_motif(),
match_motif(), and their plural variants now use C++ for
structure matching, reducing overhead in batch analyses. (#58)have_motif(), count_motif(),
match_motif(), and their plural and graph-level variants
now support glycans with unresolved floating parts and substituents;
strict_floating selects all-localization or
any-localization aggregation for logical and count results, while
graph-level mappings preserve original node indices. (#56)have_motif(), count_motif(),
match_motif(), and their plural and graph-level variants
now prune incompatible residues, substituents, linkages, anomers,
alignments, and degrees during graph search, substantially reducing work
for mixed and wildcard-rich motifs. (#57)add_motifs_int() and add_motifs_lgl() are
removed; use count_motifs() or have_motifs()
with your data-manipulation workflow instead. (#53)extract_branch_motif() now warns, rather than errors,
for glycans without the N-glycan core, returning no branch motifs for
those inputs. (#51)GlycomicSE and
GlycoproteomicSE containers and the
mutate_row() replacement for deprecated motif-annotation
helpers as part of Stage II of glycoverse/glyexp#15. (#49)add_motifs_int() now run with both legacy
and current glyexp containers and use valid condensed IUPAC
glycans.mode = "lenient" so
lower-information glycans can match more specific motifs while concrete
mismatches still fail (#45).add_motifs_lgl() and add_motifs_int() are
deprecated. Use dplyr::mutate() or
glyexp::mutate_var() with
tibble::as_tibble(have_motifs(...)) or
tibble::as_tibble(count_motifs(...)) instead (#44).db_motifs() no longer returns a character vector of
motif names. It now returns a db_motifs_spec object that
should be passed directly to the motifs argument of
have_motifs(), count_motifs(),
match_motifs(), add_motifs_lgl(), and
add_motifs_int(). Specifying alignments,
ignore_linkages, strict_sub, or
match_degree is no longer valid. (#35)get_motif_structure(),
get_motif_alignment(), and is_known_motif()
are deprecated. Use db_motif_info() to inspect database
motifs instead. (#35)get_motif_aglycon() are removed. (#32)db_motif_info() to return a tibble of all built-in
database motifs, including their names, structures, and alignments.
(#35).g_have_motif(),
.g_count_motif(), and .g_match_motif() that
work directly with igraph objects for package developers (#31).Gal?NAc and related
motifs (#27).view_motif() to visualize motif structures with
glydraw (#21).library(glymotif) does not have time delay due anymore
(#25).get_motif_structure().all_motifs() is renamed to db_motifs().
(#11)alignment and
alignments arguments. This alignment type was introduced in
v0.12.0 but is problematic. (#9)match_degree argument to all motif matching
functions. match_degree provides a more delicate way to
control the alignment of each monosaccharide residue. (#10)dynamic_motifs() and branch_motifs()
for better dynamic motif matching UX. (#14)including_core parameter to
extract_branch_motif(). (#13)motifs parameter
contains duplicates in have_motifs(),
count_motifs(), match_motifs(),
add_motifs_lgl() and add_motifs_int().
(#8)We introduce the “dynamic motif” feature in this release. Instead of
specifying motifs manually or using motifs from the database, you can
now extract motifs existing in your set of glycans. Two functions,
extract_motifs() and extract_motifs_lgl(), are
added for this purpose.
extract_motif() to find all unique substructures
(motifs) in a set of glycans. This function is suitable for motif
finding in small glycans like O-GalNAc glycans.extract_branch_motif() to find all branching motifs
in a set of N-glycans. This function is particular useful for N-glycan
motif finding, where antennary patterns can be versatile.alignment or alignments argument of
all related functions now supports a new alignment type: “exact”. This
type of alignment works the best with
extract_branch_motif() results.have_motif(), have_motifs(),
count_motif(), and count_motifs() now support
a new argument strict_sub to control the strictness of
substituent matching.The argument defaults to TRUE, to be
consistent with the previous behavior. When strict_sub is
FALSE, the substituent is optional in the motif, so the
glycan “Neu5Ac9Ac(a2-” can match the motif “Neu5Ac(a2-”.add_motifs_int() and add_motifs_lgl() now
support data frames as input.glyexp
0.10.0.quantify_motifs(). This function is
reimplemented in the glydet package, with more features and
better performance.quantify_motifs() now returns a
glyexp::experiment() object with “traitomics” type for
glycomics data, and “traitproteomics” type for glycoproteomics data,
instead of “traitomics” for all input.quantify_motifs() has been totally rewritten. Serious
bug about column aggregation with descriptional columns about glycan
structures are fixed. The function now behaves like
glydet::derive_traits(), adding back columns in
var_info only when they have “many-to-one” relationship
with glycosites (unique combinations of protein and
protein_site).quantify_motifs(), add_motifs_int(), and
add_motifs_lgl() now support a character vector ofglycan
structure strings as the “glycan_structure” column in
var_info.glyexp::real_experiment.all_motifs().add_comp_descriptions(),
add_glycan_descriptions(),
add_struct_descriptions(),
describe_n_glycans(), has_bisecting(),
is_n_glycan(), n_antennae(),
n_arm_fuc(), n_core_fuc(),
n_gal(), n_glycan_type(),
n_terminal_gal(). These functions are replaced by functions
in the glydet package now.quantify_motifs() now returns a
glyexp::experiment() object with “traitomics” type instead
of “motifomics”.glyrepr
v0.7.0.available_motifs() is renamed to
all_motifs().match_motif() and match_motifs() to
find all occurrences of the given motif(s) in the glycans. Node-to-node
mapping is returned for each match.NA for those glycans, instead of
throwing an error.is_n_glycan(), n_glycan_type(),
has_bisecting(), n_antennae(),
n_core_fuc(), n_arm_fuc(),
n_gal(), and n_terminal_gal().describe_n_glycans().glyread v0.5.0.quantify_motifs().quantify_motifs() to quantify motifs in a
glyexp::experiment().glyexp::experiment()” vignette,
covering the integration with glyexp::experiment().have_motif(), have_motifs(),
count_motif(), and count_motifs().add_glycan_descriptions(),
add_struct_descriptions(), and
add_comp_descriptions(). These functions are moved from
glyexp to glymotif for better separation of
concerns.add_motifs_int() and add_motifs_lgl()
for adding motif annotations to a
glyexp::experiment().parallel argument from
add_glycan_descriptions(),
add_struct_descriptions(), and
add_comp_descriptions(). We found it not very useful on a
regular basis.get_motif_structure(), where the order of
the results was not consistent with the order of the input motifs. This
caused unexpected results in a wide range of functions including
have_motifs(), count_motifs(), and the new
add_motifs_lgl() and add_motifs_int()
functions, when using motif names as input. Alone with
get_motif_structure(), similar bugs in
get_motif_alignment() and get_motif_aglycon()
are also fixed.have_motif(), have_motifs(),
count_motif(), and count_motifs() now support
multiple substituents in the motif, to align with the updates in
glyrepr v0.5.0.have_motif(), have_motifs(),
count_motif(), and count_motifs().