Esempio n. 1
0
        //generate pIsobariQ.cfg
        void pQuant_Inter.pIsobariQ_write(_Task _task)
        {
            try
            {
                MS2Quant     _ms2quant = _task.T_MS2Quant;
                File         _file     = _task.T_File;
                string       filepath  = _task.Path + "param\\pIsobariQ.cfg";
                FileStream   qfst      = new FileStream(filepath, FileMode.Create, FileAccess.Write);
                StreamWriter qsw       = new StreamWriter(qfst, Encoding.Default);
                qsw.WriteLine("# This is a standard pIsobariQ configure file.");
                qsw.WriteLine("# For help: mail to [email protected]");
                qsw.WriteLine("# Time: " + DateTime.Now.ToString());
                qsw.WriteLine();

                qsw.WriteLine("[Basic Options]");
                qsw.WriteLine("resultDatapath=" + _task.Path + "result\\pFind.spectra");
                string pf1path = "";
                for (int i = 0; i < _file.Data_file_list.Count; i++)
                {
                    string tmp = _file.Data_file_list[i].FilePath;
                    pf1path += tmp.Substring(0, tmp.LastIndexOf(".")) + ".pf1|";
                }
                // 这里我只给出了所有pf1的路径,内核可以自动切割字符串并查找相关的pf2的路径
                qsw.WriteLine("pfDatapath=" + pf1path);
                qsw.WriteLine("quantResultDatapath=" + _task.Path + "result\\pQuant-ms2_result.spectra");
                qsw.WriteLine();

                qsw.WriteLine("[Database Options]");
                qsw.WriteLine("fastaDatapath=" + _task.T_Search.Db.Db_path);
                qsw.WriteLine("modificationDatapath=" + ConfigHelper.startup_path + "\\modification.ini");
                qsw.WriteLine();

                qsw.WriteLine("[Method Options]");
                qsw.WriteLine("quantitativeMethod=" + _task.T_MS2Quant.QuantitativeMethod);
                string tmpstr = "";
                if (_task.T_MS2Quant.ReporterIonMZ.Count > 0)
                {
                    tmpstr += _task.T_MS2Quant.ReporterIonMZ[0].ToString();
                }
                for (int i = 1; i < _task.T_MS2Quant.ReporterIonMZ.Count; ++i)
                {
                    tmpstr += ", " + _task.T_MS2Quant.ReporterIonMZ[i].ToString();
                }
                qsw.WriteLine("reporterIonMZ=" + tmpstr);
                tmpstr = "";
                if (_task.T_MS2Quant.PIDL.Count > 0)
                {
                    tmpstr += _task.T_MS2Quant.PIDL[0].Nterm_modmass.Name + " " + _task.T_MS2Quant.PIDL[0].Nterm_modmass.Mass.ToString() + ", ";
                    tmpstr += _task.T_MS2Quant.PIDL[0].Cterm_modmass.Name + " " + _task.T_MS2Quant.PIDL[0].Cterm_modmass.Mass.ToString();
                }
                for (int i = 1; i < _task.T_MS2Quant.PIDL.Count; ++i)
                {
                    tmpstr += "; " + _task.T_MS2Quant.PIDL[i].Nterm_modmass.Name + " " + _task.T_MS2Quant.PIDL[i].Nterm_modmass.Mass.ToString() + ", ";
                    tmpstr += _task.T_MS2Quant.PIDL[i].Cterm_modmass.Name + " " + _task.T_MS2Quant.PIDL[i].Cterm_modmass.Mass.ToString();
                }

                qsw.WriteLine("pIDLplex=" + tmpstr);
                qsw.WriteLine();

                qsw.WriteLine("[Advanced Options]");
                qsw.WriteLine("FTMSType=" + ((_task.T_MS2Quant.MS2_Advanced.FTMS_Tolerance.Isppm == 1) ? "ppm":"Da"));
                qsw.WriteLine("FTMS=" + _task.T_MS2Quant.MS2_Advanced.FTMS_Tolerance.Tl_value.ToString());

                qsw.WriteLine("minRange=" + _task.T_MS2Quant.MS2_Advanced.Peak_Range.Left_value.ToString());
                qsw.WriteLine("maxRange=" + _task.T_MS2Quant.MS2_Advanced.Peak_Range.Right_value.ToString());
                qsw.WriteLine("PIF=" + _task.T_MS2Quant.MS2_Advanced.Pif.ToString());
                qsw.WriteLine("PsmFDR=" + (_task.T_MS2Quant.MS2_Advanced.Psm_Fdr / 100.0).ToString());
                qsw.WriteLine("ProteinFDR=" + (_task.T_MS2Quant.MS2_Advanced.Protein_Fdr / 100.0).ToString());
                qsw.WriteLine("Correct=" + (_task.T_MS2Quant.MS2_Advanced.Correct ? "1":"0"));
                qsw.WriteLine("runVSN=" + (_task.T_MS2Quant.MS2_Advanced.RunVSN ? "1":"0"));
                qsw.WriteLine();
                qsw.Close();
                qfst.Close();
            }
            catch (Exception exe)
            {
                throw new Exception("[pIsobariQ_write] Error in pIsobariQ configuration file.\n" + exe.Message);
            }
        }
