示例#1
0
 private void UpdatePrecursorFeatureNode(Feature precursorFeature)
 {
     if (_previousPrecursorFeature != null && _previousPrecursorFeature == precursorFeature) return;
     var parameter = new GroupParameter(_precursorIon);
     PrecursorFeatureNode =
         new PrecursorFeatureNode(
             IsotopomerFeatures.GetPrecursorIsotopomerFeatures(_imsData, _precursorIon, precursorFeature),
             parameter, _scoringParams);
     _previousPrecursorFeature = precursorFeature;
 }
示例#2
0
        private void UpdatePrecursorFeatureNode(Feature precursorFeature)
        {
            if (_previousPrecursorFeature != null && _previousPrecursorFeature == precursorFeature)
            {
                return;
            }
            var parameter = new GroupParameter(_precursorIon);

            PrecursorFeatureNode =
                new PrecursorFeatureNode(
                    IsotopomerFeatures.GetPrecursorIsotopomerFeatures(_imsData, _precursorIon, precursorFeature),
                    parameter, _scoringParams);
            _previousPrecursorFeature = precursorFeature;
        }
示例#3
0
        public FragmentFeatureGraph(ImsDataCached imsData, PrecursorFeatureNode precursorNode, Feature precursorFeature,
                                    Ion precursorIon, Composition cutComposition, GroupParameter parameter, SubScoreFactory scoringParams)
        {
            _scoringParams        = scoringParams;
            _precursorFeatureNode = precursorNode;

            Add(precursorNode, new List <FeatureEdge>());
            var fragmentNodes = GetFragmentNodes(imsData, precursorFeature, cutComposition, precursorIon, parameter);

            supportingIonTypes = new List <IonType>();
            foreach (var node in fragmentNodes)
            {
                if (node.Feature != null)
                {
                    supportingIonTypes.Add(node.FragmentIonClassBase);
                }
            }
            //var nn = fragmentNodes.Count(no => no.Feature != null);
            //Console.WriteLine(this + "Num features : " + nn);


            var usedNodes = new List <FeatureNode> {
                precursorNode
            };

            UpdateEdges(fragmentNodes, usedNodes); // from precursor to any of fragment nodes
            if (this[precursorNode].Count == 0)
            {
                NodeScore = RatioScore = -1; //TODO should be trained..
                Score     = NodeScore + RatioScore;
                return;
            }
            // usedNodes.Remove(precursorNode);// exclude precursorNode
            var primeNode   = (FragmentFeatureNode)this[precursorNode][0].RNode;
            var targetNodes = GetTargetNodes(primeNode, fragmentNodes, true, false);

            UpdateEdges(targetNodes, usedNodes); // to the nodes of different terminal ions
            targetNodes = GetTargetNodes(primeNode, fragmentNodes, false, false);

            UpdateEdges(targetNodes, usedNodes); // to the nodes of the same terminal ions
            targetNodes = GetTargetNodes(primeNode, fragmentNodes, true, true);
            UpdateEdges(targetNodes, usedNodes); // to the nodes of differently charged ions

            GetScore();
        }
示例#4
0
 public double GetPrecursorScore(Feature precursorFeature)
 {
     UpdatePrecursorFeatureNode(precursorFeature);
     return(PrecursorFeatureNode.GetScore());
 }