Glycans play a critical role in immune function, antibody activity, and disease, but their branched structures make them difficult to represent when only using simple linear notation(s). In this project, I explore how Wolfram Language can be used to model glycan structures according to the scientific convention Symbolic Nomenclature for Glycans, or SNFG, and make accurate glycan linkage maps based on nested lists. I created a method that retrieves standardized SNFG symbols in Mathematica from monosaccharide names and uses them to construct glycan linkage maps. The process is applied to a IgG fc N-glycan, which serves as an example of altered glycan structures in Down Syndrome. This project creates a foundation for visualizing and also comparing disease related glycan features in Wolfram via glycan linkage maps, which are an essential communication tool for glycan biochemists.

Introduction

Glycans are complex carbohydrate structures that are attached to proteins, lipids, and cell surfaces throughout the human body. Although glycans are made from sugar molecules, they are not just a source of energy. Glycans play important roles in protein folding, cell recognition, immune signaling, receptor binding, and the movement of proteins within cells.
Glycans are built from smaller sugar units called monosaccharides. Examples of these include glucose, galactose, mannose, fucose, N-acetylglucosamine, and sialic acid. A single monosaccharide can connect to several others, allowing glycans to form complex branched structures that vary in length, branching, position of linkages, and terminal sugar. Due to this structural diversity, glycans can carry detailed information about the condition of a cell, protein, or disease state (BOC Sciences, 2026).
Unlike DNA, RNA, and proteins, glycans cannot easily be represented as simple linear sequences. DNA can be written as a series of nucleotide letters, and proteins can be written as a sequence of amino acids. Glycans, however, often branch in several directions. Each monosaccharide’s identity is important, but so are its position, orientation, and chemical linkage to neighboring sugars.Two glycans may contain the same monosaccharides, but they may behave in different ways if those sugars are connected in different patterns. The complex nature of glycans makes them difficult to study, and as a result there is a need for a clearer visual and computational representation of them.
One major class of glycans is the N-linked glycan, which is attached to the nitrogen atom of an asparagine amino acid on a protein. N-linked glycans share a central structure made from mannose and N-acetylglucosamine, but they can also be extended with additional branches that contain galactose, sialic acid, fucose, and other monosaccharides. These glycans are involved in cell signaling, molecular recognition, and immune function. Rather than their final structures being copied from a genetic template, they are assembled by enzymes that add or remove sugars. This means that glycan patterns can change with external factors such as age, metabolism, inflammation, and disease (BOC Sciences, 2026).
Glycosylation is especially important for immunoglobulin G (IgG), one of the major antibody classes in human blood. IgG antibodies recognize foreign targets through their antigen-binding regions, while their Fc regions interact with immune receptors and proteins in the complement pathway. Each IgG Fc region contains a conserved N-linked glycan at asparagine 297, which can include core fucose and terminal galactose and sialic acid. Changes in these sugars can affect how strongly IgG triggers immune-cell responses (Streng et al., 2024).
These glycan changes are especially relevant in Down syndrome, also known as trisomy 21. Down syndrome is associated with altered immune function, an increased susceptibility to respiratory infections, and signs of premature biological aging. Streng et al. compared IgG1 Fc glycosylation in adults with Down syndrome to healthy controls. They found decreased galactosylation, decreased sialylation, and increased fucosylation in the total IgG from the Down syndrome group. Average galactosylation was 50.2% in Down syndrome compared with 59.0% in controls, sialylation was 6.7% compared with 8.5%, and fucosylation was 97.0% compared with 94.6%. The study also found that the average galactosylation and sialylation levels in participants with Down syndrome resembled those of healthy individuals who were approximately 28 to 30 years older (Streng et al., 2024).
However, percentages alone cannot clearly show how the glycan structures differ. A glycan linkage map can conveniently highlight the sugars and linkages that are changing. The Symbol Nomenclature for Glycans (SNFG) uses standardized shapes and colors to represent specific monosaccharides and lines labeling the glycosidic linkage type connecting each residue. This project uses Wolfram Language to build SNFG-based glycan maps from nested lists. First, it begins with manually drawing out a known glycan structure and then goes into a function that automatically places monosaccharide symbols and generates branches, constructing a complete glycan map. The big picture goal is to create a computational tool that can visualize, and help to compare disease-associated changes such as those in galactose, sialic acid, and fucose in Down syndrome-associated IgG N-glycans.

Methodology

SNFG Data

