NGlycanHybrid CreateByAddFucCore() { var g = new NGlycanHybrid(); g.SetTable(table_); g.table_[2] = 1; g.SetComposition(composite); g.AddMonosaccharide(Monosaccharide.Fuc); return(g); }
NGlycanHybrid CreateByAddGlcNAcBisect() { var g = new NGlycanHybrid(); g.SetTable(table_); g.table_[3] = 1; g.SetComposition(composite); g.AddMonosaccharide(Monosaccharide.GlcNAc); return(g); }
NGlycanHybrid CreateByAddManCore() { var g = new NGlycanHybrid(); g.SetTable(table_); g.table_[1] = g.table_[1] + 1; g.SetComposition(composite); g.AddMonosaccharide(Monosaccharide.Man); glycans.Add(g); return(g); }
List <NGlycanHybrid> CreateByAddManBranch() { List <NGlycanHybrid> glycans = new List <NGlycanHybrid>(); for (int i = 0; i < 2; i++) { if (i == 0 || table_[i + 4] < table_[i + 3]) // make it order { var g = new NGlycanHybrid(); g.SetTable(table_); g.table_[i + 4] = g.table_[i + 4] + 1; g.SetComposition(composite); g.AddMonosaccharide(Monosaccharide.Man); glycans.Add(g); } } return(glycans); }
List <NGlycanHybrid> CreateByAddNeuGc() { List <NGlycanHybrid> glycans = new List <NGlycanHybrid>(); for (int i = 0; i < 2; i++) { if (i == 0 || table_[i + 14] < table_[i + 13]) // make it order { if (table_[i + 6] > 0 && table_[i + 6] == table_[i + 8] && table_[i + 12] == 0 && table_[i + 14] == 0) { var g = new NGlycanHybrid(); g.SetTable(table_); g.table_[i + 14] = 1; g.SetComposition(composite); g.AddMonosaccharide(Monosaccharide.NeuGc); glycans.Add(g); } } } return(glycans); }
List <NGlycanHybrid> CreateByAddFucTerminal() { List <NGlycanHybrid> glycans = new List <NGlycanHybrid>(); for (int i = 0; i < 2; i++) { if (i == 0 || table_[i + 10] < table_[i + 9]) // make it order { if (table_[i + 10] == 0 && table_[i + 6] > 0) { var g = new NGlycanHybrid(); g.SetTable(table_); g.table_[i + 10] = 1; g.SetComposition(composite); g.AddMonosaccharide(Monosaccharide.Fuc); glycans.Add(g); } } } return(glycans); }
List <NGlycanHybrid> CreateByAddGal() { List <NGlycanHybrid> glycans = new List <NGlycanHybrid>(); for (int i = 0; i < 2; i++) { if (i == 0 || table_[i + 8] < table_[i + 7]) // make it order { if (table_[i + 6] == table_[i + 8] + 1) { var g = new NGlycanHybrid(); g.SetTable(table_); g.table_[i + 8] = g.table_[i + 8] + 1; g.SetComposition(composite); g.AddMonosaccharide(Monosaccharide.Gal); glycans.Add(g); } } } return(glycans); }
public override List <IGlycan> Grow(Monosaccharide monosaccharide) { List <IGlycan> glycans = new List <IGlycan>(); switch (monosaccharide) { case Monosaccharide.GlcNAc: if (ValidAddGlcNAcCore()) { NGlycanHybrid ptr = CreateByAddGlcNAcCore(); glycans.Add(ptr); } else if (ValidAddGlcNAc()) { if (ValidAddGlcNAcBisect()) { NGlycanHybrid ptr = CreateByAddGlcNAcBisect(); glycans.Add(ptr); } if (ValidAddGlcNAcBranch()) { List <NGlycanHybrid> gs = CreateByAddGlcNAcBranch(); glycans.AddRange(gs); } } break; case Monosaccharide.Man: if (ValidAddManCore()) { NGlycanHybrid ptr = CreateByAddManCore(); glycans.Add(ptr); } else if (ValidAddManBranch()) { List <NGlycanHybrid> gs = CreateByAddManBranch(); glycans.AddRange(gs); } break; case Monosaccharide.Gal: if (ValidAddGal()) { List <NGlycanHybrid> gs = CreateByAddGal(); glycans.AddRange(gs); } break; case Monosaccharide.Fuc: if (ValidAddFucCore()) { NGlycanHybrid ptr = CreateByAddFucCore(); glycans.Add(ptr); } if (ValidAddFucTerminal()) { List <NGlycanHybrid> gs = CreateByAddFucTerminal(); glycans.AddRange(gs); } break; case Monosaccharide.NeuAc: if (ValidAddNeuAc()) { List <NGlycanHybrid> gs = CreateByAddNeuAc(); glycans.AddRange(gs); } break; case Monosaccharide.NeuGc: if (ValidAddNeuGc()) { List <NGlycanHybrid> gs = CreateByAddNeuGc(); glycans.AddRange(gs); } break; default: break; } return(glycans); }