Built using BuildAMol Glycosylator is a Python framework for the identification, modeling and modification of glycans. Glycosylator can build atomic models of glycans and can glycosylate proteins and membranes. Glycosylator can perform conformational optimization to minimize clashes in glycosylated structures or to sample alternative conformations for individual glycans. Glycosylator supports a variety of file-formats and can work hand in hand with other libraries such as RDKit to faciliate research workflows.
Glycosylator provides a graphical user interface in the form of a Streamlit Web Application. This app supports modeling new glycans and glycosylating proteins and memrbanes as well as modeling the shielding effect. Of course, the library itself is more versatile and some things may not be doable via the GUI. The app can be reached via glycosylator.streamlit.app or via the Open in Streamlit badge at the top. If you would like to run the app locally you clone the app's Github Repository.
Glycosylator is distributed via the Python Package Index and can be installed via:
pip install glycosylator
Here's a list of things that you could do with Glycosylator:
Model new glycans
Modify existing glycans
Obtain structural data on glycans
Glycosylate Biomolecules
Sample or optimize glycan conformations on the surface of scaffold molecules
Simulate the shielding effect of glycans on scaffold molecules
Generating an atomic model from a IUPAC glycan string can be as easy as:
import glycosylator as gl
# this is GlyCosmos entry G09568JT
iupac = "Gal(b1-4)GlcNAc(b1-2)[Gal(b1-4)GlcNAc(b1-4)]Man(a1-3)[Gal(b1-4)GlcNAc(b1-2)[Gal(b1-4)GlcNAc(b1-6)]Man(a1-6)]Man(b1-4)GlcNAc(b1-4)GlcNAc"
glycan = gl.glycan(iupac)
glycan.to_pdb("my_glycan.pdb")
glycan.show3d()
Note: This visualization was hand-made in ChimeraX from the PDB file, so the actual output of show3d will not be quite this pretty, but it will be interactive...
To glycosylate a protein we can use a simple snippet like the one below. Check out the tutorials in the documentation for more info on glycosylation and how to optimize a glycosylated protein afterward.
import glycosylator as gl
# get some protein scaffold
protein = gl.Protein.from_pdb("my_protein.pdb")
# get some glycan (maybe we already have one as a PDB file)
glycan = gl.Glycan.from_pdb("my_glycan.pdb")
# glycosylate the protein at N-glycosylation sites
glycoprotein = gl.glycosylate(protein, glycan, sequon="N-linked")
glycoprotein.to_pdb("my_glycoprotein.pdb")
To simulate the shielding effect of glycans on the surface of proteins we can use the quickshield
function or the GlycoShield
class. These will perform torsional sampling around random subsets of edges in order to obtain a great number of conformations in a relatively short time. Here is how:
# using a previously glycosylated protein
protein = gl.Protein.load("my_glycoprotein.pkl")
# perform a quick simulation of glycan shielding
# (with very rough settings)
shield = gl.quickshield(protein, angle_step=100, repeats=1, save_conformations_to="./glycoshield_simulation")
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.