Before drawing a complete glycan, Wolfram Language first needs a way to retrieve the correct SNFG symbol for each monosaccharide. The function below takes the written name of a monosaccharide, sends it to the MonosaccharideSymbol resource, and returns the matching standardized graphic.
Define a function that retrieves the SNFG symbol for a monosaccharide name:
In[]:=
grabMonosaccharide[glycan_]:=
[◼]
MonosaccharideSymbol
[glycan]
Test the function by requesting the SNFG symbol for N-Acetylneuraminic acid, abbreviated as Neu5Ac:
In[]:=
grabMonosaccharide["Neu5Ac"]
Out[]=
This test confirms that the function successfully converts a written monosaccharide name into its standardized SNFG visual symbol.

Build Sialyl Lewis X Antigen

Sialyl Lewis X was used as the first test case for me because it contains both a main chain and a side branch. This makes it more useful than a simple straight glycan for testing how to draw an actual glycan structure in Wolfram Language.​Here is an image of the Sialyl Lewis X structure, which shows the general arrangement that the Wolfram drawing should be able to reproduce (Zhang et al.):

Viewing the Full Molecular Structure

Define Sialyl Lewis X as a Molecule using its SMILES string:
In[]:=
sialylLewisX=Molecule["C[C@H]1[C@H]([C@H]([C@@H]([C@@H](O1)O[C@H]([C@H](C=O)NC(=O)C)[C@@H]([C@@H](CO)O)O[C@H]2[C@@H]([C@H]([C@H]([C@H](O2)CO)O)O[C@@]3(C[C@@H]([C@H]([C@@H](O3)[C@@H]([C@@H](CO)O)O)NC(=O)C)O)C(=O)O)O)O)O)O"]
Out[]=
Molecule
Formula:
C
31
H
52
N
2
O
23
Atoms:
108
Bonds:
110

Display the Sialyl Lewis X molecule as a three-dimensional space-filling model:
In[]:=
MoleculePlot3D[sialylLewisX,PlotTheme->"SpaceFilling",ImageSize->400]
Out[]=
Although this model gives detailed chemical information, it is difficult to quickly identify where the fucose residue is connected. This shows why a simplified glycan linkage map is useful.

Drawing the SNFG Linkage Map

Graphics combines the connector lines, SNFG symbols, and linkage labels into one visual output. The two Line expressions draw the main glycan chain and the fucose branch, and placing them first keeps the lines behind the monosaccharide symbols. Inset placed Gal, GlcNAc, Neu5Ac, and Fuc at specific coordinates, while Rotate turns the fucose triangle toward GlcNAc and Text adds the glycosidic linkage labels.
Draw the Sialyl Lewis X graphic:
In[]:=
Graphics[​​{​​Thick,​​Line[{{0,0},{0,4}}],​​Line[{{0,2},{-1,2}}],​​​​Inset[grabMonosaccharide["Gal"],{0,1},Center,.5],​​Inset[grabMonosaccharide["GlcNAc"],{0,2},Center,.5],​​Inset[grabMonosaccharide["Gal"],{0,3},Center,.5],​​Inset[grabMonosaccharide["Neu5Ac"],{0,4},Center,.5],​​Inset[Rotate[grabMonosaccharide["Fuc"],-Pi/2],{-1,2},Center,.5],​​​​Text["R",{0,-.1}],​​Text["β1-3",{.35,1.5}],​​Text["β1-4",{.35,2.5}],​​Text["α1-3",{-.55,2.25}],​​Text["α2-3",{.35,3.5}],​​Text["Sialyl Lewis X",{0,-.4}]​​},​​ImageSize->300​​]
Out[]=

Intro to the Glycan Map Function

The manual Sialyl Lewis X graphics code successfully reproduced a branched glycan, but every monosaccharide symbol and connector had to be positioned individually. This method would quickly become difficult for larger glycans with several branches. The next goal was therefore to represent a glycan structure as a nested list and have Wolfram Language use that list to build the glycan linkage map automatically.
Represent the glycan as a nested list:
This nested list mirrors the branched structure of the glycan. It begins with GlcNAc, includes a Fuc branch, and continues through another GlcNAc to Man, where two additional branches are formed.
The eventual goal is for Wolfram Language to read this list, retrieve each SNFG symbol with grabMonosaccharide, calculate the branch positions, and assemble the complete linkage map.

Connector Lines

