[education/kstars] /: filename Placeholders
Jasem Mutlaq
null at kde.org
Thu Dec 1 19:42:16 GMT 2022
Git commit faa1afec4a70d3c451b4a462c20c5cd509001566 by Jasem Mutlaq, on behalf of Ed Lee.
Committed on 01/12/2022 at 19:42.
Pushed by mutlaqja into branch 'master'.
filename Placeholders
This merge request is to continue the work of @kchoi as chronicled in #54 and !453.
The majority of the work has been manually rebasing and repairing @kchoi's work due to the time elapsed since the previous effort stalled.
Now working on a simple GUI implementation. My initial proposal for this is:
![placeholderdialog](/uploads/597f6d98291d0cd42e9538530c3d045c/placeholderdialog.png)
This is a non-modal, but always on-top when shown, dialog that is toggled by the button selectFileDirectoryB that currently launches the directory browser.
The dialog consists of a QTableWidget of tag buttons along with their description. Each tag button click adds that button into the Format QLineEdit. The extra pair of Buttons on the dialog would be: 1. The replacement button for the launching the directory browser, and 2. A insert "/" slash button to allow easy path building without having to use the keyboard.
The Dialog Cancel button would revert a stashed value to the Format QLineEdit. A new icon would probably be appropriate for the dialog open button.
Thoughts/comments?
M +79 -966 Tests/capture/testFlexibleNaming_data_small.csv
M +14 -394 Tests/capture/testSchedulerProcessJobInfo_data.csv
M +376 -439 Tests/capture/test_placeholderpath.cpp
M +13 -12 Tests/capture/test_placeholderpath.h
M +12 -12 Tests/kstars_ui/test_ekos_capture.cpp
M +5 -1 Tests/kstars_ui/test_ekos_capture_count.cpp
M +1 -2 Tests/kstars_ui/test_ekos_capture_helper.cpp
M +25 -0 Tests/scheduler/testschedulerunit.cpp
M +56 -13 doc/ekos-capture.docbook
M +- -- doc/ekos_capture.png
M +- -- doc/file_settings.png
M +4 -0 kstars/auxiliary/ksutils.cpp
M +224 -120 kstars/ekos/capture/capture.cpp
M +22 -3 kstars/ekos/capture/capture.h
M +117 -104 kstars/ekos/capture/capture.ui
M +163 -192 kstars/ekos/capture/placeholderpath.cpp
M +95 -23 kstars/ekos/capture/placeholderpath.h
M +4 -8 kstars/ekos/capture/sequencejob.cpp
M +2 -0 kstars/ekos/capture/sequencejob.h
M +36 -8 kstars/ekos/scheduler/scheduler.cpp
M +4 -3 kstars/ekos/scheduler/scheduler.h
M +1 -2 kstars/indi/indicamera.cpp
M +4 -6 kstars/indi/servermanager.cpp
M +1 -1 kstars/kstars.kcfg
https://invent.kde.org/education/kstars/commit/faa1afec4a70d3c451b4a462c20c5cd509001566
diff --git a/Tests/capture/testFlexibleNaming_data_small.csv b/Tests/capture/testFlexibleNaming_data_small.csv
index e145bae92..0ccac9e43 100644
--- a/Tests/capture/testFlexibleNaming_data_small.csv
+++ b/Tests/capture/testFlexibleNaming_data_small.csv
@@ -1,967 +1,80 @@
Exposure,Filter,Type,Prefix,RawPrefix,FilterEnabled,ExpEnabled,TimeStampEnabled,seqFilename,targetName,batch_mode,nextSequenceID,format,result
-,,,,,,,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/001\.fits$
-,,,,,,,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/1000\.fits$
-0.00001,,Bias,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0.000010_secs_001\.fits$
-0.00001,,Bias,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0.000010_secs_1000\.fits$
-0.00001,,Bias,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Bias,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_001\.fits$
-0.1,,Bias,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0.100_secs_001\.fits$
-0.1,,Bias,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0.100_secs_1000\.fits$
-0.1,,Bias,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Bias,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0_secs_001\.fits$
-,,Bias,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0_secs_1000\.fits$
-,,Bias,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_1000\.fits$
-1.00,,Bias,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_1_secs_001\.fits$
-1.00,,Bias,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_1_secs_1000\.fits$
-1.00,,Bias,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Bias,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Dark,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0.000010_secs_001\.fits$
-0.00001,,Dark,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0.000010_secs_1000\.fits$
-0.00001,,Dark,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Dark,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_001\.fits$
-0.1,,Dark,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0.100_secs_001\.fits$
-0.1,,Dark,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0.100_secs_1000\.fits$
-0.1,,Dark,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Dark,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0_secs_001\.fits$
-,,Dark,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0_secs_1000\.fits$
-,,Dark,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_1000\.fits$
-1.00,,Dark,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_1_secs_001\.fits$
-1.00,,Dark,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_1_secs_1000\.fits$
-1.00,,Dark,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Dark,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Flat,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0.000010_secs_001\.fits$
-0.00001,,Flat,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0.000010_secs_1000\.fits$
-0.00001,,Flat,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Flat,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_001\.fits$
-0.1,,Flat,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0.100_secs_001\.fits$
-0.1,,Flat,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0.100_secs_1000\.fits$
-0.1,,Flat,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Flat,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0_secs_001\.fits$
-,,Flat,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0_secs_1000\.fits$
-,,Flat,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_1000\.fits$
-1.00,,Flat,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_1_secs_001\.fits$
-1.00,,Flat,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_1_secs_1000\.fits$
-1.00,,Flat,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Flat,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0_secs_001\.fits$
-,sobel,Flat,prefix,,1,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0_secs_1000\.fits$
-,sobel,Flat,prefix,,1,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Light,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0.000010_secs_001\.fits$
-0.00001,,Light,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0.000010_secs_1000\.fits$
-0.00001,,Light,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Light,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_001\.fits$
-0.1,,Light,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0.100_secs_001\.fits$
-0.1,,Light,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0.100_secs_1000\.fits$
-0.1,,Light,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Light,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0_secs_001\.fits$
-,,Light,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0_secs_1000\.fits$
-,,Light,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_1000\.fits$
-1.00,,Light,prefix,,,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_1_secs_001\.fits$
-1.00,,Light,prefix,,,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_1_secs_1000\.fits$
-1.00,,Light,prefix,,,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Light,prefix,,,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,,1,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,,1,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0_secs_001\.fits$
-,sobel,Light,prefix,,1,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0_secs_1000\.fits$
-,sobel,Light,prefix,,1,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_1_secs_001\.fits$
-1.00,sobel,Light,prefix,,1,1,,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,,1,1,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,1,,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,,1,,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Bias,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0.000010_secs_001\.fits$
-0.00001,,Bias,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0.000010_secs_1000\.fits$
-0.00001,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_001\.fits$
-0.1,,Bias,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0.100_secs_001\.fits$
-0.1,,Bias,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0.100_secs_1000\.fits$
-0.1,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0_secs_001\.fits$
-,,Bias,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0_secs_1000\.fits$
-,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_1000\.fits$
-1.00,,Bias,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_1_secs_001\.fits$
-1.00,,Bias,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_1_secs_1000\.fits$
-1.00,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Dark,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0.000010_secs_001\.fits$
-0.00001,,Dark,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0.000010_secs_1000\.fits$
-0.00001,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_001\.fits$
-0.1,,Dark,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0.100_secs_001\.fits$
-0.1,,Dark,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0.100_secs_1000\.fits$
-0.1,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0_secs_001\.fits$
-,,Dark,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0_secs_1000\.fits$
-,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_1000\.fits$
-1.00,,Dark,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_1_secs_001\.fits$
-1.00,,Dark,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_1_secs_1000\.fits$
-1.00,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Flat,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0.000010_secs_001\.fits$
-0.00001,,Flat,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0.000010_secs_1000\.fits$
-0.00001,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_001\.fits$
-0.1,,Flat,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0.100_secs_001\.fits$
-0.1,,Flat,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0.100_secs_1000\.fits$
-0.1,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0_secs_001\.fits$
-,,Flat,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0_secs_1000\.fits$
-,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_1000\.fits$
-1.00,,Flat,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_1_secs_001\.fits$
-1.00,,Flat,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_1_secs_1000\.fits$
-1.00,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0_secs_001\.fits$
-,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0_secs_1000\.fits$
-,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Light,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0.000010_secs_001\.fits$
-0.00001,,Light,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0.000010_secs_1000\.fits$
-0.00001,,Light,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Light,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_001\.fits$
-0.1,,Light,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0.100_secs_001\.fits$
-0.1,,Light,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0.100_secs_1000\.fits$
-0.1,,Light,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Light,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0_secs_001\.fits$
-,,Light,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0_secs_1000\.fits$
-,,Light,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_1000\.fits$
-1.00,,Light,prefix,,,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_1_secs_001\.fits$
-1.00,,Light,prefix,,,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_1_secs_1000\.fits$
-1.00,,Light,prefix,,,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Light,prefix,,,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0_secs_001\.fits$
-,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0_secs_1000\.fits$
-,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_1_secs_001\.fits$
-1.00,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,1,,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,,1,,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/.*/t_a_r_g_e_t_Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/001\.fits$
-,,,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/1000\.fits$
-0.00001,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0.000010_secs_001\.fits$
-0.00001,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0.000010_secs_1000\.fits$
-0.00001,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_001\.fits$
-0.1,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0.100_secs_001\.fits$
-0.1,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0.100_secs_1000\.fits$
-0.1,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0_secs_001\.fits$
-,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0_secs_1000\.fits$
-,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_1000\.fits$
-1.00,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_1_secs_001\.fits$
-1.00,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_1_secs_1000\.fits$
-1.00,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Bias,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0.000010_secs_001\.fits$
-0.00001,,Bias,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0.000010_secs_1000\.fits$
-0.00001,,Bias,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Bias,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_001\.fits$
-0.1,,Bias,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0.100_secs_001\.fits$
-0.1,,Bias,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0.100_secs_1000\.fits$
-0.1,,Bias,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Bias,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0_secs_001\.fits$
-,,Bias,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0_secs_1000\.fits$
-,,Bias,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_1000\.fits$
-1.00,,Bias,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_1_secs_001\.fits$
-1.00,,Bias,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_1_secs_1000\.fits$
-1.00,,Bias,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Bias,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Bias/t_a_r_g_e_t_Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0.000010_secs_001\.fits$
-0.00001,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0.000010_secs_1000\.fits$
-0.00001,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_001\.fits$
-0.1,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0.100_secs_001\.fits$
-0.1,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0.100_secs_1000\.fits$
-0.1,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0_secs_001\.fits$
-,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0_secs_1000\.fits$
-,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_1000\.fits$
-1.00,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_1_secs_001\.fits$
-1.00,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_1_secs_1000\.fits$
-1.00,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Dark,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0.000010_secs_001\.fits$
-0.00001,,Dark,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0.000010_secs_1000\.fits$
-0.00001,,Dark,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Dark,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_001\.fits$
-0.1,,Dark,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0.100_secs_001\.fits$
-0.1,,Dark,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0.100_secs_1000\.fits$
-0.1,,Dark,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Dark,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0_secs_001\.fits$
-,,Dark,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0_secs_1000\.fits$
-,,Dark,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_1000\.fits$
-1.00,,Dark,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_1_secs_001\.fits$
-1.00,,Dark,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_1_secs_1000\.fits$
-1.00,,Dark,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Dark,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Dark/t_a_r_g_e_t_Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0.000010_secs_001\.fits$
-0.00001,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0.000010_secs_1000\.fits$
-0.00001,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_001\.fits$
-0.1,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0.100_secs_001\.fits$
-0.1,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0.100_secs_1000\.fits$
-0.1,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0_secs_001\.fits$
-,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0_secs_1000\.fits$
-,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_1000\.fits$
-1.00,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_1_secs_001\.fits$
-1.00,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_1_secs_1000\.fits$
-1.00,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_001\.fits$
-0.1,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0_secs_001\.fits$
-,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0_secs_1000\.fits$
-,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_1000\.fits$
-1.00,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0_secs_001\.fits$
-,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0_secs_1000\.fits$
-,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_001\.fits$
-0.1,sobel,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0_secs_001\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0_secs_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_1000\.fits$
-1.00,sobel,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_001\.fits$
-0.1,sobel,Flat,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0_secs_001\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0_secs_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1000\.fits$
-1.00,sobel,Flat,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,t_a_r_g_e_t,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/sobel/t_a_r_g_e_t_Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0.000010_secs_001\.fits$
-0.00001,,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0.000010_secs_1000\.fits$
-0.00001,,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_001\.fits$
-0.1,,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0.100_secs_001\.fits$
-0.1,,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0.100_secs_1000\.fits$
-0.1,,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0_secs_001\.fits$
-,,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0_secs_1000\.fits$
-,,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_1000\.fits$
-1.00,,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_1_secs_001\.fits$
-1.00,,Flat,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_1_secs_1000\.fits$
-1.00,,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Flat,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Flat/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0.000010_secs_001\.fits$
-0.00001,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0.000010_secs_1000\.fits$
-0.00001,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_001\.fits$
-0.1,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0.100_secs_001\.fits$
-0.1,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0.100_secs_1000\.fits$
-0.1,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0_secs_001\.fits$
-,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0_secs_1000\.fits$
-,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_1000\.fits$
-1.00,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_1_secs_001\.fits$
-1.00,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_1_secs_1000\.fits$
-1.00,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_001\.fits$
-0.1,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0_secs_001\.fits$
-,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0_secs_1000\.fits$
-,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_1000\.fits$
-1.00,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_1_secs_001\.fits$
-1.00,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0_secs_001\.fits$
-,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0_secs_1000\.fits$
-,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_1_secs_001\.fits$
-1.00,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_001\.fits$
-0.1,sobel,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0_secs_001\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0_secs_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_1000\.fits$
-1.00,sobel,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_1_secs_001\.fits$
-1.00,sobel,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_001\.fits$
-0.1,sobel,Light,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0_secs_001\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0_secs_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_1000\.fits$
-1.00,sobel,Light,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_1_secs_001\.fits$
-1.00,sobel,Light,prefix,t_a_r_g_e_t,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,t_a_r_g_e_t,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,t_a_r_g_e_t,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/sobel/t_a_r_g_e_t_Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0.000010_secs_001\.fits$
-0.00001,,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0.000010_secs_1000\.fits$
-0.00001,,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_001\.fits$
-0.1,,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0.100_secs_001\.fits$
-0.1,,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0.100_secs_1000\.fits$
-0.1,,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0_secs_001\.fits$
-,,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0_secs_1000\.fits$
-,,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,t_a_r_g_e_t,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_1000\.fits$
-1.00,,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_1_secs_001\.fits$
-1.00,,Light,prefix,t_a_r_g_e_t,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_1_secs_1000\.fits$
-1.00,,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Light,prefix,t_a_r_g_e_t,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,t_a_r_g_e_t,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/Light/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0.000010_secs_001\.fits$
-0.00001,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0.000010_secs_1000\.fits$
-0.00001,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_001\.fits$
-0.1,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0.100_secs_001\.fits$
-0.1,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0.100_secs_1000\.fits$
-0.1,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0_secs_001\.fits$
-,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0_secs_1000\.fits$
-,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_1000\.fits$
-1.00,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_1_secs_001\.fits$
-1.00,,Bias,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_1_secs_1000\.fits$
-1.00,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Bias,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Bias/t_a_r_g_e_t_Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0.000010_secs_001\.fits$
-0.00001,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0.000010_secs_1000\.fits$
-0.00001,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_001\.fits$
-0.1,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0.100_secs_001\.fits$
-0.1,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0.100_secs_1000\.fits$
-0.1,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0_secs_001\.fits$
-,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0_secs_1000\.fits$
-,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_1000\.fits$
-1.00,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_1_secs_001\.fits$
-1.00,,Dark,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_1_secs_1000\.fits$
-1.00,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Dark,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Dark/t_a_r_g_e_t_Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_001\.fits$
-0.1,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0_secs_001\.fits$
-,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0_secs_1000\.fits$
-,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_1000\.fits$
-1.00,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0_secs_001\.fits$
-,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0_secs_1000\.fits$
-,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/sobel/t_a_r_g_e_t_Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0.000010_secs_001\.fits$
-0.00001,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0.000010_secs_1000\.fits$
-0.00001,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_001\.fits$
-0.1,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0.100_secs_001\.fits$
-0.1,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0.100_secs_1000\.fits$
-0.1,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0_secs_001\.fits$
-,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0_secs_1000\.fits$
-,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_1000\.fits$
-1.00,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_1_secs_001\.fits$
-1.00,,Flat,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_1_secs_1000\.fits$
-1.00,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Flat,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Flat/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_001\.fits$
-0.1,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0_secs_001\.fits$
-,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0_secs_1000\.fits$
-,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_1000\.fits$
-1.00,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_1_secs_001\.fits$
-1.00,sobel,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0_secs_001\.fits$
-,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0_secs_1000\.fits$
-,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_1_secs_001\.fits$
-1.00,sobel,Light,prefix,,1,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,,1,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/sobel/t_a_r_g_e_t_Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0.000010_secs_001\.fits$
-0.00001,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0.000010_secs_1000\.fits$
-0.00001,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_001\.fits$
-0.1,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0.100_secs_001\.fits$
-0.1,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0.100_secs_1000\.fits$
-0.1,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0_secs_001\.fits$
-,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0_secs_1000\.fits$
-,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_1000\.fits$
-1.00,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_1_secs_001\.fits$
-1.00,,Light,prefix,,,1,,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_1_secs_1000\.fits$
-1.00,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Light,prefix,,,1,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,,1,/home/user/Images/NGC7635/100x30s_RGB.esq,t a/r(g):e*~t_,1,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/home/user/Images/NGC7635/t_a_r_g_e_t/Light/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,,,,,,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/001\.fits$
-,,,,,,,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/1000\.fits$
-0.00001,,Bias,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0.000010_secs_001\.fits$
-0.00001,,Bias,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0.000010_secs_1000\.fits$
-0.00001,,Bias,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Bias,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_001\.fits$
-0.1,,Bias,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0.100_secs_001\.fits$
-0.1,,Bias,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0.100_secs_1000\.fits$
-0.1,,Bias,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Bias,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0_secs_001\.fits$
-,,Bias,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0_secs_1000\.fits$
-,,Bias,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_1000\.fits$
-1.00,,Bias,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_1_secs_001\.fits$
-1.00,,Bias,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_1_secs_1000\.fits$
-1.00,,Bias,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Bias,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Dark,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0.000010_secs_001\.fits$
-0.00001,,Dark,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0.000010_secs_1000\.fits$
-0.00001,,Dark,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Dark,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_001\.fits$
-0.1,,Dark,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0.100_secs_001\.fits$
-0.1,,Dark,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0.100_secs_1000\.fits$
-0.1,,Dark,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Dark,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0_secs_001\.fits$
-,,Dark,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0_secs_1000\.fits$
-,,Dark,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_1000\.fits$
-1.00,,Dark,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_1_secs_001\.fits$
-1.00,,Dark,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_1_secs_1000\.fits$
-1.00,,Dark,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Dark,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Flat,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0.000010_secs_001\.fits$
-0.00001,,Flat,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0.000010_secs_1000\.fits$
-0.00001,,Flat,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Flat,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_001\.fits$
-0.1,,Flat,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0.100_secs_001\.fits$
-0.1,,Flat,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0.100_secs_1000\.fits$
-0.1,,Flat,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Flat,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0_secs_001\.fits$
-,,Flat,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0_secs_1000\.fits$
-,,Flat,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_1000\.fits$
-1.00,,Flat,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_1_secs_001\.fits$
-1.00,,Flat,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_1_secs_1000\.fits$
-1.00,,Flat,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Flat,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0_secs_001\.fits$
-,sobel,Flat,prefix,,1,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0_secs_1000\.fits$
-,sobel,Flat,prefix,,1,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Light,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0.000010_secs_001\.fits$
-0.00001,,Light,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0.000010_secs_1000\.fits$
-0.00001,,Light,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Light,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_001\.fits$
-0.1,,Light,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0.100_secs_001\.fits$
-0.1,,Light,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0.100_secs_1000\.fits$
-0.1,,Light,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Light,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0_secs_001\.fits$
-,,Light,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0_secs_1000\.fits$
-,,Light,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_1000\.fits$
-1.00,,Light,prefix,,,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_1_secs_001\.fits$
-1.00,,Light,prefix,,,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_1_secs_1000\.fits$
-1.00,,Light,prefix,,,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Light,prefix,,,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,,1,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,,1,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0_secs_001\.fits$
-,sobel,Light,prefix,,1,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0_secs_1000\.fits$
-,sobel,Light,prefix,,1,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_1_secs_001\.fits$
-1.00,sobel,Light,prefix,,1,1,,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,,1,1,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,1,,,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,,1,,,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Bias,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0.000010_secs_001\.fits$
-0.00001,,Bias,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0.000010_secs_1000\.fits$
-0.00001,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_001\.fits$
-0.1,,Bias,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0.100_secs_001\.fits$
-0.1,,Bias,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0.100_secs_1000\.fits$
-0.1,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0_secs_001\.fits$
-,,Bias,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0_secs_1000\.fits$
-,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,,,,,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_1000\.fits$
-1.00,,Bias,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_1_secs_001\.fits$
-1.00,,Bias,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_1_secs_1000\.fits$
-1.00,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Bias,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Bias,prefix,,,,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Bias,prefix,,,,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Bias_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Dark,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0.000010_secs_001\.fits$
-0.00001,,Dark,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0.000010_secs_1000\.fits$
-0.00001,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_001\.fits$
-0.1,,Dark,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0.100_secs_001\.fits$
-0.1,,Dark,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0.100_secs_1000\.fits$
-0.1,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0_secs_001\.fits$
-,,Dark,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0_secs_1000\.fits$
-,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,,,,,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_1000\.fits$
-1.00,,Dark,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_1_secs_001\.fits$
-1.00,,Dark,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_1_secs_1000\.fits$
-1.00,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Dark,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Dark,prefix,,,,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Dark,prefix,,,,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Dark_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Flat,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0.000010_secs_001\.fits$
-0.00001,,Flat,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0.000010_secs_1000\.fits$
-0.00001,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_001\.fits$
-0.1,,Flat,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0.100_secs_001\.fits$
-0.1,,Flat,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0.100_secs_1000\.fits$
-0.1,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0_secs_001\.fits$
-,,Flat,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0_secs_1000\.fits$
-,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,,,,,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_1000\.fits$
-1.00,,Flat,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_1_secs_001\.fits$
-1.00,,Flat,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_1_secs_1000\.fits$
-1.00,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Flat,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Flat,prefix,,,,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Flat,prefix,,,,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0.100_secs_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0_secs_001\.fits$
-,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0_secs_1000\.fits$
-,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_1_secs_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_1_secs_1000\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Flat,prefix,,1,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Flat,prefix,,1,,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Flat,prefix,,1,,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Flat_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,,Light,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0.000010_secs_001\.fits$
-0.00001,,Light,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0.000010_secs_1000\.fits$
-0.00001,,Light,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,,Light,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_001\.fits$
-0.1,,Light,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0.100_secs_001\.fits$
-0.1,,Light,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0.100_secs_1000\.fits$
-0.1,,Light,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,,Light,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0_secs_001\.fits$
-,,Light,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0_secs_1000\.fits$
-,,Light,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,,,,,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_1000\.fits$
-1.00,,Light,prefix,,,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_1_secs_001\.fits$
-1.00,,Light,prefix,,,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_1_secs_1000\.fits$
-1.00,,Light,prefix,,,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,,Light,prefix,,,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,,Light,prefix,,,,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,,Light,prefix,,,,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0.000010_secs_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0.000010_secs_1000\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.00001,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0.000010_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0.100_secs_001\.fits$
-0.1,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0.100_secs_1000\.fits$
-0.1,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-0.1,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0.100_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0_secs_001\.fits$
-,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0_secs_1000\.fits$
-,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_0_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_1_secs_001\.fits$
-1.00,sobel,Light,prefix,,1,1,,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_1_secs_1000\.fits$
-1.00,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-1.00,sobel,Light,prefix,,1,1,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_1_secs_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
-,sobel,Light,prefix,,1,,1,,t a/r(g):e*~t_,0,1,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_001\.fits$
-,sobel,Light,prefix,,1,,1,,t a/r(g):e*~t_,0,1000,%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3,^/tmp/kstars/t_a_r_g_e_t_Light_sobel_\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_1000\.fits$
+,,,,,,,,,,1,1,/%s3,^/001\.fits$
+,,,,,,,,,,1,1000,/%s3,^/1000\.fits$
+,,,,,,,,,,0,1,%s1,^/tmp/kstars/1\.fits$
+,,,,,,,,,,0,1,%sequence2,^/tmp/kstars/01\.fits$
+,,,,,,,,,,0,1,%s3,^/tmp/kstars/001\.fits$
+,,,,,,,,,,0,1,%sequence4,^/tmp/kstars/0001\.fits$
+,,,,,,,,,,0,1,%s5,^/tmp/kstars/00001\.fits$
+,,,,,,,,,,0,1,%sequence6,^/tmp/kstars/000001\.fits$
+,,,,,,,,,,0,1,%s7,^/tmp/kstars/0000001\.fits$
+,,,,,,,,,,0,1,%sequence8,^/tmp/kstars/00000001\.fits$
+,,,,,,,,,,0,1,%s9,^/tmp/kstars/000000001\.fits$
+,,,,,,,,,,0,123,%sequence1,^/tmp/kstars/123\.fits$
+,,,,,,,,,,0,123,%s2,^/tmp/kstars/123\.fits$
+,,,,,,,,,,0,123,%sequence3,^/tmp/kstars/123\.fits$
+,,,,,,,,,,0,123,%s4,^/tmp/kstars/0123\.fits$
+,,,,,,,,,,0,123,%sequence5,^/tmp/kstars/00123\.fits$
+,,,,,,,,,,0,123,%s6,^/tmp/kstars/000123\.fits$
+,,,,,,,,,,0,123,%sequence7,^/tmp/kstars/0000123\.fits$
+,,,,,,,,,,0,123,%s8,^/tmp/kstars/00000123\.fits$
+,,,,,,,,,,0,123,%sequence9,^/tmp/kstars/000000123\.fits$
+,,,,,,,,,,0,123456,%s1,^/tmp/kstars/123456\.fits$
+,,,,,,,,,,0,123456,%sequence2,^/tmp/kstars/123456\.fits$
+,,,,,,,,,,0,123456,%s3,^/tmp/kstars/123456\.fits$
+,,,,,,,,,,0,123456,%sequence4,^/tmp/kstars/123456\.fits$
+,,,,,,,,,,0,123456,%s5,^/tmp/kstars/123456\.fits$
+,,,,,,,,,,0,123456,%sequence6,^/tmp/kstars/123456\.fits$
+,,,,,,,,,,0,123456,%s7,^/tmp/kstars/0123456\.fits$
+,,,,,,,,,,0,123456,%sequence8,^/tmp/kstars/00123456\.fits$
+,,,,,,,,,,0,123456,%s9,^/tmp/kstars/000123456\.fits$
+,,,,,,,,,,1,1,/%s1,^/1\.fits$
+,,,,,,,,,,1,1,/%sequence2,^/01\.fits$
+,,,,,,,,,,1,1,/%s3,^/001\.fits$
+,,,,,,,,,,1,1,/%sequence4,^/0001\.fits$
+,,,,,,,,,,1,1,/%s5,^/00001\.fits$
+,,,,,,,,,,1,1,/%sequence6,^/000001\.fits$
+,,,,,,,,,,1,1,/%s7,^/0000001\.fits$
+,,,,,,,,,,1,1,/%sequence8,^/00000001\.fits$
+,,,,,,,,,,1,1,/%s9,^/000000001\.fits$
+,,,,,,,,,,1,123,/%sequence1,^/123\.fits$
+,,,,,,,,,,1,123,/%s2,^/123\.fits$
+,,,,,,,,,,1,123,/%sequence3,^/123\.fits$
+,,,,,,,,,,1,123,/%s4,^/0123\.fits$
+,,,,,,,,,,1,123,/%sequence5,^/00123\.fits$
+,,,,,,,,,,1,123,/%s6,^/000123\.fits$
+,,,,,,,,,,1,123,/%sequence7,^/0000123\.fits$
+,,,,,,,,,,1,123,/%s8,^/00000123\.fits$
+,,,,,,,,,,1,123,/%sequence9,^/000000123\.fits$
+,,,,,,,,,,1,123456,/%s1,^/123456\.fits$
+,,,,,,,,,,1,123456,/%sequence2,^/123456\.fits$
+,,,,,,,,,,1,123456,/%s3,^/123456\.fits$
+,,,,,,,,,,1,123456,/%sequence4,^/123456\.fits$
+,,,,,,,,,,1,123456,/%s5,^/123456\.fits$
+,,,,,,,,,,1,123456,/%sequence6,^/123456\.fits$
+,,,,,,,,,,1,123456,/%s7,^/0123456\.fits$
+,,,,,,,,,,1,123456,/%sequence8,^/00123456\.fits$
+,,,,,,,,,,1,123456,/%s9,^/000123456\.fits$
+,,,,,,,,/nine/eight/seven/six/five/four/three/two/one/test.seq,,1,1,/home/%f_%s3,^/home/test_001\.fits$
+,,,,,,,,/nine/eight/seven/six/five/four/three/two/one/test.seq,,1,1,/home/%filename_%s3,^/home/test_001\.fits$
+,,,,,,,,,M42,0,234,%t-%s5,^/tmp/kstars/M42-00234\.fits$
+,,,,,,,,,M42,1,234,/%target-%s5,^/M42-00234\.fits$
+,,Light,,,,,,,,0,234,%T %s5,^/tmp/kstars/Light 00234\.fits$
+,,Dark,,,,,,,,1,234,/%Type %s5,^/Dark 00234\.fits$
+,,Flat,,,,,,,,0,234,%T %s5,^/tmp/kstars/Flat 00234\.fits$
+,,Bias,,,,,,,,1,234,/%Type %s5,^/Bias 00234\.fits$
+,Red,,,,,,,,,0,6,%F_%s3,^/tmp/kstars/Red_006\.fits$
+,Green,,,,,,,,,1,6,/%Filter_%s3,^/Green_006\.fits$
+,Blue,,,,,,,,,0,6,%F_%s3,^/tmp/kstars/Blue_006\.fits$
+,H_Alpha,,,,,,,,,1,6,/%Filter_%s3,^/H_Alpha_006\.fits$
+,OIII,,,,,,,,,0,6,%F_%s3,^/tmp/kstars/OIII_006\.fits$
+,SI,,,,,,,,,1,6,/%Filter_%s3,^/SI_006\.fits$
+,LPR,,,,,,,,,0,6,%F_%s3,^/tmp/kstars/LPR_006\.fits$
+,Luminance,,,,,,,,,1,6,/%Filter_%s3,^/Luminance_006\.fits$
+1E-05,,,,,,,,,,0,8,%e %s4,^/tmp/kstars/0.000010_secs 0008\.fits$
+0.001,,,,,,,,,,1,8,/%exposure %s4,^/0.001_secs 0008\.fits$
+1,,,,,,,,,,0,8,%e %s4,^/tmp/kstars/1_secs 0008\.fits$
+30,,,,,,,,,,1,8,/%exposure %s4,^/30_secs 0008\.fits$
+300,,,,,,,,,,0,8,%e %s4,^/tmp/kstars/300_secs 0008\.fits$
+,,,,,,,,,,1,3,/%D_%s3,^/\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_003\.fits$
+,,,,,,,,,,0,3,%Datetime_%s3,^/tmp/kstars/\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}_003\.fits$
diff --git a/Tests/capture/testSchedulerProcessJobInfo_data.csv b/Tests/capture/testSchedulerProcessJobInfo_data.csv
index 607b9d885..662721b63 100644
--- a/Tests/capture/testSchedulerProcessJobInfo_data.csv
+++ b/Tests/capture/testSchedulerProcessJobInfo_data.csv
@@ -1,394 +1,14 @@
-Exposure,Filter,Type,Prefix,RawPrefix,FilterEnabled,ExpEnabled,FITSDirectory,targetName,signature
-,,,,,,,,,//
-,,,,,,,/bar/toto,,/bar/toto//
-,,Bias,,,,,/bar/toto,,/bar/toto/Bias/Bias
-0.00001,sobel,Bias,prefix,,,1,/bar/toto,,/bar/toto/Bias/Bias_0.000010_secs
-1.00001,sobel,Bias,prefix,,,1,/bar/toto,,/bar/toto/Bias/Bias_1.000_secs
-0.1,sobel,Bias,prefix,,,1,/bar/toto,,/bar/toto/Bias/Bias_0.100_secs
-,sobel,Bias,prefix,,,1,/bar/toto,,/bar/toto/Bias/Bias_0_secs
-1.00,sobel,Bias,prefix,,,1,/bar/toto,,/bar/toto/Bias/Bias_1_secs
-,,Bias,prefix,toto,,,/bar/toto,,/bar/toto/Bias/toto_Bias
-0.00001,,Bias,prefix,toto,,1,/bar/toto,,/bar/toto/Bias/toto_Bias_0.000010_secs
-0.1,,Bias,prefix,toto,,1,/bar/toto,,/bar/toto/Bias/toto_Bias_0.100_secs
-,,Bias,prefix,toto,,1,/bar/toto,,/bar/toto/Bias/toto_Bias_0_secs
-1.00,,Bias,prefix,toto,,1,/bar/toto,,/bar/toto/Bias/toto_Bias_1_secs
-,,Dark,,,,,/bar/toto,,/bar/toto/Dark/Dark
-0.00001,sobel,Dark,prefix,,,1,/bar/toto,,/bar/toto/Dark/Dark_0.000010_secs
-0.1,sobel,Dark,prefix,,,1,/bar/toto,,/bar/toto/Dark/Dark_0.100_secs
-,sobel,Dark,prefix,,,1,/bar/toto,,/bar/toto/Dark/Dark_0_secs
-1.00,sobel,Dark,prefix,,,1,/bar/toto,,/bar/toto/Dark/Dark_1_secs
-,,Dark,prefix,toto,,,/bar/toto,,/bar/toto/Dark/toto_Dark
-0.00001,,Dark,prefix,toto,,1,/bar/toto,,/bar/toto/Dark/toto_Dark_0.000010_secs
-0.1,,Dark,prefix,toto,,1,/bar/toto,,/bar/toto/Dark/toto_Dark_0.100_secs
-,,Dark,prefix,toto,,1,/bar/toto,,/bar/toto/Dark/toto_Dark_0_secs
-1.00,,Dark,prefix,toto,,1,/bar/toto,,/bar/toto/Dark/toto_Dark_1_secs
-,,Flat,,,,,/bar/toto,,/bar/toto/Flat/Flat
-,sobel,Flat,,,,,/bar/toto,,/bar/toto/Flat/sobel/Flat
-0.00001,sobel,Flat,prefix,,,1,/bar/toto,,/bar/toto/Flat/sobel/Flat_0.000010_secs
-0.1,sobel,Flat,prefix,,,1,/bar/toto,,/bar/toto/Flat/sobel/Flat_0.100_secs
-,sobel,Flat,prefix,,,1,/bar/toto,,/bar/toto/Flat/sobel/Flat_0_secs
-1.00,sobel,Flat,prefix,,,1,/bar/toto,,/bar/toto/Flat/sobel/Flat_1_secs
-,sobel,Flat,prefix,,1,,/bar/toto,,/bar/toto/Flat/sobel/Flat_sobel
-0.00001,sobel,Flat,prefix,,1,1,/bar/toto,,/bar/toto/Flat/sobel/Flat_sobel_0.000010_secs
-0.1,sobel,Flat,prefix,,1,1,/bar/toto,,/bar/toto/Flat/sobel/Flat_sobel_0.100_secs
-,sobel,Flat,prefix,,1,1,/bar/toto,,/bar/toto/Flat/sobel/Flat_sobel_0_secs
-1.00,sobel,Flat,prefix,,1,1,/bar/toto,,/bar/toto/Flat/sobel/Flat_sobel_1_secs
-,sobel,Flat,prefix,toto,,,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat
-0.00001,sobel,Flat,prefix,toto,,1,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_0.000010_secs
-0.1,sobel,Flat,prefix,toto,,1,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_0.100_secs
-,sobel,Flat,prefix,toto,,1,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_0_secs
-1.00,sobel,Flat,prefix,toto,,1,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_1_secs
-,sobel,Flat,prefix,toto,1,,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_sobel
-0.00001,sobel,Flat,prefix,toto,1,1,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_sobel_0.000010_secs
-0.1,sobel,Flat,prefix,toto,1,1,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_sobel_0.100_secs
-,sobel,Flat,prefix,toto,1,1,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_sobel_0_secs
-1.00,sobel,Flat,prefix,toto,1,1,/bar/toto,,/bar/toto/Flat/sobel/toto_Flat_sobel_1_secs
-,,Flat,prefix,toto,,,/bar/toto,,/bar/toto/Flat/toto_Flat
-0.00001,,Flat,prefix,toto,,1,/bar/toto,,/bar/toto/Flat/toto_Flat_0.000010_secs
-0.1,,Flat,prefix,toto,,1,/bar/toto,,/bar/toto/Flat/toto_Flat_0.100_secs
-,,Flat,prefix,toto,,1,/bar/toto,,/bar/toto/Flat/toto_Flat_0_secs
-1.00,,Flat,prefix,toto,,1,/bar/toto,,/bar/toto/Flat/toto_Flat_1_secs
-,,Bias,,,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias
-0.00001,sobel,Bias,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias_0.000010_secs
-0.1,sobel,Bias,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias_0.100_secs
-,sobel,Bias,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias_0_secs
-1.00,sobel,Bias,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias_1_secs
-,,Bias,prefix,toto,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias
-0.00001,,Bias,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias_0.000010_secs
-0.1,,Bias,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias_0.100_secs
-,,Bias,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias_0_secs
-1.00,,Bias,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias_1_secs
-,,Dark,,,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark
-0.00001,sobel,Dark,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark_0.000010_secs
-0.1,sobel,Dark,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark_0.100_secs
-,sobel,Dark,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark_0_secs
-1.00,sobel,Dark,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark_1_secs
-,,Dark,prefix,toto,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark
-0.00001,,Dark,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark_0.000010_secs
-0.1,,Dark,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark_0.100_secs
-,,Dark,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark_0_secs
-1.00,,Dark,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark_1_secs
-,,Flat,,,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/foo_bar_toto_tata_coco_fofo_Flat
-,sobel,Flat,,,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat
-0.00001,sobel,Flat,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_0.000010_secs
-0.1,sobel,Flat,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_0.100_secs
-,sobel,Flat,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_0_secs
-1.00,sobel,Flat,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_1_secs
-,sobel,Flat,prefix,,1,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel
-0.00001,sobel,Flat,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel_0.000010_secs
-0.1,sobel,Flat,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel_0.100_secs
-,sobel,Flat,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel_0_secs
-1.00,sobel,Flat,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel_1_secs
-,sobel,Flat,prefix,toto,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat
-0.00001,sobel,Flat,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_0.000010_secs
-0.1,sobel,Flat,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_0.100_secs
-,sobel,Flat,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_0_secs
-1.00,sobel,Flat,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_1_secs
-,sobel,Flat,prefix,toto,1,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel
-0.00001,sobel,Flat,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel_0.000010_secs
-0.1,sobel,Flat,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel_0.100_secs
-,sobel,Flat,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel_0_secs
-1.00,sobel,Flat,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel_1_secs
-,,Flat,prefix,toto,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat
-0.00001,,Flat,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat_0.000010_secs
-0.1,,Flat,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat_0.100_secs
-,,Flat,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat_0_secs
-1.00,,Flat,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat_1_secs
-,,,,,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//foo_bar_toto_tata_coco_fofo_
-,,Light,,,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/foo_bar_toto_tata_coco_fofo_Light
-,sobel,Light,,,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light
-0.00001,sobel,Light,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_0.000010_secs
-0.1,sobel,Light,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_0.100_secs
-,sobel,Light,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_0_secs
-1.00,sobel,Light,prefix,,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_1_secs
-,sobel,Light,prefix,,1,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel
-0.00001,sobel,Light,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel_0.000010_secs
-0.1,sobel,Light,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel_0.100_secs
-,sobel,Light,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel_0_secs
-1.00,sobel,Light,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel_1_secs
-,sobel,Light,prefix,toto,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light
-0.00001,sobel,Light,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_0.000010_secs
-0.1,sobel,Light,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_0.100_secs
-,sobel,Light,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_0_secs
-1.00,sobel,Light,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_1_secs
-,sobel,Light,prefix,toto,1,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel
-0.00001,sobel,Light,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel_0.000010_secs
-0.1,sobel,Light,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel_0.100_secs
-,sobel,Light,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel_0_secs
-1.00,sobel,Light,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel_1_secs
-,,Light,prefix,toto,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/toto_Light
-0.00001,,Light,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/toto_Light_0.000010_secs
-0.1,,Light,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/toto_Light_0.100_secs
-,,Light,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/toto_Light_0_secs
-1.00,,Light,prefix,toto,,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo/Light/toto_Light_1_secs
-,sobel,,,,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo_
-0.00001,sobel,,prefix,,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__0.000010_secs
-0.1,sobel,,prefix,,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__0.100_secs
-,sobel,,prefix,,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__0_secs
-1.00,sobel,,prefix,,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__1_secs
-,sobel,,prefix,,1,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel
-0.00001,sobel,,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel_0.000010_secs
-0.1,sobel,,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel_0.100_secs
-,sobel,,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel_0_secs
-1.00,sobel,,prefix,,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel_1_secs
-,sobel,,prefix,toto,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto_
-0.00001,sobel,,prefix,toto,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__0.000010_secs
-0.1,sobel,,prefix,toto,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__0.100_secs
-,sobel,,prefix,toto,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__0_secs
-1.00,sobel,,prefix,toto,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__1_secs
-,sobel,,prefix,toto,1,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel
-0.00001,sobel,,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel_0.000010_secs
-0.1,sobel,,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel_0.100_secs
-,sobel,,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel_0_secs
-1.00,sobel,,prefix,toto,1,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel_1_secs
-,,,prefix,toto,,,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//toto_
-0.00001,,,prefix,toto,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//toto__0.000010_secs
-0.1,,,prefix,toto,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//toto__0.100_secs
-,,,prefix,toto,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//toto__0_secs
-1.00,,,prefix,toto,0,1,/bar/toto,foo bar/toto(tata):coco*~fofo_,/bar/toto/foo_bar_toto_tata_coco_fofo//toto__1_secs
-,,Light,,,,,/bar/toto,,/bar/toto/Light/Light
-,sobel,Light,,,,,/bar/toto,,/bar/toto/Light/sobel/Light
-0.00001,sobel,Light,prefix,,,1,/bar/toto,,/bar/toto/Light/sobel/Light_0.000010_secs
-0.1,sobel,Light,prefix,,,1,/bar/toto,,/bar/toto/Light/sobel/Light_0.100_secs
-,sobel,Light,prefix,,,1,/bar/toto,,/bar/toto/Light/sobel/Light_0_secs
-1.00,sobel,Light,prefix,,,1,/bar/toto,,/bar/toto/Light/sobel/Light_1_secs
-,sobel,Light,prefix,,1,,/bar/toto,,/bar/toto/Light/sobel/Light_sobel
-0.00001,sobel,Light,prefix,,1,1,/bar/toto,,/bar/toto/Light/sobel/Light_sobel_0.000010_secs
-0.1,sobel,Light,prefix,,1,1,/bar/toto,,/bar/toto/Light/sobel/Light_sobel_0.100_secs
-,sobel,Light,prefix,,1,1,/bar/toto,,/bar/toto/Light/sobel/Light_sobel_0_secs
-1.00,sobel,Light,prefix,,1,1,/bar/toto,,/bar/toto/Light/sobel/Light_sobel_1_secs
-,sobel,Light,prefix,toto,,,/bar/toto,,/bar/toto/Light/sobel/toto_Light
-0.00001,sobel,Light,prefix,toto,,1,/bar/toto,,/bar/toto/Light/sobel/toto_Light_0.000010_secs
-0.1,sobel,Light,prefix,toto,,1,/bar/toto,,/bar/toto/Light/sobel/toto_Light_0.100_secs
-,sobel,Light,prefix,toto,,1,/bar/toto,,/bar/toto/Light/sobel/toto_Light_0_secs
-1.00,sobel,Light,prefix,toto,,1,/bar/toto,,/bar/toto/Light/sobel/toto_Light_1_secs
-,sobel,Light,prefix,toto,1,,/bar/toto,,/bar/toto/Light/sobel/toto_Light_sobel
-0.00001,sobel,Light,prefix,toto,1,1,/bar/toto,,/bar/toto/Light/sobel/toto_Light_sobel_0.000010_secs
-0.1,sobel,Light,prefix,toto,1,1,/bar/toto,,/bar/toto/Light/sobel/toto_Light_sobel_0.100_secs
-,sobel,Light,prefix,toto,1,1,/bar/toto,,/bar/toto/Light/sobel/toto_Light_sobel_0_secs
-1.00,sobel,Light,prefix,toto,1,1,/bar/toto,,/bar/toto/Light/sobel/toto_Light_sobel_1_secs
-,,Light,prefix,toto,,,/bar/toto,,/bar/toto/Light/toto_Light
-0.00001,,Light,prefix,toto,,1,/bar/toto,,/bar/toto/Light/toto_Light_0.000010_secs
-0.1,,Light,prefix,toto,,1,/bar/toto,,/bar/toto/Light/toto_Light_0.100_secs
-,,Light,prefix,toto,,1,/bar/toto,,/bar/toto/Light/toto_Light_0_secs
-1.00,,Light,prefix,toto,,1,/bar/toto,,/bar/toto/Light/toto_Light_1_secs
-,sobel,,,,,,/bar/toto,,/bar/toto//sobel/
-0.00001,sobel,,prefix,,0,1,/bar/toto,,/bar/toto//sobel/_0.000010_secs
-0.1,sobel,,prefix,,0,1,/bar/toto,,/bar/toto//sobel/_0.100_secs
-,sobel,,prefix,,0,1,/bar/toto,,/bar/toto//sobel/_0_secs
-1.00,sobel,,prefix,,0,1,/bar/toto,,/bar/toto//sobel/_1_secs
-,sobel,,prefix,,1,,/bar/toto,,/bar/toto//sobel/_sobel
-0.00001,sobel,,prefix,,1,1,/bar/toto,,/bar/toto//sobel/_sobel_0.000010_secs
-0.1,sobel,,prefix,,1,1,/bar/toto,,/bar/toto//sobel/_sobel_0.100_secs
-,sobel,,prefix,,1,1,/bar/toto,,/bar/toto//sobel/_sobel_0_secs
-1.00,sobel,,prefix,,1,1,/bar/toto,,/bar/toto//sobel/_sobel_1_secs
-,sobel,,prefix,toto,,,/bar/toto,,/bar/toto//sobel/toto_
-0.00001,sobel,,prefix,toto,0,1,/bar/toto,,/bar/toto//sobel/toto__0.000010_secs
-0.1,sobel,,prefix,toto,0,1,/bar/toto,,/bar/toto//sobel/toto__0.100_secs
-,sobel,,prefix,toto,0,1,/bar/toto,,/bar/toto//sobel/toto__0_secs
-1.00,sobel,,prefix,toto,0,1,/bar/toto,,/bar/toto//sobel/toto__1_secs
-,sobel,,prefix,toto,1,,/bar/toto,,/bar/toto//sobel/toto__sobel
-0.00001,sobel,,prefix,toto,1,1,/bar/toto,,/bar/toto//sobel/toto__sobel_0.000010_secs
-0.1,sobel,,prefix,toto,1,1,/bar/toto,,/bar/toto//sobel/toto__sobel_0.100_secs
-,sobel,,prefix,toto,1,1,/bar/toto,,/bar/toto//sobel/toto__sobel_0_secs
-1.00,sobel,,prefix,toto,1,1,/bar/toto,,/bar/toto//sobel/toto__sobel_1_secs
-,,,prefix,toto,,,/bar/toto,,/bar/toto//toto_
-0.00001,,,prefix,toto,0,1,/bar/toto,,/bar/toto//toto__0.000010_secs
-0.1,,,prefix,toto,0,1,/bar/toto,,/bar/toto//toto__0.100_secs
-,,,prefix,toto,0,1,/bar/toto,,/bar/toto//toto__0_secs
-1.00,,,prefix,toto,0,1,/bar/toto,,/bar/toto//toto__1_secs
-,,Bias,,,,,,,/Bias/Bias
-0.00001,sobel,Bias,prefix,,,1,,,/Bias/Bias_0.000010_secs
-0.1,sobel,Bias,prefix,,,1,,,/Bias/Bias_0.100_secs
-,sobel,Bias,prefix,,,1,,,/Bias/Bias_0_secs
-1.00,sobel,Bias,prefix,,,1,,,/Bias/Bias_1_secs
-,,Bias,prefix,toto,,,,,/Bias/toto_Bias
-0.00001,,Bias,prefix,toto,,1,,,/Bias/toto_Bias_0.000010_secs
-0.1,,Bias,prefix,toto,,1,,,/Bias/toto_Bias_0.100_secs
-,,Bias,prefix,toto,,1,,,/Bias/toto_Bias_0_secs
-1.00,,Bias,prefix,toto,,1,,,/Bias/toto_Bias_1_secs
-,,Dark,,,,,,,/Dark/Dark
-0.00001,sobel,Dark,prefix,,,1,,,/Dark/Dark_0.000010_secs
-0.1,sobel,Dark,prefix,,,1,,,/Dark/Dark_0.100_secs
-,sobel,Dark,prefix,,,1,,,/Dark/Dark_0_secs
-1.00,sobel,Dark,prefix,,,1,,,/Dark/Dark_1_secs
-,,Dark,prefix,toto,,,,,/Dark/toto_Dark
-0.00001,,Dark,prefix,toto,,1,,,/Dark/toto_Dark_0.000010_secs
-0.1,,Dark,prefix,toto,,1,,,/Dark/toto_Dark_0.100_secs
-,,Dark,prefix,toto,,1,,,/Dark/toto_Dark_0_secs
-1.00,,Dark,prefix,toto,,1,,,/Dark/toto_Dark_1_secs
-,,Flat,,,,,,,/Flat/Flat
-,sobel,Flat,,,,,,,/Flat/sobel/Flat
-0.00001,sobel,Flat,prefix,,,1,,,/Flat/sobel/Flat_0.000010_secs
-0.1,sobel,Flat,prefix,,,1,,,/Flat/sobel/Flat_0.100_secs
-,sobel,Flat,prefix,,,1,,,/Flat/sobel/Flat_0_secs
-1.00,sobel,Flat,prefix,,,1,,,/Flat/sobel/Flat_1_secs
-,sobel,Flat,prefix,,1,,,,/Flat/sobel/Flat_sobel
-0.00001,sobel,Flat,prefix,,1,1,,,/Flat/sobel/Flat_sobel_0.000010_secs
-0.1,sobel,Flat,prefix,,1,1,,,/Flat/sobel/Flat_sobel_0.100_secs
-,sobel,Flat,prefix,,1,1,,,/Flat/sobel/Flat_sobel_0_secs
-1.00,sobel,Flat,prefix,,1,1,,,/Flat/sobel/Flat_sobel_1_secs
-,sobel,Flat,prefix,toto,,,,,/Flat/sobel/toto_Flat
-0.00001,sobel,Flat,prefix,toto,,1,,,/Flat/sobel/toto_Flat_0.000010_secs
-0.1,sobel,Flat,prefix,toto,,1,,,/Flat/sobel/toto_Flat_0.100_secs
-,sobel,Flat,prefix,toto,,1,,,/Flat/sobel/toto_Flat_0_secs
-1.00,sobel,Flat,prefix,toto,,1,,,/Flat/sobel/toto_Flat_1_secs
-,sobel,Flat,prefix,toto,1,,,,/Flat/sobel/toto_Flat_sobel
-0.00001,sobel,Flat,prefix,toto,1,1,,,/Flat/sobel/toto_Flat_sobel_0.000010_secs
-0.1,sobel,Flat,prefix,toto,1,1,,,/Flat/sobel/toto_Flat_sobel_0.100_secs
-,sobel,Flat,prefix,toto,1,1,,,/Flat/sobel/toto_Flat_sobel_0_secs
-1.00,sobel,Flat,prefix,toto,1,1,,,/Flat/sobel/toto_Flat_sobel_1_secs
-,,Flat,prefix,toto,,,,,/Flat/toto_Flat
-0.00001,,Flat,prefix,toto,,1,,,/Flat/toto_Flat_0.000010_secs
-0.1,,Flat,prefix,toto,,1,,,/Flat/toto_Flat_0.100_secs
-,,Flat,prefix,toto,,1,,,/Flat/toto_Flat_0_secs
-1.00,,Flat,prefix,toto,,1,,,/Flat/toto_Flat_1_secs
-,,Bias,,,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias
-0.00001,sobel,Bias,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias_0.000010_secs
-0.1,sobel,Bias,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias_0.100_secs
-,sobel,Bias,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias_0_secs
-1.00,sobel,Bias,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/foo_bar_toto_tata_coco_fofo_Bias_1_secs
-,,Bias,prefix,toto,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias
-0.00001,,Bias,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias_0.000010_secs
-0.1,,Bias,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias_0.100_secs
-,,Bias,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias_0_secs
-1.00,,Bias,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Bias/toto_Bias_1_secs
-,,Dark,,,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark
-0.00001,sobel,Dark,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark_0.000010_secs
-0.1,sobel,Dark,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark_0.100_secs
-,sobel,Dark,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark_0_secs
-1.00,sobel,Dark,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/foo_bar_toto_tata_coco_fofo_Dark_1_secs
-,,Dark,prefix,toto,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark
-0.00001,,Dark,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark_0.000010_secs
-0.1,,Dark,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark_0.100_secs
-,,Dark,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark_0_secs
-1.00,,Dark,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Dark/toto_Dark_1_secs
-,,Flat,,,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/foo_bar_toto_tata_coco_fofo_Flat
-,sobel,Flat,,,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat
-0.00001,sobel,Flat,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_0.000010_secs
-0.1,sobel,Flat,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_0.100_secs
-,sobel,Flat,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_0_secs
-1.00,sobel,Flat,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_1_secs
-,sobel,Flat,prefix,,1,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel
-0.00001,sobel,Flat,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel_0.000010_secs
-0.1,sobel,Flat,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel_0.100_secs
-,sobel,Flat,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel_0_secs
-1.00,sobel,Flat,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/foo_bar_toto_tata_coco_fofo_Flat_sobel_1_secs
-,sobel,Flat,prefix,toto,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat
-0.00001,sobel,Flat,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_0.000010_secs
-0.1,sobel,Flat,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_0.100_secs
-,sobel,Flat,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_0_secs
-1.00,sobel,Flat,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_1_secs
-,sobel,Flat,prefix,toto,1,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel
-0.00001,sobel,Flat,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel_0.000010_secs
-0.1,sobel,Flat,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel_0.100_secs
-,sobel,Flat,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel_0_secs
-1.00,sobel,Flat,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/sobel/toto_Flat_sobel_1_secs
-,,Flat,prefix,toto,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat
-0.00001,,Flat,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat_0.000010_secs
-0.1,,Flat,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat_0.100_secs
-,,Flat,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat_0_secs
-1.00,,Flat,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Flat/toto_Flat_1_secs
-,,,,,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//foo_bar_toto_tata_coco_fofo_
-,,Light,,,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/foo_bar_toto_tata_coco_fofo_Light
-,sobel,Light,,,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light
-0.00001,sobel,Light,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_0.000010_secs
-0.1,sobel,Light,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_0.100_secs
-,sobel,Light,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_0_secs
-1.00,sobel,Light,prefix,,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_1_secs
-,sobel,Light,prefix,,1,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel
-0.00001,sobel,Light,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel_0.000010_secs
-0.1,sobel,Light,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel_0.100_secs
-,sobel,Light,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel_0_secs
-1.00,sobel,Light,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/foo_bar_toto_tata_coco_fofo_Light_sobel_1_secs
-,sobel,Light,prefix,toto,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light
-0.00001,sobel,Light,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_0.000010_secs
-0.1,sobel,Light,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_0.100_secs
-,sobel,Light,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_0_secs
-1.00,sobel,Light,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_1_secs
-,sobel,Light,prefix,toto,1,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel
-0.00001,sobel,Light,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel_0.000010_secs
-0.1,sobel,Light,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel_0.100_secs
-,sobel,Light,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel_0_secs
-1.00,sobel,Light,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/sobel/toto_Light_sobel_1_secs
-,,Light,prefix,toto,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/toto_Light
-0.00001,,Light,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/toto_Light_0.000010_secs
-0.1,,Light,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/toto_Light_0.100_secs
-,,Light,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/toto_Light_0_secs
-1.00,,Light,prefix,toto,,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo/Light/toto_Light_1_secs
-,sobel,,,,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo_
-0.00001,sobel,,prefix,,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__0.000010_secs
-0.1,sobel,,prefix,,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__0.100_secs
-,sobel,,prefix,,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__0_secs
-1.00,sobel,,prefix,,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__1_secs
-,sobel,,prefix,,1,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel
-0.00001,sobel,,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel_0.000010_secs
-0.1,sobel,,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel_0.100_secs
-,sobel,,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel_0_secs
-1.00,sobel,,prefix,,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/foo_bar_toto_tata_coco_fofo__sobel_1_secs
-,sobel,,prefix,toto,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto_
-0.00001,sobel,,prefix,toto,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__0.000010_secs
-0.1,sobel,,prefix,toto,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__0.100_secs
-,sobel,,prefix,toto,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__0_secs
-1.00,sobel,,prefix,toto,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__1_secs
-,sobel,,prefix,toto,1,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel
-0.00001,sobel,,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel_0.000010_secs
-0.1,sobel,,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel_0.100_secs
-,sobel,,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel_0_secs
-1.00,sobel,,prefix,toto,1,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//sobel/toto__sobel_1_secs
-,,,prefix,toto,,,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//toto_
-0.00001,,,prefix,toto,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//toto__0.000010_secs
-0.1,,,prefix,toto,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//toto__0.100_secs
-,,,prefix,toto,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//toto__0_secs
-1.00,,,prefix,toto,0,1,,foo bar/toto(tata):coco*~fofo_,/foo_bar_toto_tata_coco_fofo//toto__1_secs
-,,Light,,,,,,,/Light/Light
-,sobel,Light,,,,,,,/Light/sobel/Light
-0.00001,sobel,Light,prefix,,,1,,,/Light/sobel/Light_0.000010_secs
-0.1,sobel,Light,prefix,,,1,,,/Light/sobel/Light_0.100_secs
-,sobel,Light,prefix,,,1,,,/Light/sobel/Light_0_secs
-1.00,sobel,Light,prefix,,,1,,,/Light/sobel/Light_1_secs
-,sobel,Light,prefix,,1,,,,/Light/sobel/Light_sobel
-0.00001,sobel,Light,prefix,,1,1,,,/Light/sobel/Light_sobel_0.000010_secs
-0.1,sobel,Light,prefix,,1,1,,,/Light/sobel/Light_sobel_0.100_secs
-,sobel,Light,prefix,,1,1,,,/Light/sobel/Light_sobel_0_secs
-1.00,sobel,Light,prefix,,1,1,,,/Light/sobel/Light_sobel_1_secs
-,sobel,Light,prefix,toto,,,,,/Light/sobel/toto_Light
-0.00001,sobel,Light,prefix,toto,,1,,,/Light/sobel/toto_Light_0.000010_secs
-0.1,sobel,Light,prefix,toto,,1,,,/Light/sobel/toto_Light_0.100_secs
-,sobel,Light,prefix,toto,,1,,,/Light/sobel/toto_Light_0_secs
-1.00,sobel,Light,prefix,toto,,1,,,/Light/sobel/toto_Light_1_secs
-,sobel,Light,prefix,toto,1,,,,/Light/sobel/toto_Light_sobel
-0.00001,sobel,Light,prefix,toto,1,1,,,/Light/sobel/toto_Light_sobel_0.000010_secs
-0.1,sobel,Light,prefix,toto,1,1,,,/Light/sobel/toto_Light_sobel_0.100_secs
-,sobel,Light,prefix,toto,1,1,,,/Light/sobel/toto_Light_sobel_0_secs
-1.00,sobel,Light,prefix,toto,1,1,,,/Light/sobel/toto_Light_sobel_1_secs
-,,Light,prefix,toto,,,,,/Light/toto_Light
-0.00001,,Light,prefix,toto,,1,,,/Light/toto_Light_0.000010_secs
-0.1,,Light,prefix,toto,,1,,,/Light/toto_Light_0.100_secs
-,,Light,prefix,toto,,1,,,/Light/toto_Light_0_secs
-1.00,,Light,prefix,toto,,1,,,/Light/toto_Light_1_secs
-,sobel,,,,,,,,//sobel/
-0.00001,sobel,,prefix,,0,1,,,//sobel/_0.000010_secs
-0.1,sobel,,prefix,,0,1,,,//sobel/_0.100_secs
-,sobel,,prefix,,0,1,,,//sobel/_0_secs
-1.00,sobel,,prefix,,0,1,,,//sobel/_1_secs
-,sobel,,prefix,,1,,,,//sobel/_sobel
-0.00001,sobel,,prefix,,1,1,,,//sobel/_sobel_0.000010_secs
-0.1,sobel,,prefix,,1,1,,,//sobel/_sobel_0.100_secs
-,sobel,,prefix,,1,1,,,//sobel/_sobel_0_secs
-1.00,sobel,,prefix,,1,1,,,//sobel/_sobel_1_secs
-,sobel,,prefix,toto,,,,,//sobel/toto_
-0.00001,sobel,,prefix,toto,0,1,,,//sobel/toto__0.000010_secs
-0.1,sobel,,prefix,toto,0,1,,,//sobel/toto__0.100_secs
-,sobel,,prefix,toto,0,1,,,//sobel/toto__0_secs
-1.00,sobel,,prefix,toto,0,1,,,//sobel/toto__1_secs
-,sobel,,prefix,toto,1,,,,//sobel/toto__sobel
-0.00001,sobel,,prefix,toto,1,1,,,//sobel/toto__sobel_0.000010_secs
-0.1,sobel,,prefix,toto,1,1,,,//sobel/toto__sobel_0.100_secs
-,sobel,,prefix,toto,1,1,,,//sobel/toto__sobel_0_secs
-1.00,sobel,,prefix,toto,1,1,,,//sobel/toto__sobel_1_secs
-,,,prefix,toto,,,,,//toto_
-0.00001,,,prefix,toto,0,1,,,//toto__0.000010_secs
-0.1,,,prefix,toto,0,1,,,//toto__0.100_secs
-,,,prefix,toto,0,1,,,//toto__0_secs
-1.00,,,prefix,toto,0,1,,,//toto__1_secs
+Exposure,Filter,Type,Prefix,RawPrefix,FilterEnabled,ExpEnabled,Format,targetName,signature
+,,,,,,,/home/pi_%s3,,/home/pi
+,,,,,,,/home/pi/ABC_%s3,,/home/pi/ABC
+,,Bias,,,,,/home/pi_%s3,,/home/pi
+,,Bias,,,,,/home/pi/%T_%s3,,/home/pi/Bias
+,,Bias,,,,,/home/pi/%T/%s4,,/home/pi/Bias/0001
+,H_Alpha,Light,,,,,/home/pi/%T/%F_%s3,,/home/pi/Light/H_Alpha
+,H_Alpha,Light,,,,,/home/pi/%t/%T/%F_%s3,M42,/home/pi/M42/Light/H_Alpha
+,H_Alpha,Light,,,,,/home/pi/%T/%T_%s6,,/home/pi/Light/Light
+1,,,,,,,/home/pi/%T/%t%e_%s3,,/home/pi/1_secs
+10,,Light,,,,,/home/pi/%T/%t%e_%s3,,/home/pi/Light/10_secs
+20,H_Alpha,Light,,,,,/home/pi/%T/%t_%e_%s3,M42,/home/pi/Light/M42_20_secs
+1,H_Alpha,Flat,,,,,/home/pi/New %target/%Type/%Filter/%T_%exposure_%S3,M42,/home/pi/New M42/Flat/H_Alpha/Flat_1_secs
+,,Light,,,,,/home/pi/%T/%Type_%Datetime_%S3,,/home/pi/Light/Light_\d\d\d\d-\d\d-\d\dT\d\d-\d\d-\d\d
diff --git a/Tests/capture/test_placeholderpath.cpp b/Tests/capture/test_placeholderpath.cpp
index 051fb1a10..2099494db 100644
--- a/Tests/capture/test_placeholderpath.cpp
+++ b/Tests/capture/test_placeholderpath.cpp
@@ -21,6 +21,11 @@ TestPlaceholderPath::TestPlaceholderPath() : QObject()
{
}
+void TestPlaceholderPath::initTestCase()
+{
+ QDir("/tmp").mkdir("kstars");
+}
+
TestPlaceholderPath::~TestPlaceholderPath()
{
}
@@ -134,8 +139,6 @@ XMLEle* buildXML(
editXMLEle(ep, FITSDirectory.toStdString().c_str());
}
- //prXMLEle(stdout, root, 0);
-
return root;
}
@@ -153,7 +156,7 @@ void TestPlaceholderPath::testSchedulerProcessJobInfo_data()
"RawPrefix",
"FilterEnabled",
"ExpEnabled",
- "FITSDirectory",
+ "Format",
"targetName",
"signature",
};
@@ -178,12 +181,7 @@ void TestPlaceholderPath::testSchedulerProcessJobInfo()
QFETCH(QString, RawPrefix);
QFETCH(QString, FilterEnabled);
QFETCH(QString, ExpEnabled);
- QFETCH(QString, FITSDirectory);
- /*
- * replace \s / ( ) : * ~ " characters by _
- * Remove any two or more __ by _
- * Remove any _ at the end
- */
+ QFETCH(QString, Format);
QFETCH(QString, targetName);
QFETCH(QString, signature);
@@ -196,10 +194,9 @@ void TestPlaceholderPath::testSchedulerProcessJobInfo()
FilterEnabled,
ExpEnabled,
"",
- FITSDirectory);
+ Format);
Ekos::SequenceJob job(root);
- QCOMPARE(job.getCoreProperty(SequenceJob::SJ_Filter).toString(), Filter);
auto placeholderPath = Ekos::PlaceholderPath();
placeholderPath.processJobInfo(&job, targetName);
@@ -209,349 +206,224 @@ void TestPlaceholderPath::testSchedulerProcessJobInfo()
#endif
}
-void TestPlaceholderPath::testCaptureAddJob_data()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- const QList<const char*> columns =
- {
- "Exposure",
- "Filter",
- "Type",
- "Prefix",
- "RawPrefix",
- "FilterEnabled",
- "ExpEnabled",
- "FITSDirectory",
- "targetName",
- "signature",
- };
- for (const auto &column : columns)
- {
- QTest::addColumn<QString>(column);
- }
- parseCSV("testSchedulerProcessJobInfo_data.csv", columns);
-#endif
-}
-
-void TestPlaceholderPath::testCaptureAddJob()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- QFETCH(QString, Exposure);
- QFETCH(QString, Filter);
- QFETCH(QString, Type);
- QFETCH(QString, Prefix);
- QFETCH(QString, RawPrefix);
- QFETCH(QString, FilterEnabled);
- QFETCH(QString, ExpEnabled);
- QFETCH(QString, FITSDirectory);
- /*
- * replace \s / ( ) : * ~ " characters by _
- * Remove any two or more __ by _
- * Remove any _ at the end
- */
- QFETCH(QString, targetName);
- QFETCH(QString, signature);
-
- XMLEle *root = buildXML(
- Exposure,
- Filter,
- Type,
- Prefix,
- RawPrefix,
- FilterEnabled,
- ExpEnabled,
- "",
- FITSDirectory);
-
- // for addJob, targetName should already be sanitized
- // taken from scheduler.cpp:2491-2495
- targetName = targetName.replace( QRegularExpression("\\s|/|\\(|\\)|:|\\*|~|\"" ), "_" )
- // Remove any two or more __
- .replace( QRegularExpression("_{2,}"), "_")
- // Remove any _ at the end
- .replace( QRegularExpression("_$"), "");
- Ekos::SequenceJob job(root);
- QCOMPARE(job.getCoreProperty(SequenceJob::SJ_Filter).toString(), Filter);
- auto placeholderPath = Ekos::PlaceholderPath();
- placeholderPath.addJob(&job, targetName);
-
- QCOMPARE(job.getSignature(), signature);
-
- delXMLEle(root);
-#endif
-}
-
-void TestPlaceholderPath::testCCDGenerateFilename_data()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- QTest::addColumn<QString>("format");
- QTest::addColumn<bool>("batch_mode");
- QTest::addColumn<QString>("fitsDir");
- QTest::addColumn<QString>("seqPrefix");
- QTest::addColumn<int>("nextSequenceID");
- QTest::addColumn<QString>("desiredFilename");
-
- // format
- QTest::addRow("0") << "" << false << "" << "" << 0 << "/.+/kstars/000";
- QTest::addRow("1") << "" << false << "" << "" << 1 << "/.+/kstars/001";
- QTest::addRow("2") << "" << false << "" << "_ISO8601" << 0 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000";
- QTest::addRow("3") << "" << false << "" << "_ISO8601" << 1 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001";
- QTest::addRow("4") << "" << false << "" << "_ISO8601bar" << 0 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000";
- QTest::addRow("5") << "" << false << "" << "_ISO8601bar" << 1 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001";
- QTest::addRow("6") << "" << false << "" << "bar" << 0 << "/.+/kstars/bar_000";
- QTest::addRow("7") << "" << false << "" << "bar" << 1 << "/.+/kstars/bar_001";
- QTest::addRow("8") << "" << false << "foo" << "" << 0 << "/.+/kstars/000";
- QTest::addRow("9") << "" << false << "foo" << "" << 1 << "/.+/kstars/001";
- QTest::addRow("10") << "" << false << "foo" << "_ISO8601" << 0 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000";
- QTest::addRow("11") << "" << false << "foo" << "_ISO8601" << 1 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001";
- QTest::addRow("12") << "" << false << "foo" << "_ISO8601bar" << 0 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000";
- QTest::addRow("13") << "" << false << "foo" << "_ISO8601bar" << 1 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001";
- QTest::addRow("14") << "" << false << "foo" << "bar" << 0 << "/.+/kstars/bar_000";
- QTest::addRow("15") << "" << false << "foo" << "bar" << 1 << "/.+/kstars/bar_001";
- QTest::addRow("16") << "" << true << "" << "" << 0 << "/.+/000";
- QTest::addRow("17") << "" << true << "" << "" << 1 << "/.+/001";
- QTest::addRow("18") << "" << true << "" << "_ISO8601" << 0 <<
- "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000";
- QTest::addRow("19") << "" << true << "" << "_ISO8601" << 1 <<
- "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001";
- QTest::addRow("20") << "" << true << "" << "_ISO8601bar" << 0 <<
- "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000";
- QTest::addRow("21") << "" << true << "" << "_ISO8601bar" << 1 <<
- "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001";
- QTest::addRow("22") << "" << true << "" << "bar" << 0 << "/.+/bar_000";
- QTest::addRow("23") << "" << true << "" << "bar" << 1 << "/.+/bar_001";
- QTest::addRow("24") << "" << true << "foo" << "" << 0 << "foo/000";
- QTest::addRow("25") << "" << true << "foo" << "" << 1 << "foo/001";
- QTest::addRow("26") << "" << true << "foo" << "_ISO8601" << 0 <<
- "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000";
- QTest::addRow("27") << "" << true << "foo" << "_ISO8601" << 1 <<
- "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001";
- QTest::addRow("28") << "" << true << "foo" << "_ISO8601bar" << 0 <<
- "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000";
- QTest::addRow("29") << "" << true << "foo" << "_ISO8601bar" << 1 <<
- "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001";
- QTest::addRow("30") << "" << true << "foo" << "bar" << 0 << "foo/bar_000";
- QTest::addRow("31") << "" << true << "foo" << "bar" << 1 << "foo/bar_001";
- QTest::addRow("32") << ".fits" << false << "" << "" << 0 << "/.+/kstars/000.fits";
- QTest::addRow("33") << ".fits" << false << "" << "" << 1 << "/.+/kstars/001.fits";
- QTest::addRow("34") << ".fits" << false << "" << "_ISO8601" << 0 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000.fits";
- QTest::addRow("35") << ".fits" << false << "" << "_ISO8601" << 1 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001.fits";
- QTest::addRow("36") << ".fits" << false << "" << "_ISO8601bar" << 0 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000.fits";
- QTest::addRow("37") << ".fits" << false << "" << "_ISO8601bar" << 1 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001.fits";
- QTest::addRow("38") << ".fits" << false << "" << "bar" << 0 << "/.+/kstars/bar_000.fits";
- QTest::addRow("39") << ".fits" << false << "" << "bar" << 1 << "/.+/kstars/bar_001.fits";
- QTest::addRow("40") << ".fits" << false << "foo" << "" << 0 << "/.+/kstars/000.fits";
- QTest::addRow("41") << ".fits" << false << "foo" << "" << 1 << "/.+/kstars/001.fits";
- QTest::addRow("42") << ".fits" << false << "foo" << "_ISO8601" << 0 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000.fits";
- QTest::addRow("43") << ".fits" << false << "foo" << "_ISO8601" << 1 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001.fits";
- QTest::addRow("44") << ".fits" << false << "foo" << "_ISO8601bar" << 0 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000.fits";
- QTest::addRow("45") << ".fits" << false << "foo" << "_ISO8601bar" << 1 <<
- "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001.fits";
- QTest::addRow("46") << ".fits" << false << "foo" << "bar" << 0 << "/.+/kstars/bar_000.fits";
- QTest::addRow("47") << ".fits" << false << "foo" << "bar" << 1 << "/.+/kstars/bar_001.fits";
- QTest::addRow("48") << ".fits" << true << "" << "" << 0 << "/.+/000.fits";
- QTest::addRow("49") << ".fits" << true << "" << "" << 1 << "/.+/001.fits";
- QTest::addRow("50") << ".fits" << true << "" << "_ISO8601" << 0 <<
- "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000.fits";
- QTest::addRow("51") << ".fits" << true << "" << "_ISO8601" << 1 <<
- "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001.fits";
- QTest::addRow("52") << ".fits" << true << "" << "_ISO8601bar" << 0 <<
- "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000.fits";
- QTest::addRow("53") << ".fits" << true << "" << "_ISO8601bar" << 1 <<
- "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001.fits";
- QTest::addRow("54") << ".fits" << true << "" << "bar" << 0 << "/.+/bar_000.fits";
- QTest::addRow("55") << ".fits" << true << "" << "bar" << 1 << "/.+/bar_001.fits";
- QTest::addRow("56") << ".fits" << true << "foo" << "" << 0 << "foo/000.fits";
- QTest::addRow("57") << ".fits" << true << "foo" << "" << 1 << "foo/001.fits";
- QTest::addRow("58") << ".fits" << true << "foo" << "_ISO8601" << 0 <<
- "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000.fits";
- QTest::addRow("59") << ".fits" << true << "foo" << "_ISO8601" << 1 <<
- "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001.fits";
- QTest::addRow("60") << ".fits" << true << "foo" << "_ISO8601bar" << 0 <<
- "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000.fits";
- QTest::addRow("61") << ".fits" << true << "foo" << "_ISO8601bar" << 1 <<
- "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001.fits";
- QTest::addRow("62") << ".fits" << true << "foo" << "bar" << 0 << "foo/bar_000.fits";
- QTest::addRow("63") << ".fits" << true << "foo" << "bar" << 1 << "foo/bar_001.fits";
-#endif
-}
-
-void TestPlaceholderPath::testCCDGenerateFilename()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- QFETCH(QString, format);
- QFETCH(bool, batch_mode);
- QFETCH(QString, fitsDir);
- QFETCH(QString, seqPrefix);
- QFETCH(int, nextSequenceID);
- QFETCH(QString, desiredFilename);
-
- QString filename;
- auto placeholderPath = Ekos::PlaceholderPath();
- placeholderPath.generateFilenameOld(format, batch_mode, &filename, fitsDir, seqPrefix, nextSequenceID);
-
- QVERIFY(QRegularExpression(desiredFilename).match(filename).hasMatch());
-#endif
-}
-
-void TestPlaceholderPath::testSequenceJobSignature_data()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- QTest::addColumn<QString>("localDir");
- QTest::addColumn<QString>("directoryPostfix");
- QTest::addColumn<QString>("fullPrefix");
- QTest::addColumn<QString>("signature");
-
- QTest::addRow("empty") << "" << "" << "" << "/";
- QTest::addRow("localDir") << "/foo" << "" << "" << "/foo/";
- QTest::addRow("directoryPostfix") << "" << "bar" << "" << "bar/";
- QTest::addRow("fullPrefix") << "" << "" << "toto" << "/toto";
- QTest::addRow("localDir+directoryPostfix") << "/foo" << "bar" << "" << "/foobar/";
- QTest::addRow("directoryPostfix+fullPrefix") << "" << "bar" << "toto" << "bar/toto";
- QTest::addRow("localDir+fullPrefix") << "/foo" << "" << "toto" << "/foo/toto";
- QTest::addRow("localDir+directoryPostfix+fullPrefix") << "/foo" << "bar" << "toto" << "/foobar/toto";
-#endif
-}
-
-Q_DECLARE_METATYPE(CCDFrameType)
-
-void TestPlaceholderPath::testSequenceJobSignature()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- QFETCH(QString, localDir);
- QFETCH(QString, directoryPostfix);
- QFETCH(QString, fullPrefix);
- QFETCH(QString, signature);
-
- QSharedPointer<Ekos::CaptureModuleState> captureModuleState;
- captureModuleState.reset(new Ekos::CaptureModuleState());
- QSharedPointer<Ekos::CaptureDeviceAdaptor> cda;
- cda.reset(new Ekos::CaptureDeviceAdaptor(captureModuleState));
- auto job = new Ekos::SequenceJob(cda, captureModuleState);
- job->setCoreProperty(SequenceJob::SJ_LocalDirectory, localDir);
- job->setCoreProperty(SequenceJob::SJ_DirectoryPostfix, directoryPostfix);
- job->setCoreProperty(SequenceJob::SJ_FullPrefix, fullPrefix);
-
- QCOMPARE(job->getSignature(), signature);
-
- delete job;
-#endif
-}
-
-void TestPlaceholderPath::testFullNamingSequence_data()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- const QList<const char*> columns =
- {
- "Exposure",
- "Filter",
- "Type",
- "Prefix",
- "RawPrefix",
- "FilterEnabled",
- "ExpEnabled",
- "TimeStampEnabled",
- "FITSDirectory",
- "targetName",
- "batch_mode",
- "nextSequenceID",
- "result",
- };
- for (const auto &column : columns)
- {
- QTest::addColumn<QString>(column);
- }
- parseCSV("testFullNamingSequence_data_small.csv", columns);
-#endif
-}
-
-void TestPlaceholderPath::testFullNamingSequence()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
-
- QFETCH(QString, Exposure);
- QFETCH(QString, Filter);
- QFETCH(QString, Type);
- QFETCH(QString, Prefix);
- QFETCH(QString, RawPrefix);
- QFETCH(QString, FilterEnabled);
- QFETCH(QString, ExpEnabled);
- QFETCH(QString, TimeStampEnabled);
- QFETCH(QString, FITSDirectory);
- QFETCH(QString, targetName);
- QFETCH(QString, batch_mode);
- QFETCH(QString, nextSequenceID);
- QFETCH(QString, result);
-
- XMLEle *root = buildXML(
- Exposure,
- Filter,
- Type,
- Prefix,
- RawPrefix,
- FilterEnabled,
- ExpEnabled,
- TimeStampEnabled,
- FITSDirectory);
-
- Ekos::SequenceJob job(root);
- auto placeholderPath = Ekos::PlaceholderPath();
- // for addJob, targetName should already be sanitized
- // taken from scheduler.cpp:2491-2495
- targetName = targetName.replace( QRegularExpression("\\s|/|\\(|\\)|:|\\*|~|\"" ), "_" )
- // Remove any two or more __
- .replace( QRegularExpression("_{2,}"), "_")
- // Remove any _ at the end
- .replace( QRegularExpression("_$"), "");
- placeholderPath.addJob(&job, targetName);
- QString fitsDir, filename;
- // from sequencejob.cpp:302-303
- auto localDir = job.getCoreProperty(SequenceJob::SJ_LocalDirectory).toString();
- if (localDir.isEmpty() == false)
- fitsDir = localDir + job.getCoreProperty(SequenceJob::SJ_DirectoryPostfix).toString();
- placeholderPath.generateFilenameOld(".fits",
- bool(batch_mode.toInt()),
- &filename,
- fitsDir,
- job.getCoreProperty(SequenceJob::SJ_FullPrefix).toString(),
- nextSequenceID.toInt());
- //QCOMPARE(filename, result);
- QVERIFY2(QRegularExpression(result).match(filename).hasMatch(),
- QString("\nExpected: %1\nObtained: %2\n").arg(result, filename).toStdString().c_str());
-
-#endif
-}
+//void TestPlaceholderPath::testCCDGenerateFilename_data()
+//{
+//#if QT_VERSION < 0x050900
+// QSKIP("Skipping fixture-based test on old QT version.");
+//#else
+// QTest::addColumn<QString>("format");
+// QTest::addColumn<bool>("batch_mode");
+// QTest::addColumn<QString>("fitsDir");
+// QTest::addColumn<QString>("seqPrefix");
+// QTest::addColumn<int>("nextSequenceID");
+// QTest::addColumn<QString>("desiredFilename");
+//
+// // format
+// QTest::addRow("0") << "" << false << "" << "" << 0 << "/.+/kstars/000";
+// QTest::addRow("1") << "" << false << "" << "" << 1 << "/.+/kstars/001";
+// QTest::addRow("2") << "" << false << "" << "_ISO8601" << 0 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000";
+// QTest::addRow("3") << "" << false << "" << "_ISO8601" << 1 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001";
+// QTest::addRow("4") << "" << false << "" << "_ISO8601bar" << 0 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000";
+// QTest::addRow("5") << "" << false << "" << "_ISO8601bar" << 1 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001";
+// QTest::addRow("6") << "" << false << "" << "bar" << 0 << "/.+/kstars/bar_000";
+// QTest::addRow("7") << "" << false << "" << "bar" << 1 << "/.+/kstars/bar_001";
+// QTest::addRow("8") << "" << false << "foo" << "" << 0 << "/.+/kstars/000";
+// QTest::addRow("9") << "" << false << "foo" << "" << 1 << "/.+/kstars/001";
+// QTest::addRow("10") << "" << false << "foo" << "_ISO8601" << 0 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000";
+// QTest::addRow("11") << "" << false << "foo" << "_ISO8601" << 1 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001";
+// QTest::addRow("12") << "" << false << "foo" << "_ISO8601bar" << 0 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000";
+// QTest::addRow("13") << "" << false << "foo" << "_ISO8601bar" << 1 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001";
+// QTest::addRow("14") << "" << false << "foo" << "bar" << 0 << "/.+/kstars/bar_000";
+// QTest::addRow("15") << "" << false << "foo" << "bar" << 1 << "/.+/kstars/bar_001";
+// QTest::addRow("16") << "" << true << "" << "" << 0 << "/.+/000";
+// QTest::addRow("17") << "" << true << "" << "" << 1 << "/.+/001";
+// QTest::addRow("18") << "" << true << "" << "_ISO8601" << 0 <<
+// "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000";
+// QTest::addRow("19") << "" << true << "" << "_ISO8601" << 1 <<
+// "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001";
+// QTest::addRow("20") << "" << true << "" << "_ISO8601bar" << 0 <<
+// "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000";
+// QTest::addRow("21") << "" << true << "" << "_ISO8601bar" << 1 <<
+// "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001";
+// QTest::addRow("22") << "" << true << "" << "bar" << 0 << "/.+/bar_000";
+// QTest::addRow("23") << "" << true << "" << "bar" << 1 << "/.+/bar_001";
+// QTest::addRow("24") << "" << true << "foo" << "" << 0 << "foo/000";
+// QTest::addRow("25") << "" << true << "foo" << "" << 1 << "foo/001";
+// QTest::addRow("26") << "" << true << "foo" << "_ISO8601" << 0 <<
+// "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000";
+// QTest::addRow("27") << "" << true << "foo" << "_ISO8601" << 1 <<
+// "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001";
+// QTest::addRow("28") << "" << true << "foo" << "_ISO8601bar" << 0 <<
+// "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000";
+// QTest::addRow("29") << "" << true << "foo" << "_ISO8601bar" << 1 <<
+// "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001";
+// QTest::addRow("30") << "" << true << "foo" << "bar" << 0 << "foo/bar_000";
+// QTest::addRow("31") << "" << true << "foo" << "bar" << 1 << "foo/bar_001";
+// QTest::addRow("32") << ".fits" << false << "" << "" << 0 << "/.+/kstars/000.fits";
+// QTest::addRow("33") << ".fits" << false << "" << "" << 1 << "/.+/kstars/001.fits";
+// QTest::addRow("34") << ".fits" << false << "" << "_ISO8601" << 0 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000.fits";
+// QTest::addRow("35") << ".fits" << false << "" << "_ISO8601" << 1 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001.fits";
+// QTest::addRow("36") << ".fits" << false << "" << "_ISO8601bar" << 0 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000.fits";
+// QTest::addRow("37") << ".fits" << false << "" << "_ISO8601bar" << 1 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001.fits";
+// QTest::addRow("38") << ".fits" << false << "" << "bar" << 0 << "/.+/kstars/bar_000.fits";
+// QTest::addRow("39") << ".fits" << false << "" << "bar" << 1 << "/.+/kstars/bar_001.fits";
+// QTest::addRow("40") << ".fits" << false << "foo" << "" << 0 << "/.+/kstars/000.fits";
+// QTest::addRow("41") << ".fits" << false << "foo" << "" << 1 << "/.+/kstars/001.fits";
+// QTest::addRow("42") << ".fits" << false << "foo" << "_ISO8601" << 0 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000.fits";
+// QTest::addRow("43") << ".fits" << false << "foo" << "_ISO8601" << 1 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001.fits";
+// QTest::addRow("44") << ".fits" << false << "foo" << "_ISO8601bar" << 0 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000.fits";
+// QTest::addRow("45") << ".fits" << false << "foo" << "_ISO8601bar" << 1 <<
+// "/.+/kstars/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001.fits";
+// QTest::addRow("46") << ".fits" << false << "foo" << "bar" << 0 << "/.+/kstars/bar_000.fits";
+// QTest::addRow("47") << ".fits" << false << "foo" << "bar" << 1 << "/.+/kstars/bar_001.fits";
+// QTest::addRow("48") << ".fits" << true << "" << "" << 0 << "/.+/000.fits";
+// QTest::addRow("49") << ".fits" << true << "" << "" << 1 << "/.+/001.fits";
+// QTest::addRow("50") << ".fits" << true << "" << "_ISO8601" << 0 <<
+// "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000.fits";
+// QTest::addRow("51") << ".fits" << true << "" << "_ISO8601" << 1 <<
+// "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001.fits";
+// QTest::addRow("52") << ".fits" << true << "" << "_ISO8601bar" << 0 <<
+// "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000.fits";
+// QTest::addRow("53") << ".fits" << true << "" << "_ISO8601bar" << 1 <<
+// "/.+/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001.fits";
+// QTest::addRow("54") << ".fits" << true << "" << "bar" << 0 << "/.+/bar_000.fits";
+// QTest::addRow("55") << ".fits" << true << "" << "bar" << 1 << "/.+/bar_001.fits";
+// QTest::addRow("56") << ".fits" << true << "foo" << "" << 0 << "foo/000.fits";
+// QTest::addRow("57") << ".fits" << true << "foo" << "" << 1 << "foo/001.fits";
+// QTest::addRow("58") << ".fits" << true << "foo" << "_ISO8601" << 0 <<
+// "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_000.fits";
+// QTest::addRow("59") << ".fits" << true << "foo" << "_ISO8601" << 1 <<
+// "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}_001.fits";
+// QTest::addRow("60") << ".fits" << true << "foo" << "_ISO8601bar" << 0 <<
+// "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_000.fits";
+// QTest::addRow("61") << ".fits" << true << "foo" << "_ISO8601bar" << 1 <<
+// "foo/_\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2}bar_001.fits";
+// QTest::addRow("62") << ".fits" << true << "foo" << "bar" << 0 << "foo/bar_000.fits";
+// QTest::addRow("63") << ".fits" << true << "foo" << "bar" << 1 << "foo/bar_001.fits";
+//#endif
+//}
+
+//void TestPlaceholderPath::testCCDGenerateFilename()
+//{
+//#if QT_VERSION < 0x050900
+// QSKIP("Skipping fixture-based test on old QT version.");
+//#else
+// QFETCH(QString, format);
+// QFETCH(bool, batch_mode);
+// QFETCH(QString, fitsDir);
+// QFETCH(QString, seqPrefix);
+// QFETCH(int, nextSequenceID);
+// QFETCH(QString, desiredFilename);
+//
+// QString filename;
+// auto placeholderPath = Ekos::PlaceholderPath();
+// placeholderPath.generateFilenameOld(format, batch_mode, &filename, fitsDir, seqPrefix, nextSequenceID);
+//
+// QVERIFY(QRegularExpression(desiredFilename).match(filename).hasMatch());
+//#endif
+//}
+
+//void TestPlaceholderPath::testFullNamingSequence_data()
+//{
+//#if QT_VERSION < 0x050900
+// QSKIP("Skipping fixture-based test on old QT version.");
+//#else
+// const QList<const char*> columns =
+// {
+// "Exposure",
+// "Filter",
+// "Type",
+// "Prefix",
+// "RawPrefix",
+// "FilterEnabled",
+// "ExpEnabled",
+// "TimeStampEnabled",
+// "FITSDirectory",
+// "targetName",
+// "batch_mode",
+// "nextSequenceID",
+// "result",
+// };
+// for (const auto &column : columns)
+// {
+// QTest::addColumn<QString>(column);
+// }
+// parseCSV("testFullNamingSequence_data_small.csv", columns);
+//#endif
+//}
+
+//void TestPlaceholderPath::testFullNamingSequence()
+//{
+//#if QT_VERSION < 0x050900
+// QSKIP("Skipping fixture-based test on old QT version.");
+//#else
+//
+// QFETCH(QString, Exposure);
+// QFETCH(QString, Filter);
+// QFETCH(QString, Type);
+// QFETCH(QString, Prefix);
+// QFETCH(QString, RawPrefix);
+// QFETCH(QString, FilterEnabled);
+// QFETCH(QString, ExpEnabled);
+// QFETCH(QString, TimeStampEnabled);
+// QFETCH(QString, FITSDirectory);
+// QFETCH(QString, targetName);
+// QFETCH(QString, batch_mode);
+// QFETCH(QString, nextSequenceID);
+// QFETCH(QString, result);
+//
+// XMLEle *root = buildXML(
+// Exposure,
+// Filter,
+// Type,
+// Prefix,
+// RawPrefix,
+// FilterEnabled,
+// ExpEnabled,
+// TimeStampEnabled,
+// FITSDirectory);
+//
+// Ekos::SequenceJob job(root);
+// auto placeholderPath = Ekos::PlaceholderPath();
+// // for addJob, targetName should already be sanitized
+// // taken from scheduler.cpp:2491-2495
+// targetName = targetName.replace( QRegularExpression("\\s|/|\\(|\\)|:|\\*|~|\"" ), "_" )
+// // Remove any two or more __
+// .replace( QRegularExpression("_{2,}"), "_")
+// // Remove any _ at the end
+// .replace( QRegularExpression("_$"), "");
+// placeholderPath.addJob(&job, targetName);
+// QString fitsDir, filename;
+// // from sequencejob.cpp:302-303
+// auto localDir = job.getCoreProperty(SequenceJob::SJ_LocalDirectory).toString();
+// if (localDir.isEmpty() == false)
+// fitsDir = localDir + job.getCoreProperty(SequenceJob::SJ_DirectoryPostfix).toString();
+// placeholderPath.generateFilenameOld(".fits",
+// bool(batch_mode.toInt()),
+// &filename,
+// fitsDir,
+// job.getCoreProperty(SequenceJob::SJ_FullPrefix).toString(),
+// nextSequenceID.toInt());
+// QVERIFY2(QRegularExpression(result).match(filename).hasMatch(),
+// QString("\nExpected: %1\nObtained: %2\n").arg(result, filename).toStdString().c_str());
+//
+//#endif
+//}
void TestPlaceholderPath::testFlexibleNaming_data()
{
@@ -579,37 +451,36 @@ void TestPlaceholderPath::testFlexibleNaming_data()
{
QTest::addColumn<QString>(column);
}
- QTest::addRow("infinite") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/%f_100x30s_RGB.esq"
- << "" << "1" << "" << "%f" << "^%f_100x30s_RGB\\.fits$";
QTest::addRow("f") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%f" << "^100x30s_RGB\\.fits$";
- QTest::addRow("p") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%p" << "^/home/user/Images/NGC7635\\.fits$";
- QTest::addRow("p1") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%p1" << "^/home/user/Images/NGC7635\\.fits$";
- QTest::addRow("p2") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%p2" << "^/home/user/Images\\.fits$";
- QTest::addRow("p3") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%p3" << "^/home/user\\.fits$";
- QTest::addRow("p4") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%p4" << "^/home\\.fits$";
- QTest::addRow("d") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%d" << "^NGC7635\\.fits$";
- QTest::addRow("d1") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%d1" << "^NGC7635\\.fits$";
- QTest::addRow("d2") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%d2" << "^Images\\.fits$";
- QTest::addRow("d3") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%d3" << "^user\\.fits$";
- QTest::addRow("d4") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
- "1" << "" << "%d4" << "^home\\.fits$";
+ "1" << "" << "/%f" << "^/100x30s_RGB\\.fits$";
+ // %p & %d tags disabled for simplicity
+ // QTest::addRow("p") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%p" << "^/home/user/Images/NGC7635\\.fits$";
+ // QTest::addRow("p1") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%p1" << "^/home/user/Images/NGC7635\\.fits$";
+ // QTest::addRow("p2") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%p2" << "^/home/user/Images\\.fits$";
+ // QTest::addRow("p3") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%p3" << "^/home/user\\.fits$";
+ // QTest::addRow("p4") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%p4" << "^/home\\.fits$";
+ // QTest::addRow("d") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%d" << "^NGC7635\\.fits$";
+ // QTest::addRow("d1") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%d1" << "^NGC7635\\.fits$";
+ // QTest::addRow("d2") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%d2" << "^Images\\.fits$";
+ // QTest::addRow("d3") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%d3" << "^user\\.fits$";
+ // QTest::addRow("d4") << "" << "" << "" << "" << "" << "" << "" << "" << "/home/user/Images/NGC7635/100x30s_RGB.esq" << "" <<
+ // "1" << "" << "%d4" << "^home\\.fits$";
QTest::addRow("t") << "" << "" << "" << "" << "" << "" << "" << "" << "" << "target" << "" << ""
<< "%t" << "^/tmp/kstars/target\\.fits$";
QTest::addRow("T") << "" << "" << "Light" << "" << "" << "" << "" << "" << "" << "" << "" << ""
<< "%T" << "^/tmp/kstars/Light\\.fits$";
- QTest::addRow("F") << "" << "sobel" << "" << "prefix" << "" << "1" << "" << "" << "" << "" << "" << ""
- << "%F" << "^/tmp/kstars/sobel\\.fits$";
+ QTest::addRow("F") << "" << "H_Alpha" << "" << "prefix" << "" << "1" << "" << "" << "" << "" << "" << ""
+ << "%F" << "^/tmp/kstars/H_Alpha\\.fits$";
QTest::addRow("e") << "0.001" << "" << "" << "prefix" << "" << "" << "1" << "" << "" << "" << "" << ""
<< "%e" << "^/tmp/kstars/0.001_secs\\.fits$";
QTest::addRow("D") << "" << "" << "" << "prefix" << "" << "" << "" << "1" << "" << "" << "" << ""
@@ -633,6 +504,7 @@ void TestPlaceholderPath::testFlexibleNaming_data()
"^/tmp/kstars/%a_\\.fits$";
parseCSV("testFlexibleNaming_data_small.csv", columns);
+
#endif
}
@@ -665,27 +537,114 @@ void TestPlaceholderPath::testFlexibleNaming()
FilterEnabled,
ExpEnabled,
TimeStampEnabled,
- "");
+ format);
Ekos::SequenceJob job(root);
auto placeholderPath = Ekos::PlaceholderPath(seqFilename);
- QString filename;
bool bm = bool(batch_mode.toInt());
int i = nextSequenceID.toInt();
- placeholderPath.generateFilename(format, job, targetName, bm, i, ".fits", &filename);
+ QString filename = placeholderPath.generateFilename(job, targetName, bm, i, ".fits", "");
QVERIFY2(QRegularExpression(result).match(filename).hasMatch(),
QString("\nExpected: %1\nObtained: %2\n").arg(result, filename).toStdString().c_str());
job.setCoreProperty(SequenceJob::SJ_TargetName, targetName);
placeholderPath.setGenerateFilenameSettings(job);
- placeholderPath.generateFilename(format, job.getCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled).toBool(), bm, i,
- ".fits", &filename);
+ filename = placeholderPath.generateFilename(bm, i, ".fits", "");
QVERIFY2(QRegularExpression(result).match(filename).hasMatch(),
QString("\nExpected: %1\nObtained: %2\n").arg(result, filename).toStdString().c_str());
#endif
}
-void TestPlaceholderPath::testFlexibleNamingChangeBehavior_data()
+void TestPlaceholderPath::testFlexibleNamingGlob_data()
+{
+#if QT_VERSION < 0x050900
+ QSKIP("Skipping fixture-based test on old QT version.");
+#else
+ const QList<const char*> columns =
+ {
+ "TimeStampEnabled",
+ "nextSequenceID",
+ "format",
+ "result",
+ };
+ for (const auto &column : columns)
+ {
+ QTest::addColumn<QString>(column);
+ }
+ QTest::addRow("D") << "1" << "" << "%D" << "/tmp/kstars/\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d-\\d\\d-\\d\\d.fits";
+ QTest::addRow("s_D") << "1" << "" << "%D_%s" <<
+ "/tmp/kstars/\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d-\\d\\d-\\d\\d_(?<id>\\d+).fits";
+ QTest::addRow("s") << "" << "1" << "%s" << "/tmp/kstars/(?<id>\\d+).fits";
+ QTest::addRow("s1") << "" << "1" << "%s1" << "/tmp/kstars/(?<id>\\d+).fits";
+ QTest::addRow("s2") << "" << "1" << "%s2" << "/tmp/kstars/(?<id>\\d+).fits";
+ QTest::addRow("s3") << "" << "1" << "%s3" << "/tmp/kstars/(?<id>\\d+).fits";
+ QTest::addRow("s4") << "" << "1" << "%s4" << "/tmp/kstars/(?<id>\\d+).fits";
+
+ QTest::addRow("_s") << "" << "1" << "_%s" << "/tmp/kstars/_(?<id>\\d+).fits";
+#endif
+}
+
+void TestPlaceholderPath::testFlexibleNamingGlob()
+{
+#if QT_VERSION < 0x050900
+ QSKIP("Skipping fixture-based test on old QT version.");
+#else
+ QFETCH(QString, TimeStampEnabled);
+ QFETCH(QString, nextSequenceID);
+ QFETCH(QString, format);
+ QFETCH(QString, result);
+
+ XMLEle *root = buildXML(
+ "",
+ "",
+ "",
+ "prefix",
+ "",
+ "",
+ "",
+ TimeStampEnabled,
+ format);
+
+ Ekos::SequenceJob job(root);
+ auto placeholderPath = Ekos::PlaceholderPath("");
+ bool bm = false;
+ int i = nextSequenceID.toInt();
+ QString filename = placeholderPath.generateFilename(job, "", bm, i, ".fits", "", true);
+ QCOMPARE(result, filename);
+ job.setCoreProperty(SequenceJob::SJ_TargetName, "");
+ placeholderPath.setGenerateFilenameSettings(job);
+ filename = placeholderPath.generateFilename(bm, i, ".fits", "", true);
+ QCOMPARE(result, filename);
+#endif
+}
+
+void TestPlaceholderPath::testRemainingPlaceholders_data()
+{
+#if QT_VERSION < 0x050900
+ QSKIP("Skipping fixture-based test on old QT version.");
+#else
+ QTest::addColumn<QString>("Filename");
+ QTest::addColumn<QStringList>("Result");
+ QTest::addRow("0") << "test.fits" << QStringList();
+ QTest::addRow("1") << "%f_test.fits" << QStringList({"%f"});
+ QTest::addRow("2") << "%p/%f_test.fits" << QStringList({"%p", "%f"});
+#endif
+}
+
+void TestPlaceholderPath::testRemainingPlaceholders()
+{
+#if QT_VERSION < 0x050900
+ QSKIP("Skipping fixture-based test on old QT version.");
+#else
+ QFETCH(QString, Filename);
+ QFETCH(QStringList, Result);
+
+ auto remainingPlaceholders = Ekos::PlaceholderPath::remainingPlaceholders(Filename);
+ QCOMPARE(remainingPlaceholders, Result);
+#endif
+}
+
+void TestPlaceholderPath::testGetCompletedFileIds_data()
{
#if QT_VERSION < 0x050900
QSKIP("Skipping fixture-based test on old QT version.");
@@ -702,21 +661,30 @@ void TestPlaceholderPath::testFlexibleNamingChangeBehavior_data()
"TimeStampEnabled",
"seqFilename",
"targetName",
- "batch_mode",
- "nextSequenceID",
"format",
- "old_result",
- "new_result",
};
for (const auto &column : columns)
{
QTest::addColumn<QString>(column);
}
- parseCSV("testFlexibleNamingChangeBehavior_data_small.csv", columns);
+
+ // tags %d & %p disabled for simplicity
+ // QTest::addRow("f1") << "0.001" << "H_Alpha" << "Light" << "prefix" << "" << "1" << "1" << "1" <<
+ // "/tmp/kstars/NGC7635/100x30s_RGB.esq" << "M42" << "%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3";
+ // QTest::addRow("f2") << "0.001" << "H_Alpha" << "Light" << "prefix" << "" << "1" << "1" << "1" <<
+ // "/tmp/kstars/NGC7635/100x30s_RGB.esq" << "M42" << "%p1/%t/%T/%F/%D_%s3_%t_%T_%F_%e";
+ // QTest::addRow("f3") << "0.001" << "H_Alpha" << "Light" << "prefix" << "" << "1" << "1" << "0" <<
+ // "/tmp/kstars/NGC7635/100x30s_RGB.esq" << "M42" << "%p1/%t/%T/%F/%s3_%t_%T_%F_%e";
+ QTest::addRow("f1") << "0.001" << "H_Alpha" << "Light" << "prefix" << "" << "1" << "1" << "1" <<
+ "/tmp/kstars/NGC7635/100x30s_RGB.esq" << "M42" << "/tmp/kstars/%t/%T/%F/%t_%T_%F_%e_%D_%s3";
+ QTest::addRow("f2") << "0.001" << "H_Alpha" << "Light" << "prefix" << "" << "1" << "1" << "1" <<
+ "/tmp/kstars/NGC7635/100x30s_RGB.esq" << "M42" << "/tmp/kstars/%t/%T/%F/%D_%s3_%t_%T_%F_%e";
+ QTest::addRow("f3") << "0.001" << "H_Alpha" << "Light" << "prefix" << "" << "1" << "1" << "0" <<
+ "/tmp/kstars/NGC7635/100x30s_RGB.esq" << "M42" << "/tmp/kstars/%t/%T/%F/%s3_%t_%T_%F_%e";
#endif
}
-void TestPlaceholderPath::testFlexibleNamingChangeBehavior()
+void TestPlaceholderPath::testGetCompletedFileIds()
{
#if QT_VERSION < 0x050900
QSKIP("Skipping fixture-based test on old QT version.");
@@ -731,11 +699,7 @@ void TestPlaceholderPath::testFlexibleNamingChangeBehavior()
QFETCH(QString, TimeStampEnabled);
QFETCH(QString, seqFilename);
QFETCH(QString, targetName);
- QFETCH(QString, batch_mode);
- QFETCH(QString, nextSequenceID);
QFETCH(QString, format);
- QFETCH(QString, old_result);
- QFETCH(QString, new_result);
XMLEle *root = buildXML(
Exposure,
@@ -746,59 +710,32 @@ void TestPlaceholderPath::testFlexibleNamingChangeBehavior()
FilterEnabled,
ExpEnabled,
TimeStampEnabled,
- "");
+ format);
Ekos::SequenceJob job(root);
auto placeholderPath = Ekos::PlaceholderPath(seqFilename);
- QString filename;
- bool bm = bool(batch_mode.toInt());
- int i = nextSequenceID.toInt();
- placeholderPath.generateFilename(format, job, targetName, bm, i, ".fits", &filename);
- QEXPECT_FAIL("", "original filename had __ or // or /_ that are now removed", Continue);
- QVERIFY2(QRegularExpression(old_result).match(filename).hasMatch(),
- QString("\nNot Expected: %1\nObtained: %2\n").arg(old_result, filename).toStdString().c_str());
- QVERIFY2(QRegularExpression(new_result).match(filename).hasMatch(),
- QString("\nExpected: %1\nObtained: %2\n").arg(new_result, filename).toStdString().c_str());
-
+ bool bm = true;
job.setCoreProperty(SequenceJob::SJ_TargetName, targetName);
placeholderPath.setGenerateFilenameSettings(job);
- placeholderPath.generateFilename(format,
- job.getCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled).toBool(),
- bm,
- i,
- ".fits",
- &filename);
- QEXPECT_FAIL("", "original filename had __ or // or /_ that are now removed", Continue);
- QVERIFY2(QRegularExpression(old_result).match(filename).hasMatch(),
- QString("\nNot Expected: %1\nObtained: %2\n").arg(old_result, filename).toStdString().c_str());
- QVERIFY2(QRegularExpression(new_result).match(filename).hasMatch(),
- QString("\nExpected: %1\nObtained: %2\n").arg(new_result, filename).toStdString().c_str());
-#endif
-}
+ int nextSequenceID;
+ for (int id = 1; id < 4; id++)
+ {
+ nextSequenceID = placeholderPath.getCompletedFiles(job, targetName);
+ QCOMPARE(nextSequenceID, id - 1);
+ nextSequenceID = placeholderPath.checkSeqBoundary(job, targetName);
+ QCOMPARE(nextSequenceID, id);
+ QString filename = placeholderPath.generateFilename(bm, id, ".fits", "");
+ QDir path;
+ path.mkpath(QFileInfo(filename).dir().path());
+ QFile(filename).open(QIODevice::WriteOnly);
+ }
-void TestPlaceholderPath::testRemainingPlaceholders_data()
-{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- QTest::addColumn<QString>("Filename");
- QTest::addColumn<QStringList>("Result");
- QTest::addRow("0") << "test.fits" << QStringList();
- QTest::addRow("1") << "%f_test.fits" << QStringList({"%f"});
- QTest::addRow("2") << "%p/%f_test.fits" << QStringList({"%p", "%f"});
#endif
}
-void TestPlaceholderPath::testRemainingPlaceholders()
+void TestPlaceholderPath::cleanupTestCase()
{
-#if QT_VERSION < 0x050900
- QSKIP("Skipping fixture-based test on old QT version.");
-#else
- QFETCH(QString, Filename);
- QFETCH(QStringList, Result);
-
- auto remainingPlaceholders = Ekos::PlaceholderPath::remainingPlaceholders(Filename);
- QCOMPARE(remainingPlaceholders, Result);
-#endif
+ QDir("/tmp/kstars").removeRecursively();
}
+
QTEST_GUILESS_MAIN(TestPlaceholderPath)
diff --git a/Tests/capture/test_placeholderpath.h b/Tests/capture/test_placeholderpath.h
index c0b6bcc12..70454265d 100644
--- a/Tests/capture/test_placeholderpath.h
+++ b/Tests/capture/test_placeholderpath.h
@@ -28,28 +28,29 @@ class TestPlaceholderPath : public QObject
private slots:
+ void initTestCase();
void testSchedulerProcessJobInfo_data();
void testSchedulerProcessJobInfo();
- void testCaptureAddJob_data();
- void testCaptureAddJob();
+// void testCCDGenerateFilename_data();
+// void testCCDGenerateFilename();
- void testCCDGenerateFilename_data();
- void testCCDGenerateFilename();
-
- void testSequenceJobSignature_data();
- void testSequenceJobSignature();
-
- void testFullNamingSequence_data();
- void testFullNamingSequence();
+// void testFullNamingSequence_data();
+// void testFullNamingSequence();
void testFlexibleNaming_data();
void testFlexibleNaming();
- void testFlexibleNamingChangeBehavior_data();
- void testFlexibleNamingChangeBehavior();
+
+ void testFlexibleNamingGlob_data();
+ void testFlexibleNamingGlob();
void testRemainingPlaceholders_data();
void testRemainingPlaceholders();
+
+ void testGetCompletedFileIds_data();
+ void testGetCompletedFileIds();
+
+ void cleanupTestCase();
};
#endif
diff --git a/Tests/kstars_ui/test_ekos_capture.cpp b/Tests/kstars_ui/test_ekos_capture.cpp
index 0657b57ee..295a52a87 100644
--- a/Tests/kstars_ui/test_ekos_capture.cpp
+++ b/Tests/kstars_ui/test_ekos_capture.cpp
@@ -40,7 +40,7 @@ void TestEkosCapture::init()
{
Ekos::Manager * const ekos = Ekos::Manager::Instance();
- // Wait for Capture to come up, switch to Focus tab
+ // Wait for Capture to come up, switch to Capture tab
QTRY_VERIFY_WITH_TIMEOUT(ekos->captureModule() != nullptr, 5000);
KTRY_EKOS_GADGET(QTabWidget, toolsWidget);
toolsWidget->setCurrentWidget(ekos->captureModule());
@@ -171,7 +171,7 @@ void TestEkosCapture::testCaptureSingle()
QVERIFY(destination.autoRemove());
// Add an exposure
- KTRY_CAPTURE_ADD_LIGHT(0.5, 1, 0, "Red", destination.path());
+ KTRY_CAPTURE_ADD_LIGHT(0.5, 1, 0, "Red", destination.path()+"/%T_");
// Start capturing and wait for procedure to end (visual icon changing)
KTRY_CAPTURE_GADGET(QPushButton, startB);
@@ -183,7 +183,7 @@ void TestEkosCapture::testCaptureSingle()
// Verify a FITS file was created
QTRY_VERIFY_WITH_TIMEOUT(m_CaptureHelper->searchFITS(QDir(destination.path())).count() == 1, 1000);
QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[0].startsWith("Light_"));
- QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[0].endsWith("_001.fits"));
+ QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[0].endsWith("001.fits"));
// Reset sequence state - this makes a confirmation dialog appear
volatile bool dialogValidated = false;
@@ -208,9 +208,9 @@ void TestEkosCapture::testCaptureSingle()
// Verify an additional FITS file was created - asynchronously eventually
QTRY_VERIFY_WITH_TIMEOUT(m_CaptureHelper->searchFITS(QDir(destination.path())).count() == 2, 2000);
QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[0].startsWith("Light_"));
- QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[0].endsWith("_001.fits"));
+ QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[0].endsWith("001.fits"));
QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[1].startsWith("Light_"));
- QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[1].endsWith("_002.fits"));
+ QVERIFY(m_CaptureHelper->searchFITS(QDir(destination.path()))[1].endsWith("002.fits"));
// TODO: test storage options
}
@@ -223,11 +223,11 @@ void TestEkosCapture::testCaptureMultiple()
QVERIFY(destination.autoRemove());
// Add a few exposures
- KTRY_CAPTURE_ADD_LIGHT(0.5, 1, 0, "Red", destination.path());
- KTRY_CAPTURE_ADD_LIGHT(0.7, 2, 0, "SII", destination.path());
- KTRY_CAPTURE_ADD_LIGHT(0.2, 5, 0, "Green", destination.path());
- KTRY_CAPTURE_ADD_LIGHT(0.9, 2, 0, "Luminance", destination.path());
- KTRY_CAPTURE_ADD_LIGHT(0.5, 1, 1, "H_Alpha", destination.path());
+ KTRY_CAPTURE_ADD_LIGHT(0.5, 1, 0, "Red", destination.path()+"/%T");
+ KTRY_CAPTURE_ADD_LIGHT(0.7, 2, 0, "SII", destination.path()+"/%T");
+ KTRY_CAPTURE_ADD_LIGHT(0.2, 5, 0, "Green", destination.path()+"/%T");
+ KTRY_CAPTURE_ADD_LIGHT(0.9, 2, 0, "Luminance", destination.path()+"/%T");
+ KTRY_CAPTURE_ADD_LIGHT(0.5, 1, 1, "H_Alpha", destination.path()+"/%T");
QWARN("A sequence of exposures under 1 second will always take 1 second to capture each of them.");
//size_t const duration = (500+0)*1+(700+0)*2+(200+0)*5+(900+0)*2+(500+1000)*1;
size_t const duration = 1000 * (1 + 2 + 5 + 2 + 1);
@@ -311,8 +311,8 @@ void TestEkosCapture::testCaptureDarkFlats()
QTRY_VERIFY_WITH_TIMEOUT(dialogValidated, 1000);
// Add flats
- KTRY_CAPTURE_ADD_FLAT(1, 2, 0, "Red", destination.path());
- KTRY_CAPTURE_ADD_FLAT(0.1, 3, 0, "Green", destination.path());
+ KTRY_CAPTURE_ADD_FLAT(1, 2, 0, "Red", destination.path()+"/%T/%F/%T");
+ KTRY_CAPTURE_ADD_FLAT(0.1, 3, 0, "Green", destination.path()+"/%T/%F/%T");
// Generate Dark Flats
KTRY_CAPTURE_CLICK(generateDarkFlatsB);
diff --git a/Tests/kstars_ui/test_ekos_capture_count.cpp b/Tests/kstars_ui/test_ekos_capture_count.cpp
index f941cbe53..44461b095 100644
--- a/Tests/kstars_ui/test_ekos_capture_count.cpp
+++ b/Tests/kstars_ui/test_ekos_capture_count.cpp
@@ -301,7 +301,11 @@ bool TestEkosCaptureCount::prepareScheduledCapture(SchedulerJob::CompletionCondi
}
// step 2: create the sequence for the test
- KVERIFY_SUB(m_CaptureHelper->fillCaptureSequences(target, sequence, exptime, m_CaptureHelper->getImageLocation()->path()));
+
+ // add target to path to emulate the behavior of the scheduler
+ QString imagepath = m_CaptureHelper->getImageLocation()->path() + "/" + target;
+
+ KVERIFY_SUB(m_CaptureHelper->fillCaptureSequences(target, sequence, exptime, imagepath));
KVERIFY_SUB(fillCapturedFramesMap(""));
if (rememberJobProgress)
KVERIFY_SUB(setExpectedFrames(expectedFrames));
diff --git a/Tests/kstars_ui/test_ekos_capture_helper.cpp b/Tests/kstars_ui/test_ekos_capture_helper.cpp
index f86cef732..f35a0998f 100644
--- a/Tests/kstars_ui/test_ekos_capture_helper.cpp
+++ b/Tests/kstars_ui/test_ekos_capture_helper.cpp
@@ -150,10 +150,9 @@ bool TestEkosCaptureHelper::fillCaptureSequences(QString target, QString sequenc
KVERIFY_SUB(value.indexOf(":") > -1);
QString filter = value.left(value.indexOf(":"));
int count = value.right(value.length()-value.indexOf(":")-1).toInt();
- KTRY_SET_CHECKBOX_SUB(Ekos::Manager::Instance()->captureModule(), fileTimestampS, true);
KTRY_SET_LINEEDIT_SUB(Ekos::Manager::Instance()->captureModule(), filePrefixT, target);
if (count > 0)
- KWRAP_SUB(KTRY_CAPTURE_ADD_LIGHT(exptime, count, 0, filter, fitsDirectory));
+ KWRAP_SUB(KTRY_CAPTURE_ADD_LIGHT(exptime, count, 0, filter, fitsDirectory + "/%T/%F/%t_%T"));
// ensure that no old values are present
Ekos::Manager::Instance()->captureModule()->setCapturedFramesMap(calculateSignature(target, filter), 0);
}
diff --git a/Tests/scheduler/testschedulerunit.cpp b/Tests/scheduler/testschedulerunit.cpp
index 439b01b93..b8df3ae48 100644
--- a/Tests/scheduler/testschedulerunit.cpp
+++ b/Tests/scheduler/testschedulerunit.cpp
@@ -478,6 +478,31 @@ void TestSchedulerUnit::estimateJobTimeTest()
// The last arg is for logging. Use nullptr for testing.
QVERIFY(Scheduler::loadSequenceQueue(seqFile9Filters, &job, jobs, hasAutoFocus, nullptr));
// 2. Get the signiture of the first job
+ SequenceJob *seqJob = jobs[0];
+ QString tempFormat = seqJob->getCoreProperty(SequenceJob::SJ_LocalDirectory).toString();
+ if (!tempFormat.contains("%"))
+ {
+ if (!tempFormat.endsWith("/"))
+ tempFormat.append("/");
+ tempFormat.append("%t/%T/");
+ if(!seqJob->getCoreProperty(SequenceJob::SJ_Filter).toString().isEmpty())
+ tempFormat.append("%F/");
+ if(!seqJob->getCoreProperty(SequenceJob::SJ_RawPrefix).toString().isEmpty())
+ tempFormat.append("%t_");
+ tempFormat.append("%T_");
+ if(!seqJob->getCoreProperty(SequenceJob::SJ_Filter).toString().isEmpty())
+ tempFormat.append("%F_");
+ if(seqJob->getCoreProperty(SequenceJob::SJ_ExpPrefixEnabled).toBool() == true)
+ tempFormat.append("%e_");
+ if(seqJob->getCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled).toBool() == true)
+ tempFormat.append("%D_");
+ seqJob->setCoreProperty(SequenceJob::SJ_LocalDirectory, tempFormat);
+ }
+
+ auto placeholderPath = Ekos::PlaceholderPath();
+ QString signature = placeholderPath.generateFilename(*seqJob, seqJob->getCoreProperty(SequenceJob::SJ_TargetName).toString(),
+ true, 1, ".fits", "", false, true);
+ seqJob->setCoreProperty(SequenceJob::SJ_Signature, signature);
QString sig0 = jobs[0]->getSignature();
// 3. The first job has 6 exposures, each of 20s duration. Set it up that 2 are already done.
capturedFramesCount[sig0] = 2;
diff --git a/doc/ekos-capture.docbook b/doc/ekos-capture.docbook
index f4af3325c..6587fdf06 100644
--- a/doc/ekos-capture.docbook
+++ b/doc/ekos-capture.docbook
@@ -19,7 +19,7 @@
</mediaobject>
</screenshot>
<para>
- The CCD Module is your primary image and video acquisition module in Ekos. It enables you to capture single (Preview), multiple images (Sequence Queue), or record <ulink url="https://sites.google.com/site/astropipp/ser-player">SER</ulink> videos along with a selection of filter wheel and rotator, if available.
+ The Capture Module is your primary image and video acquisition module in Ekos. It enables you to capture single (Preview), multiple images (Sequence Queue), or record <ulink url="https://sites.google.com/site/astropipp/ser-player">SER</ulink> videos along with a selection of filter wheel and rotator, if available.
</para>
<sect3 id="capture-ccd-filter-wheel">
<title>CCD & Filter Wheel Group</title>
@@ -162,42 +162,80 @@
<itemizedlist>
<listitem>
<para>
- <guilabel>Prefix</guilabel>: Specify the prefix to append to the generated filename. You may also append the frame type, filter, expose duration, and ISO 8601 timestamp. For example, if you specify Prefix as <userinput>M45</userinput> and checked the Type and Filter checkboxes, and assuming your filter was set to <guimenuitem>Red</guimenuitem> and your frame type is <guimenuitem>Light</guimenuitem>, the generated file names will be as follows:
+ <guilabel>Target</guilabel>: The name of the celestial target to be captured ⪚ M42. Can be preloaded by the Scheduler Module and by selection with KStars.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guilabel>Format</guilabel>: The Format string defines the path and filename of the captured images by the use of placeholder tags that are filled in with the selected item of data at save time.
+ </para>
+ <para>
+ A tag is identified by the % character. All tags have a single letter short form, and a self descriptive long form.
+ </para>
+ <para>
+ Arbitary text may also be included within the Format string, <emphasis role="bold">except the % and \ characters.</emphasis> The / path character can be used to define aribtary directories.
+ </para>
+ <para>
+ Note: Tags are case sensitive in both their short and long forms.
+ </para>
+ <para>
+ Available placeholder tags:
</para>
<itemizedlist>
<listitem>
<para>
- M45_Light_Red_001.fits
+ <emphasis role="bold">%f</emphasis> or <emphasis role="bold">%filename</emphasis>: The name of the sequence .esq file, without extension.
</para>
</listitem>
<listitem>
<para>
- M45_Light_Red_002.fits
+ <emphasis role="bold">%D</emphasis> or <emphasis role="bold">%Datetime</emphasis>: The current time and date <emphasis role="bold">when the file is saved. Only use this tag in the filename portion of the format, not in the path portion.</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">%T</emphasis> or <emphasis role="bold">%Type</emphasis>: The frame type ⪚ 'Light', 'Bias', 'Dark', 'Flat'...
</para>
</listitem>
- </itemizedlist>
- <para>
- If <guilabel>TS</guilabel> was checked, a timestamp will be appended to the filename, ⪚
- </para>
- <itemizedlist>
<listitem>
<para>
- M45_Light_Red_001_2016-11-09T23-47-46.fits</para>
+ <emphasis role="bold">%e</emphasis> or <emphasis role="bold">%exposure</emphasis>: The exposure duration in seconds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">%F</emphasis> or <emphasis role="bold">%Filter</emphasis>: The active filter name.
+ </para>
</listitem>
<listitem>
<para>
- M45_Light_Red_002_2016-11-09T23-48-34.fits</para>
+ <emphasis role="bold">%t</emphasis> or <emphasis role="bold">%target</emphasis>: The Target name.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">%s*</emphasis> or <emphasis role="bold">%sequence*</emphasis>: Placeholder %s* or %sequence: The image sequence identifier where * is the number of digits used (1-9). <emphasis role="bold">This tag is mandatory and must be the last element in the format.</emphasis>
+ </para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
- <guilabel>Script</guilabel>: Specify an <emphasis>optional</emphasis> script to be executed after each capture is complete. The full path of the script must be specified and it must executable. To denote success, the script must return zero as this would allow the sequence to continue. If a non-zero value is returned by the script, the sequence is aborted.
+ <guilabel>Directory Browse Button</guilabel>: Opens a browse dialog to allow selection of the directory location used in the Format string. Use when first defining a Capture job.
</para>
</listitem>
<listitem>
<para>
- <guilabel>Directory</guilabel>: Local directory to save the sequence images to.
+ <guilabel>Preview</guilabel>: Shows a preview of the resulting filename according to the Format string and other job settings.
+ </para>
+ <para>
+ Placeholder tags that are specified by the sequence .seq file can only be displayed once the sequence file has been saved.
+ </para>
+ <para>
+ The Datetime tag is previewed with the current system time and will be replaced by the time at point of image save.
+ </para>
+ <para>
+ The sequence tag is always previewed as image 1 in the sequence and will be automatically incremented when the job is in progress.
</para>
</listitem>
<listitem>
@@ -227,6 +265,11 @@
<guilabel>Remote</guilabel>: When selecting either <guimenuitem>Local</guimenuitem> or <guimenuitem>Both</guimenuitem> modes above, you must specify the remote directory where remote images are saved to.
</para>
</listitem>
+ <listitem>
+ <para>
+ <guilabel>Preview</guilabel>: Shows a preview of the resulting filename according the provided path job settings. The file name format for saving remotely is pre-defined, placeholder tags may not be used. The file sequence number is always previewed as image 1 in the sequence and will be automatically incremented when the job is in progress.
+ </para>
+ </listitem>
</itemizedlist>
</sect3>
diff --git a/doc/ekos_capture.png b/doc/ekos_capture.png
index 24f242abf..53968fb96 100644
Binary files a/doc/ekos_capture.png and b/doc/ekos_capture.png differ
diff --git a/doc/file_settings.png b/doc/file_settings.png
index 1e3a227c0..bd37cea12 100644
Binary files a/doc/file_settings.png and b/doc/file_settings.png differ
diff --git a/kstars/auxiliary/ksutils.cpp b/kstars/auxiliary/ksutils.cpp
index 8f4b30f58..c6e9f5258 100644
--- a/kstars/auxiliary/ksutils.cpp
+++ b/kstars/auxiliary/ksutils.cpp
@@ -1122,6 +1122,10 @@ QString getDefaultPath(const QString &option)
{
return QDir::homePath();
}
+ else if (option == "placeholderFormat")
+ {
+ return "%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3";
+ }
else if (option == "indiServer")
{
#if defined(INDI_PREFIX)
diff --git a/kstars/ekos/capture/capture.cpp b/kstars/ekos/capture/capture.cpp
index 741e53dea..b64bdcf4e 100644
--- a/kstars/ekos/capture/capture.cpp
+++ b/kstars/ekos/capture/capture.cpp
@@ -257,8 +257,6 @@ Capture::Capture()
addToQueueB->setToolTip(i18n("Add job to sequence queue"));
removeFromQueueB->setToolTip(i18n("Remove job from sequence queue"));
- fileDirectoryT->setText(Options::fitsDir());
-
////////////////////////////////////////////////////////////////////////
/// Device Adaptor
////////////////////////////////////////////////////////////////////////
@@ -338,25 +336,13 @@ Capture::Capture()
});
// 9. File settings: filter name
- fileFilterS->setChecked(Options::fileSettingsUseFilter());
- connect(fileFilterS, &QCheckBox::toggled, [ = ](bool checked)
- {
- Options::setFileSettingsUseFilter(checked);
- });
+ FilterEnabled = Options::fileSettingsUseFilter();
// 10. File settings: duration
- fileDurationS->setChecked(Options::fileSettingsUseDuration());
- connect(fileDurationS, &QCheckBox::toggled, [ = ](bool checked)
- {
- Options::setFileSettingsUseDuration(checked);
- });
+ ExpEnabled = Options::fileSettingsUseDuration();
// 11. File settings: timestamp
- fileTimestampS->setChecked(Options::fileSettingsUseTimestamp());
- connect(fileTimestampS, &QCheckBox::toggled, [ = ](bool checked)
- {
- Options::setFileSettingsUseTimestamp(checked);
- });
+ TimeStampEnabled = Options::fileSettingsUseTimestamp();
// 12. Refocus after meridian flip
m_LimitsUI->meridianRefocusS->setChecked(Options::refocusAfterMeridianFlip());
@@ -448,7 +434,15 @@ Capture::Capture()
targetADU = Options::calibrationADUValue();
targetADUTolerance = Options::calibrationADUValueTolerance();
- fileDirectoryT->setText(Options::captureDirectory());
+ if(!Options::captureDirectory().isEmpty())
+ fileDirectoryT->setText(Options::captureDirectory());
+ else
+ {
+ fileDirectoryT->setText(KSUtils::getDefaultPath("fitsDir") + QDir::separator() + "Pictures" + QDir::separator() +
+ "%t" + QDir::separator() + "%T" + QDir::separator() + "%F" + QDir::separator() + "%t_%T");
+ Options::setCaptureDirectory(fileDirectoryT->text());
+ }
+
connect(fileDirectoryT, &QLineEdit::textChanged, [&]()
{
Options::setCaptureDirectory(fileDirectoryT->text());
@@ -492,6 +486,27 @@ Capture::Capture()
// Generate Meridian Flip State
getMeridianFlipState();
+
+ //Update the filename preview
+ //Runs every second rather than connecting to all of the elements that could change the filename
+ QTimer *previewTimer = new QTimer(this);
+ connect(previewTimer, &QTimer::timeout, this, &Ekos::Capture::generatePreviewFilename);
+ previewTimer->start(1000);
+
+ legacySuffix();
+
+ //If the user changes the format to use placeholder tags then make the legacy
+ //suffix fields unavailble - this is a one-way journey
+ connect(fileDirectoryT, &QLineEdit::textEdited, [&]()
+ {
+ if(fileDirectoryT->text().contains("%"))
+ {
+ Options::setFileSettingsUseFilter(false);
+ Options::setFileSettingsUseDuration(false);
+ Options::setFileSettingsUseTimestamp(false);
+ legacySuffix();
+ }
+ });
}
Capture::~Capture()
@@ -1918,7 +1933,7 @@ void Capture::processData(const QSharedPointer<FITSData> &data)
* - increase the frame counter
* - update the average download time
*
- * @return IPS_BUSY iff pausing is requested, IPS_OK otherwise.
+ * @return IPS_BUSY if pausing is requested, IPS_OK otherwise.
*/
IPState Capture::setCaptureComplete()
{
@@ -2248,7 +2263,7 @@ IPState Capture::resumeSequence()
{
if (m_captureDeviceAdaptor->getActiveCamera()->getUploadMode() != ISD::Camera::UPLOAD_LOCAL)
{
- checkSeqBoundary(activeJob->getSignature());
+ checkSeqBoundary();
m_captureDeviceAdaptor->getActiveCamera()->setNextSequenceID(nextSequenceID);
}
}
@@ -2548,7 +2563,7 @@ void Capture::captureImage()
if (m_captureDeviceAdaptor->getActiveCamera()->getUploadMode() != ISD::Camera::UPLOAD_LOCAL)
{
- checkSeqBoundary(activeJob->getSignature());
+ checkSeqBoundary();
m_captureDeviceAdaptor->getActiveCamera()->setNextSequenceID(nextSequenceID);
}
@@ -2584,6 +2599,9 @@ void Capture::captureImage()
captureStatusWidget->setStatus(i18n("Calibrating..."), Qt::yellow);
m_StartingCapture = true;
+ auto placeholderPath = Ekos::PlaceholderPath(m_SequenceURL.toLocalFile());
+ placeholderPath.setGenerateFilenameSettings(*activeJob);
+ m_captureDeviceAdaptor->getActiveCamera()->setPlaceholderPath(placeholderPath);
rc = activeJob->capture(m_captureModuleState->getRefocusState()->isAutoFocusReady(),
activeJob->getCalibrationStage() == SequenceJobState::CAL_CALIBRATION ? FITS_CALIBRATE : FITS_NORMAL);
@@ -2662,13 +2680,9 @@ void Capture::captureImage()
/*******************************************************************************/
/* Update the prefix for the sequence of images to be captured */
/*******************************************************************************/
-void Capture::updateSequencePrefix(const QString &newPrefix, const QString &dir)
+void Capture::updateSequencePrefix(const QString &newPrefix)
{
seqPrefix = newPrefix;
-
- // If it doesn't exist, create it
- QDir().mkpath(dir);
-
nextSequenceID = 1;
}
@@ -2676,56 +2690,15 @@ void Capture::updateSequencePrefix(const QString &newPrefix, const QString &dir)
/* Determine the next file number sequence. That is, if we have file1.png */
/* and file2.png, then the next sequence should be file3.png */
/*******************************************************************************/
-void Capture::checkSeqBoundary(const QString &path)
+void Capture::checkSeqBoundary()
{
- int newFileIndex = -1;
- QFileInfo const path_info(path);
- QString const sig_dir(path_info.dir().path());
- QString const sig_file(path_info.completeBaseName());
- QString tempName;
- // seqFileCount = 0;
-
// No updates during meridian flip
if (getMeridianFlipState()->getMeridianFlipStage() >= MeridianFlipState::MF_ALIGNING)
return;
- QDirIterator it(sig_dir, QDir::Files);
-
- while (it.hasNext())
- {
- tempName = it.next();
- QFileInfo info(tempName);
-
- // This returns the filename without the extension
- tempName = info.completeBaseName();
+ auto placeholderPath = Ekos::PlaceholderPath(m_SequenceURL.toLocalFile());
- // This remove any additional extension (e.g. m42_001.fits.fz)
- // the completeBaseName() would return m42_001.fits
- // and this remove .fits so we end up with m42_001
- tempName = tempName.remove(".fits");
-
- QString finalSeqPrefix = seqPrefix;
- finalSeqPrefix.remove(SequenceJob::ISOMarker);
- // find the prefix first
- if (tempName.startsWith(finalSeqPrefix, Qt::CaseInsensitive) == false)
- continue;
-
- /* Do not change the number of captures.
- * - If the sequence is required by the end-user, unconditionally run what each sequence item is requiring.
- * - If the sequence is required by the scheduler, use capturedFramesMap to determine when to stop capturing.
- */
- //seqFileCount++;
-
- int lastUnderScoreIndex = tempName.lastIndexOf("_");
- if (lastUnderScoreIndex > 0)
- {
- bool indexOK = false;
-
- newFileIndex = tempName.midRef(lastUnderScoreIndex + 1).toInt(&indexOK);
- if (indexOK && newFileIndex >= nextSequenceID)
- nextSequenceID = newFileIndex + 1;
- }
- }
+ nextSequenceID = placeholderPath.checkSeqBoundary(*activeJob, m_TargetName);
}
void Capture::appendLogText(const QString &text)
@@ -2939,13 +2912,14 @@ bool Capture::addSequenceJob()
return addJob(false, false);
}
-bool Capture::addJob(bool preview, bool isDarkFlat)
+bool Capture::addJob(bool preview, bool isDarkFlat, filenamePreviewType filenamePreview)
{
if (m_captureModuleState->getCaptureState() != CAPTURE_IDLE && m_captureModuleState->getCaptureState() != CAPTURE_ABORTED
&& m_captureModuleState->getCaptureState() != CAPTURE_COMPLETE)
return false;
SequenceJob * job = nullptr;
+ m_TargetName = filePrefixT->text();
// if (preview == false && darkSubCheck->isChecked())
// {
@@ -2953,19 +2927,23 @@ bool Capture::addJob(bool preview, bool isDarkFlat)
// return false;
// }
- if (fileUploadModeS->currentIndex() != ISD::Camera::UPLOAD_CLIENT && fileRemoteDirT->text().isEmpty())
+ if (filenamePreview == NOT_PREVIEW)
{
- KSNotification::error(i18n("You must set remote directory for Local & Both modes."));
- return false;
- }
+ legacySuffix();
+ if (fileUploadModeS->currentIndex() != ISD::Camera::UPLOAD_CLIENT && fileRemoteDirT->text().isEmpty())
+ {
+ KSNotification::error(i18n("You must set remote directory for Local & Both modes."));
+ return false;
+ }
- if (fileUploadModeS->currentIndex() != ISD::Camera::UPLOAD_LOCAL && fileDirectoryT->text().isEmpty())
- {
- KSNotification::error(i18n("You must set local directory for Client & Both modes."));
- return false;
+ if (fileUploadModeS->currentIndex() != ISD::Camera::UPLOAD_LOCAL && fileDirectoryT->text().isEmpty())
+ {
+ KSNotification::error(i18n("You must set local directory for Client & Both modes."));
+ return false;
+ }
}
- if (m_JobUnderEdit)
+ if (m_JobUnderEdit && filenamePreview == NOT_PREVIEW)
job = jobs.at(queueTable->currentRow());
else
{
@@ -3013,20 +2991,20 @@ bool Capture::addJob(bool preview, bool isDarkFlat)
// JM 2019-11-26: In case there is no raw prefix set
// BUT target name is set, we update the prefix to include
// the target name, which is usually set by the scheduler.
- if (!m_TargetName.isEmpty())
+ if (!m_TargetName.isEmpty() && filenamePreview == NOT_PREVIEW)
{
// Target name as set externally should override Full Target Name that
// was set by GOTO operation alone.
m_FullTargetName = m_TargetName;
m_FullTargetName.replace("_", " ");
- if (filePrefixT->text().isEmpty())
- filePrefixT->setText(m_TargetName);
+ filePrefixT->setText(m_TargetName);
+ job->setCoreProperty(SequenceJob::SJ_TargetName, m_TargetName);
}
job->setCoreProperty(SequenceJob::SJ_RawPrefix, filePrefixT->text());
- job->setCoreProperty(SequenceJob::SJ_FilterPrefixEnabled, fileFilterS->isChecked());
- job->setCoreProperty(SequenceJob::SJ_ExpPrefixEnabled, fileDurationS->isChecked());
- job->setCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled, fileTimestampS->isChecked());
+ job->setCoreProperty(SequenceJob::SJ_FilterPrefixEnabled, FilterEnabled);
+ job->setCoreProperty(SequenceJob::SJ_ExpPrefixEnabled, ExpEnabled);
+ job->setCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled, TimeStampEnabled);
job->setFrameType(static_cast<CCDFrameType>(qMax(0, captureTypeS->currentIndex())));
job->setCoreProperty(SequenceJob::SJ_EnforceStartGuiderDrift, (job->getFrameType() == FRAME_LIGHT
@@ -3058,13 +3036,29 @@ bool Capture::addJob(bool preview, bool isDarkFlat)
captureFrameHN->value()));
job->setCoreProperty(SequenceJob::SJ_RemoteDirectory, fileRemoteDirT->text());
- // Remove trailing slash, if any.
- QString fileDirectory = fileDirectoryT->text();
- while (fileDirectory.endsWith("/"))
+ QString fileDirectory;
+ if (filenamePreview != REMOTE_PREVIEW)
+ {
+ if (!isDarkFlat)
+ fileDirectory = fileDirectoryT->text().append(formatSuffixN->prefix()).append(formatSuffixN->cleanText());
+ else
+ fileDirectory = fileDirectoryT->text();
+ }
+ else
+ {
+ fileDirectory = fileRemoteDirT->text();
+ // Remotely saved files get a predefined format hard coded in the driver
+ if (!fileDirectory.endsWith(QDir::separator()))
+ fileDirectory.append(QDir::separator());
+ fileDirectory.append("%target" + QDir::separator() + "%Type" + QDir::separator() + "%Filter" + QDir::separator() +
+ "%target_%Type_%s3");
+ }
+
+ while (fileDirectory.endsWith(QDir::separator()))
fileDirectory.chop(1);
job->setCoreProperty(SequenceJob::SJ_LocalDirectory, fileDirectory);
- if (m_JobUnderEdit == false)
+ if (m_JobUnderEdit == false || filenamePreview != NOT_PREVIEW)
{
// JM 2018-09-24: If this is the first job added
// We always ignore job progress by default.
@@ -3194,7 +3188,7 @@ bool Capture::addJob(bool preview, bool isDarkFlat)
queueDownB->setEnabled(true);
}
- if (m_JobUnderEdit)
+ if (m_JobUnderEdit && filenamePreview == NOT_PREVIEW)
{
m_JobUnderEdit = false;
resetJobEdit();
@@ -3204,6 +3198,10 @@ bool Capture::addJob(bool preview, bool isDarkFlat)
emit sequenceChanged(m_SequenceArray);
}
+ QString signature = placeholderPath.generateFilename(*job, job->getCoreProperty(SequenceJob::SJ_TargetName).toString(),
+ true, 1, ".fits", "", false, true);
+ job->setCoreProperty(SequenceJob::SJ_Signature, signature);
+
return true;
}
@@ -3423,8 +3421,7 @@ void Capture::prepareJob(SequenceJob * job)
imgProgress->setValue(activeJob->getCompleted());
if (m_captureDeviceAdaptor->getActiveCamera()->getUploadMode() != ISD::Camera::UPLOAD_LOCAL)
- updateSequencePrefix(activeJob->getCoreProperty(SequenceJob::SJ_FullPrefix).toString(),
- QFileInfo(activeJob->getSignature()).path());
+ updateSequencePrefix(activeJob->getCoreProperty(SequenceJob::SJ_FullPrefix).toString());
// We check if the job is already fully or partially complete by checking how many files of its type exist on the file system
// The signature is the unique identification path in the system for a particular job. Format is "<storage path>/<target>/<frame type>/<filter name>".
@@ -3436,7 +3433,7 @@ void Capture::prepareJob(SequenceJob * job)
// If 29 files exist for example, then nextSequenceID would be the NEXT file number (30)
// Therefore, we know how to number the next file.
// However, we do not deduce the number of captures to process from this function.
- checkSeqBoundary(signature);
+ checkSeqBoundary();
// Captured Frames Map contains a list of signatures:count of _already_ captured files in the file system.
// This map is set by the Scheduler in order to complete efficiently the required captures.
@@ -3739,8 +3736,7 @@ void Capture::executeJob()
auto placeholderPath = Ekos::PlaceholderPath();
// Make sure to update Full Prefix as exposure value was changed
placeholderPath.processJobInfo(activeJob, activeJob->getCoreProperty(SequenceJob::SJ_TargetName).toString());
- updateSequencePrefix(activeJob->getCoreProperty(SequenceJob::SJ_FullPrefix).toString(),
- QFileInfo(activeJob->getSignature()).path());
+ updateSequencePrefix(activeJob->getCoreProperty(SequenceJob::SJ_FullPrefix).toString());
}
}
@@ -4184,7 +4180,7 @@ void Capture::meridianFlipStatusChanged(MeridianFlipState::MeridianFlipMountStat
case MeridianFlipState::MOUNT_FLIP_RUNNING:
setMeridianFlipStage(MeridianFlipState::MF_INITIATED);
- m_captureModuleState->setCaptureState(CAPTURE_MERIDIAN_FLIP);
+ emit newStatus(Ekos::CAPTURE_MERIDIAN_FLIP);
break;
case MeridianFlipState::MOUNT_FLIP_COMPLETED:
@@ -4238,13 +4234,13 @@ void Capture::processNewTargetName(const QString &name)
QString sanitized = name;
if (sanitized != i18n("unnamed"))
{
- m_FullTargetName = name;
// Remove illegal characters that can be problematic
sanitized = sanitized.replace( QRegularExpression("\\s|/|\\(|\\)|:|\\*|~|\"" ), "_" )
// Remove any two or more __
.replace( QRegularExpression("_{2,}"), "_")
// Remove any _ at the end
.replace( QRegularExpression("_$"), "");
+ m_FullTargetName = name;
filePrefixT->setText(sanitized);
}
}
@@ -4270,6 +4266,15 @@ void Capture::syncTelescopeInfo()
void Capture::saveFITSDirectory()
{
+ if (!fileDirectoryT->text().isEmpty())
+ {
+ int overwrite = KMessageBox::warningContinueCancel(nullptr,
+ i18n("Changing directory will overwrite any format previously entered"));
+ if (overwrite == KMessageBox::Cancel)
+ {
+ return;
+ }
+ }
QString dir =
QFileDialog::getExistingDirectory(Ekos::Manager::Instance(), i18nc("@title:window", "FITS Save Directory"),
dirPath.toLocalFile());
@@ -4494,16 +4499,21 @@ bool Capture::processJobInfo(XMLEle * root)
{
subEP = findXMLEle(ep, "RawPrefix");
if (subEP)
- filePrefixT->setText(pcdataXMLEle(subEP));
+ {
+ if (strcmp(pcdataXMLEle(subEP), "") != 0)
+ filePrefixT->setText(pcdataXMLEle(subEP));
+ else if (!m_FullTargetName.isEmpty())
+ filePrefixT->setText(m_FullTargetName);
+ }
subEP = findXMLEle(ep, "FilterEnabled");
if (subEP)
- fileFilterS->setChecked(!strcmp("1", pcdataXMLEle(subEP)));
+ FilterEnabled = !strcmp("1", pcdataXMLEle(subEP));
subEP = findXMLEle(ep, "ExpEnabled");
if (subEP)
- fileDurationS->setChecked(!strcmp("1", pcdataXMLEle(subEP)));
+ ExpEnabled = !strcmp("1", pcdataXMLEle(subEP));
subEP = findXMLEle(ep, "TimeStampEnabled");
if (subEP)
- fileTimestampS->setChecked(!strcmp("1", pcdataXMLEle(subEP)));
+ TimeStampEnabled = !strcmp("1", pcdataXMLEle(subEP));
}
else if (!strcmp(tagXMLEle(ep), "Count"))
{
@@ -4531,7 +4541,11 @@ bool Capture::processJobInfo(XMLEle * root)
}
else if (!strcmp(tagXMLEle(ep), "FITSDirectory"))
{
- fileDirectoryT->setText(pcdataXMLEle(ep));
+ QString fullFormat = pcdataXMLEle(ep);
+ const QString seqDigitTag = "_%s";
+ QString seqDigits = fullFormat.right(fullFormat.length() - (fullFormat.lastIndexOf(seqDigitTag) + seqDigitTag.length()));
+ formatSuffixN->setValue(seqDigits.toInt());
+ fileDirectoryT->setText(fullFormat.left(fullFormat.lastIndexOf(seqDigitTag)));
}
else if (!strcmp(tagXMLEle(ep), "RemoteDirectory"))
{
@@ -4951,9 +4965,6 @@ void Capture::syncGUIToJob(SequenceJob * job)
}
auto rawPrefix = job->getCoreProperty(SequenceJob::SJ_RawPrefix).toString();
- auto filterEnabled = job->getCoreProperty(SequenceJob::SJ_FilterPrefixEnabled).toBool();
- auto expEnabled = job->getCoreProperty(SequenceJob::SJ_ExpPrefixEnabled).toBool();
- auto tsEnabled = job->getCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled).toBool();
const auto roi = job->getCoreProperty(SequenceJob::SJ_ROI).toRect();
captureFormatS->setCurrentText(job->getCoreProperty(SequenceJob::SJ_Format).toString());
@@ -4968,9 +4979,6 @@ void Capture::syncGUIToJob(SequenceJob * job)
FilterPosCombo->setCurrentIndex(job->getTargetFilter() - 1);
captureTypeS->setCurrentIndex(job->getFrameType());
filePrefixT->setText(rawPrefix);
- fileFilterS->setChecked(filterEnabled);
- fileDurationS->setChecked(expEnabled);
- fileTimestampS->setChecked(tsEnabled);
captureCountN->setValue(job->getCoreProperty(SequenceJob::SJ_Count).toInt());
captureDelayN->setValue(job->getCoreProperty(SequenceJob::SJ_Delay).toInt() / 1000);
fileUploadModeS->setCurrentIndex(job->getUploadMode());
@@ -6112,8 +6120,7 @@ bool Capture::processPostCaptureCalibrationStage()
// since it may include a placeholder for duration which would affect it.
if (m_captureDeviceAdaptor->getActiveCamera()
&& m_captureDeviceAdaptor->getActiveCamera()->getUploadMode() != ISD::Camera::UPLOAD_LOCAL)
- updateSequencePrefix(activeJob->getCoreProperty(SequenceJob::SJ_FullPrefix).toString(),
- QFileInfo(activeJob->getSignature()).path());
+ updateSequencePrefix(activeJob->getCoreProperty(SequenceJob::SJ_FullPrefix).toString());
startNextExposure();
return false;
@@ -6637,18 +6644,12 @@ void Capture::setFileSettings(const QJsonObject &settings)
const QString prefix = settings["prefix"].toString(filePrefixT->text());
//const QString script = settings["script"].toString(fileScriptT->text());
const QString directory = settings["directory"].toString(fileDirectoryT->text());
- const bool filter = settings["filter"].toBool(fileFilterS->isChecked());
- const bool duration = settings["duration"].toBool(fileDurationS->isChecked());
- const bool ts = settings["ts"].toBool(fileTimestampS->isChecked());
const int upload = settings["upload"].toInt(fileUploadModeS->currentIndex());
const QString remote = settings["remote"].toString(fileRemoteDirT->text());
filePrefixT->setText(prefix);
// fileScriptT->setText(script);
fileDirectoryT->setText(directory);
- fileFilterS->setChecked(filter);
- fileDurationS->setChecked(duration);
- fileTimestampS->setChecked(ts);
fileUploadModeS->setCurrentIndex(upload);
fileRemoteDirT->setText(remote);
}
@@ -6660,9 +6661,9 @@ QJsonObject Capture::getFileSettings()
{"prefix", filePrefixT->text()},
// {"script", fileScriptT->text()},
{"directory", fileDirectoryT->text()},
- {"filter", fileFilterS->isChecked()},
- {"duration", fileDurationS->isChecked()},
- {"ts", fileTimestampS->isChecked()},
+ {"filter", FilterEnabled},
+ {"duration", ExpEnabled},
+ {"ts", TimeStampEnabled},
{"upload", fileUploadModeS->currentIndex()},
{"remote", fileRemoteDirT->text()}
};
@@ -7404,5 +7405,108 @@ void Capture::refreshOpticalTrain()
opticalTrainCombo->blockSignals(false);
}
+void Capture::generatePreviewFilename()
+{
+ if (m_captureModuleState->getCaptureState() == CAPTURE_IDLE || m_captureModuleState->getCaptureState() == CAPTURE_ABORTED
+ || m_captureModuleState->getCaptureState() == CAPTURE_COMPLETE)
+ {
+ FilenamePreviewLabel->setText(previewFilename( LOCAL_PREVIEW ));
+
+ if (fileUploadModeS->currentIndex() != 0)
+ RemotePreviewLabel->setText(previewFilename( REMOTE_PREVIEW ));
+ }
+}
+
+QString Capture::previewFilename(filenamePreviewType previewType)
+{
+ QString previewText = "";
+
+ QString m_format;
+ const QString seqDigitsTag = "%s";
+
+ // Prevent the user entering a sequence tag in the main Format
+ if (fileDirectoryT->text().contains(seqDigitsTag))
+ {
+ fileDirectoryT->setText(fileDirectoryT->text().left(fileDirectoryT->text().indexOf(seqDigitsTag)));
+ if (fileDirectoryT->text().endsWith("-") || fileDirectoryT->text().endsWith("_"))
+ fileDirectoryT->setText(fileDirectoryT->text().left(fileDirectoryT->text().length() - 1));
+ }
+
+ if (previewType == LOCAL_PREVIEW)
+ m_format = fileDirectoryT->text().append(formatSuffixN->prefix()).append(formatSuffixN->cleanText());
+ else if (previewType == REMOTE_PREVIEW)
+ m_format = fileRemoteDirT->text();
+
+ //Guard against an empty format to avoid the empty directory warning pop-up in addjob
+ if (m_format.isEmpty())
+ return previewText;
+ // Tags %d & %p disable for now for simplicity
+ // else if (m_SequenceURL.toLocalFile().isEmpty() && (m_format.contains("%d") || m_format.contains("%p")
+ // || m_format.contains("%f")))
+ else if (m_SequenceURL.toLocalFile().isEmpty() && m_format.contains("%f"))
+ previewText = ("Save the sequence file to show filename preview");
+ else if (addJob(true, false, previewType) == true)
+ {
+ QString previewSeq;
+ if (m_SequenceURL.toLocalFile().isEmpty())
+ {
+ if (m_format.startsWith("/"))
+ previewSeq = m_format.left(m_format.lastIndexOf("/"));
+ }
+ else
+ previewSeq = m_SequenceURL.toLocalFile();
+ auto m_placeholderPath = Ekos::PlaceholderPath(previewSeq);
+ auto m_job = jobs.last();
+
+ QString extension = ".fits";
+ if (captureEncodingS->currentText() != "FITS")
+ extension = ".[NATIVE]";
+ previewText = m_placeholderPath.generateFilename(*m_job, filePrefixT->text(), true, 1, extension, "", false);
+ jobs.removeLast();
+ }
+
+ return previewText;
+}
+
+void Capture::legacySuffix()
+{
+ bool legacyMode = false;
+ if(Options::fileSettingsUseFilter() || Options::fileSettingsUseDuration() || Options::fileSettingsUseTimestamp())
+ legacyMode = true;
+
+ if (legacyMode)
+ {
+ QString m_format = fileDirectoryT->text();
+ if (m_format.startsWith("/"))
+ {
+ if (m_format.contains("%"))
+ m_format = m_format.left(m_format.indexOf("%"));
+
+ if (!m_format.endsWith(QDir::separator()))
+ m_format.append(QDir::separator());
+
+ m_format.append("%t" + QDir::separator() + "%T" + QDir::separator());
+
+ if (!FilterPosCombo->currentText().isEmpty())
+ m_format.append("%F" + QDir::separator());
+ if (!filePrefixT->text().isEmpty() || !m_TargetName.isEmpty())
+ m_format.append("%t_");
+
+ m_format.append("%T_");
+
+ if (!FilterPosCombo->currentText().isEmpty() && FilterEnabled)
+ m_format.append("%F_");
+ if (ExpEnabled)
+ m_format.append("%e_");
+ if (TimeStampEnabled)
+ m_format.append("%D_");
+
+ if (m_format.endsWith("_"))
+ m_format.chop(1);
+ fileDirectoryT->setText(m_format);
+ formatSuffixN->setValue(3);
+ }
+ }
+}
}
diff --git a/kstars/ekos/capture/capture.h b/kstars/ekos/capture/capture.h
index 5dce86d1b..9e7b67eb1 100644
--- a/kstars/ekos/capture/capture.h
+++ b/kstars/ekos/capture/capture.h
@@ -101,6 +101,13 @@ class Capture : public QWidget, public Ui::Capture
ADU_POLYNOMIAL
} ADUAlgorithm;
+ typedef enum
+ {
+ NOT_PREVIEW,
+ LOCAL_PREVIEW,
+ REMOTE_PREVIEW
+ } filenamePreviewType;
+
typedef IPState (Capture::*PauseFunctionPointer)();
Capture();
@@ -369,7 +376,7 @@ class Capture : public QWidget, public Ui::Capture
}
/* Capture */
- void updateSequencePrefix(const QString &newPrefix, const QString &dir);
+ void updateSequencePrefix(const QString &newPrefix);
/**
* @brief getSequence Return the JSON representation of the current sequeue queue
@@ -653,9 +660,10 @@ class Capture : public QWidget, public Ui::Capture
* @brief addJob Add a new job to the sequence queue given the settings in the GUI.
* @param preview True if the job is a preview job, otherwise, it is added as a batch job.
* @param isDarkFlat True if the job is a dark flat job, false otherwise.
+ * @param filenamePreview if the job is to generate a preview filename
* @return True if job is added successfully, false otherwise.
*/
- bool addJob(bool preview = false, bool isDarkFlat = false);
+ bool addJob(bool preview = false, bool isDarkFlat = false, filenamePreviewType filenamePreview = NOT_PREVIEW);
/**
* @brief removeJob Remove a job sequence from the queue
@@ -784,7 +792,7 @@ class Capture : public QWidget, public Ui::Capture
void resetFrame();
void setExposureProgress(ISD::CameraChip *tChip, double value, IPState state);
void updateCaptureCountDown(int deltaMillis);
- void checkSeqBoundary(const QString &path);
+ void checkSeqBoundary();
void saveFITSDirectory();
void setNewRemoteFile(QString file);
@@ -846,6 +854,13 @@ class Capture : public QWidget, public Ui::Capture
void setDownloadProgress();
+ // Filename preview
+ void generatePreviewFilename();
+ QString previewFilename(filenamePreviewType = LOCAL_PREVIEW);
+
+ // Legacy filename suffix mapping
+ void legacySuffix();
+
signals:
Q_SCRIPTABLE void newLog(const QString &text);
Q_SCRIPTABLE void meridianFlipStarted();
@@ -1157,5 +1172,9 @@ class Capture : public QWidget, public Ui::Capture
bool m_StartingCapture {true};
QSharedPointer<FilterManager> m_FilterManager;
+
+ bool FilterEnabled {false};
+ bool ExpEnabled {false};
+ bool TimeStampEnabled {false};
};
}
diff --git a/kstars/ekos/capture/capture.ui b/kstars/ekos/capture/capture.ui
index 34b666780..b2f1a1156 100644
--- a/kstars/ekos/capture/capture.ui
+++ b/kstars/ekos/capture/capture.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>727</width>
+ <width>750</width>
<height>518</height>
</rect>
</property>
@@ -897,17 +897,20 @@
<property name="spacing">
<number>2</number>
</property>
- <item row="3" column="5" colspan="2">
- <widget class="QLineEdit" name="fileRemoteDirT">
- <property name="enabled">
- <bool>false</bool>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_10">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>20</height>
+ </size>
</property>
- <property name="placeholderText">
- <string>/home/pi</string>
+ <property name="text">
+ <string>Preview:</string>
</property>
</widget>
</item>
- <item row="2" column="6">
+ <item row="1" column="5">
<widget class="QPushButton" name="selectFileDirectoryB">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@@ -932,7 +935,20 @@
</property>
</widget>
</item>
- <item row="3" column="2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="textLabel1_7">
+ <property name="toolTip">
+ <string><html><head/><body><p>Target is the name of the targetted object.</p><p>It is available to be used in the filename Format via the %t or %type placeholder tag.</p></body></html></string>
+ </property>
+ <property name="whatsThis">
+ <string/>
+ </property>
+ <property name="text">
+ <string>Target:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
<widget class="QComboBox" name="fileUploadModeS">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@@ -957,134 +973,134 @@
</item>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_3">
+ <item row="3" column="3" colspan="3">
+ <widget class="QLineEdit" name="fileRemoteDirT">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="placeholderText">
+ <string>/home/pi</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QLabel" name="label_2">
<property name="toolTip">
- <string>Post-capture script to be executed after an image is captured. The capture sequence is resumed when the script is executed successfully.</string>
+ <string>When storing images on remote devices, specify the directory where captured images are saved to.</string>
</property>
<property name="text">
- <string>Postfix:</string>
+ <string>Remote:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
- <item row="1" column="1" colspan="6">
- <layout class="QHBoxLayout" name="postfixHorizontalLayout">
- <property name="spacing">
- <number>2</number>
+ <item row="1" column="1" colspan="3">
+ <widget class="QLineEdit" name="fileDirectoryT">
+ <property name="text">
+ <string>Local path / Format</string>
</property>
- <item>
- <widget class="QCheckBox" name="fileFilterS">
- <property name="toolTip">
- <string>Append the active filter slot to the prefix</string>
- </property>
- <property name="text">
- <string>Filter</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="fileDurationS">
- <property name="toolTip">
- <string>Append the expose duration to the prefix</string>
- </property>
- <property name="text">
- <string>Duration</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="fileTimestampS">
- <property name="toolTip">
- <string>Append time stamp to the prefix</string>
- </property>
- <property name="text">
- <string>TS</string>
- </property>
- <property name="checked">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_4">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
+ </widget>
</item>
- <item row="2" column="2" colspan="4">
- <widget class="QLineEdit" name="fileDirectoryT"/>
+ <item row="0" column="1" colspan="5">
+ <widget class="QLineEdit" name="filePrefixT">
+ <property name="placeholderText">
+ <string>Target</string>
+ </property>
+ <property name="clearButtonEnabled">
+ <bool>true</bool>
+ </property>
+ </widget>
</item>
- <item row="2" column="0">
- <widget class="QLabel" name="textLabel1_18">
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_4">
<property name="toolTip">
- <string>Local directory to save sequence images</string>
- </property>
- <property name="whatsThis">
- <string/>
+ <string><html><head/><body><p>Select how captured images are uploaded:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Locally</span>: Captured images are saved locally on disk in the directory specified above.</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Remotely</span>: When connecting to a remote device, select this option to save images on the remote device only. No images are uploaded to Ekos.</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Both</span>: Captured images are saved on both the remote computer <span style=" font-weight:600;">and</span> on the local disk as well.</li></ol><p>When selecting <span style=" font-style:italic;">Remotely</span> or <span style=" font-style:italic;">Both</span>, you must specify the remote directory where the remote images are saved to. By default, all captured images are saved <span style=" font-style:italic;">Locally</span>.</p></body></html></string>
</property>
<property name="text">
- <string>Directory:</string>
+ <string>Save:</string>
</property>
</widget>
</item>
- <item row="0" column="0">
- <widget class="QLabel" name="textLabel1_7">
+ <item row="1" column="0">
+ <widget class="QLabel" name="textLabel1_18">
<property name="toolTip">
- <string><p>Prefix is used to generate file names ( e.g. M42_HA_240_secs_001.fits)</p>
-<ul>
-<li><strong>Target</strong>: Target Name (e.g. M42)</li>
-<li><strong>Filter</strong>: When using a filter wheel, the filter name is appended to the file name (e.g. HA)</li>
-<li><strong>Duration</strong>: Capture duration is appended to the file name (e.g. 240_secs)</li>
-<li><strong>TS</strong>: ISO 8601 timestamp is appended to the file name (e.g. 2016-10-20T22:42:10)</li>
-</ul></string>
+ <string><html><head/><body><p>Format is used to define the image file names by the use of placeholder tags.</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Placeholder<span style=" font-weight:700;"> %f</span> or <span style=" font-weight:700;">%filename</span>: The name of the .esq file, without extension.</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Placeholder<span style=" font-weight:700;"> %D</span> or <span style=" font-weight:700;">%Datetime</span>: The current time and date <span style=" font-weight:700;">when the file is saved.</span></li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Placeholder<span style=" font-weight:700;"> %T</span> or <span style=" font-weight:700;">%Type</span>: The frame type eg: 'Light', 'Bias', 'Dark', 'Flat'...</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Placeholder<span style=" font-weight:700;"> %e</span> or <span style=" font-weight:700;">%exposure</span>: The exposure duration in seconds.</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Placeholder<span style=" font-weight:700;"> %F</span> or <span style=" font-weight:700;">%Filter</span>: The active filter name.</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Placeholder<span style=" font-weight:700;"> %t</span> or <span style=" font-weight:700;">%target</span>: The Target name.</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Placeholder<span style=" font-weight:700;"> %s*</span> or <span style=" font-weight:700;">%sequence</span>: The image sequence identifier where * is the number of digits used (1-9). <span style=" font-weight:700;">This tag is mandatory and must be the last element in the format.</span></li></ul><p>Arbitary text may also be included within the Format string, <span style=" font-weight:700;">except the % and \ characters.</span> The / path character can be used to define aribtary directories.</p><p>Notes:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tags are case sensitive in both their short and long forms.</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Only use the %Datetime tag in the filename portion of the format, not in the path definition.</li></ul></body></html></string>
</property>
<property name="whatsThis">
<string/>
</property>
<property name="text">
- <string>Prefix:</string>
+ <string>Format:</string>
</property>
</widget>
</item>
- <item row="3" column="3">
- <widget class="QLabel" name="label_2">
- <property name="toolTip">
- <string>When storing images on remote devices, specify the directory where captured images are saved to.</string>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>20</height>
+ </size>
</property>
<property name="text">
- <string>Remote:</string>
+ <string>Preview:</string>
</property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </widget>
+ </item>
+ <item row="2" column="1" colspan="6">
+ <widget class="QLabel" name="FilenamePreviewLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>9</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>Local preview</string>
</property>
</widget>
</item>
- <item row="3" column="0">
- <widget class="QLabel" name="label_4">
- <property name="toolTip">
- <string><html><head/><body><p>Select how captured images are uploaded:</p><ol style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Locally</span>: Captured images are saved locally on disk in the directory specified above.</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Remotely</span>: When connecting to a remote device, select this option to save images on the remote device only. No images are uploaded to Ekos.</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Both</span>: Captured images are saved on both the remote computer <span style=" font-weight:600;">and</span> on the local disk as well.</li></ol><p>When selecting <span style=" font-style:italic;">Remotely</span> or <span style=" font-style:italic;">Both</span>, you must specify the remote directory where the remote images are saved to. By default, all captured images are saved <span style=" font-style:italic;">Locally</span>.</p></body></html></string>
+ <item row="4" column="1" colspan="6">
+ <widget class="QLabel" name="RemotePreviewLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>9</pointsize>
+ </font>
</property>
<property name="text">
- <string>Save:</string>
+ <string>Remote preview</string>
</property>
</widget>
</item>
- <item row="0" column="2" colspan="5">
- <widget class="QLineEdit" name="filePrefixT">
- <property name="placeholderText">
- <string>Target</string>
+ <item row="1" column="4">
+ <widget class="QSpinBox" name="formatSuffixN">
+ <property name="toolTip">
+ <string><html><head/><body><p>Number of digits used to append the sequence number to the filename.</p></body></html></string>
</property>
- <property name="clearButtonEnabled">
- <bool>true</bool>
+ <property name="prefix">
+ <string>_%s</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>9</number>
+ </property>
+ <property name="value">
+ <number>3</number>
</property>
</widget>
</item>
@@ -2410,9 +2426,6 @@ font-weight:bold;
<tabstop>customValuesB</tabstop>
<tabstop>rotatorB</tabstop>
<tabstop>filePrefixT</tabstop>
- <tabstop>fileFilterS</tabstop>
- <tabstop>fileDurationS</tabstop>
- <tabstop>fileTimestampS</tabstop>
<tabstop>fileDirectoryT</tabstop>
<tabstop>selectFileDirectoryB</tabstop>
<tabstop>fileUploadModeS</tabstop>
diff --git a/kstars/ekos/capture/placeholderpath.cpp b/kstars/ekos/capture/placeholderpath.cpp
index b9d1c45a2..27f984a86 100644
--- a/kstars/ekos/capture/placeholderpath.cpp
+++ b/kstars/ekos/capture/placeholderpath.cpp
@@ -6,7 +6,6 @@
#include "placeholderpath.h"
-#include "ekos/scheduler/schedulerjob.h"
#include "sequencejob.h"
#include "Options.h"
#include "kspaths.h"
@@ -15,11 +14,12 @@
#include <QStringList>
#include <cmath>
+#include <algorithm>
namespace Ekos
{
-PlaceholderPath::PlaceholderPath(QString seqFilename):
+PlaceholderPath::PlaceholderPath(const QString &seqFilename):
m_frameTypes(
{
{FRAME_LIGHT, "Light"},
@@ -41,7 +41,7 @@ PlaceholderPath::~PlaceholderPath()
{
}
-void PlaceholderPath::processJobInfo(SequenceJob *job, QString targetName)
+void PlaceholderPath::processJobInfo(SequenceJob *job, const QString &targetName)
{
job->setCoreProperty(SequenceJob::SJ_TargetName, targetName);
@@ -51,24 +51,23 @@ void PlaceholderPath::processJobInfo(SequenceJob *job, QString targetName)
auto rawPrefix = job->getCoreProperty(SequenceJob::SJ_RawPrefix).toString();
auto filterEnabled = job->getCoreProperty(SequenceJob::SJ_FilterPrefixEnabled).toBool();
auto expEnabled = job->getCoreProperty(SequenceJob::SJ_ExpPrefixEnabled).toBool();
- //auto tsEnabled = job->getCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled).toBool();
const auto isDarkFlat = job->getCoreProperty(SequenceJob::SJ_DarkFlat).toBool();
if (isDarkFlat)
frameType = "DarkFlat";
// Sanitize name
- //QString targetName = schedJob->getName();
- targetName = targetName.replace( QRegularExpression("\\s|/|\\(|\\)|:|\\*|~|\"" ), "_" )
- // Remove any two or more __
- .replace( QRegularExpression("_{2,}"), "_")
- // Remove any _ at the end
- .replace( QRegularExpression("_$"), "");
+ QString tempTargetName = targetName;
+ tempTargetName.replace( QRegularExpression("\\s|/|\\(|\\)|:|\\*|~|\"" ), "_" )
+ // Remove any two or more __
+ .replace( QRegularExpression("_{2,}"), "_")
+ // Remove any _ at the end
+ .replace( QRegularExpression("_$"), "");
// Because scheduler sets the target name in capture module
// it would be the same as the raw prefix
- if (targetName.isEmpty() == false && rawPrefix.isEmpty())
- rawPrefix = targetName;
+ if (tempTargetName.isEmpty() == false && rawPrefix.isEmpty())
+ rawPrefix = tempTargetName;
// Make full prefix
QString imagePrefix = rawPrefix;
@@ -79,7 +78,8 @@ void PlaceholderPath::processJobInfo(SequenceJob *job, QString targetName)
imagePrefix += frameType;
if (filterEnabled && filterType.isEmpty() == false &&
- (job->getFrameType() == FRAME_LIGHT || job->getFrameType() == FRAME_FLAT || job->getFrameType() == FRAME_NONE || isDarkFlat))
+ (job->getFrameType() == FRAME_LIGHT || job->getFrameType() == FRAME_FLAT || job->getFrameType() == FRAME_NONE
+ || isDarkFlat))
{
imagePrefix += '_';
@@ -116,19 +116,23 @@ void PlaceholderPath::processJobInfo(SequenceJob *job, QString targetName)
QString directoryPostfix;
/* FIXME: Refactor directoryPostfix assignment, whose code is duplicated in capture.cpp */
- if (targetName.isEmpty())
+ if (tempTargetName.isEmpty())
directoryPostfix = QDir::separator() + frameType;
else
- directoryPostfix = QDir::separator() + targetName + QDir::separator() + frameType;
- if ((job->getFrameType() == FRAME_LIGHT || job->getFrameType() == FRAME_FLAT || job->getFrameType() == FRAME_NONE || isDarkFlat)
+ directoryPostfix = QDir::separator() + tempTargetName + QDir::separator() + frameType;
+ if ((job->getFrameType() == FRAME_LIGHT || job->getFrameType() == FRAME_FLAT || job->getFrameType() == FRAME_NONE
+ || isDarkFlat)
&& filterType.isEmpty() == false)
directoryPostfix += QDir::separator() + filterType;
job->setCoreProperty(SequenceJob::SJ_DirectoryPostfix, directoryPostfix);
+ QString signature = generateFilename(*job, job->getCoreProperty(SequenceJob::SJ_TargetName).toString(), true,
+ 1, ".fits", "", false, true);
+ job->setCoreProperty(SequenceJob::SJ_Signature, signature);
}
-void PlaceholderPath::addJob(SequenceJob *job, QString targetName)
+void PlaceholderPath::addJob(SequenceJob *job, const QString &targetName)
{
job->setCoreProperty(SequenceJob::SJ_TargetName, targetName);
@@ -137,7 +141,6 @@ void PlaceholderPath::addJob(SequenceJob *job, QString targetName)
const auto rawPrefix = job->getCoreProperty(SequenceJob::SJ_RawPrefix).toString();
QString imagePrefix = rawPrefix;
- // Override
const auto isDarkFlat = job->getCoreProperty(SequenceJob::SJ_DarkFlat).toBool();
if (isDarkFlat)
frameTypeString = "DarkFlat";
@@ -150,9 +153,9 @@ void PlaceholderPath::addJob(SequenceJob *job, QString targetName)
imagePrefix = targetName;
}
- constructPrefix(job, imagePrefix);
+ QString tempPrefix = constructPrefix(job, imagePrefix);
- job->setCoreProperty(SequenceJob::SJ_FullPrefix, imagePrefix);
+ job->setCoreProperty(SequenceJob::SJ_FullPrefix, tempPrefix);
QString directoryPostfix;
@@ -172,7 +175,7 @@ void PlaceholderPath::addJob(SequenceJob *job, QString targetName)
job->setCoreProperty(SequenceJob::SJ_DirectoryPostfix, directoryPostfix);
}
-void PlaceholderPath::constructPrefix(SequenceJob *job, QString &imagePrefix)
+QString PlaceholderPath::constructPrefix(const SequenceJob *job, const QString &imagePrefix)
{
CCDFrameType frameType = job->getFrameType();
auto filter = job->getCoreProperty(SequenceJob::SJ_Filter).toString();
@@ -183,12 +186,13 @@ void PlaceholderPath::constructPrefix(SequenceJob *job, QString &imagePrefix)
double exposure = job->getCoreProperty(SequenceJob::SJ_Exposure).toDouble();
- if (imagePrefix.isEmpty() == false)
- imagePrefix += '_';
+ QString tempImagePrefix = imagePrefix;
+ if (tempImagePrefix.isEmpty() == false)
+ tempImagePrefix += '_';
const auto isDarkFlat = job->getCoreProperty(SequenceJob::SJ_DarkFlat).toBool();
- imagePrefix += isDarkFlat ? "DarkFlat" : CCDFrameTypeNames[frameType];
+ tempImagePrefix += isDarkFlat ? "DarkFlat" : CCDFrameTypeNames[frameType];
if (filterEnabled && filter.isEmpty() == false &&
(frameType == FRAME_LIGHT ||
@@ -196,254 +200,188 @@ void PlaceholderPath::constructPrefix(SequenceJob *job, QString &imagePrefix)
frameType == FRAME_NONE ||
isDarkFlat))
{
- imagePrefix += '_';
- imagePrefix += filter;
+ tempImagePrefix += '_';
+ tempImagePrefix += filter;
}
if (expEnabled)
{
- imagePrefix += '_';
+ tempImagePrefix += '_';
double exposureValue = job->getCoreProperty(SequenceJob::SJ_Exposure).toDouble();
// Don't use the locale for exposure value in the capture file name, so that we get a "." as decimal separator
if (exposureValue == static_cast<int>(exposureValue))
// Whole number
- imagePrefix += QString::number(exposure, 'd', 0) + QString("_secs");
+ tempImagePrefix += QString::number(exposure, 'd', 0) + QString("_secs");
else
{
// Decimal
if (exposure >= 0.001)
- imagePrefix += QString::number(exposure, 'f', 3) + QString("_secs");
+ tempImagePrefix += QString::number(exposure, 'f', 3) + QString("_secs");
else
- imagePrefix += QString::number(exposure, 'f', 6) + QString("_secs");
+ tempImagePrefix += QString::number(exposure, 'f', 6) + QString("_secs");
}
}
if (tsEnabled)
{
- imagePrefix += SequenceJob::ISOMarker;
+ tempImagePrefix += SequenceJob::ISOMarker;
}
-}
-void PlaceholderPath::generateFilenameOld(const QString &format, bool batch_mode, QString *filename,
- QString fitsDir, QString seqPrefix, int nextSequenceID
- )
-{
- QString currentDir;
- if (batch_mode)
- currentDir = fitsDir.isEmpty() ? Options::fitsDir() : fitsDir;
- else
- currentDir = KSPaths::writableLocation(QStandardPaths::TempLocation) + "/kstars";
-
- /*
- if (QDir(currentDir).exists() == false)
- QDir().mkpath(currentDir);
- */
-
- if (currentDir.endsWith('/') == false)
- currentDir.append('/');
-
- // IS8601 contains colons but they are illegal under Windows OS, so replacing them with '-'
- // The timestamp is no longer ISO8601 but it should solve interoperality issues
- // between different OS hosts
- QString ts = QDateTime::currentDateTime().toString("yyyy-MM-ddThh-mm-ss");
-
- if (seqPrefix.contains("_ISO8601"))
- {
- QString finalPrefix = seqPrefix;
- finalPrefix.replace("ISO8601", ts);
- *filename = currentDir + finalPrefix +
- QString("_%1%2").arg(QString().asprintf("%03d", nextSequenceID), format);
- }
- else
- *filename = currentDir + seqPrefix + (seqPrefix.isEmpty() ? "" : "_") +
- QString("%1%2").arg(QString().asprintf("%03d", nextSequenceID), format);
+ return tempImagePrefix;
}
-void PlaceholderPath::generateFilename(
- QString format, SequenceJob &job, QString targetName, bool batch_mode, int nextSequenceID, const QString &extension,
- QString *filename) const
+QString PlaceholderPath::generateFilename(const SequenceJob &job, const QString &targetName, const bool batch_mode,
+ const int nextSequenceID, const QString &extension, const QString &filename, const bool glob,
+ const bool gettingSignature) const
{
auto filter = job.getCoreProperty(SequenceJob::SJ_Filter).toString();
auto rawPrefix = job.getCoreProperty(SequenceJob::SJ_RawPrefix).toString();
- auto filterEnabled = job.getCoreProperty(SequenceJob::SJ_FilterPrefixEnabled).toBool();
- auto expEnabled = job.getCoreProperty(SequenceJob::SJ_ExpPrefixEnabled).toBool();
- auto tsEnabled = job.getCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled).toBool();
auto darkFlat = job.getCoreProperty(SequenceJob::SJ_DarkFlat).toBool();
+ QString format = job.getCoreProperty(SequenceJob::SJ_LocalDirectory).toString();
- generateFilename(format, rawPrefix, filterEnabled, expEnabled,
- tsEnabled, darkFlat, filter, job.getFrameType(), job.getCoreProperty(SequenceJob::SJ_Exposure).toDouble(),
- targetName, batch_mode, nextSequenceID, extension, filename);
+ return generateFilename(format, rawPrefix, darkFlat, filter, job.getFrameType(),
+ job.getCoreProperty(SequenceJob::SJ_Exposure).toDouble(), targetName,
+ batch_mode, nextSequenceID, extension, filename, glob, gettingSignature);
}
-void PlaceholderPath::generateFilename(QString format, bool tsEnabled, bool batch_mode,
- int nextSequenceID, const QString &extension, QString *filename) const
+QString PlaceholderPath::generateFilename(const bool batch_mode, const int nextSequenceID, const QString &extension,
+ const QString &filename, const bool glob, const bool gettingSignature) const
{
- generateFilename(format, m_RawPrefix, m_filterPrefixEnabled, m_expPrefixEnabled,
- tsEnabled, m_DarkFlat, m_filter, m_frameType, m_exposure, m_targetName, batch_mode,
- nextSequenceID, extension, filename);
+ return generateFilename(m_format, m_RawPrefix, m_DarkFlat, m_filter, m_frameType, m_exposure, m_targetName,
+ batch_mode, nextSequenceID, extension, filename, glob, gettingSignature);
}
-void PlaceholderPath::generateFilename(
- QString format, QString rawFilePrefix, bool filterEnabled, bool exposureEnabled,
- bool tsEnabled, bool isDarkFlat, QString filter, CCDFrameType frameType, double exposure, QString targetName,
- bool batch_mode, int nextSequenceID, const QString &extension, QString *filename) const
+QString PlaceholderPath::generateFilename(const QString &format, const QString &rawFilePrefix, const bool isDarkFlat,
+ const QString &filter, const CCDFrameType &frameType, const double exposure,
+ const QString &targetName, const bool batch_mode, const int nextSequenceID, const QString &extension,
+ const QString &filename, const bool glob, const bool gettingSignature) const
{
- targetName = targetName.replace( QRegularExpression("\\s|/|\\(|\\)|:|\\*|~|\"" ), "_" )
- // Remove any two or more __
- .replace( QRegularExpression("_{2,}"), "_")
- // Remove any _ at the end
- .replace( QRegularExpression("_$"), "");
+ QString tempTargetName = targetName;
+ tempTargetName.replace( QRegularExpression("\\s|/|\\(|\\)|:|\\*|~|\"" ), "_" )
+ // Remove any two or more __
+ .replace( QRegularExpression("_{2,}"), "_")
+ // Remove any _ at the end
+ .replace( QRegularExpression("_$"), "");
int i = 0;
+ QString tempFilename = filename;
+ QString tempFormat = format;
QString currentDir;
if (batch_mode)
- {
- currentDir = m_seqFilename.path().isEmpty() ? Options::fitsDir() : currentDir;
- }
+ currentDir = format.left(format.lastIndexOf(QDir::separator()));
else
- {
- currentDir = KSPaths::writableLocation(QStandardPaths::TempLocation) + "/kstars";
- }
+ currentDir = KSPaths::writableLocation(QStandardPaths::TempLocation) + QDir::separator() + "kstars";
- if (currentDir.endsWith('/') == true)
+ if (currentDir.endsWith(QDir::separator()) == true)
currentDir.chop(1);
if (!currentDir.isEmpty())
- format = currentDir + "/" + format.section("/", -1);
+ tempFormat = currentDir + QDir::separator() + tempFormat.section(QDir::separator(), -1);
QRegularExpressionMatch match;
- QRegularExpression re("(?<replace>\\%(?<name>[f,D,T,e,F,t,d,p,s])(?<level>\\d+)?)(?<sep>[_/])?");
- while ((i = format.indexOf(re, i, &match)) != -1)
+ QRegularExpression
+ // This is the original regex with %p & %d tags - disabled for now to simply
+ // re("(?<replace>\\%(?<name>(filename|f|Datetime|D|Type|T|exposure|e|Filter|F|target|t|sequence|s|directory|d|path|p))(?<level>\\d+)?)(?<sep>[_/])?");
+ re("(?<replace>\\%(?<name>(filename|f|Datetime|D|Type|T|exposure|e|Filter|F|target|t|sequence|s))(?<level>\\d+)?)(?<sep>[_/])?");
+ while ((i = tempFormat.indexOf(re, i, &match)) != -1)
{
QString replacement = "";
- if (match.captured("name") == "f")
- {
+ if ((match.captured("name") == "filename") || (match.captured("name") == "f"))
replacement = m_seqFilename.baseName();
- }
- else if (match.captured("name") == "D")
+ else if ((match.captured("name") == "Datetime") || (match.captured("name") == "D"))
{
- if (tsEnabled)
- {
+ if (glob || gettingSignature)
+ replacement = "\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d-\\d\\d-\\d\\d";
+ else
replacement = QDateTime::currentDateTime().toString("yyyy-MM-ddThh-mm-ss");
- }
}
- else if (match.captured("name") == "T")
+ else if ((match.captured("name") == "Type") || (match.captured("name") == "T"))
{
if (isDarkFlat)
replacement = "DarkFlat";
else
replacement = getFrameType(frameType);
}
- else if (match.captured("name") == "e")
+ else if ((match.captured("name") == "exposure") || (match.captured("name") == "e"))
{
- if (exposureEnabled)
- {
- double fractpart, intpart;
- fractpart = std::modf(exposure, &intpart);
- if (fractpart == 0)
- {
- replacement = QString::number(exposure, 'd', 0) + QString("_secs");
- }
- else if (exposure >= 1e-3)
- {
- replacement = QString::number(exposure, 'f', 3) + QString("_secs");
- }
- else
- {
- replacement = QString::number(exposure, 'f', 6) + QString("_secs");
- }
- }
+ double fractpart, intpart;
+ fractpart = std::modf(exposure, &intpart);
+ if (fractpart == 0)
+ replacement = QString::number(exposure, 'd', 0) + QString("_secs");
+ else if (exposure >= 1e-3)
+ replacement = QString::number(exposure, 'f', 3) + QString("_secs");
+ else
+ replacement = QString::number(exposure, 'f', 6) + QString("_secs");
}
- else if (match.captured("name") == "F")
+ else if ((match.captured("name") == "Filter") || (match.captured("name") == "F"))
{
- if (format.indexOf("/", match.capturedStart()) == -1)
+ if (filter.isEmpty() == false
+ && (frameType == FRAME_LIGHT
+ || frameType == FRAME_FLAT
+ || frameType == FRAME_NONE
+ || isDarkFlat))
{
- // in the basename part of the path
- if (filterEnabled && filter.isEmpty() == false
- && (frameType == FRAME_LIGHT
- || frameType == FRAME_FLAT
- || frameType == FRAME_NONE
- || m_DarkFlat))
- {
- replacement = filter;
- }
- }
- else
- {
- // in the directory part of the path
- if (filter.isEmpty() == false
- && (frameType == FRAME_LIGHT
- || frameType == FRAME_FLAT
- || frameType == FRAME_NONE
- || m_DarkFlat))
- {
- replacement = filter;
- }
+ replacement = filter;
}
}
- else if (match.captured("name") == "t")
+ else if ((match.captured("name") == "target") || (match.captured("name") == "t"))
{
- if (format.indexOf("/", match.capturedStart()) != -1)
+ if (tempFormat.indexOf(QDir::separator(), match.capturedStart()) != -1)
{
// in the directory part of the path
- replacement = targetName;
+ replacement = tempTargetName;
}
else
{
// in the basename part of the path
replacement = rawFilePrefix;
- if (replacement.isEmpty() && !targetName.isEmpty())
- {
- replacement = targetName;
- }
+ if (replacement.isEmpty() && !tempTargetName.isEmpty())
+ replacement = tempTargetName;
}
}
- else if (match.captured("name") == "d" || match.captured("name") == "p")
+ // Disable for now %d & %p tags to simplfy
+ // else if ((match.captured("name") == "directory") || (match.captured("name") == "d") ||
+ // (match.captured("name") == "path") || (match.captured("name") == "p"))
+ // {
+ // int level = 0;
+ // if (!match.captured("level").isEmpty())
+ // level = match.captured("level").toInt() - 1;
+ // QFileInfo dir = m_seqFilename;
+ // for (int j = 0; j < level; ++j)
+ // dir = QFileInfo(dir.dir().path());
+ // if (match.captured("name") == "directory" || match.captured("name") == "d")
+ // replacement = dir.dir().dirName();
+ // else if (match.captured("name") == "path" || match.captured("name") == "p")
+ // replacement = dir.path();
+ // }
+ else if ((match.captured("name") == "sequence") || (match.captured("name") == "s"))
{
- int level = 0;
- if (!match.captured("level").isEmpty())
- {
- level = match.captured("level").toInt() - 1;
- }
- QFileInfo dir = m_seqFilename;
- for (int j = 0; j < level; ++j)
- {
- dir = QFileInfo(dir.dir().path());
- }
- if (match.captured("name") == "d")
- {
- replacement = dir.dir().dirName();
- }
- else if (match.captured("name") == "p")
- {
- replacement = dir.path();
- }
- }
- else if (match.captured("name") == "s")
- {
- int level = 1;
- if (!match.captured("level").isEmpty())
+ if (glob)
+ replacement = "(?<id>\\d+)";
+ else
{
- level = match.captured("level").toInt();
+ int level = 0;
+ if (!match.captured("level").isEmpty())
+ level = match.captured("level").toInt();
+ replacement = QString("%1").arg(nextSequenceID, level, 10, QChar('0'));
}
- replacement = QString("%1").arg(nextSequenceID, level, 10, QChar('0'));
}
else
- {
qWarning() << "Unknown replacement string: " << match.captured("replace");
- }
if (replacement.isEmpty())
- {
- format = format.replace(match.capturedStart(), match.capturedLength(), replacement);
- }
+ tempFormat = tempFormat.replace(match.capturedStart(), match.capturedLength(), replacement);
else
- {
- format = format.replace(match.capturedStart("replace"), match.capturedLength("replace"), replacement);
- }
+ tempFormat = tempFormat.replace(match.capturedStart("replace"), match.capturedLength("replace"), replacement);
i += replacement.length();
}
- *filename = format + extension;
+
+ if (!gettingSignature)
+ tempFilename = tempFormat + extension;
+ else
+ tempFilename = tempFormat.left(tempFormat.lastIndexOf("_"));
+
+ return tempFilename;
}
void PlaceholderPath::setGenerateFilenameSettings(const SequenceJob &job)
@@ -455,10 +393,12 @@ void PlaceholderPath::setGenerateFilenameSettings(const SequenceJob &job)
m_filter = job.getCoreProperty(SequenceJob::SJ_Filter).toString();
m_exposure = job.getCoreProperty(SequenceJob::SJ_Exposure).toDouble();
m_targetName = job.getCoreProperty(SequenceJob::SJ_TargetName).toString();
+ m_format = job.getCoreProperty(SequenceJob::SJ_LocalDirectory).toString();
+ m_tsEnabled = job.getCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled).toBool();
m_DarkFlat = job.getCoreProperty(SequenceJob::SJ_DarkFlat).toBool();
}
-QStringList PlaceholderPath::remainingPlaceholders(QString filename)
+QStringList PlaceholderPath::remainingPlaceholders(const QString &filename)
{
QList<QString> placeholders = {};
QRegularExpressionMatch match;
@@ -467,13 +407,44 @@ QStringList PlaceholderPath::remainingPlaceholders(QString filename)
while ((i = filename.indexOf(re, i, &match)) != -1)
{
if (match.hasMatch())
- {
placeholders.push_back(match.captured("replace"));
- }
i += match.capturedLength("replace");
}
return placeholders;
}
+QList<int> PlaceholderPath::getCompletedFileIds(const SequenceJob &job, const QString &targetName)
+{
+ QString path = generateFilename(job, targetName, true, 0, ".*", "", true);
+ QFileInfo path_info(path);
+ QDir dir(path_info.dir());
+ QStringList matchingFiles = dir.entryList(QDir::Files);
+ QRegularExpressionMatch match;
+ QRegularExpression re("^" + path_info.fileName() + "$");
+ QList<int> ids = {};
+ for (auto name : matchingFiles)
+ {
+ match = re.match(name);
+ if (match.hasMatch())
+ ids << match.captured("id").toInt();
+ }
+
+ return ids;
+}
+
+int PlaceholderPath::getCompletedFiles(const SequenceJob &job, const QString &targetName)
+{
+ return getCompletedFileIds(job, targetName).length();
+}
+
+int PlaceholderPath::checkSeqBoundary(const SequenceJob &job, const QString &targetName)
+{
+ auto ids = getCompletedFileIds(job, targetName);
+ if (ids.length() > 0)
+ return *std::max_element(ids.begin(), ids.end()) + 1;
+ else
+ return 1;
+}
+
}
diff --git a/kstars/ekos/capture/placeholderpath.h b/kstars/ekos/capture/placeholderpath.h
index 3d2d8ab55..545242c3a 100644
--- a/kstars/ekos/capture/placeholderpath.h
+++ b/kstars/ekos/capture/placeholderpath.h
@@ -25,39 +25,109 @@ class SequenceJob;
class PlaceholderPath
{
public:
- PlaceholderPath(QString seqFilename);
+ PlaceholderPath(const QString &seqFilename);
PlaceholderPath();
~PlaceholderPath();
- void processJobInfo(SequenceJob *job, QString targetName);
- void addJob(SequenceJob *job, QString targetName);
- void constructPrefix(SequenceJob *job, QString &imagePrefix);
- void generateFilenameOld(
- const QString &format, bool batch_mode, QString *filename,
- QString fitsDir, QString seqPrefix, int nextSequenceID);
- void generateFilename(QString format, SequenceJob &job, QString targetName, bool batch_mode, int nextSequenceID,
- const QString &extension,
- QString *filename) const;
- void generateFilename(QString format, bool tsEnabled, bool batch_mode,
- int nextSequenceID, const QString &extension, QString *filename) const;
- void generateFilename(QString format, QString rawFilePrefix, bool filterEnabled, bool exposureEnabled,
- bool tsEnabled, bool isDarkFlat, QString filter, CCDFrameType frameType, double exposure, QString targetName,
- bool batch_mode, int nextSequenceID, const QString &extension, QString *filename) const;
-
+ /**
+ * @brief processJobInfo loads the placeHolderPath with properties from the SequenceJob
+ * @param sequence job to be processed
+ * @param targetname name of the celestial target
+ */
+ void processJobInfo(SequenceJob *job, const QString &targetName);
+
+ /**
+ * @brief addjob creates the directory suffix for the SequenceJob
+ * @param sequence job to be processed
+ * @param targetname name of the celestial target
+ */
+ void addJob(SequenceJob *job, const QString &targetName);
+
+ /**
+ * @brief constructPrefix creates the prefix for the SequenceJob
+ * @param sequence job to be processed
+ * @param imagePrefix sequence job prefix string
+ * @return QString containing the processed prefix string
+ */
+ QString constructPrefix(const SequenceJob *job, const QString &imagePrefix);
+
+ /**
+ * @brief generateFilename performs the data for tag substituion in the filename
+ * @param sequence job to be processed
+ * @param targetName name of the celestial target
+ * @param batch_mode if true dateTime tag is returned with placeholders
+ * @param nextSequenceID file sequence number count
+ * @param extension filename extension
+ * @param filename passed in with tags
+ * @param glob used in batch mode
+ * @return QString containing formatted filename
+ *
+ * This overload of the function supports calls from the capture class
+ */
+ QString generateFilename(const SequenceJob &job, const QString &targetName, const bool batch_mode, const int nextSequenceID,
+ const QString &extension, const QString &filename, const bool glob = false, const bool gettingSignature = false) const;
+
+ /**
+ * @brief generateFilename performs the data for tag substituion in the filename
+ * @param sequence job to be processed
+ * @param batch_mode if true dateTime tag is returned with placeholders
+ * @param nextSequenceID file sequence number count
+ * @param extension filename extension
+ * @param filename passed in with tags
+ * @param glob used in batch mode
+ * @return QString containing formatted filename
+ *
+ * This overload of the function supports calls from the indicamera class
+ */
+ QString generateFilename(const bool batch_mode, const int nextSequenceID, const QString &extension, const QString &filename,
+ const bool glob = false, const bool gettingSignature = false) const;
+
+ /**
+ * @brief setGenerateFilenameSettings loads the placeHolderPath with settings from the passed job
+ * @param sequence job to be processed
+ */
void setGenerateFilenameSettings(const SequenceJob &job);
- void setSeqFilename(QString name)
- {
- m_seqFilename = name;
- }
- static QStringList remainingPlaceholders(QString filename);
+
+ /**
+ * @brief remainingPlaceholders finds placeholder tags in filename
+ * @param filename string to be processed
+ * @return a QStringList of the remaining placeholders
+ */
+ static QStringList remainingPlaceholders(const QString &filename);
+
+ /**
+ * @brief remainingPlaceholders provides a list of already existing fileIDs from passed sequence job
+ * @param sequence job to be processed
+ * @param targetName name of the celestial target
+ * @return a QStringList of the existing fileIDs
+ */
+ QList<int> getCompletedFileIds(const SequenceJob &job, const QString &targetName);
+
+ /**
+ * @brief getCompletedFiles provides the number of existing fileIDs
+ * @param sequence job to be processed
+ * @param targetName name of the celestial target
+ * @return number of existing fileIDs
+ */
+ int getCompletedFiles(const SequenceJob &job, const QString &targetName);
+
+ /**
+ * @brief checkSeqBoundary provides the ID to use for the next file
+ * @param sequence job to be processed
+ * @param targetName name of the celestial target
+ * @return number for the next fileIDs
+ */
+ int checkSeqBoundary(const SequenceJob &job, const QString &targetName);
private:
+ QString generateFilename(const QString &format, const QString &rawFilePrefix, const bool isDarkFlat, const QString &filter, const CCDFrameType &frameType,
+ const double exposure, const QString &targetName, const bool batch_mode, const int nextSequenceID, const QString &extension,
+ const QString &filename, const bool glob = false, const bool gettingSignature = false) const;
+
QString getFrameType(CCDFrameType frameType) const
{
if (m_frameTypes.contains(frameType))
- {
return m_frameTypes[frameType];
- }
qWarning() << frameType << " not in " << m_frameTypes.keys();
return "";
@@ -65,6 +135,8 @@ class PlaceholderPath
QMap<CCDFrameType, QString> m_frameTypes;
QFileInfo m_seqFilename;
+ QString m_format;
+ bool m_tsEnabled { false };
QString m_RawPrefix;
bool m_filterPrefixEnabled { false };
bool m_expPrefixEnabled { false };
diff --git a/kstars/ekos/capture/sequencejob.cpp b/kstars/ekos/capture/sequencejob.cpp
index 7af3b6f26..7ba8bfc92 100644
--- a/kstars/ekos/capture/sequencejob.cpp
+++ b/kstars/ekos/capture/sequencejob.cpp
@@ -476,8 +476,9 @@ CAPTUREResult SequenceJob::capture(bool autofocusReady, FITSMode mode)
const auto remoteDirectory = getCoreProperty(SJ_RemoteDirectory).toString();
if (captureDeviceAdaptor.data()->getActiveChip()->isBatchMode() && remoteDirectory.isEmpty() == false)
- captureDeviceAdaptor.data()->getActiveCamera()->updateUploadSettings(remoteDirectory + getCoreProperty(
- SJ_DirectoryPostfix).toString());
+ {
+ captureDeviceAdaptor.data()->getActiveCamera()->updateUploadSettings(remoteDirectory + getCoreProperty(SJ_DirectoryPostfix).toString());
+ }
const int ISOIndex = getCoreProperty(SJ_ISOIndex).toInt();
if (ISOIndex != -1)
@@ -697,12 +698,7 @@ CCDFrameType SequenceJob::getFrameType() const
QString SequenceJob::getSignature()
{
- auto localDirectory = getCoreProperty(SJ_LocalDirectory).toString();
- auto directoryPostfix = getCoreProperty(SJ_DirectoryPostfix).toString();
- auto fullPrefix = getCoreProperty(SJ_FullPrefix).toString();
-
- return QString(localDirectory + directoryPostfix + QDir::separator() + fullPrefix).remove(ISOMarker);
-
+ return (getCoreProperty(SJ_Signature).toString()).remove(".fits");
}
void SequenceJob::prepareCapture()
diff --git a/kstars/ekos/capture/sequencejob.h b/kstars/ekos/capture/sequencejob.h
index a21e551c5..1e3e61059 100644
--- a/kstars/ekos/capture/sequencejob.h
+++ b/kstars/ekos/capture/sequencejob.h
@@ -92,6 +92,8 @@ class SequenceJob : public QObject
SJ_TargetADU,
// Double
SJ_TargetADUTolerance,
+ // QString
+ SJ_Signature,
} PropertyID;
////////////////////////////////////////////////////////////////////////
diff --git a/kstars/ekos/scheduler/scheduler.cpp b/kstars/ekos/scheduler/scheduler.cpp
index 9a02588fe..320db05b7 100644
--- a/kstars/ekos/scheduler/scheduler.cpp
+++ b/kstars/ekos/scheduler/scheduler.cpp
@@ -5758,7 +5758,8 @@ uint16_t Scheduler::calculateExpectedCapturesMap(const QList<SequenceJob *> &seq
for (auto &seqJob : seqJobs)
{
capturesPerRepeat += seqJob->getCoreProperty(SequenceJob::SJ_Count).toInt();
- QString const signature = seqJob->getSignature();
+ Scheduler::preloadSignature(*seqJob);
+ QString signature = seqJob->getCoreProperty(SequenceJob::SJ_Signature).toString();
expected[signature] = static_cast<uint16_t>(seqJob->getCoreProperty(SequenceJob::SJ_Count).toInt()) + (expected.contains(
signature) ? expected[signature] : 0);
}
@@ -5875,7 +5876,7 @@ void Scheduler::updateCompletedJobsCount(bool forced)
}
/* Else recount captures already stored */
- newFramesCount[signature] = getCompletedFiles(signature, oneSeqJob->getCoreProperty(SequenceJob::SJ_FullPrefix).toString());
+ newFramesCount[signature] = getCompletedFiles(signature);
}
// determine whether we need to continue capturing, depending on captured frames
@@ -5993,7 +5994,6 @@ bool Scheduler::estimateJobTime(SchedulerJob *schedJob, const QMap<QString, uint
* This is why it is important to manage the repeat count of the scheduler job, as stated earlier.
*/
- // we start with the total value
captures_required = expected[seqJob->getSignature()] * schedJob->getRepeatsRequired();
qCInfo(KSTARS_EKOS_SCHEDULER) << QString("%1 sees %2 captures in output folder '%3'.").arg(seqName).arg(
@@ -7419,7 +7419,9 @@ bool Scheduler::loadSequenceQueue(const QString &fileURL, SchedulerJob *schedJob
hasAutoFocus = (!strcmp(findXMLAttValu(ep, "enabled"), "true"));
else if (!strcmp(tagXMLEle(ep), "Job"))
{
- jobs.append(processJobInfo(ep, schedJob));
+ SequenceJob *thisJob = processJobInfo(ep, schedJob);
+ Scheduler::preloadSignature(*thisJob);
+ jobs.append(thisJob);
if (jobs.count() == 1)
{
auto &firstJob = jobs.first();
@@ -7457,12 +7459,14 @@ SequenceJob * Scheduler::processJobInfo(XMLEle *root, SchedulerJob *schedJob)
return job;
}
-int Scheduler::getCompletedFiles(const QString &path, const QString &seqPrefix)
+int Scheduler::getCompletedFiles(const QString &path)
{
int seqFileCount = 0;
QFileInfo const path_info(path);
QString const sig_dir(path_info.dir().path());
QString const sig_file(path_info.completeBaseName());
+ QRegularExpression re(sig_file);
+
QDirIterator it(sig_dir, QDir::Files);
/* FIXME: this counts all files with prefix in the storage location, not just captures. DSS analysis files are counted in, for instance. */
@@ -7470,10 +7474,9 @@ int Scheduler::getCompletedFiles(const QString &path, const QString &seqPrefix)
{
QString const fileName = QFileInfo(it.next()).completeBaseName();
- if (fileName.startsWith(seqPrefix))
- {
+ QRegularExpressionMatch match = re.match(fileName);
+ if (match.hasMatch())
seqFileCount++;
- }
}
return seqFileCount;
@@ -8760,4 +8763,29 @@ bool Scheduler::importMosaic(const QJsonObject &payload)
return assistant->importMosaic(payload);
}
+void Scheduler::preloadSignature(SequenceJob &seqJob)
+{
+ QString tempFormat = seqJob.getCoreProperty(SequenceJob::SJ_LocalDirectory).toString();
+ if (!tempFormat.contains("%"))
+ {
+ if (!tempFormat.endsWith(QDir::separator()))
+ tempFormat.append(QDir::separator());
+ tempFormat.append("%t" + QDir::separator() + "%T" + QDir::separator());
+ if(!seqJob.getCoreProperty(SequenceJob::SJ_Filter).toString().isEmpty())
+ tempFormat.append("%F" + QDir::separator());
+ tempFormat.append("%t_%T_");
+ if(!seqJob.getCoreProperty(SequenceJob::SJ_Filter).toString().isEmpty())
+ tempFormat.append("%F_");
+ if(seqJob.getCoreProperty(SequenceJob::SJ_ExpPrefixEnabled).toBool() == true)
+ tempFormat.append("%e_");
+ if(seqJob.getCoreProperty(SequenceJob::SJ_TimeStampPrefixEnabled).toBool() == true)
+ tempFormat.append("%D_");
+ seqJob.setCoreProperty(SequenceJob::SJ_LocalDirectory, tempFormat);
+ }
+
+ auto placeholderPath = Ekos::PlaceholderPath();
+ QString signature = placeholderPath.generateFilename(seqJob, seqJob.getCoreProperty(SequenceJob::SJ_TargetName).toString(),
+ true, 1, ".fits", "", false, true);
+ seqJob.setCoreProperty(SequenceJob::SJ_Signature, signature);
+}
}
diff --git a/kstars/ekos/scheduler/scheduler.h b/kstars/ekos/scheduler/scheduler.h
index 4f3293fdc..77a7c4b72 100644
--- a/kstars/ekos/scheduler/scheduler.h
+++ b/kstars/ekos/scheduler/scheduler.h
@@ -363,7 +363,7 @@ class Scheduler : public QWidget, public Ui::Scheduler
/**
* @brief loadSequenceQueue Loads what's necessary to estimate job completion time from a capture sequence queue file
* @param fileURL the filename
- * @param schedJob the SchedulerJob is modified accoring to the contents of the sequence queue
+ * @param schedJob the SchedulerJob is modified according to the contents of the sequence queue
* @param jobs the returned values read from the file
* @param hasAutoFocus a return value indicating whether autofocus can be triggered by the sequence.
* @param scheduler instance of the scheduler used for logging. Can be nullptr.
@@ -477,7 +477,6 @@ class Scheduler : public QWidget, public Ui::Scheduler
*/
bool saveScheduler(const QUrl &fileURL);
-
private:
/**
* @brief processJobInfo a utility used by loadSequenceQueue() to help it read a capture sequence file
@@ -494,6 +493,8 @@ class Scheduler : public QWidget, public Ui::Scheduler
*/
static int timeHeuristics(const SchedulerJob *schedJob);
+ static void preloadSignature(SequenceJob &seqJob);
+
void setAlgorithm(int alg);
SchedulerAlgorithm getAlgorithm() const;
@@ -971,7 +972,7 @@ class Scheduler : public QWidget, public Ui::Scheduler
const SchedulerJob::CapturedFramesMap &capturedFramesCount,
SchedulerJob &schedJob, SchedulerJob::CapturedFramesMap &capture_map);
- int getCompletedFiles(const QString &path, const QString &seqPrefix);
+ int getCompletedFiles(const QString &path);
// retrieve the guiding status
GuideState getGuidingStatus();
diff --git a/kstars/indi/indicamera.cpp b/kstars/indi/indicamera.cpp
index f8d825fd2..43a921906 100644
--- a/kstars/indi/indicamera.cpp
+++ b/kstars/indi/indicamera.cpp
@@ -549,8 +549,7 @@ void Camera::processStream(IBLOB *bp)
bool Camera::generateFilename(bool batch_mode, const QString &extension, QString *filename)
{
- placeholderPath.generateFilename("%p1/%t/%T/%F/%t_%T_%F_%e_%D_%s3", ISOMode,
- batch_mode, nextSequenceID, extension, filename);
+ *filename = placeholderPath.generateFilename(batch_mode, nextSequenceID, extension, "");
QDir currentDir = QFileInfo(*filename).dir();
if (currentDir.exists() == false)
diff --git a/kstars/indi/servermanager.cpp b/kstars/indi/servermanager.cpp
index e6fada6ab..8132811c7 100644
--- a/kstars/indi/servermanager.cpp
+++ b/kstars/indi/servermanager.cpp
@@ -191,11 +191,10 @@ void ServerManager::startDriver(DriverInfo *dv)
{
QProcess script;
QEventLoop loop;
- QObject::connect(&script, static_cast<void (QProcess::*)(int exitCode, QProcess::ExitStatus status)>(&QProcess::finished), &loop, &QEventLoop::quit);
+ QObject::connect(&script, static_cast<void (QProcess::*)(int exitCode, QProcess::ExitStatus status)>(&QProcess::finished),
+ &loop, &QEventLoop::quit);
QObject::connect(&script, &QProcess::errorOccurred, &loop, &QEventLoop::quit);
-
qCDebug(KSTARS_INDI) << dv->getUniqueLabel() << ": Executing pre-driver script" << PreScript;
-
script.start(PreScript, QStringList());
loop.exec();
@@ -262,11 +261,10 @@ void ServerManager::startDriver(DriverInfo *dv)
{
QProcess script;
QEventLoop loop;
- QObject::connect(&script, static_cast<void (QProcess::*)(int exitCode, QProcess::ExitStatus status)>(&QProcess::finished), &loop, &QEventLoop::quit);
+ QObject::connect(&script, static_cast<void (QProcess::*)(int exitCode, QProcess::ExitStatus status)>(&QProcess::finished),
+ &loop, &QEventLoop::quit);
QObject::connect(&script, &QProcess::errorOccurred, &loop, &QEventLoop::quit);
-
qCDebug(KSTARS_INDI) << dv->getUniqueLabel() << ": Executing post-driver script" << PreScript;
-
script.start(PostScript, QStringList());
loop.exec();
diff --git a/kstars/kstars.kcfg b/kstars/kstars.kcfg
index 6a2e63ac1..b5cd83f22 100644
--- a/kstars/kstars.kcfg
+++ b/kstars/kstars.kcfg
@@ -1770,7 +1770,7 @@
</entry>
<entry name="CaptureDirectory" type="String">
<label>Path to capture directory to save images.</label>
- <default code="true">KSUtils::getDefaultPath("fitsDir")</default>
+ <default>""</default>
</entry>
<entry name="RemoteCaptureDirectory" type="String">
<label>Path to remote capture directory to save images.</label>
More information about the kde-doc-english
mailing list