validate argument to skip
graph validation for trusted inputs. (#36)parse_glycoct() now supports floating glycan
substructures represented by UND sections, uses implicit
floating parts when every main-tree node is a candidate parent, and
excludes explicit candidates whose acceptor positions are already
occupied. (#40)parse_gwb() parses GlycoWorkbench (GWB/GWS)
sequences, including branches, substituents, furanose and configured
residues, reducing-end alditols, and uncertain antennae.
auto_parse() now detects these sequences. (#48)parse_wurcs() now supports floating monosaccharides and
subtrees, including implicit all-main attachment domains and filtered
explicit candidate parents. It also recognizes generic nonulosonic acids
and sialic acids with unknown ring closure. (#40)glyrepr
monosaccharide names such as Galf, GlcfNAc,
and Neuf5Ac across IUPAC, GlyCAM IUPAC, GlycoCT, WURCS,
LINUCS, Linear Code, and KCF inputs. (#41)glyrepr names such as D-Fuc,
L-Gul, and D-Fucf, while unprefixed names
retain their natural configurations. (#43, #44)auto_parse() and all format-specific parsers now
preserve generic and concrete residues mixed within a glycan and across
parsed vectors. (#50)parse_glycoct() and parse_wurcs() now
preserve declared floating candidate-parent domains in global
floating-parent structures: GlycoCT UND parents remain
restricted to the main graph, while WURCS parents may target other
floating components.parse_glycoct() and parse_wurcs() now
preserve floating substituents with unresolved parent residues,
including their chemistry, carbon positions, and candidate parents.
(#45)parse_glycoct() and parse_wurcs() now
recognize the xylHex encoding of fucose.parse_glycoct(), parse_wurcs(),
parse_iupac_compact(),
parse_iupac_condensed(), parse_linucs(), and
auto_parse() now preserve alditol reducing ends in parsed
structures. (#46)parse_glycoct() now normalizes symmetric
Man-ol acceptor positions so equivalent GlycoCT linkages
parse consistently.parse_glycoct() now preserves repeated and
alternative-position substituents, distinguishes N-acetyl and N-glycolyl
from acetyl, maps generic HexA and HexN
residues, and rejects unrepresentable non-alditol open-chain residues
explicitly. (#47)parse_iupac_extended() now accepts abbreviated generic
reducing ends such as ?-Hex, ?-HexNAc, and
?-HexN, as well as slash-ambiguous acceptor positions such
as 4/?.parse_wurcs() now accepts direct phosphate and
alternative-position substituent encodings, preserves generic-root
anomer positions, and orients ambiguous linkages using alditol-aware
donor semantics. (#47)parse_glycam_iupac() now parses large input vectors
about five times faster. (#49)parse_glycoct() and parse_wurcs() now
reuse indexed residue matching and cached classification to improve
parsing performance. (#37)glyrepr’s public structure
constructor, preventing tidyverse joins on parsed structures from
failing with glyrepr 0.13.0. (#33)auto_parse() now detects GlyCAM IUPAC, IUPAC-compact,
KCF, and LINUCS structures and routes them to the corresponding parser
(#26, #28, #30, #31).progress argument for opt-in
progress bars when parsing large inputs (#29).parse_glycam_iupac() parses GlyCAM IUPAC structures
(#25, #27).parse_iupac_compact() parses IUPAC-compact
structures (#28).parse_kcf() parses KCF structures (#30).parse_linucs() parses LINUCS structures (#31).parse_glycoct() now accepts space-separated GlycoCT
records, such as records stored in CSV exports (#24).parse_glycoct() now parses GlycoCT alditol residues as
regular reducing-end glycans with unknown anomer configurations
(#22).parse_glycoct() now supports generic GlycoCT
HEX, N-acetylated HEX, deoxy-HEX,
and sialic acid descriptors, including direct n-sulfate
substituents on amino sugars (#24).parse_wurcs() now parses WURCS alditol residues as
regular reducing-end glycans with unknown anomer configurations
(#21).parse_wurcs() now supports additional generic residue
descriptors, ambiguous sialic acid descriptors, and uppercase residue
IDs for large structures (#23).parse_wurcs() now supports ambiguous u
residues and unknown ring closure residues (? ring
position).parse_wurcs() now correctly handles WURCS N-sulfate
substituent codes (*NSO/3=O/3=O).parse_glycoct() now preserves unknown reducing-end ring
positions and matches amino sugars with unknown ring bounds.on_failure parameter to all parser functions.
When on_failure = "error", the parser will throw an error
when it encounters an unparsable string. When
on_failure = "na", the parser will return NA for unparsable
strings. The default is “error”, for backwards compatibility.parse_iupac_extended() now accepts input with plain
text equivalents (“alpha”, “beta”, “->”). (#10)dplyr::case_match() with
dplyr::recode_values() in parsers to prevent warnings.parse_iupac_extended() and
parse_iupac_short() now support generic monosaccharides,
e.g. “Hex”, “HexNAc”, “HexN”.parse_linear_code() to parse Linear Code
strings.auto_parse() now supports Linear Code strings.parse_iupac_extended().parse_wurcs().parse_iupac_short().parse_glycoct().glyrepr
v0.7.0.parse_iupac_condensed() and
parse_iupac_short() now require the reducing-end
monosaccharide to have anomer information. For example, “Neu5Ac(a2-” and
“Neu5Aca-” are valid, but “Neu5Ac” is not.parse_pglyco_struc() now support “aH” and “pH”
monosaccharides.auto_parse() to automatically detect and parse
different glycan structure string formats.Better error messages. Before:
> parse_iupac_condensed("bad_glycan")Error in `purrr::map()` at glyparse/R/struc-parser-wrapper.R:13:3:
ℹ In index: 1.
Caused by error in `value[[3L]]()`:
! Could not parse IUPAC-condensed string: {.val {x}}
ℹ Invalid characters or format in IUPAC-condensed string
Run `rlang::last_trace()` to see where the error occurred.
Now:
> parse_iupac_condensed("bad_glycan")Error in `parse_iupac_condensed()`:
! Can't parse: "bad_glycan"
Run `rlang::last_trace()` to see where the error occurred.parse_glycoct() to parse glycans in GlycoCT
format.parse_iupac_short(),
parse_iupac_extended(),
parse_iupac_condensed(), parse_wurcs() now
support multiple substituents on the same monosaccharide, to align with
the updates in glyrepr v0.5.0.