Browse Source

Fix problem if --flats-after is not set

Matthias Vogelgesang 9 years ago
parent
commit
cc2188808a
1 changed files with 66 additions and 54 deletions
  1. 66 54
      reco.c

+ 66 - 54
reco.c

@@ -293,53 +293,54 @@ run_simple_reconstruction (Params *params, gchar **argv)
         flat_before_reader = make_task (data->pm, "reader");
         flat_before_stack = make_task (data->pm, "stack");
         flat_before_median = make_task (data->pm, "flatten");
-
-        flat_after_reader = make_task (data->pm, "reader");
-        flat_after_stack = make_task (data->pm, "stack");
-        flat_after_median = make_task (data->pm, "flatten");
-
-        flat_interpolate = make_task (data->pm, "interpolate");
-
         dark_reader = make_task (data->pm, "reader");
         ffc = make_task (data->pm, "flat-field-correction");
-
         copy = UFO_TASK_NODE (ufo_copy_task_new ());
         sum = make_task (data->pm, "flatten-inplace");
         sum_writer = make_task (data->pm, "writer");
 
-        g_object_set (flat_before_stack, "num-items", 21, NULL);
-        g_object_set (flat_after_stack, "num-items", 21, NULL);
-
-        g_object_set (ffc,
-                      "dark-scale", params->dark_scale,
-                      "absorption-correction", TRUE,
-                      NULL);
-
         sum_name = g_strdup_printf ("%s.sum.tif", params->output);
-        g_object_set (sum_writer,
-                      "filename", sum_name,
-                      NULL);
-        g_free (sum_name);
 
         g_object_set (flat_before_reader, "path", params->flats, NULL);
-        g_object_set (flat_after_reader, "path", params->flats_after, NULL);
+        g_object_set (flat_before_stack, "num-items", 21, NULL);
         g_object_set (dark_reader, "path", params->darks, NULL);
+        g_object_set (sum_writer, "filename", sum_name, NULL);
+
+        g_object_set (ffc, "dark-scale", params->dark_scale,
+                           "absorption-correction", TRUE,
+                           NULL);
+
+        g_free (sum_name);
 
         ufo_task_graph_connect_nodes (data->graph, flat_before_reader, flat_before_stack);
         ufo_task_graph_connect_nodes (data->graph, flat_before_stack, flat_before_median);
-        ufo_task_graph_connect_nodes (data->graph, flat_after_reader, flat_after_stack);
-        ufo_task_graph_connect_nodes (data->graph, flat_after_stack, flat_after_median);
-        ufo_task_graph_connect_nodes_full (data->graph, flat_before_median, flat_interpolate, 0);
-        ufo_task_graph_connect_nodes_full (data->graph, flat_after_median, flat_interpolate, 1);
-
         ufo_task_graph_connect_nodes_full (data->graph, radio_reader, ffc, 0);
         ufo_task_graph_connect_nodes_full (data->graph, dark_reader, ffc, 1);
-        ufo_task_graph_connect_nodes_full (data->graph, flat_interpolate, ffc, 2);
-        ufo_task_graph_connect_nodes (data->graph, ffc, copy);
+        ufo_task_graph_connect_nodes (data->graph, ffc, data->pad);
+        /* ufo_task_graph_connect_nodes (data->graph, ffc, copy); */
+        /* ufo_task_graph_connect_nodes_full (data->graph, copy, sum, 0); */
+        /* ufo_task_graph_connect_nodes_full (data->graph, copy, data->pad, 0); */
+        /* ufo_task_graph_connect_nodes (data->graph, sum, sum_writer); */
 
-        ufo_task_graph_connect_nodes (data->graph, copy, data->pad);
-        ufo_task_graph_connect_nodes (data->graph, copy, sum);
-        ufo_task_graph_connect_nodes (data->graph, sum, sum_writer);
+        if (params->flats_after != NULL) {
+            flat_after_reader = make_task (data->pm, "reader");
+            flat_after_stack = make_task (data->pm, "stack");
+            flat_after_median = make_task (data->pm, "flatten");
+
+            flat_interpolate = make_task (data->pm, "interpolate");
+
+            g_object_set (flat_after_reader, "path", params->flats_after, NULL);
+            g_object_set (flat_after_stack, "num-items", 21, NULL);
+
+            ufo_task_graph_connect_nodes (data->graph, flat_after_reader, flat_after_stack);
+            ufo_task_graph_connect_nodes (data->graph, flat_after_stack, flat_after_median);
+            ufo_task_graph_connect_nodes_full (data->graph, flat_before_median, flat_interpolate, 0);
+            ufo_task_graph_connect_nodes_full (data->graph, flat_after_median, flat_interpolate, 1);
+            ufo_task_graph_connect_nodes_full (data->graph, flat_interpolate, ffc, 2);
+        }
+        else {
+            ufo_task_graph_connect_nodes_full (data->graph, flat_before_median, ffc, 2);
+        }
     }
     else {
         warn ("> No flat/dark field correction\n");
@@ -364,13 +365,16 @@ run_simple_reconstruction (Params *params, gchar **argv)
         g_object_unref (flat_before_reader);
         g_object_unref (flat_before_stack);
         g_object_unref (flat_before_median);
-        g_object_unref (flat_after_reader);
-        g_object_unref (flat_after_stack);
-        g_object_unref (flat_after_median);
         g_object_unref (dark_reader);
         g_object_unref (copy);
         g_object_unref (sum);
         g_object_unref (sum_writer);
+
+        if (params->flats_after) {
+            g_object_unref (flat_after_reader);
+            g_object_unref (flat_after_stack);
+            g_object_unref (flat_after_median);
+        }
     }
 }
 
