private void Window_Loaded(object sender, RoutedEventArgs e) { DataSetFactory.SearchFolder("."); // read input data var dataset = sds.DataSet.Open("Tutorial2.csv?inferDims=true&appendMetadata=true"); if (!dataset.Any(var => var.Name == "Model")) { var x = dataset.GetData <double[]>("X"); var y = dataset.GetData <double[]>("Observation"); // compute var xm = x.Sum() / x.Length; var ym = y.Sum() / y.Length; double a = 0, d = 0; for (int i = 0; i < x.Length; i++) { a += (x[i] - xm) * (y[i] - ym); d += (x[i] - xm) * (x[i] - xm); } a /= d; var b = ym - a * xm; var model = x.Select(xx => a * xx + b).ToArray(); // var varid = dataset.Add <double[]>("Model", dataset.Dimensions[0].Name).ID; dataset.PutData <double[]>(varid, model); } Viewer.DataSet = dataset; }
public MainWindow() { DataSetFactory.SearchFolder(Environment.CurrentDirectory); InitializeComponent(); InitModel(); dsvc.DataSet = dataset; }
private void SaveDataToCdf(MsSpectrum spec, string fpath) { DataSetFactory.SearchFolder("Microsoft.Research.Science.Data.NetCDF4.dll"); DataSetFactory.SearchFolder("Microsoft.Research.Science.Data.dll"); DataSetFactory.SearchFolder("Microsoft.Research.Science.Data.Imperative.dll"); int nControllerType = 0; // 0 == mass spec device int nContorllerNumber = 1; // first MS device int totalNumScans = 0; // Number of scans int firstScanNumber = 0, lastScanNumber = -1; // Number of first and last scan string scanFilter = null; // Scan filter line int numDataPoints = -1; // points in both the m/z and intensity arrays double retentionTimeInMinutes = -1; double minObservedMZ = -1; double maxObservedMZ = -1; double totalIonCurrent = -1; double basePeakMZ = -1; double basePeakIntensity = -1; int channel = 0; // unused int uniformTime = 0; // unused double frequency = 0; // unused int arraySize = -1; object rawData = null; // rawData wil come as Double[,] object peakFlags = null; string szFilter = null; // No filter int intensityCutoffType = 1; // No cutoff int intensityCutoffValue = 0; // No cutoff int maxNumberOfPeaks = 0; // 0 : return all data peaks double centroidPeakWidth = 0; // No centroiding int centroidThisScan = 0; // No centroiding DateTime creationDate = DateTime.MinValue; var scanPath = Path.Combine(fpath, $"{spec.Id}.cdf"); var cdf = DataSet.Open(scanPath); cdf.IsAutocommitEnabled = false; AddMetadata(cdf); IXRawfile5 rawFile = (IXRawfile5) new MSFileReader_XRawfile(); rawFile.Open(spec.RawFilePath); rawFile.SetCurrentController(nControllerType, nContorllerNumber); rawFile.GetNumSpectra(ref totalNumScans); rawFile.GetFirstSpectrumNumber(ref firstScanNumber); rawFile.GetLastSpectrumNumber(ref lastScanNumber); rawFile.GetCreationDate(ref creationDate); var massVar = cdf.Add <double>("mass_values", new[] { "point_number" }); var intensities = cdf.Add <Int32>("intensity_values", new[] { "point_number" }); var acqTimeVar = cdf.Add <double>("scan_acquisition_time", new[] { "scan_number" }); var scIndexVar = cdf.Add <int>("scan_index", new[] { "scan_number" }); var scCountVar = cdf.Add <int>("point_count", new[] { "scan_number" }); var totalIntensityVar = cdf.Add <double>("total_intensity", new[] { "scan_number" }); massVar.Metadata["scale_factor"] = 1.0; intensities.Metadata["scale_factor"] = 1.0; try { var retTimes = new double[lastScanNumber]; var ticArr = new double[lastScanNumber]; var scanIndex = new Int32[lastScanNumber]; var pointCount = new Int32[lastScanNumber]; for (int curScanNum = firstScanNumber; curScanNum <= lastScanNumber; curScanNum++) { rawFile.GetScanHeaderInfoForScanNum(curScanNum, ref numDataPoints, ref retentionTimeInMinutes, ref minObservedMZ, ref maxObservedMZ, ref totalIonCurrent, ref basePeakMZ, ref basePeakIntensity, ref channel, // unused ref uniformTime, // unused ref frequency // unused ); scanFilter = null; rawFile.GetFilterForScanNum(curScanNum, ref scanFilter); peakFlags = null; centroidPeakWidth = 0; arraySize = 0; intensityCutoffType = 1; intensityCutoffValue = (int)(0.001 * basePeakIntensity); rawFile.GetMassListFromScanNum( ref curScanNum, szFilter, // filter intensityCutoffType, // intensityCutoffType intensityCutoffValue, // intensityCutoffValue maxNumberOfPeaks, // maxNumberOfPeaks centroidThisScan, // centroid result? ref centroidPeakWidth, // centroidingPeakWidth ref rawData, // daw data ref peakFlags, // peakFlags ref arraySize); // array size ; var datArray = (Array)rawData; var massArr = new double[arraySize]; var intArr = new int[arraySize]; for (var j = 0; j < arraySize; j++) { massArr[j] = (double)datArray.GetValue(0, j); intArr[j] = Convert.ToInt32(datArray.GetValue(1, j)); } //Console.Write($"curScan = {curScanNum}\n"); var ind = curScanNum - 1; pointCount[ind] = arraySize; if (ind == 0) { scanIndex[ind] = 0; scanIndex[ind + 1] = arraySize; } else { scanIndex[ind] += scanIndex[ind - 1]; if (ind + 1 < lastScanNumber) { scanIndex[ind + 1] = arraySize; } } retTimes[ind] = TimeSpan.FromMinutes(retentionTimeInMinutes).TotalSeconds; ticArr[ind] = totalIonCurrent; massVar.Append(massArr); intensities.Append(intArr); rawData = null; } totalIntensityVar.PutData(ticArr); scIndexVar.PutData(scanIndex); acqTimeVar.PutData(retTimes); scCountVar.PutData(pointCount); cdf.Commit(); } catch (Exception e) { Console.WriteLine(e.Message); } finally { cdf.Dispose(); rawFile.Close(); } }
static void Main(string[] args) { if (args.Length == 0) { PrintUsage(); return; } #if DEBUG Console.WriteLine("DEBUG version: searching current folder for providers..."); DataSetFactory.SearchFolder("."); #endif try { string command = args[0]; if (args.Length == 1 && (command.Contains('.') || command.Contains(':'))) { // Command cannot . or : for these are mean either extension or schema prefix. DoList(args[0]); return; } if (command == "list") { if (!AssertNumberOfArgs(args, 2)) { return; } DoList(args[1]); } else if (command == "meta") { if (!AssertNumberOfArgs(args, 2, int.MaxValue)) { return; } DoMeta(args[1], GetCommandArgs(args, 2)); } else if (command == "update") { if (!AssertNumberOfArgs(args, 4, int.MaxValue)) { return; } DoUpdate(args[1], GetCommandArgs(args, 2)); } else if (command == "data") { if (!AssertNumberOfArgs(args, 2, int.MaxValue)) { return; } DoData(args[1], GetCommandArgs(args, 2)); } else if (command == "copy") { if (!AssertNumberOfArgs(args, 3)) { return; } DoCopy(args[1], args[2]); } else if (command == "info") { if (!AssertNumberOfArgs(args, 1)) { return; } DoInfo(); } else if (command == "/?" || command == "help") { PrintUsage(); } else { WriteError("Unknown command."); } } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("\nFAILED: "); do { #if DEBUG Console.Error.WriteLine(ex); #else Console.Error.WriteLine(ex.Message); #endif ex = ex.InnerException; } while (ex != null); Console.ResetColor(); } }