Before the complete tree can be drawn, the program needs a way to connect one monosaccharide to the next. The connector function takes a starting coordinate and the number of branches extending from that point. It returns the lines for those branches, and the endpoint coordinates where the next sugars should be placed.
Create connector lines and calculate their endpoint coordinates:
In this function, start is the coordinate where the branches begin, while n is the number of branches that should be created. Table repeats the calculation once for each branch, and Cos and Sin determine the horizontal and vertical movement from the starting point. By changing the angle for each value of i, the function spreads multiple branches apart instead of drawing them on top of one another. The function returns {lines, coords}, where lines contains the connector graphics and coords contains the endpoint coordinates needed to place the next monosaccharides.
Test the connector function with one branch beginning at {1, 2}:
When more than one branch is requested, the same function uses different angles to spread the connector lines apart.

Glycan Map Function

The main tree function reads the glycan list recursively. Recursion means that the function calls itself on smaller parts of the same list, which allows it to continue through branches inside other branches. If the input is a single monosaccharide name, then the function places its SNFG symbol at the current coordinate. If the input is a list, the function places the first sugar, creates connectors for the remaining branches, and repeats the process for each branch.
Build the glycan map from a nested glycan list, through the use of Which to distinguish whether the input is a string vs a list:
The function is separated into two cases: a single monosaccharide string or a larger nested list. If the input is a string, grabMonosaccharide retrieves the correct SNFG symbol and Inset places that symbol inside the graphic at the specified coordinate. If the input is a list, the function places the first sugar, uses buildConnectors to create the branches, and assigns each branch a new coordinate. buildGlycanTree then applies itself to each smaller branch until it reaches the terminal monosaccharides.

Drawing the Glycan

After the tree function has interpreted the nested list, Graphics displays the symbols and the connector lines as one linkage map.
Draw the example glycan beginning at the coordinate {0,0}:
This is a correct representation of the Glycan, with the outputs representing an example from the SNFG page. Mathematica is able to read a nested glycan list, retrieve the correct SNFG symbols, calculate branch positions, and generate a linkage map without manually placing every sugar. This will facilitate communication between biologists.

Down syndrome Glycan Example

Represent the Down syndrome-related IgG glycan as a nested list:
Generate the linkage map from the nested glycan list:

Interactive Glycan Interface

After creating the tree function, the next step was to make the program easier to use. Instead of editing a separate code cell every time a new glycan is tested, this interface allows the user to type a nested glycan list directly into an input box and immediately see the corresponding linkage map.
Create an interactive interface for entering and drawing glycan lists:
Manipulate updates the output whenever the glycan list in the input field changes, while InputField allows the user to enter the glycan as a Wolfram Language expression without modifying the function itself. ListQ[glycan] checks whether the input is a valid list, and invalid input produces a red error message instead of attempting to draw a structure. If the input is valid, buildGlycanTree converts the list into a linkage map beginning at {0,0}.

Monosaccharide Reference Dataset

The glycan interface requires users to enter recognized monosaccharide abbreviations such as GlcNAc, Fuc, Gal, and Man. Because these abbreviations are commonly used by biochemists but may be unfamiliar to other users, I added a reference dataset containing each accepted abbreviation, its short chemical name, and its SMILES string.
Open the interactive glycan interface:
The user can test the interface out by inputting monosaccharides in list form.

Building a Glycan Linkage Map with Graph

Assign each numbered vertex to a monosaccharide:
Connect the monosaccharides in the glycan:
Set the position of each monosaccharide in the final graph:
Label each connection with its corresponding glycosidic linkage type:
Draw the glycan as a graph using SNFG symbols for the vertices and the stored glycosidic linkages as edge labels:
Graph automatically draws the connections listed in glycanEdges, while VertexCoordinates places each monosaccharide in its intended location. VertexShapeFunction replaces the numbered vertices with the correct SNFG symbols using grabMonosaccharide, and EdgeLabels adds the glycosidic linkage labels between the sugars. Because the glycan is described directly as a network of vertices and edges, this method is simpler than the tree function.

Plotting Glycan Molecular Structures

