Beispiel #1
0
        private static async Task StartApp(Options opts)
        {
            using var app = MaxImDlApp.Acquire();

            await Process(app, opts);

            app.CloseAll();
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);