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().