Esempio n. 2
0
 //read from pIsobariQ param
 void pQuant_Inter.pIsobariQ_read(string task_path, ref _Task _task)
 {
     try
     {
         FileStream   fst     = new FileStream(task_path + "\\param\\pIsobariQ.cfg", FileMode.Open);
         StreamReader sr      = new StreamReader(fst, Encoding.Default);
         string       strLine = sr.ReadLine();
         #region
         MS2Quant _ms2quant = _task.T_MS2Quant;
         while (strLine != null)
         {
             strLine = strLine.Trim();
             if (strLine.Length > 0 && strLine.Contains("="))
             {
                 if (strLine.Length > ("quantitativeMethod").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("quantitativeMethod"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.QuantitativeMethod = int.Parse(strLine.Substring(tmp + 1));
                 }
                 else if (strLine.Length > ("reporterIonMZ").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("reporterIonMZ"))
                 {
                     int      tmp      = strLine.LastIndexOf("=");
                     string   tmpstr   = strLine.Substring(tmp + 1);
                     string[] tmparray = tmpstr.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries);
                     foreach (string str in tmparray)
                     {
                         _ms2quant.ReporterIonMZ.Add(double.Parse(str));
                     }
                 }
                 else if (strLine.Length > ("pIDLplex").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("pIDLplex"))
                 {
                     int      tmp      = strLine.LastIndexOf("=");
                     string   tmpstr   = strLine.Substring(tmp + 1);
                     string[] tmparray = tmpstr.Split(new string[] { "; " }, StringSplitOptions.RemoveEmptyEntries);
                     foreach (string str in tmparray)
                     {
                         string[] modmass = str.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries);
                         if (modmass.Length != 2)
                         {
                             continue;
                         }
                         string[] nterm = modmass[0].Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                         string[] cterm = modmass[1].Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                         if (nterm.Length != 2 || cterm.Length != 2)
                         {
                             continue;
                         }
                         _ms2quant.PIDL.Add(new pIDLplex(nterm[0], double.Parse(nterm[1]), cterm[0], double.Parse(cterm[1])));
                     }
                 }
                 else if (strLine.Length > ("FTMSType").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("FTMSType"))
                 {
                     int    tmp      = strLine.LastIndexOf("=");
                     string ftoltype = strLine.Substring(tmp + 1);
                     if (ftoltype.ToLower() == "da")
                     {
                         _ms2quant.MS2_Advanced.FTMS_Tolerance.Isppm = 0;
                     }
                     else if (ftoltype.ToLower() == "ppm")
                     {
                         _ms2quant.MS2_Advanced.FTMS_Tolerance.Isppm = 1;
                     }
                 }
                 else if (strLine.Length > ("FTMS").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("FTMS"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.MS2_Advanced.FTMS_Tolerance.Tl_value = double.Parse(strLine.Substring(tmp + 1));
                 }
                 else if (strLine.Length > ("minRange").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("minRange"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.MS2_Advanced.Peak_Range.Left_value = double.Parse(strLine.Substring(tmp + 1));
                 }
                 else if (strLine.Length > ("maxRange").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("maxRange"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.MS2_Advanced.Peak_Range.Right_value = double.Parse(strLine.Substring(tmp + 1));
                 }
                 else if (strLine.Length > ("PIF").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("PIF"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.MS2_Advanced.Pif = double.Parse(strLine.Substring(tmp + 1));
                 }
                 else if (strLine.Length > ("PsmFDR").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("PsmFDR"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.MS2_Advanced.Psm_Fdr = double.Parse(strLine.Substring(tmp + 1)) * 100;
                 }
                 else if (strLine.Length > ("ProteinFDR").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("ProteinFDR"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.MS2_Advanced.Protein_Fdr = double.Parse(strLine.Substring(tmp + 1)) * 100;
                 }
                 else if (strLine.Length > ("Correct").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("Correct"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.MS2_Advanced.Correct = (int.Parse(strLine.Substring(tmp + 1)) == 1) ? true : false;
                 }
                 else if (strLine.Length > ("runVSN").Length && strLine.Substring(0, strLine.LastIndexOf("=")).Equals("runVSN"))
                 {
                     int tmp = strLine.LastIndexOf("=");
                     _ms2quant.MS2_Advanced.RunVSN = (int.Parse(strLine.Substring(tmp + 1)) == 1) ? true : false;
                 }
             }
             strLine = sr.ReadLine();
         }
         #endregion
         sr.Close();
         fst.Close();
     }
     catch (Exception exe)
     {
         throw new Exception("[pIsobariQ_read] Error in pIsobariQ configuration file.\n" + exe.Message);
     }
 }