protected override IqTarget ConvertTextToIqTarget(List <string> processedRow) { var target = new IqTargetMsgfFirstHit(); target.ID = ParseIntField(processedRow, TargetIDHeaders, -1); if (target.ID == -1) { target.ID = GetAutoIncrementForTargetID(); } target.EmpiricalFormula = ParseStringField(processedRow, EmpiricalFormulaHeaders, string.Empty); target.Code = ParseStringField(processedRow, CodeHeaders, ""); target.ElutionTimeTheor = ParseDoubleField(processedRow, NETHeaders, 0); target.ScanLC = ParseIntField(processedRow, ScanHeaders, -1); target.QualityScore = ParseDoubleField(processedRow, QualityScoreHeaders, -1); target.ChargeState = ParseIntField(processedRow, ChargeStateHeaders, 0); target.MassError = ParseDoubleField(processedRow, MassErrorHeaders, 0); target.MZTheor = ParseDoubleField(processedRow, MzHeaders, 0); target.MonoMassTheor = (target.MZTheor - DeconTools.Backend.Globals.PROTON_MASS) * target.ChargeState; var targetUtilities = new IqTargetUtilities(); return(target); }
public override void LoadAndInitializeTargets(string targetsFilePath) { if (string.IsNullOrEmpty(targetsFilePath)) { IqLogger.Log.Info("IqMassAndNetAligner - no alignment targets were loaded. The inputted targets file path is NULL."); return; } if (!File.Exists(targetsFilePath)) { IqLogger.Log.Info("IqMassAndNetAligner - no alignment targets were loaded. The inputted targets file path is does not exist."); return; } var importer = new IqTargetsFromFirstHitsFileImporter(targetsFilePath); Targets = importer.Import().Where(p => p.QualityScore < 0.01).OrderBy(p => p.ID).ToList(); //Targets = Targets.Where(p => p.Code.Contains("FEQDGENYTGTIDGNMGAYAR")).ToList(); var filteredList = new List <IqTarget>(); //calculate empirical formula for targets using Code and then monoisotopic mass foreach (var iqTarget in Targets) { iqTarget.Code = _peptideUtils.CleanUpPeptideSequence(iqTarget.Code); if (_peptideUtils.ValidateSequence(iqTarget.Code)) { iqTarget.EmpiricalFormula = _peptideUtils.GetEmpiricalFormulaForPeptideSequence(iqTarget.Code, true, true); var calcMonoMass = EmpiricalFormulaUtilities.GetMonoisotopicMassFromEmpiricalFormula(iqTarget.EmpiricalFormula); var monoMassFromFirstHitsFile = iqTarget.MonoMassTheor; var massCalculationsAgree = Math.Abs(monoMassFromFirstHitsFile - calcMonoMass) < 0.02; if (massCalculationsAgree) { iqTarget.MonoMassTheor = calcMonoMass; iqTarget.ElutionTimeTheor = iqTarget.ScanLC / (double)Run.MaxLCScan; filteredList.Add(iqTarget); _targetUtilities.UpdateTargetMissingInfo(iqTarget, true); var chargeStateTarget = new IqTargetMsgfFirstHit(); _targetUtilities.CopyTargetProperties(iqTarget, chargeStateTarget); iqTarget.AddTarget(chargeStateTarget); } } } filteredList = (from n in filteredList group n by new { n.Code, n.ChargeState } into grp select grp.OrderBy(p => p.QualityScore).First() ).ToList(); Targets = filteredList; TargetedWorkflowParameters workflowParameters = new BasicTargetedWorkflowParameters(); workflowParameters.ChromNETTolerance = 0.005; workflowParameters.ChromGenTolerance = 50; //define workflows for parentTarget and childTargets var parentWorkflow = new ChromPeakDeciderIqWorkflow(Run, workflowParameters); var childWorkflow = new ChargeStateChildIqWorkflow(Run, workflowParameters); var workflowAssigner = new IqWorkflowAssigner(); workflowAssigner.AssignWorkflowToParent(parentWorkflow, Targets); workflowAssigner.AssignWorkflowToChildren(childWorkflow, Targets); if (Targets.Count > 0) { IqLogger.Log.Info("IqMassAndNetAligner - Loaded " + Targets.Count + " targets for use in mass and net alignment"); } else { IqLogger.Log.Info("IqMassAndNetAligner - NOTE - no targets have been loaded."); } //IqWorkflowAssigner workflowAssigner = new IqWorkflowAssigner(); //workflowAssigner.AssignWorkflowToParent(workflow, Targets); }