private static async Task StartApp(Options opts) { using var app = MaxImDlApp.Acquire(); await Process(app, opts); app.CloseAll(); }
private static async Task Calibrate(DataSetInfo info) { using var app = MaxImDlApp.Acquire() ?? throw new InvalidOperationException("Failed to create app."); using var doc = app.CreateDocument(); app.CalMedianBias = true; app.CalMedianDark = true; app.CalClear(); foreach (var item in info.Bias) { app.CalAddBias(item.FullName); } foreach (var item in info.Dark) { app.CalAddDark(item.FullName); } app.CalSet(); using var progressBar = new ShellProgressBar.ProgressBar( info.Files.Count, "Calibrating files...", new ShellProgressBar.ProgressBarOptions() { DisplayTimeInRealTime = true, EnableTaskBarProgress = true } ); foreach (var item in info.EnumeratePaths()) { var task = Task.Run(() => { // ReSharper disable AccessToDisposedClosure doc.OpenFile(item.Source); doc.Calibrate(); if (info.Bin != BinType.NoBin) { doc.Bin(info.Bin); } // ReSharper restore AccessToDisposedClosure }); var targetDir = Path.GetDirectoryName(item.Target); if (!Directory.Exists(targetDir)) { Directory.CreateDirectory(targetDir); } var fileName = Path.GetFileNameWithoutExtension(item.Source); await task; doc.SaveFile(item.Target); progressBar.Tick(fileName); } }
private static async Task Process(MaxImDlApp app, Options opts) { foreach (var item in opts.EnumerateFiles()) { using var doc = app.CreateDocument(); doc.OpenFile(item.FullName); } using var docs = app.Documents; using var firstDoc = docs[0]; firstDoc.BringToTop(); // DATE-OBS var dates = docs.Select(d => { using (d) { return(DateTimeOffset.TryParse( d.GetFITSKey(@"DATE-OBS") as string, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.AssumeUniversal, out var dt) ? dt : default);