Exemplo n.º 1
0
        protected void UpdateNeighborsByNode(INode root, IDataPoints data, DynamicProgrammingParameter parameter)
        {
            Queue <INode> queue = new Queue <INode>();
            Queue <int>   steps = new Queue <int>();

            queue.Enqueue(root);
            steps.Enqueue(parameter.GetMaxDistance());

            while (queue.Count > 0)
            {
                INode node  = queue.Dequeue();
                int   avail = steps.Dequeue();
                if (avail == 0)
                {
                    continue;
                }

                foreach (INode n in node.CreateNodes())
                {
                    if (!MatchAndUpdate(n, data, parameter))
                    {
                        queue.Enqueue(n);
                        steps.Enqueue(avail - 1);
                    }
                }
            }
        }
Exemplo n.º 2
0
        protected void UpdateNeighbors(IPoint current, IDataPoints data, DynamicProgrammingParameter parameter)
        {
            List <INode> bestNodes = current.GetMaxNode();

            foreach (INode root in bestNodes)
            {
                UpdateNeighborsByNode(root, data, parameter);
            }
        }
Exemplo n.º 3
0
        protected bool MatchAndUpdate(INode node, IDataPoints points, DynamicProgrammingParameter parameter)
        {
            bool updated = false;

            foreach (IPoint pt in points.Match(node, parameter))
            {
                pt.Update(node);
                updated = true;
            }
            return(updated);
        }
Exemplo n.º 4
0
        public void Search(List <INode> rootList, IDataPoints data, DynamicProgrammingParameter parameter)
        {
            // initialization
            foreach (INode root in rootList)
            {
                MatchAndUpdate(root, data, parameter);
            }

            // dynamic programming on points
            foreach (IPoint point in data.GetPoints())
            {
                if (point.HasNodes())
                {
                    point.MaxNodes();                        // max for dp
                    UpdateNeighbors(point, data, parameter); // transfer point[n] <- point[i]
                }
            }
        }
        public List <IPoint> Match(INode node, DynamicProgrammingParameter parameter)
        {
            List <IPoint>     pointList = new List <IPoint>();
            NGlycoPeptideNode n         = node as NGlycoPeptideNode;
            double            mass      = n.GetMass();
            int index = FindBucket(mass);

            if (pointTable.ContainsKey(index))
            {
                foreach (PeakPoint pt in pointTable[index])
                {
                    if (n.isAssociated(pt, parameter))
                    {
                        pointList.Add(pt);
                    }
                }
            }

            if (pointTable.ContainsKey(index - 1))
            {
                foreach (PeakPoint pt in pointTable[index - 1])
                {
                    if (n.isAssociated(pt, parameter))
                    {
                        pointList.Add(pt);
                    }
                }
            }

            if (pointTable.ContainsKey(index + 1))
            {
                foreach (PeakPoint pt in pointTable[index + 1])
                {
                    if (n.isAssociated(pt, parameter))
                    {
                        pointList.Add(pt);
                    }
                }
            }


            return(pointList);
        }
Exemplo n.º 6
0
 public bool isAssociated(IPoint point, DynamicProgrammingParameter parameter)
 {
     return(Math.Abs(mass - (point as PeakPoint).GetMass()) < parameter.GetTolerance());
     //double ppm = calculator.CalcPPM(mass, (point as PeakPoint).GetMass());
     //return ppm < parameter.GetTolerance();
 }