Exemplo n.º 1
0
 def __init__(self, glydb):
     self.glydb = glydb
     mf = MonoFactory()
     self.GlcNAc = mf['GlcNAc']
     self.GlcNAc.set_anomer(Anomer.missing)
     self.Man = mf['adMan']
     self.Man.set_anomer(Anomer.missing)
     self.Fuc = mf['Fuc']
     self.Fuc.set_anomer(Anomer.missing)
Exemplo n.º 2
0
 def __init__(self, glydb):
     self.glydb = glydb
     gf = GlycanFactory()
     mf = MonoFactory()
     self.GlcNAc = mf['GlcNAc']
     self.GlcNAc.set_anomer(Anomer.missing)
     self.Man = mf['adMan']
     self.Man.set_anomer(Anomer.missing)
     self.lac = gf['Lactosamine N-glycans']
     self.ngc = gf['N-Linked Core']
     self.cmp = linearcodeSubtreeContainedIn()
Exemplo n.º 3
0
from Glycan import Glycan
from MonoFactory import MonoFactory
import re

mf = MonoFactory()


class Glycosidase:
    pass


class LeafCleaver(Glycosidase):
    def cleave(self, gly):
        ncleaved = 0
        newcleaved = True
        while newcleaved:
            newcleaved = False
            for l in gly.all_links():
                m = l.child()
                if m.compatible(self.monosaccharide) and not m.has_children():
                    l.parent().del_link(l)
                    ncleaved += 1
                    newcleaved = True
        return ncleaved


class Serial(Glycosidase):
    def __init__(self, *glycosidases):
        self._glycosidases = glycosidases

    def number(self):
Exemplo n.º 4
0
from Monosaccharide import Monosaccharide, Linkage, Mod
from MonoFormatter import IUPACSym, LinCodeSym

iupacSym = IUPACSym()
lcSym = LinCodeSym()

from CompositionTable import Composition,ResidueCompositionTable,PermethylCompositionTable
from ElementMass import MonoisotopicElementMass
from MonoFactory import MonoFactory
from MonoFormatter import MassSym

ctable = ResidueCompositionTable()
pctable = PermethylCompositionTable()
elmt = MonoisotopicElementMass()
mfactory = MonoFactory()
msym = MassSym()

class Glycan:

    iupacSym = IUPACSym()
    lcSym = LinCodeSym()
    glycoctformat = None
    glycamformat = None

    def __init__(self,root=None):
        self.set_root(root)
        self._undetermined = None
        self._bions = None
        self._yions = None
Exemplo n.º 5
0
 def __init__(self):
     self.fmt = GlycoCTFormat()
     self.mf = MonoFactory()
     super(GlycanFactory, self).__init__()
Exemplo n.º 6
0
class GlycanFactory(ReferenceTable):
    def __init__(self):
        self.fmt = GlycoCTFormat()
        self.mf = MonoFactory()
        super(GlycanFactory, self).__init__()

    def new(self, key):
        return self[key].clone()

    def parseSection(self, name, kv):
        aliases = [name]
        g = self.fmt.toGlycan('\n'.join(kv['GlycoCT'].split()))
        aliases.extend(map(str.strip, kv.get('Aliases', '').split(';')))
        return [(a, g) for a in aliases]

    def add_mono(self,
                 parent,
                 name,
                 parent_pos,
                 child_pos=1,
                 anomer=Anomer.beta,
                 parent_type=Linkage.oxygenPreserved,
                 child_type=Linkage.oxygenLost):
        m = self.mf.new(name)
        m.set_anomer(anomer)
        parent.add_child(m,
                         parent_pos=parent_pos,
                         child_pos=child_pos,
                         parent_type=parent_type,
                         child_type=child_type)
        return m

    def oxford2Glycan(self, name):
        if name in self:
            return self.new(name)
        p = 0
        if name[p] == 'F':
            g = self.new('FM3')
            p += 1
        else:
            g = self.new('M3')
        # print repr(g)
        # print self.fmt.toStr(g)
        # print self
        r = g.root()
        glcnac2 = filter(lambda m: m.compatible(self.mf['GlcNAc']),
                         r.children())[0]
        man1 = glcnac2.children()[0]
        man16 = [l.child() for l in man1.links() if l.parent_pos() == 6][0]
        man13 = [l.child() for l in man1.links() if l.parent_pos() == 3][0]
        assert name[p] == 'A'
        nant = int(name[p + 1])
        ant = [None]
        if nant in (1, 2, 3, 4):
            ant.append(self.add_mono(man13, 'GlcNAc', parent_pos=2))
        if nant in (2, 3, 4):
            ant.append(self.add_mono(man16, 'GlcNAc', parent_pos=2))
        if nant in (3, 4):
            ant.append(self.add_mono(man13, 'GlcNAc', parent_pos=4))
        if nant in (4, ):
            ant.append(self.add_mono(man16, 'GlcNAc', parent_pos=6))
        p += 2
        if p >= len(name):
            return g
        if name[p] == 'B':
            b = self.add_mono(man1, 'GlcNAc', 4)
            name[p] += 1
            if p >= len(name):
                return g
        if name[p] == 'F':
            nfuc = int(name[p + 1])
            assert (nfuc <= nant)
            for fi in range(1, nfuc + 1):
                self.add_mono(ant[fi],
                              'Fuc',
                              parent_pos=6,
                              anomer=Anomer.alpha)
            p += 2
            if p >= len(name):
                return g
        assert (name[p] == 'G')
        ngal = int(name[p + 1])
        gal = [None]
        assert (ngal <= nant)
        for gi in range(1, ngal + 1):
            gal.append(self.add_mono(ant[gi], 'Gal', parent_pos=4))
        p += 2
        if p >= len(name):
            return g
        assert (name[p] == 'S')
        nsia = int(name[p + 1])
        sia = [None]
        assert (nsia <= ngal)
        for si in range(1, nsia + 1):
            sia.append(
                self.add_mono(gal[si],
                              'Neu5Ac',
                              parent_pos=6,
                              child_pos=2,
                              anomer=Anomer.alpha))
        return g