public int LoadIndex(string FileName) { this.RawFileName = FileName; RawFile = new MSFileReader_XRawfile(); RawFile.Open(FileName); RawFile.SetCurrentController(0, 1); Spectra = 0; RawFile.GetNumSpectra(ref Spectra); if (Spectra <= 0) { return(0); } int i, lastfull = 0, total = 0; double TotalEsi = 0.0; ms2index = new int[Spectra + 1]; IndexDir = new int[Spectra + 1]; IndexRev = new int[Spectra + 1]; RawSpectra = new RawData[Spectra + 1]; for (int j = 0; j <= Spectra; j++) { RawSpectra[j] = new RawData(); } Buf = new MZData[1000000]; ESICurrents = new double[Spectra + 1]; TimeStamps = new double[Spectra + 1]; TimeCoefs = new double[Spectra + 1]; string Filter = null; LowRT = 0.0; HighRT = 0.0; int Progress = 0; for (i = 1; i <= Spectra; i++) { if ((int)(100.0 * ((double)i / (double)Spectra)) > Progress) { Progress = (int)(100.0 * ((double)i / (double)Spectra)); if (RepProgress != null) { RepProgress(Progress); } } RawFile.GetFilterForScanNum(i, ref Filter); //YL - для спектров ms-only //Заплатка для MSX спектров if ((Filter.IndexOf(" ms ") != -1) && (Filter.IndexOf("FTMS") != -1)) //is a FULL MS { TimeStamps[i] = RawSpectra[lastfull].RT; IndexDir[lastfull] = i; IndexRev[i] = lastfull; lastfull = i; ms2index[i] = lastfull; ++total; RawFile.RTFromScanNum(i, ref RawSpectra[i].RT); RawSpectra[i].Filter = Filter; TotalRT = RawSpectra[i].RT; TimeStamps[i] = RawSpectra[i].RT - TimeStamps[i]; object Labels = null; object Values = null; int ArraySize = 0; double RT = 0.0; RawFile.GetStatusLogForScanNum(i, ref RT, ref Labels, ref Values, ref ArraySize); for (int k = 0; k < ArraySize; k++) { if ((Labels as Array).GetValue(k).ToString().Contains("Source Current")) { ESICurrents[i] = Convert.ToDouble((Values as Array).GetValue(k).ToString()); TotalEsi += ESICurrents[i]; } } } else { ms2index[i] = lastfull; } Filter = null; } IndexDir[lastfull] = -1; TotalRT = RawSpectra[lastfull].RT; AverageTimeStamp = TotalRT / total; //пересчитаем временные коэффициэнты for (i = IndexDir[0]; IndexDir[i] != -1; i = IndexDir[i]) { TimeCoefs[i] = (TimeStamps[i] + TimeStamps[IndexDir[i]]) / (2.0 * AverageTimeStamp); ESICurrents[i] = ESICurrents[i] / (TotalEsi / (double)total); } TimeCoefs[i] = 1.0; return(Spectra); }
public int LoadIndex(string FileName) { this.RawFileName = FileName; RawFile = new MSFileReader_XRawfile(); RawFile.Open(FileName); RawFile.SetCurrentController(0, 1); Spectra = 0; RawFile.GetNumSpectra(ref Spectra); if( Spectra <= 0) return 0; int i, lastfull = 0, total = 0; double TotalEsi = 0.0; ms2index = new int[Spectra+1]; IndexDir = new int[Spectra+1]; IndexRev = new int[Spectra+1]; RawSpectra = new RawData[Spectra+1]; for(int j = 0 ; j <= Spectra ; j++){ RawSpectra[j] = new RawData(); } Buf = new MZData[1000000]; ESICurrents = new double[Spectra+1]; TimeStamps = new double[Spectra+1]; TimeCoefs = new double[Spectra+1]; string Filter = null; LowRT = 0.0; HighRT = 0.0; int Progress = 0; for(i = 1; i <= Spectra; i++){ if ((int)(100.0*((double)i/(double)Spectra)) > Progress) { Progress = (int)(100.0*((double)i/(double)Spectra)); if (RepProgress != null){ RepProgress(Progress); } } RawFile.GetFilterForScanNum(i, ref Filter); //YL - для спектров ms-only //Заплатка для MSX спектров if((Filter.IndexOf(" ms ") != -1) && (Filter.IndexOf("FTMS") != -1)) { //is a FULL MS TimeStamps[i] = RawSpectra[lastfull].RT; IndexDir[lastfull] = i; IndexRev[i] = lastfull; lastfull = i; ms2index[i] = lastfull; ++total; RawFile.RTFromScanNum(i, ref RawSpectra[i].RT); RawSpectra[i].Filter = Filter; TotalRT = RawSpectra[i].RT; TimeStamps[i] = RawSpectra[i].RT - TimeStamps[i]; object Labels = null; object Values = null; int ArraySize = 0; double RT = 0.0; RawFile.GetStatusLogForScanNum(i, ref RT, ref Labels, ref Values , ref ArraySize); for (int k = 0 ; k < ArraySize ; k++ ){ if ((Labels as Array).GetValue(k).ToString().Contains("Source Current")){ ESICurrents[i] = Convert.ToDouble((Values as Array).GetValue(k).ToString()); TotalEsi+=ESICurrents[i]; } } } else { ms2index[i] = lastfull; } Filter = null ; } IndexDir[lastfull] = -1; TotalRT = RawSpectra[lastfull].RT; AverageTimeStamp = TotalRT/total; //пересчитаем временные коэффициэнты for (i = IndexDir[0] ; IndexDir[i] != -1 ; i = IndexDir[i]) { TimeCoefs[i] = (TimeStamps[i]+TimeStamps[IndexDir[i]])/(2.0*AverageTimeStamp); ESICurrents[i] = ESICurrents[i]/(TotalEsi/(double)total); } TimeCoefs[i] = 1.0; return Spectra; }