public void TestEuclideanDistanceForSpatialVectors() { var v1 = FeatureUtil.makeSpatialVector(0.0, 0.0, 0.0, 0.0, 0.0, 0.0); var v2 = FeatureUtil.makeSpatialVector(1.0, -1.0, 1.0, -1.0, 1.0, -1.0); var dist = SpectralModelBuilder.euclideanDistance(v1, v2); Assert.AreEqual(dist, Math.Sqrt(6.0)); }
public void TestEuclideanDistanceForScalars() { var h1 = FeatureUtil.makeNum(1.0); var h2 = FeatureUtil.makeNum(0.0); var dist = SpectralModelBuilder.euclideanDistance(h1, h2); Assert.AreEqual(dist, 1.0); }
public void SimpleCountableHashTest() { var o = BigInteger.One; var c = FeatureUtil.makeFullCVR(1, 1, 1, 1, 1, 1, 1); var bvbi = o | (o << 1) | (o << 2) | (o << 3) | (o << 4) | (o << (20 * 5)) | (o << (20 * 5 + 1)); var bv = UInt128.FromBigInteger(bvbi); var bv_is = LSHCalc.h7(c); Assert.AreEqual(bv, bv_is); }
public static IEnumerable <LCIMSMSFeature> CorrectLCIMSMSFeatures(List <LCIMSMSFeature> lcImsMsFeatureEnumerable) { var massToleranceBase = Settings.MassMonoisotopicConstraint; // ReSharper disable once NotAccessedVariable var totalFound = 0; foreach (var lcimsmsFeature in lcImsMsFeatureEnumerable) { if (lcimsmsFeature.imsMsFeatureList.Count == 0) { continue; } var averageMass = lcimsmsFeature.CalculateAverageMonoisotopicMass(); var massTolerance = massToleranceBase * averageMass / 1000000.0; var errorFlagPercentage = lcimsmsFeature.GetFlaggedPercentage(); var searchForDaErrorQuery = from otherLCIMSMSFeature in lcImsMsFeatureEnumerable where Math.Abs(averageMass - otherLCIMSMSFeature.CalculateAverageMonoisotopicMass()) >= (1 - massTolerance) && Math.Abs(averageMass - otherLCIMSMSFeature.CalculateAverageMonoisotopicMass()) <= (1 + massTolerance) && otherLCIMSMSFeature.imsMsFeatureList.Count > 0 orderby Math.Abs(errorFlagPercentage - otherLCIMSMSFeature.GetFlaggedPercentage()) descending select otherLCIMSMSFeature; foreach (var lcimsmsFeatureToCheck in searchForDaErrorQuery.AsParallel().Where(lcimsmsFeatureToCheck => Math.Abs(errorFlagPercentage - lcimsmsFeatureToCheck.GetFlaggedPercentage()) > 0.3)) { //bool featuresFitTogether = FeatureUtil.DoLCIMSMSFeaturesFitTogether(lcimsmsFeature, lcimsmsFeatureToCheck); //if (featuresFitTogether) //{ if (errorFlagPercentage > lcimsmsFeatureToCheck.GetFlaggedPercentage()) { FeatureUtil.MergeLCIMSMSFeatures(lcimsmsFeatureToCheck, lcimsmsFeature); } else { FeatureUtil.MergeLCIMSMSFeatures(lcimsmsFeature, lcimsmsFeatureToCheck); } totalFound++; break; //} } } var newFeatureListQuery = lcImsMsFeatureEnumerable.Where(lcimsmsFeature => lcimsmsFeature.imsMsFeatureList.Count > 0); return(newFeatureListQuery.AsEnumerable()); }
public void AddImsMsFeature(imsMsFeature imsMsFeature) { var lcScan = imsMsFeature.ScanLC; foreach (var otherImsMsFeature in imsMsFeatureList.Where(otherImsMsFeature => otherImsMsFeature.ScanLC == lcScan)) { FeatureUtil.MergeImsMsFeatures(imsMsFeature, otherImsMsFeature); imsMsFeatureList.Add(imsMsFeature); imsMsFeatureList.Remove(otherImsMsFeature); return; } imsMsFeatureList.Add(imsMsFeature); }
public void AddIMSMSFeature(IMSMSFeature imsmsFeature) { var lcScan = imsmsFeature.ScanLC; foreach (var otherIMSMSFeature in IMSMSFeatureList.Where(otherIMSMSFeature => otherIMSMSFeature.ScanLC == lcScan)) { FeatureUtil.MergeIMSMSFeatures(imsmsFeature, otherIMSMSFeature); IMSMSFeatureList.Add(imsmsFeature); IMSMSFeatureList.Remove(otherIMSMSFeature); return; } IMSMSFeatureList.Add(imsmsFeature); }
public async void SetUpVM(IVideoFrameInputController controller) { // WinML requires Windows 10 build 17728 or higher to run: https://docs.microsoft.com/en-us/windows/ai/ if (!MLHelper.IsMLAvailable()) { IsEnabled = false; AppService.DisplayDialog(FeatureUtil.GetLocalizedText("WinMLNotAvailableTitle"), FeatureUtil.GetLocalizedText("WinMLNotAvailableDescription")); return; } LogService.Write($"Loading model {ModelFileName}..."); var modelFile = await FileUtil.GetFileFromInstalledLocationAsync(MLHelper.ModelBasePath + ModelFileName); _model = await mnistModel.CreateFromStreamAsync(modelFile); _controller = controller; _controller.InputReady += Controller_InputReady; IsEnabled = true; }
public void Execute() { { Logger.Log("Total number of MS Features in _isos.csv file = " + m_isosReader.NumOfUnfilteredMSFeatures); Logger.Log("Total number of MS Features we'll consider = " + m_isosReader.MSFeatureList.Count); Logger.Log("Creating IMS-MS Features..."); var filteredMSFeatureList = m_isosReader.MSFeatureList; var imsmsfeatureBag = new ConcurrentBag <IMSMSFeature>(); if (Settings.UseCharge) { var groupByScanLCAndChargeQuery = from msFeature in filteredMSFeatureList group msFeature by new { msFeature.ScanLC, msFeature.Charge } into newGroup select newGroup; Parallel.ForEach(groupByScanLCAndChargeQuery, msFeatureGroup => { var imsmsFeatureList = ClusterMSFeatures.ClusterByMass(msFeatureGroup); foreach (var imsmsFeature in imsmsFeatureList) { imsmsfeatureBag.Add(imsmsFeature); } }); } else { var groupByScanLCQuery = from msFeature in filteredMSFeatureList group msFeature by msFeature.ScanLC into newGroup select newGroup; Parallel.ForEach(groupByScanLCQuery, msFeatureGroup => { var imsmsFeatureList = ClusterMSFeatures.ClusterByMass(msFeatureGroup); foreach (var imsmsFeature in imsmsFeatureList) { imsmsfeatureBag.Add(imsmsFeature); } }); } Logger.Log("Total Number of Unfiltered IMS-MS Features = " + imsmsfeatureBag.Count); //Logger.Log("Filtering out short IMS-MS Features..."); //IEnumerable<IMSMSFeature> imsmsFeatureEnumerable = FeatureUtil.FilterByMemberCount(imsmsfeatureBag); //imsmsfeatureBag = null; //Logger.Log("Total Number of Filtered IMS-MS Features = " + imsmsFeatureEnumerable.Count()); Logger.Log("Creating LC-IMS-MS Features..."); var lcimsmsFeatureBag = new ConcurrentBag <LCIMSMSFeature>(); if (Settings.UseCharge) { var groupByChargeQuery = from imsmsFeature in imsmsfeatureBag group imsmsFeature by imsmsFeature.Charge into newGroup select newGroup; Parallel.ForEach(groupByChargeQuery, imsmsFeatureGroup => { var lcimsmsFeatureList = ClusterIMSMSFeatures.ClusterByMassAndScanLC(imsmsFeatureGroup); foreach (var lcimsmsFeature in lcimsmsFeatureList) { lcimsmsFeatureBag.Add(lcimsmsFeature); } }); } else { var lcimsmsFeatureList = ClusterIMSMSFeatures.ClusterByMassAndScanLC(imsmsfeatureBag); foreach (var lcimsmsFeature in lcimsmsFeatureList) { lcimsmsFeatureBag.Add(lcimsmsFeature); } } Logger.Log("Total Number of LC-IMS-MS Features = " + lcimsmsFeatureBag.Count); IEnumerable <LCIMSMSFeature> lcimsmsFeatureEnumerable; if (Settings.IMSDaCorrectionMax > 0 && !Settings.FilterFlaggedData) { Logger.Log("Executing Dalton Correction Algorithm on LC-IMS-MS Features..."); var daCorrectedLCIMSMSFeatureBag = new ConcurrentBag <LCIMSMSFeature>(); var lcimsmsFeatureListBag = new ConcurrentBag <IEnumerable <LCIMSMSFeature> >(); if (Settings.UseCharge) { var groupByChargeQuery2 = from lcimsmsFeature in lcimsmsFeatureBag group lcimsmsFeature by lcimsmsFeature.Charge into newGroup select newGroup; Parallel.ForEach(groupByChargeQuery2, lcimsmsFeatureGroup => { IEnumerable <IEnumerable <LCIMSMSFeature> > returnList = FeatureUtil.PartitionFeaturesByMass(lcimsmsFeatureGroup); foreach (var lcimsmsFeatureList in returnList) { lcimsmsFeatureListBag.Add(lcimsmsFeatureList); } }); } else { IEnumerable <IEnumerable <LCIMSMSFeature> > returnList = FeatureUtil.PartitionFeaturesByMass(lcimsmsFeatureBag); foreach (var lcimsmsFeatureList in returnList) { lcimsmsFeatureListBag.Add(lcimsmsFeatureList); } } Parallel.ForEach(lcimsmsFeatureListBag, lcimsmsFeatureGroup => { var lcimsmsFeatureList = DaltonCorrection.CorrectLCIMSMSFeatures(lcimsmsFeatureGroup); foreach (var lcimsmsFeature in lcimsmsFeatureList) { daCorrectedLCIMSMSFeatureBag.Add(lcimsmsFeature); } }); lcimsmsFeatureEnumerable = daCorrectedLCIMSMSFeatureBag; Logger.Log("Total Number of Dalton Corrected LC-IMS-MS Features = " + lcimsmsFeatureEnumerable.Count()); } else { lcimsmsFeatureEnumerable = lcimsmsFeatureBag; } Logger.Log("Filtering LC-IMS-MS features based on Member Count..."); lcimsmsFeatureEnumerable = FeatureUtil.FilterByMemberCount(lcimsmsFeatureEnumerable); Logger.Log("Total Number of Filtered LC-IMS-MS Features = " + lcimsmsFeatureEnumerable.Count()); Logger.Log("Splitting LC-IMS-MS Features by LC Scan..."); lcimsmsFeatureEnumerable = FeatureUtil.SplitLCIMSMSFeaturesByScanLC(lcimsmsFeatureEnumerable); if (!Settings.UseConformationDetection) { lcimsmsFeatureEnumerable = FeatureUtil.FilterSingleLCScan(lcimsmsFeatureEnumerable); } Logger.Log("New Total Number of Filtered LC-IMS-MS Features = " + lcimsmsFeatureEnumerable.Count()); if (Settings.UseConformationDetection) { Logger.Log("Conformation Detection..."); lcimsmsFeatureEnumerable = ConformationDetection.DetectConformationsUsingRawData(lcimsmsFeatureEnumerable.ToList()); //lcimsmsFeatureEnumerable = FeatureUtil.FilterSingleLCScan(lcimsmsFeatureEnumerable); lcimsmsFeatureEnumerable = FeatureUtil.FilterByMemberCount(lcimsmsFeatureEnumerable); Logger.Log("New Total Number of LC-IMS-MS Features = " + lcimsmsFeatureEnumerable.Count()); } lcimsmsFeatureEnumerable = FeatureUtil.SortByMass(lcimsmsFeatureEnumerable); Logger.Log("Creating filtered Isos file..."); var msFeatureListOutput = new List <MSFeature>(); foreach (var lcimsmsFeature in lcimsmsFeatureEnumerable) { if (Settings.FilterIsosToSinglePoint) { var msFeatureRep = lcimsmsFeature.GetMSFeatureRep(); msFeatureListOutput.Add(msFeatureRep); } else { foreach (var imsmsFeature in lcimsmsFeature.IMSMSFeatureList) { msFeatureListOutput.AddRange(imsmsFeature.MSFeatureList); } } } var isosWriter = new IsosWriter(msFeatureListOutput, m_isosReader.ColumnMap); Logger.Log("Writing output files..."); FeatureUtil.WriteLCIMSMSFeatureToFile(lcimsmsFeatureEnumerable); LCimsmsFeatures = lcimsmsFeatureEnumerable; } }