private List <IsobaricIndex> GetReferenceFuncs() { var usedChannels = IsobaricScanXmlUtils.GetUsedChannels(iTraqFile.FullName); var result = refChannels.GetFuncs(); foreach (var refFunc in result) { bool bFound = false; for (int i = 0; i < usedChannels.Count; i++) { if (usedChannels[i].Name.Equals(refFunc.Name)) { refFunc.Index = i; bFound = true; break; } } if (!bFound) { throw new Exception(string.Format("Channel {0} was not used in sample and cannot be used as reference, valid channels are {1}", refFunc.Name, usedChannels.ConvertAll(l => l.Name).Merge("/"))); } } return(result); }