The SNFG linkage maps show how monosaccharides are arranged within a glycan, but the symbols do not show the atoms and bonds of the sugars themselves. To examine the chemical structures of the monosaccharides, there is a Wolfram dataset containing structural information for several pyranose monosaccharides.
​
A pyranose is a monosaccharide whose atoms form a six-membered ring. Each entry in the dataset is organized by three chemical properties: the sugar name, its D or L stereochemical form, and its α or β anomer.
​
The dataset stores four important fields:
◼
  • Title gives the readable chemical name.
  • ◼
  • IUPACName gives the systematic chemical name.
  • ◼
  • IsomericSMILES stores the atoms, bonds, and stereochemistry as a text string.
  • ◼
  • CompoundID gives the corresponding PubChem identification number.
  • The D and L labels describe the overall stereochemical configuration of the sugar. The α and β labels identify anomers, which differ in the orientation of the group attached to the anomeric carbon. Since sugars can have the same molecular formula and still have different 3D arrangements and properties, this is an important distinction to make.
    Load the pyranose monosaccharide data as a Wolfram Dataset:
    The output showed a dataset of pyranose monosaccharides. Each row represented a sugar, such as allopyranose, altropyranose, galactopyranose, gulopyranose, idopyranose, mannopyranose, and talopyranose. The dataset could then be accessed using three inputs: the sugar name, the stereochemistry, and the anomer.
    Extract the complete entry for α-D-talopyranose:
    The most important field for my project was “IsomericSMILES” as Wolfram Language can turn that chemical string into a Molecule object. SMILES, or Simplified Molecular Input Line Entry System, is a text notation for representing a chemical structure. An isomeric SMILES string preserves the stereochemical information, which means that Wolfram Language can distinguish between molecules that contain the same atoms but different arrangements.
    Extract the isomeric SMILES string for α-D-gulopyranose and convert it into a molecule:
    Many of the pyranose sugars in the dataset have the same formula, such as C₆H₁₂O₆. However, they are not identical molecules because their hydroxyl groups and other atoms have different orientations. These molecules are called stereoisomers, which means that they have the same molecule formula and the same bond connections, but different 3D arrangements.

    Preparing the Pyranose Names

    To compare several structures, I first created lists of the available sugar names, stereochemical forms, and anomers.
    Define the sugars and stereochemical forms that will be used:
    Create readable names for every sugar, stereochemistry, and anomer combination:

    Creating Reusable Molecule Functions

    Instead of repeatedly writing long dataset queries, I created three helper functions.
    Retrieve the complete dataset entry for a selected monosaccharide:
    Extract only the IsomericSMILES string from the selected entry:
    Convert the selected SMILES string into a Wolfram Molecule object:
    Create molecule objects for every selected monosaccharide form:

    Organizing the Molecules by Name

    After creating the lists of names and molecule objects, I combined them so that each molecule could be retrieved by using a readable chemical name.
    Create a lookup from each monosaccharide name to its molecule:
    Now I can look up a molecule by name:
    The work I have done here has helped make this monosaccharide information more accessible. However, many monosaccharides that appear in biological glycans do not appear in the pyranose dataset.

    Highlighting Core Fucose in the 3D Glycan Structure

    The core fucose of this N-glycan is very important because Streng et al. found that people with Down syndrome had higher IgG1 Fc fucosylation than the healthy controls. This means that more of the IgG antibodies in Down syndrome had fucose attached to the Fc N-glycan. This pattern is part of a premature aging-like IgG glycosylation signature in Down syndrome. Functionally, high fucosylation can disrupt FcγRIIIa/b binding and lower immune cell activation. Due to this fact, increased core fucose may have an affect on how strongly IgG antibodies activate immune responses.
    ​
    A researcher may want to visualize the glycan in Wolfram Language to better understand where fucose is located within the larger structure.
    ​
    In another notebook, a.pdb file from GLYCAM-WEB was imported, and was converted into a Molecule object, which was used to get a SMILES string.
    Directly create the complete glycan molecule from its SMILES representation:
    Define the fucose substructure using a SMILES string brought over from PubChem:
    Make a plot attempting to highlight the fucose pattern:
    Make the same plot, but in 2D:
    Here, the core fucose was highlighted; however, the pattern also highlighted three terminal mannose residues. This means that this MoleculePattern argument failed to distinguish the fucose from other monosaccharides with similar ring structures.
    Jason Sonnenberg and Madeleine Sutherland attempted to fix this by defining all the stereocenters for both molecules, and found that nothing got highlighted. I have demonstrated why functionality for analyzing carbohydrate structures in particular may be helpful.

    Conclusion

    This project used Wolfram Language in order to turn glycan structures into computable linkage maps and molecular visualizations. I first worked with an SNFG symbol table in Mathematica and used grabMonosaccharide to look up the correct glycan symbol from a monosaccharide name. This made it possible to draw structures such as Sialyl Lewis X and then experiment with a more general tree function for branched glycans. I also tested a graph-based method, created an interactive interface, and used molecular data to display monosaccharides and larger glycans in 3D.
    ​
    The main biological target of my project was Down syndrome-associated IgG Fc glycosylation. Since the pattern involves changes in Gal, Neu5Ac, and Fuc, this project shows how these important sugars can be visually represented and identified within glycan structures. I also highlighted core fucose in a 3D glycan model because increased IgG1 Fc fucosylation has been reported in Down syndrome.
    ​
    The stylistic elements of the tree function are still a work in progress, however it still perfectly conveys the central idea of the project, which is using computation to model branched glycan structures and study biochemical patterns related to disease.

    Future Directions

    In the future, I would improve the tree function so the output looks closer to the standard SNFG linkage maps. This would include a cleaner branch placement and better spacing.
    ​
    I would also add automatic highlighting for important monosaccharides. For this project’s focus on Down syndrome, that would mean highlighting Gal, Neu5Ac, and Fuc so that the Down syndrome glycosylation pattern is easier to identify and compare. Another future step that I would take is to compare two glycans side by side, such as a control IgG glycan and a Down syndrome-associated IgG glycan. A larger future goal would be to make the program more useful for analyzing unknown/newly reported glycans. Instead of only drawing a structure that the user already knows, the code could search through a glycan representation and automatically identify all the important features, such as terminal sugars, branch points, disease-associated motifs, etc. In this area, Wolfram Language would be of immense help in detecting structural patterns in complex glycans.

    Acknowledgements

    I would like to thank my mentor, Madeleine Sutherland, for always being there for me throughout the project and encourage me whenever I felt unsure about what direction to take. Her guidance helped me better understand both the biological importance of glycans, and how they can be represented computationally in Wolfram Language. I am incredibly grateful for her support throughout the entire process. Jason Sonnenberg’s creation of the MonosaccharideSymbol resource function also made it possible for me to use standardized SNFG symbols directly in Wolfram Language instead of having to rely on an imported local dataset. I would additionally like to thank Eryn Gillam, Megan Davis, and Cyrus Taylor for always being open to talking about my project and giving me ideas for possible directions I could take it in. I am also grateful to Daniel Xu and all the amazing TAs who helped me debug code and made project time and activities enjoyable. I would also like to thank Rory Foulger and Stephen Wolfram for helping shape the early direction of my project and for giving me the opportunity to complete it with so much guidance and support. Finally, I would like to thank all of my peers and the friends I made throughout the program, whose support and energy made this experience one that I will always remember.

    References

    ◼
  • Aoyama, M., Hashii, N., Tsukimura, W., Osumi, K., Harazono, A., Tada, M., . . . Ishii-Watabe, A. (2019). Effects of terminal galactose residues in mannose α1-6 arm of Fc-glycan on the effector functions of therapeutic monoclonal antibodies. mAbs, 11(5), 826–836. https://doi.org/10.1080/19420862.2019.1608143
  • ◼
  • BOC Sciences. (n.d.). Classification of glycans: N-glycans, O-glycans, and beyond. https://www.bocsci.com/glycan/resource/classification-of-glycans-n-glycans-o-glycans-and-beyond.html
  • ◼
  • GLYCAM-Web. (n.d.). GLYCAM-Web carbohydrate builder. Complex Carbohydrate Research Center, University of Georgia. Retrieved July 9, 2026, from https://glycam.org
  • ◼
  • Nachbar, R. (n.d.). Pyranose monosaccharides. Wolfram Language Example Repository. Retrieved July 8, 2026, from https://www.wolfram.com/language/12/notebook-interface/pyranose-monosaccharides.html
  • ◼
  • National Center for Biotechnology Information. (n.d.). Symbol nomenclature for glycans (SNFG). Retrieved July 8, 2026, from https://www.ncbi.nlm.nih.gov/glycans/snfg.html
  • ◼
  • National Center for Biotechnology Information (2026). PubChem Compound Summary for CID 17106, L-Fucose. Retrieved July 9, 2026 from https://pubchem.ncbi.nlm.nih.gov/compound/L-Fucose.
  • ◼
  • Streng, B. M. M., Van Coillie, J., Wildenbeest, J. G., Binnendijk, R. S., Smits, G., den Hartog, G., Wang, W., Nouta, J., Linty, F., Visser, R., Wuhrer, M., Vidarsson, G., Bont, L. J., & the PRIDE Study Group. (2024). IgG1 glycosylation highlights premature aging in Down syndrome. Aging Cell, 23, e14167. https://doi.org/10.1111/acel.14167
  • ◼
  • Zhang, Z., Wuhrer, M., & Holst, S. (2018). Serum sialylation changes in cancer. Glycoconjugate Journal, 35, 139–160. https://doi.org/10.1007/s10719-018-9820-0
  • CITE THIS NOTEBOOK

    Computational glycan mapping for down syndrome-associated IgG glycosylation​
    by Aashrith Tatineni​
    Wolfram Community, STAFF PICKS, July 9, 2026
    ​https://community.wolfram.com/groups/-/m/t/3752848