@@ -473,38 +477,43 @@ run_cached_reconstruction (Params *params, gchar **argv)
             flat_before_reader = make_task (data->pm, "reader");
             flat_before_stack = make_task (data->pm, "stack");
             flat_before_median = make_task (data->pm, "flatten");
-
-            flat_after_reader = make_task (data->pm, "reader");
-            flat_after_stack = make_task (data->pm, "stack");
-            flat_after_median = make_task (data->pm, "flatten");
-
-            flat_interpolate = make_task (data->pm, "interpolate");
             dark_reader = make_task (data->pm, "reader");
             ffc = make_task (data->pm, "flat-field-correction");
 
+            g_object_set (dark_reader, "path", params->darks, NULL);
+            g_object_set (flat_before_reader, "path", params->flats, NULL);
             g_object_set (flat_before_stack, "num-items", 21, NULL);
-            g_object_set (flat_after_stack, "num-items", 21, NULL);
 
             g_object_set (ffc,
                           "dark-scale", params->dark_scale,
                           "absorption-correction", TRUE,
                           NULL);
 
-            g_object_set (flat_before_reader, "path", params->flats, NULL);
-            g_object_set (flat_after_reader, "path", params->flats_after, NULL);
-            g_object_set (dark_reader, "path", params->darks, NULL);
-
             ufo_task_graph_connect_nodes (read_graph, flat_before_reader, flat_before_stack);
             ufo_task_graph_connect_nodes (read_graph, flat_before_stack, flat_before_median);
-            ufo_task_graph_connect_nodes (read_graph, flat_after_reader, flat_after_stack);
-            ufo_task_graph_connect_nodes (read_graph, flat_after_stack, flat_after_median);
-            ufo_task_graph_connect_nodes_full (read_graph, flat_before_median, flat_interpolate, 0);
-            ufo_task_graph_connect_nodes_full (read_graph, flat_after_median, flat_interpolate, 1);
-
             ufo_task_graph_connect_nodes_full (read_graph, radio_reader, ffc, 0);
             ufo_task_graph_connect_nodes_full (read_graph, dark_reader, ffc, 1);
-            ufo_task_graph_connect_nodes_full (read_graph, flat_interpolate, ffc, 2);
             ufo_task_graph_connect_nodes (read_graph, ffc, data->output);
+
+            if (params->flats_after) {
+                flat_after_reader = make_task (data->pm, "reader");
+                flat_after_stack = make_task (data->pm, "stack");
+                flat_after_median = make_task (data->pm, "flatten");
+
+                flat_interpolate = make_task (data->pm, "interpolate");
+
+                g_object_set (flat_after_stack, "num-items", 21, NULL);
+                g_object_set (flat_after_reader, "path", params->flats_after, NULL);
+
+                ufo_task_graph_connect_nodes (read_graph, flat_after_reader, flat_after_stack);
+                ufo_task_graph_connect_nodes (read_graph, flat_after_stack, flat_after_median);
+                ufo_task_graph_connect_nodes_full (read_graph, flat_before_median, flat_interpolate, 0);
+                ufo_task_graph_connect_nodes_full (read_graph, flat_after_median, flat_interpolate, 1);
+                ufo_task_graph_connect_nodes_full (read_graph, flat_interpolate, ffc, 2);
+            }
+            else {
+                ufo_task_graph_connect_nodes_full (read_graph, flat_before_median, ffc, 2);
+            }
         }
         else {
             warn ("> No flat/dark field correction\n");
@@ -529,10 +538,13 @@ run_cached_reconstruction (Params *params, gchar **argv)
             g_object_unref (flat_before_reader);
             g_object_unref (flat_before_stack);
             g_object_unref (flat_before_median);
-            g_object_unref (flat_after_reader);
-            g_object_unref (flat_after_stack);
-            g_object_unref (flat_after_median);
             g_object_unref (dark_reader);
+
+            if (params->flats_after) {
+                g_object_unref (flat_after_reader);
+                g_object_unref (flat_after_stack);
+                g_object_unref (flat_after_median);
+            }
         }
     }