private static void WriterTest() { var fiTestFile = new FileInfo("TestOutput.uimf"); try { if (fiTestFile.Exists) { fiTestFile.Delete(); } } catch (IOException) { Console.WriteLine("Existing " + fiTestFile.Name + " file exists and cannot be deleted (locked)"); return; } catch (Exception ex) { Console.WriteLine("Existing " + fiTestFile.Name + " file exists and cannot be deleted: " + ex.Message); return; } try { Console.WriteLine("Creating " + fiTestFile.FullName); using (var writer = new DataWriter(fiTestFile.FullName)) { writer.CreateTables(); var globalParameters = new GlobalParams(); globalParameters.AddUpdateValue(GlobalParamKeyType.Bins, 400000) .AddUpdateValue(GlobalParamKeyType.BinWidth, 0.25) .AddUpdateValue(GlobalParamKeyType.DateStarted, DateTime.Now) .AddUpdateValue(GlobalParamKeyType.TOFIntensityType, "ADC") .AddUpdateValue(GlobalParamKeyType.TOFCorrectionTime, 0.0); writer.InsertGlobal(globalParameters); globalParameters = writer.GetGlobalParams(); writer.AddUpdateGlobalParameter(GlobalParamKeyType.TimeOffset, 1) .AddUpdateGlobalParameter(GlobalParamKeyType.InstrumentName, "IMS_Test") .FlushUimf(); const float SECONDS_PER_FRAME = 1.25f; var randGenerator = new Random(); for (var frameNum = 1; frameNum <= 5; frameNum++) { var fp = new FrameParams(); fp.AddUpdateValue(FrameParamKeyType.FrameType, (int)UIMFLibrary.DataReader.FrameType.MS1) .AddUpdateValue(FrameParamKeyType.CalibrationSlope, 0.3476349957054481) .AddUpdateValue(FrameParamKeyType.CalibrationIntercept, 0.03434148864746093) .AddUpdateValue(FrameParamKeyType.AverageTOFLength, 163366.6666666667) .AddUpdateValue(FrameParamKeyType.StartTimeMinutes, frameNum * SECONDS_PER_FRAME); writer.InsertFrame(frameNum, fp) .AddUpdateFrameParameter(frameNum, FrameParamKeyType.Accumulations, "18") .AddUpdateFrameParameter(frameNum, FrameParamKeyType.TOFLosses, randGenerator.Next(0, 150).ToString()); for (var scanNumber = 1; scanNumber < 600; scanNumber++) { if (scanNumber == 1 | scanNumber % 100 == 0) { Console.WriteLine("Adding frame " + frameNum + ", scan " + scanNumber); } var intensities = new int[148000]; for (var i = 0; i < intensities.Length; i++) { var nextRandom = randGenerator.Next(0, 255); if (nextRandom < 250) { intensities[i] = 0; } else { intensities[i] = nextRandom; } } writer.InsertScan(frameNum, fp, scanNumber, intensities, globalParameters.BinWidth); } } } Console.WriteLine("Wrote 5 frames of data to \n" + fiTestFile.FullName); } catch (Exception ex) { Console.WriteLine("Error testing the writer: " + ex.Message); } }