diff --git a/examples/workflows/alexmac/imgproc.json b/examples/workflows/alexmac/imgproc.json index d73feb4e9a2bf1535609d838ab3dd5609b6d7aeb..0c475418e08a17d1801920391eb91fc45e8ad9a2 100644 --- a/examples/workflows/alexmac/imgproc.json +++ b/examples/workflows/alexmac/imgproc.json @@ -24,7 +24,7 @@ "depends": ["gray"] }, { - "name": "thresh", + "name": "threshold", "executable": "ih-threshold", "inputs": ["blurred"], "outputs": ["masked"], @@ -41,7 +41,7 @@ "inputs": ["masked", "base"], "outputs": ["recolor"], "arguments": {}, - "depends": ["thresh"] + "depends": ["threshold"] }, { "name": "crop", @@ -107,7 +107,7 @@ "depends": ["crop"] }, { - "name": "bgr_lab", + "name": "bgr2lab", "executable": "ih-convert-color", "inputs": ["cf1"], "outputs": ["lab_spectrum"], @@ -125,7 +125,7 @@ "arguments": { "--logic": "((r - g) > 5)" }, - "depends": ["bgr_lab"] + "depends": ["bgr2lab"] }, { "name": "labfilter2", @@ -159,7 +159,7 @@ "inputs": ["recolor"], "outputs": ["cf2"], "arguments": { - "--logic": "(((r - g) < ((i * i) / 4000)) or (((r - g) > (40 * (1 - (i / 765)))) and ((r - b) > (60 * (1 - (i / 765))))))" + "--logic": "(((r - g) < ((i . i) / 4000)) or (((r - g) > (40 . (1 - (i / 765)))) and ((r - b) > (60 . (1 - (i / 765))))))" }, "depends": ["reconstitute"] }, @@ -301,7 +301,7 @@ ] }, "options": { - + "save-steps": "true" }, "extract": { "histogram-bin": { diff --git a/examples/workflows/alexmac/output/fluo_hist_bins.json b/examples/workflows/alexmac/output/fluo_hist_bins.json new file mode 100644 index 0000000000000000000000000000000000000000..42098f96dcdef5c640f4a32ac21ff1e07be4fe04 --- /dev/null +++ b/examples/workflows/alexmac/output/fluo_hist_bins.json @@ -0,0 +1 @@ +[{"max": [255, 255, 54], "name": "fluo_bin1", "min": [1, 1, 1]}, {"max": [255, 255, 59], "name": "fluo_bin2", "min": [1, 1, 54]}, {"max": [255, 255, 64], "name": "fluo_bin3", "min": [1, 1, 59]}, {"max": [255, 255, 70], "name": "fluo_bin4", "min": [1, 1, 64]}, {"max": [255, 255, 76], "name": "fluo_bin5", "min": [1, 1, 70]}, {"max": [255, 255, 83], "name": "fluo_bin6", "min": [1, 1, 76]}, {"max": [255, 255, 91], "name": "fluo_bin7", "min": [1, 1, 83]}, {"max": [255, 255, 101], "name": "fluo_bin8", "min": [1, 1, 91]}, {"max": [255, 255, 121], "name": "fluo_bin9", "min": [1, 1, 101]}, {"max": [255, 255, 255], "name": "fluo_bin10", "min": [1, 1, 121]}] \ No newline at end of file diff --git a/examples/workflows/alexmac/output/images.csv b/examples/workflows/alexmac/output/images.csv new file mode 100644 index 0000000000000000000000000000000000000000..6afa5bb38b91e82a15fa82f17b955b087684ef7d Binary files /dev/null and b/examples/workflows/alexmac/output/images.csv differ diff --git a/examples/workflows/alexmac/output/img3.db b/examples/workflows/alexmac/output/img3.db new file mode 100644 index 0000000000000000000000000000000000000000..19c3c05a317bdfdb2210874587992d9e18cee7d7 Binary files /dev/null and b/examples/workflows/alexmac/output/img3.db differ diff --git a/examples/workflows/alexmac/output/imgproc.log b/examples/workflows/alexmac/output/imgproc.log new file mode 100644 index 0000000000000000000000000000000000000000..ab096d8d15aa8c9df43563abd4765c2dd626f6ea --- /dev/null +++ b/examples/workflows/alexmac/output/imgproc.log @@ -0,0 +1,3 @@ +Image processing error log +========================== +Image with id 'fluosv191' loaded from input path '/home/aknecht/stash/9-22-15_lemnatec_images/alexmac/81715 alexmac_81715-004D_2015-08-17_03-07-09_1855600/Fluo_SV_0_2/0_0_0.png' was not processed successfully. diff --git a/examples/workflows/alexmac/output/output.db b/examples/workflows/alexmac/output/output.db new file mode 100644 index 0000000000000000000000000000000000000000..3996eb7ee61298764a1c86c7320fb7329f1393c9 Binary files /dev/null and b/examples/workflows/alexmac/output/output.db differ diff --git a/examples/workflows/alexmac/output/rgb_hist_bins.json b/examples/workflows/alexmac/output/rgb_hist_bins.json new file mode 100644 index 0000000000000000000000000000000000000000..8256d25baa559c7fbed8b3926937aa01a15603d6 --- /dev/null +++ b/examples/workflows/alexmac/output/rgb_hist_bins.json @@ -0,0 +1 @@ +[{"max": [30, 63, 57], "name": "rgb_bin1", "min": [1, 1, 1]}, {"max": [30, 63, 75], "name": "rgb_bin2", "min": [1, 1, 57]}, {"max": [30, 63, 100], "name": "rgb_bin3", "min": [1, 1, 75]}, {"max": [30, 63, 137], "name": "rgb_bin4", "min": [1, 1, 100]}, {"max": [30, 63, 255], "name": "rgb_bin5", "min": [1, 1, 137]}, {"max": [30, 78, 57], "name": "rgb_bin6", "min": [1, 63, 1]}, {"max": [30, 78, 75], "name": "rgb_bin7", "min": [1, 63, 57]}, {"max": [30, 78, 100], "name": "rgb_bin8", "min": [1, 63, 75]}, {"max": [30, 78, 137], "name": "rgb_bin9", "min": [1, 63, 100]}, {"max": [30, 78, 255], "name": "rgb_bin10", "min": [1, 63, 137]}, {"max": [30, 102, 57], "name": "rgb_bin11", "min": [1, 78, 1]}, {"max": [30, 102, 75], "name": "rgb_bin12", "min": [1, 78, 57]}, {"max": [30, 102, 100], "name": "rgb_bin13", "min": [1, 78, 75]}, {"max": [30, 102, 137], "name": "rgb_bin14", "min": [1, 78, 100]}, {"max": [30, 102, 255], "name": "rgb_bin15", "min": [1, 78, 137]}, {"max": [30, 139, 57], "name": "rgb_bin16", "min": [1, 102, 1]}, {"max": [30, 139, 75], "name": "rgb_bin17", "min": [1, 102, 57]}, {"max": [30, 139, 100], "name": "rgb_bin18", "min": [1, 102, 75]}, {"max": [30, 139, 137], "name": "rgb_bin19", "min": [1, 102, 100]}, {"max": [30, 139, 255], "name": "rgb_bin20", "min": [1, 102, 137]}, {"max": [30, 255, 57], "name": "rgb_bin21", "min": [1, 139, 1]}, {"max": [30, 255, 75], "name": "rgb_bin22", "min": [1, 139, 57]}, {"max": [30, 255, 100], "name": "rgb_bin23", "min": [1, 139, 75]}, {"max": [30, 255, 137], "name": "rgb_bin24", "min": [1, 139, 100]}, {"max": [30, 255, 255], "name": "rgb_bin25", "min": [1, 139, 137]}, {"max": [52, 63, 57], "name": "rgb_bin26", "min": [30, 1, 1]}, {"max": [52, 63, 75], "name": "rgb_bin27", "min": [30, 1, 57]}, {"max": [52, 63, 100], "name": "rgb_bin28", "min": [30, 1, 75]}, {"max": [52, 63, 137], "name": "rgb_bin29", "min": [30, 1, 100]}, {"max": [52, 63, 255], "name": "rgb_bin30", "min": [30, 1, 137]}, {"max": [52, 78, 57], "name": "rgb_bin31", "min": [30, 63, 1]}, {"max": [52, 78, 75], "name": "rgb_bin32", "min": [30, 63, 57]}, {"max": [52, 78, 100], "name": "rgb_bin33", "min": [30, 63, 75]}, {"max": [52, 78, 137], "name": "rgb_bin34", "min": [30, 63, 100]}, {"max": [52, 78, 255], "name": "rgb_bin35", "min": [30, 63, 137]}, {"max": [52, 102, 57], "name": "rgb_bin36", "min": [30, 78, 1]}, {"max": [52, 102, 75], "name": "rgb_bin37", "min": [30, 78, 57]}, {"max": [52, 102, 100], "name": "rgb_bin38", "min": [30, 78, 75]}, {"max": [52, 102, 137], "name": "rgb_bin39", "min": [30, 78, 100]}, {"max": [52, 102, 255], "name": "rgb_bin40", "min": [30, 78, 137]}, {"max": [52, 139, 57], "name": "rgb_bin41", "min": [30, 102, 1]}, {"max": [52, 139, 75], "name": "rgb_bin42", "min": [30, 102, 57]}, {"max": [52, 139, 100], "name": "rgb_bin43", "min": [30, 102, 75]}, {"max": [52, 139, 137], "name": "rgb_bin44", "min": [30, 102, 100]}, {"max": [52, 139, 255], "name": "rgb_bin45", "min": [30, 102, 137]}, {"max": [52, 255, 57], "name": "rgb_bin46", "min": [30, 139, 1]}, {"max": [52, 255, 75], "name": "rgb_bin47", "min": [30, 139, 57]}, {"max": [52, 255, 100], "name": "rgb_bin48", "min": [30, 139, 75]}, {"max": [52, 255, 137], "name": "rgb_bin49", "min": [30, 139, 100]}, {"max": [52, 255, 255], "name": "rgb_bin50", "min": [30, 139, 137]}, {"max": [86, 63, 57], "name": "rgb_bin51", "min": [52, 1, 1]}, {"max": [86, 63, 75], "name": "rgb_bin52", "min": [52, 1, 57]}, {"max": [86, 63, 100], "name": "rgb_bin53", "min": [52, 1, 75]}, {"max": [86, 63, 137], "name": "rgb_bin54", "min": [52, 1, 100]}, {"max": [86, 63, 255], "name": "rgb_bin55", "min": [52, 1, 137]}, {"max": [86, 78, 57], "name": "rgb_bin56", "min": [52, 63, 1]}, {"max": [86, 78, 75], "name": "rgb_bin57", "min": [52, 63, 57]}, {"max": [86, 78, 100], "name": "rgb_bin58", "min": [52, 63, 75]}, {"max": [86, 78, 137], "name": "rgb_bin59", "min": [52, 63, 100]}, {"max": [86, 78, 255], "name": "rgb_bin60", "min": [52, 63, 137]}, {"max": [86, 102, 57], "name": "rgb_bin61", "min": [52, 78, 1]}, {"max": [86, 102, 75], "name": "rgb_bin62", "min": [52, 78, 57]}, {"max": [86, 102, 100], "name": "rgb_bin63", "min": [52, 78, 75]}, {"max": [86, 102, 137], "name": "rgb_bin64", "min": [52, 78, 100]}, {"max": [86, 102, 255], "name": "rgb_bin65", "min": [52, 78, 137]}, {"max": [86, 139, 57], "name": "rgb_bin66", "min": [52, 102, 1]}, {"max": [86, 139, 75], "name": "rgb_bin67", "min": [52, 102, 57]}, {"max": [86, 139, 100], "name": "rgb_bin68", "min": [52, 102, 75]}, {"max": [86, 139, 137], "name": "rgb_bin69", "min": [52, 102, 100]}, {"max": [86, 139, 255], "name": "rgb_bin70", "min": [52, 102, 137]}, {"max": [86, 255, 57], "name": "rgb_bin71", "min": [52, 139, 1]}, {"max": [86, 255, 75], "name": "rgb_bin72", "min": [52, 139, 57]}, {"max": [86, 255, 100], "name": "rgb_bin73", "min": [52, 139, 75]}, {"max": [86, 255, 137], "name": "rgb_bin74", "min": [52, 139, 100]}, {"max": [86, 255, 255], "name": "rgb_bin75", "min": [52, 139, 137]}, {"max": [131, 63, 57], "name": "rgb_bin76", "min": [86, 1, 1]}, {"max": [131, 63, 75], "name": "rgb_bin77", "min": [86, 1, 57]}, {"max": [131, 63, 100], "name": "rgb_bin78", "min": [86, 1, 75]}, {"max": [131, 63, 137], "name": "rgb_bin79", "min": [86, 1, 100]}, {"max": [131, 63, 255], "name": "rgb_bin80", "min": [86, 1, 137]}, {"max": [131, 78, 57], "name": "rgb_bin81", "min": [86, 63, 1]}, {"max": [131, 78, 75], "name": "rgb_bin82", "min": [86, 63, 57]}, {"max": [131, 78, 100], "name": "rgb_bin83", "min": [86, 63, 75]}, {"max": [131, 78, 137], "name": "rgb_bin84", "min": [86, 63, 100]}, {"max": [131, 78, 255], "name": "rgb_bin85", "min": [86, 63, 137]}, {"max": [131, 102, 57], "name": "rgb_bin86", "min": [86, 78, 1]}, {"max": [131, 102, 75], "name": "rgb_bin87", "min": [86, 78, 57]}, {"max": [131, 102, 100], "name": "rgb_bin88", "min": [86, 78, 75]}, {"max": [131, 102, 137], "name": "rgb_bin89", "min": [86, 78, 100]}, {"max": [131, 102, 255], "name": "rgb_bin90", "min": [86, 78, 137]}, {"max": [131, 139, 57], "name": "rgb_bin91", "min": [86, 102, 1]}, {"max": [131, 139, 75], "name": "rgb_bin92", "min": [86, 102, 57]}, {"max": [131, 139, 100], "name": "rgb_bin93", "min": [86, 102, 75]}, {"max": [131, 139, 137], "name": "rgb_bin94", "min": [86, 102, 100]}, {"max": [131, 139, 255], "name": "rgb_bin95", "min": [86, 102, 137]}, {"max": [131, 255, 57], "name": "rgb_bin96", "min": [86, 139, 1]}, {"max": [131, 255, 75], "name": "rgb_bin97", "min": [86, 139, 57]}, {"max": [131, 255, 100], "name": "rgb_bin98", "min": [86, 139, 75]}, {"max": [131, 255, 137], "name": "rgb_bin99", "min": [86, 139, 100]}, {"max": [131, 255, 255], "name": "rgb_bin100", "min": [86, 139, 137]}, {"max": [255, 63, 57], "name": "rgb_bin101", "min": [131, 1, 1]}, {"max": [255, 63, 75], "name": "rgb_bin102", "min": [131, 1, 57]}, {"max": [255, 63, 100], "name": "rgb_bin103", "min": [131, 1, 75]}, {"max": [255, 63, 137], "name": "rgb_bin104", "min": [131, 1, 100]}, {"max": [255, 63, 255], "name": "rgb_bin105", "min": [131, 1, 137]}, {"max": [255, 78, 57], "name": "rgb_bin106", "min": [131, 63, 1]}, {"max": [255, 78, 75], "name": "rgb_bin107", "min": [131, 63, 57]}, {"max": [255, 78, 100], "name": "rgb_bin108", "min": [131, 63, 75]}, {"max": [255, 78, 137], "name": "rgb_bin109", "min": [131, 63, 100]}, {"max": [255, 78, 255], "name": "rgb_bin110", "min": [131, 63, 137]}, {"max": [255, 102, 57], "name": "rgb_bin111", "min": [131, 78, 1]}, {"max": [255, 102, 75], "name": "rgb_bin112", "min": [131, 78, 57]}, {"max": [255, 102, 100], "name": "rgb_bin113", "min": [131, 78, 75]}, {"max": [255, 102, 137], "name": "rgb_bin114", "min": [131, 78, 100]}, {"max": [255, 102, 255], "name": "rgb_bin115", "min": [131, 78, 137]}, {"max": [255, 139, 57], "name": "rgb_bin116", "min": [131, 102, 1]}, {"max": [255, 139, 75], "name": "rgb_bin117", "min": [131, 102, 57]}, {"max": [255, 139, 100], "name": "rgb_bin118", "min": [131, 102, 75]}, {"max": [255, 139, 137], "name": "rgb_bin119", "min": [131, 102, 100]}, {"max": [255, 139, 255], "name": "rgb_bin120", "min": [131, 102, 137]}, {"max": [255, 255, 57], "name": "rgb_bin121", "min": [131, 139, 1]}, {"max": [255, 255, 75], "name": "rgb_bin122", "min": [131, 139, 57]}, {"max": [255, 255, 100], "name": "rgb_bin123", "min": [131, 139, 75]}, {"max": [255, 255, 137], "name": "rgb_bin124", "min": [131, 139, 100]}, {"max": [255, 255, 255], "name": "rgb_bin125", "min": [131, 139, 137]}] \ No newline at end of file diff --git a/examples/workflows/alexmac/stats.json b/examples/workflows/alexmac/stats.json new file mode 100644 index 0000000000000000000000000000000000000000..ee72e6a9b721f90e52bf37f6e2fb160cc48520e8 --- /dev/null +++ b/examples/workflows/alexmac/stats.json @@ -0,0 +1,36 @@ +{ + "rgb": [ + { + "name": "area", + "executable": "pcv-stats-shoot-area", + "inputs": ["images"], + "outputs": ["shootarea"], + "arguments": { + "--group": { + "rgb": ["rgbsv"] + } + }, + "depends": ["bin"] + }, + { + "name": "normal", + "executable": "pcv-stats-normalize", + "inputs": ["shootarea"], + "outputs": ["normal"], + "arguments": { + "--column": "pixels" + }, + "depends": ["area"] + }, + { + "name": "threshold", + "executable": "pcv-stats-threshold", + "inputs": ["normal"], + "outputs": ["thresh"], + "arguments": { + "--thresh": 0.01 + }, + "depends": ["normal"] + } + ] +} diff --git a/ih/workflow.py b/ih/workflow.py index 20a79f6d0e2ba4c70e1512bc8100340c76fa0526..a5b922e2f0a6e1d5abd869d73ef1da316600ef1c 100644 --- a/ih/workflow.py +++ b/ih/workflow.py @@ -383,16 +383,17 @@ class Statistics(Workflow): Creates the pegasus submit script. submit.sh """ with open(self.basepath + "/" + loc + "/submit.sh", "w") as wh: + submit = textwrap.dedent("""\ #!/bin/bash - + %s plan=`pegasus-plan \\ --conf "%s" \\ --sites "%s" \\ --dir "%s" \\ --output-site local \\ --dax "%s" \\ - --randomdir \\""" % (self.basepath + "/" + loc + "/conf.rc", "condorpool" if "osg" in self.config else "local", self.basepath + "/work/stats", self.basepath + "/" + loc + "/stats.dax")) + --randomdir \\""" % ("module unload python/2.7" if "osg" in self.config else "", self.basepath + "/" + loc + "/conf.rc", "condorpool" if "osg" in self.config else "local", self.basepath + "/work/stats", self.basepath + "/" + loc + "/stats.dax")) if "cluster" in self.config: submit += """--cluster horizontal \\\n""" submit += textwrap.dedent("""\ @@ -693,8 +694,8 @@ class ImageProcessor(Workflow): arguments["--createdb"] = "" arguments["--inputs"] = " ".join([x for x in exInput[type][q].keys() if ".png" in x]) self._addFile(type + str(q) + ".db", type, "output") - self._addJob(type + "_extract" + str(q), "ih-extract-multi", exInput[type][q], {"db": {"file": type + str(q) + ".db", "transfer": False}}, arguments, exDep[type][q], walltime = 240) - self._addJob(type + "_extract" + str(q), "ih-extract-multi", exInput[type][q], {"db": {"file": type + str(q) + ".db", "transfer": False}}, arguments, [], dax = self.exdax, walltime = 240) + self._addJob(type + "_extract" + str(q), "ih-extract-multi", exInput[type][q], {"db": {"file": type + str(q) + ".db", "transfer": False}}, arguments, exDep[type][q], walltime = 300) + self._addJob(type + "_extract" + str(q), "ih-extract-multi", exInput[type][q], {"db": {"file": type + str(q) + ".db", "transfer": False}}, arguments, [], dax = self.exdax, walltime = 300) maprc.write(type + str(q) + ".db" + " file://" + self.basepath + "/output/" + type + str(q) + ".db" + " pool=\"local\"\n") binDep.append(type + "_extract" + str(q)) aggIn[type + str(q) + ".db"] = {"file": type + str(q) + ".db", "transfer": False} @@ -726,8 +727,8 @@ class ImageProcessor(Workflow): exInput[type][q]["db"] = {"file": type + str(q) + ".db", "transfer": False} exInput[type][q]["binfile"] = {"file": map[type] + "_hist_bins.json", "transfer": False} arguments["--bins"] = "binfile" - self._addJob(type + "_extractBins" + str(q), "ih-extract-multi", exInput[type][q], {}, arguments, ["bin_creation"], walltime = 240) - self._addJob(type + "_extractBins" + str(q), "ih-extract-multi", exInput[type][q], {}, arguments, ["bin_creation"], dax = self.exdax, walltime = 240) + self._addJob(type + "_extractBins" + str(q), "ih-extract-multi", exInput[type][q], {}, arguments, ["bin_creation"], walltime = 480) + self._addJob(type + "_extractBins" + str(q), "ih-extract-multi", exInput[type][q], {}, arguments, ["bin_creation"], dax = self.exdax, walltime = 480) binDep.append(type + "_extractBins" + str(q)) aggIn["db"] = {"file": "img2.db", "transfer": False} self._addJob("sql_aggregate2", "ih-sql-aggregate", aggIn, {"img3.db": {"file": "img3.db", "transfer": True}}, {"--db": "db", "--output": "img3.db", "--inputs": " ".join([aggIn[x]["file"] for x in aggIn if x != "db"])}, binDep)