{"id":15119855,"url":"https://github.com/BojarLab/glycowork","last_synced_at":"2025-09-28T03:30:39.948Z","repository":{"id":38356400,"uuid":"327716604","full_name":"BojarLab/glycowork","owner":"BojarLab","description":"Package for processing and analyzing glycans and their role in biology.","archived":false,"fork":false,"pushed_at":"2024-04-23T05:25:37.000Z","size":708049,"stargazers_count":51,"open_issues_count":0,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-23T09:47:44.109Z","etag":null,"topics":["bioinformatics","computational-biology","data-science","glycans","glycobiology","machine-learning","molecular-biology","open-source","python"],"latest_commit_sha":null,"homepage":"https://Bojarlab.github.io/glycowork","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BojarLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-01-07T20:22:02.000Z","updated_at":"2024-04-24T14:55:52.842Z","dependencies_parsed_at":"2023-02-16T21:31:39.254Z","dependency_job_id":"ddc05eed-6571-47dc-908a-61681abdd0e5","html_url":"https://github.com/BojarLab/glycowork","commit_stats":{"total_commits":461,"total_committers":6,"mean_commits":76.83333333333333,"dds":"0.14750542299349245","last_synced_commit":"3a5a53763076583f709a5040ef03b3597acb05bf"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BojarLab%2Fglycowork","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BojarLab%2Fglycowork/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BojarLab%2Fglycowork/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BojarLab%2Fglycowork/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BojarLab","download_url":"https://codeload.github.com/BojarLab/glycowork/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234479935,"owners_count":18840181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bioinformatics","computational-biology","data-science","glycans","glycobiology","machine-learning","molecular-biology","open-source","python"],"created_at":"2024-09-26T02:00:30.548Z","updated_at":"2025-09-28T03:30:39.941Z","avatar_url":"https://github.com/BojarLab.png","language":"Jupyter Notebook","funding_links":[],"categories":["Software packages"],"sub_categories":[],"readme":"# glycowork\n\n\n\u003c!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! --\u003e\n\n![CI](https://github.com/BojarLab/glycowork/actions/workflows/test.yaml/badge.svg)\n![PyPI -\nDownloads](https://img.shields.io/pypi/dm/glycowork?color=brightgreen.png)[![contributions\nwelcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/BojarLab/glycowork/issues)[![DOI](https://zenodo.org/badge/327716604.svg)](https://zenodo.org/doi/10.5281/zenodo.10039202)[![codecov](https://codecov.io/gh/BojarLab/glycowork/graph/badge.svg?token=3AHNZ9QRZV)](https://codecov.io/gh/BojarLab/glycowork)\n\n\u003cimg src=\"./glycowork_badge_wo_bg.jpg\" width=\"200\" alt=\"glycowork logo\" /\u003e\n\nGlycans are fundamental biological sequences that are as crucial as DNA,\nRNA, and proteins. As complex carbohydrates forming branched structures,\nglycans are ubiquitous yet often overlooked in biological research.\n\n## Why Glycans are Important\n\n- Ubiquitous in biology\n- Integral to protein and lipid function\n- Relevant to human diseases\n\n## Challenges in Glycan Analysis\n\nAnalyzing glycans is complicated due to their non-linear structures and\nenormous diversity. But that’s where `glycowork` comes in.\n\n## Introducing glycowork: Your Solution for Glycan-Focused Data Science\n\nGlycowork is a Python package specifically designed to simplify glycan\nsequence processing and analysis. It offers:\n\n- Functions for glycan analysis\n- Datasets for model training\n- Full support for IUPAC-condensed string representation. Broad support\n  for IUPAC-extended, LinearCode, Oxford, GlycoCT, WURCS, GLYCAM,\n  CSDB-linear, GlycoWorkBench, GlyTouCan IDs, and more.\n- Powerful graph-based architecture for in-depth analysis\n\n**Documentation:** \u003chttps://bojarlab.github.io/glycowork/\u003e\n\n**Contribute:** Interested in contributing? Read our [Contribution\nGuidelines](https://github.com/BojarLab/glycowork/blob/master/CONTRIBUTING.md)\n\n**Citation:** If `glycowork` adds value to your project, please cite\n[Thomes et al.,\n2021](https://academic.oup.com/glycob/advance-article/doi/10.1093/glycob/cwab067/6311240)\n\n## Install\n\n\u003cu\u003eNot familiar with Python?\u003c/u\u003e Try our no-code, graphical user\ninterface (`glycoworkGUI.exe`, can be downloaded at the bottom of the\nlatest [Release](https://github.com/BojarLab/glycowork/releases) page)\nfor accessing some of the most useful `glycowork` functions!\n\n\u003cu\u003evia pip:\u003c/u\u003e \u003cbr\u003e `pip install glycowork` \u003cbr\u003e `import glycowork`\n\n\u003cu\u003ealternative:\u003c/u\u003e \u003cbr\u003e\n`pip install git+https://github.com/BojarLab/glycowork.git` \u003cbr\u003e\n`import glycowork`\n\n\u003cu\u003eNote that we have optional extra installs for specialized use (even\nfurther instructions can be found in the `Examples` tab; on Mac you\nmight need to use `\"glycowork[ml]\"`), such as:\u003c/u\u003e \u003cbr\u003e *deep learning*\n\u003cbr\u003e `pip install glycowork[ml]` \u003cbr\u003e *analyzing atomic/chemical\nproperties of glycans* \u003cbr\u003e `pip install glycowork[chem]` \u003cbr\u003e\n*everything* \u003cbr\u003e `pip install glycowork[all]` \u003cbr\u003e\n\n## Data \u0026 Models\n\n`Glycowork` currently contains the following main datasets that are\nfreely available to everyone:\n\n- **`df_glycan`**\n  - contains ~50,500 unique glycan sequences, including labels such as\n    ~39,500 species associations, ~20,000 tissue associations, and\n    ~1,000 disease associations\n- **`glycan_binding`**\n  - contains \\\u003e790,000 protein-glycan binding interactions, from \\\u003e2,000\n    unique glycan-binding proteins\n\nAdditionally, we store these trained deep learning models for easy\nusage, which can be retrieved with the `prep_model` function:\n\n- **`LectinOracle`**\n  - can be used to predict glycan-binding specificity of a protein,\n    given its ESMC representation; from [Lundstrom et al.,\n    2021](https://onlinelibrary.wiley.com/doi/10.1002/advs.202103807)\n- **`LectinOracle_flex`**\n  - operates the same as LectinOracle but can directly use the raw\n    protein sequence as input (no ESMC representation required)\n- **`SweetNet`**\n  - a graph convolutional neural network trained to predict species from\n    glycan, can be used to generate learned glycan representations; from\n    [Burkholz et al., 2021](https://pubmed.ncbi.nlm.nih.gov/34133929/)\n- **`NSequonPred`**\n  - given the ESM-1b representation of an N-sequon (+/- 20 AA), this\n    model can predict whether the sequon will be glycosylated\n\n## How to use\n\n`Glycowork` currently contains four main modules:\n\n- **`glycan_data`**\n  - stores several glycan datasets and contains helper functions\n- **`ml`**\n  - here are all the functions for training and using machine learning\n    models, including train-test-split, getting glycan representations,\n    etc.\n- **`motif`**\n  - contains functions for processing \u0026 drawing glycan sequences,\n    identifying motifs and features, and analyzing them\n- **`network`**\n  - contains functions for constructing and analyzing glycan networks\n    (e.g., biosynthetic networks)\n\nBelow are some examples of what you can do with `glycowork`; be sure to\ncheck out the other `examples` in the full documentation for everything\nthat’s there. [–\\\u003e Learn more](./05_examples.ipynb) A non-exhaustive\nlist includes:\n\n- using trained AI models for prediction [–\\\u003e Learn\n  more](./02_ml.ipynb#inference)\n- training your own AI models [–\\\u003e Learn\n  more](./02_ml.ipynb#model_training)\n- motif enrichment analyses [–\\\u003e Learn more](./03_motif.ipynb#analysis)\n- differential glycomics expression analysis [–\\\u003e Learn\n  more](./03_motif.ipynb#analysis)\n- annotating motifs in glycans [–\\\u003e Learn\n  more](./03_motif.ipynb#annotate)\n- drawing publication-quality glycan figures [–\\\u003e Learn\n  more](./03_motif.ipynb#draw)\n- finding out whether \u0026 where glycans are describing the same sequence\n  [–\\\u003e Learn more](./03_motif.ipynb#graph)\n- *m/z* to composition to structure to motif mappings [–\\\u003e Learn\n  more](./03_motif.ipynb#tokenization)\n- mass calculation [–\\\u003e Learn more](./03_motif.ipynb#tokenization)\n- visualizing motif distribution / glycan similarities / sequence\n  properties [–\\\u003e Learn more](./03_motif.ipynb#analysis)\n- constructing and analyzing biosynthetic networks [–\\\u003e Learn\n  more](./04_network.ipynb#biosynthesis)\n\n``` python\n#drawing publication-quality glycan figures\nfrom glycowork import GlycoDraw\nGlycoDraw(\"Neu5Ac(a2-3)Gal(b1-4)[Fuc(a1-3)]GlcNAc(b1-2)Man(a1-3)[Neu5Gc(a2-6)Gal(b1-4)GlcNAc(b1-2)Man(a1-6)][GlcNAc(b1-4)]Man(b1-4)GlcNAc(b1-4)[Fuc(a1-6)]GlcNAc\", highlight_motif = \"Neu5Ac(a2-3)Gal(b1-4)[Fuc(a1-3)]GlcNAc\")\n```\n\n![](index_files/figure-commonmark/cell-3-output-1.svg)\n\n``` python\n#get motifs, graph features, and sequence features of a set of glycan sequences to train models or analyze glycan properties\nglycans = [\"Neu5Ac(a2-3)Gal(b1-4)[Fuc(a1-3)]GlcNAc(b1-2)Man(a1-3)[Gal(b1-3)[Fuc(a1-4)]GlcNAc(b1-2)Man(a1-6)]Man(b1-4)GlcNAc(b1-4)[Fuc(a1-6)]GlcNAc\",\n           \"Ma3(Ma6)Mb4GNb4GN;N\",\n           \"α-D-Manp-(1→3)[α-D-Manp-(1→6)]-β-D-Manp-(1→4)-β-D-GlcpNAc-(1→4)-β-D-GlcpNAc-(1→\",\n           \"F(3)XA2\",\n           \"WURCS=2.0/5,11,10/[a2122h-1b_1-5_2*NCC/3=O][a1122h-1b_1-5][a1122h-1a_1-5][a2112h-1b_1-5][a1221m-1a_1-5]/1-1-2-3-1-4-3-1-4-5-5/a4-b1_a6-k1_b4-c1_c3-d1_c6-g1_d2-e1_e4-f1_g2-h1_h4-i1_i2-j1\",\n           \"\"\"RES\n1b:b-dglc-HEX-1:5\n2s:n-acetyl\n3b:b-dglc-HEX-1:5\n4s:n-acetyl\n5b:b-dman-HEX-1:5\n6b:a-dman-HEX-1:5\n7b:b-dglc-HEX-1:5\n8s:n-acetyl\n9b:b-dgal-HEX-1:5\n10s:sulfate\n11s:n-acetyl\n12b:a-dman-HEX-1:5\n13b:b-dglc-HEX-1:5\n14s:n-acetyl\n15b:b-dgal-HEX-1:5\n16s:n-acetyl\nLIN\n1:1d(2+1)2n\n2:1o(4+1)3d\n3:3d(2+1)4n\n4:3o(4+1)5d\n5:5o(3+1)6d\n6:6o(2+1)7d\n7:7d(2+1)8n\n8:7o(4+1)9d\n9:9o(-1+1)10n\n10:9d(2+1)11n\n11:5o(6+1)12d\n12:12o(2+1)13d\n13:13d(2+1)14n\n14:13o(4+1)15d\n15:15d(2+1)16n\"\"\"]\nfrom glycowork.motif.annotate import annotate_dataset\nout = annotate_dataset(glycans, feature_set = ['known', 'terminal', 'exhaustive'], condense=True)\n```\n\n|  | Internal_LewisX | Internal_LewisA | H_antigen_type2 | Chitobiose | Trimannosylcore | Terminal_LacNAc_type1 | Internal_LacNAc_type2 | Terminal_LacNAc_type2 | Terminal_LacdiNAc_type2 | core_fucose | core_fucose(a1-3) | Fuc | Gal | GalNAc | GalNAcOS | GlcNAc | Man | Neu5Ac | Xyl | Fuc(a1-2)Gal | Fuc(a1-3)GlcNAc | Fuc(a1-4)GlcNAc | Fuc(a1-6)GlcNAc | Fuc(a1-?)GlcNAc | Gal(b1-3)GlcNAc | Gal(b1-4)GlcNAc | Gal(b1-?)GlcNAc | GalNAc(b1-4)GlcNAc | GalNAcOS(b1-4)GlcNAc | GlcNAc(b1-2)Man | GlcNAc(b1-4)GlcNAc | Man(a1-3)Man | Man(a1-6)Man | Man(a1-?)Man | Man(b1-4)GlcNAc | Neu5Ac(a2-3)Gal | Xyl(b1-2)Man | Terminal_Fuc(a1-3) | Terminal_Man(a1-3) | Terminal_Man(a1-6) | Terminal_GalNAcOS(b1-4) | Terminal_Fuc(a1-4) | Terminal_Gal(b1-4) | Terminal_GalNAc(b1-4) | Terminal_Xyl(b1-2) | Terminal_Gal(b1-3) | Terminal_GlcNAc(b1-2) | Terminal_Fuc(a1-6) | Terminal_Neu5Ac(a2-3) | Terminal_Fuc(a1-2) | Terminal_Fuc(a1-?) | Terminal_Man(a1-?) | Terminal_Gal(b1-?) |\n|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|\n| Neu5Ac(a2-3)Gal(b1-4)\\[Fuc(a1-3)\\]GlcNAc(b1-2)Man(a1-3)\\[Gal(b1-3)\\[Fuc(a1-4)\\]GlcNAc(b1-2)Man(a1-6)\\]Man(b1-4)GlcNAc(b1-4)\\[Fuc(a1-6)\\]GlcNAc | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 3 | 2 | 0 | 0 | 4 | 3 | 1 | 0 | 0 | 1 | 1 | 1 | 3 | 1 | 1 | 2 | 0 | 0 | 2 | 1 | 1 | 1 | 2 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 3 | 0 | 1 |\n| Man(a1-3)\\[Man(a1-6)\\]Man(b1-4)GlcNAc(b1-4)GlcNAc | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 2 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 |\n| Man(a1-3)\\[Man(a1-6)\\]Man(b1-4)GlcNAc(b1-4)GlcNAc | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 2 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 |\n| GlcNAc(b1-2)Man(a1-3)\\[GlcNAc(b1-2)Man(a1-6)\\]\\[Xyl(b1-2)\\]Man(b1-4)GlcNAc(b1-4)\\[Fuc(a1-3)\\]GlcNAc | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 4 | 3 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 1 | 1 | 2 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | 0 | 0 | 0 | 1 | 0 | 0 |\n| Fuc(a1-2)Gal(b1-4)GlcNAc(b1-2)Man(a1-6)\\[Gal(b1-4)GlcNAc(b1-2)Man(a1-3)\\]Man(b1-4)GlcNAc(b1-4)\\[Fuc(a1-6)\\]GlcNAc | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 2 | 2 | 0 | 0 | 4 | 3 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 2 | 2 | 0 | 0 | 2 | 1 | 1 | 1 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 2 | 0 | 1 |\n| GalNAcOS(b1-4)GlcNAc(b1-2)Man(a1-3)\\[GalNAc(b1-4)GlcNAc(b1-2)Man(a1-6)\\]Man(b1-4)GlcNAc(b1-4)GlcNAc | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 2 | 1 | 1 | 1 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n\n``` python\n#using graphs, you can easily check whether a glycan contains a specific motif; how about internal Lewis A/X motifs?\nfrom glycowork.motif.graph import subgraph_isomorphism\nprint(subgraph_isomorphism('Neu5Ac(a2-3)Gal(b1-4)[Fuc(a1-3)]GlcNAc(b1-6)[Gal(b1-3)]GalNAc',\n                     'Fuc(a1-?)[Gal(b1-?)]GlcNAc', termini_list = ['terminal', 'internal', 'flexible']))\nprint(subgraph_isomorphism('Neu5Ac(a2-3)Gal(b1-3)[Fuc(a1-4)]GlcNAc(b1-6)[Gal(b1-3)]GalNAc',\n                     'Fuc(a1-3/4)[Gal(b1-3/4)]GlcNAc', termini_list = ['t', 'i', 'f']))\nprint(subgraph_isomorphism('Gal(b1-3)[Fuc(a1-4)]GlcNAc(b1-6)[Gal(b1-3)]GalNAc',\n                     'dHex(a1-?)[Hex(b1-?)]GlcNAc', termini_list = ['t', 'i', 'f']))\n\n#or you could find the terminal epitopes of a glycan\nfrom glycowork.motif.annotate import get_terminal_structures\nprint(\"\\nTerminal structures:\")\nprint(get_terminal_structures('Man(a1-3)[Man(a1-6)]Man(b1-4)GlcNAc(b1-4)[Fuc(a1-6)]GlcNAc'))\n```\n\n    True\n    True\n    False\n\n    Terminal structures:\n    ['Man(a1-3)', 'Man(a1-6)', 'Fuc(a1-6)']\n\n``` python\n#given a composition, find matching glycan structures in SugarBase; specific for glycan classes and taxonomy\nfrom glycowork.motif.tokenization import compositions_to_structures\nprint(compositions_to_structures([{'Hex':3, 'HexNAc':4}], glycan_class = 'N'))\n\n#or we could calculate the mass of this composition\nfrom glycowork.motif.tokenization import composition_to_mass\nprint(\"\\nMass of the composition Hex3HexNAc4\")\nprint(composition_to_mass({'Hex':3, 'HexNAc':4}))\nprint(composition_to_mass(\"H3N4\"))\nprint(composition_to_mass(\"Hex3HexNAc4\"))\n```\n\n    0 compositions could not be matched. Run with verbose = True to see which compositions.\n                                                   glycan  abundance\n    0   GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-2)Man(a1-6)]Ma...          0\n    1   GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-4)][Man(a1-6)]...          0\n    2   GlcNAc(b1-2)[GlcNAc(b1-4)]Man(a1-3)[Man(a1-6)]...          0\n    3   GalNAc(b1-4)GlcNAc(b1-2)Man(a1-3)[Man(a1-6)]Ma...          0\n    4   GalNAc(b1-3/4)GlcNAc(b1-2)Man(a1-3)[Man(a1-6)]...          0\n    5   GlcNAc(b1-2)Man(a1-6)[Man(a1-3)][GlcNAc(b1-4)]...          0\n    6   GlcNAc(b1-2)Man(a1-3/6)[GlcNAc(b1-4)][Man(a1-3...          0\n    7   Man(a1-3)[GlcNAc(b1-2)Man(a1-6)][GlcNAc(b1-4)]...          0\n    8   GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-6)Man(a1-6)]Ma...          0\n    9   GlcNAc(b1-4)Man(a1-3)[GlcNAc(b1-2)Man(a1-6)]Ma...          0\n    10  GlcNAc(b1-4)Man(a1-3)[GlcNAc(b1-4)Man(a1-6)]Ma...          0\n    11  GlcNAc(b1-2)Man(a1-3)[GlcNAc(b1-2)[GlcNAc(b1-4...          0\n    12  GlcNAc(b1-4)Man(a1-3)[GlcNAc(b1-6)Man(a1-6)]Ma...          0\n    13  Man(a1-3)[GlcNAc(b1-2)[GlcNAc(b1-6)]Man(a1-6)]...          0\n    14  GalNAc(b1-4)GlcNAc(b1-2)Man(a1-6)[Man(a1-3)]Ma...          0\n\n    Mass of the composition Hex3HexNAc4\n    1316.4865545999999\n    1316.4865545999999\n    1316.4865545999999\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBojarLab%2Fglycowork","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBojarLab%2Fglycowork","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBojarLab%2Fglycowork/lists"}