protected TopDownIqTarget CreateParentTarget(List <List <string> > processedGroup) { var target = new TopDownIqTarget(); var parser = new IqCodeParser(); target.DatabaseReference = ParseStringField(processedGroup[0], ProteinNameHeader); target.Code = ParseStringField(processedGroup[0], PeptideHeader); target.EmpiricalFormula = parser.GetEmpiricalFormulaFromSequence(target.Code); target.PTMList = parser.GetPTMList(target.Code); target.MonoMassTheor = ParseDoubleField(processedGroup[0], AdjustedPrecursorMassHeader); var children = new List <IqTarget>(); foreach (var line in processedGroup) { children.Add(ConvertTextToIqTarget(line)); } target.AddTargetRange(children); return(target); }
/// <summary> /// Combines charge state results into one line for target level output /// </summary> /// <param name="results"></param> /// <param name="includeHeader"></param> /// <returns></returns> public string GetTargetResultAsString(IEnumerable <IqResult> results, bool includeHeader = false) { var sb = new StringBuilder(); if (includeHeader) { var header = GetHeader(); sb.Append(header); sb.Append(Environment.NewLine); } double abundance = 0, correlationMedian = 0; var chargeStateList = ""; var fitScoreList = new List <double>(); var isFirst = true; IqTarget target = new TopDownIqTarget(); foreach (var result in results) { //Sums abundance from each result abundance += result.Abundance; //Eliminates charge 0 or targets that are too poor to quantify if (!(result.Target.ChargeState == 0 || result.Abundance <= 0)) { fitScoreList.Add(result.FitScore); if (isFirst) { chargeStateList += (result.Target.ChargeState); isFirst = false; } else { chargeStateList += (", " + result.Target.ChargeState); } } //Looks for parent level target for information var parentResult = result as TopDownIqResult; if (parentResult != null) { target = parentResult.Target; correlationMedian = parentResult.SelectedCorrelationGroup.ChargeCorrelationMedian(); } } double medianFit = 1; if (fitScoreList.Count != 0) { medianFit = MathUtils.GetMedian(fitScoreList); } sb.Append(target.ID); sb.Append(Delimiter); sb.Append(target.Code); sb.Append(Delimiter); sb.Append(target.EmpiricalFormula); sb.Append(Delimiter); sb.Append(target.MonoMassTheor); sb.Append(Delimiter); sb.Append(chargeStateList); sb.Append(Delimiter); sb.Append(abundance); sb.Append(Delimiter); sb.Append(medianFit); sb.Append(Delimiter); sb.Append(correlationMedian); var outString = sb.ToString(); return(outString); }