changeset 22:ccbcc012d78d draft default tip

planemo upload for repository https://github.com/goeckslab/gleam.git commit d8308188856a1dd8d40d3ccfe4c4ec03c4fd36de
author goeckslab
date Fri, 23 Jan 2026 20:25:27 +0000
parents d5c582cf74bc
children
files image_workflow.py
diffstat 1 files changed, 39 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/image_workflow.py	Tue Jan 20 01:25:35 2026 +0000
+++ b/image_workflow.py	Fri Jan 23 20:25:27 2026 +0000
@@ -129,10 +129,46 @@
             logger.error("Error loading metadata file", exc_info=True)
             raise
 
-        label_col = self.args.target_column or LABEL_COLUMN_NAME
-        image_col = self.args.image_column or IMAGE_PATH_COLUMN_NAME
+        def resolve_column_name(value: Optional[str], columns, label: str) -> Optional[str]:
+            """Resolve Galaxy data_column index (1-based) to header if needed."""
+            if value is None:
+                return None
+            if str(value).isdigit():
+                idx = int(value) - 1
+                if 0 <= idx < len(columns):
+                    resolved = columns[idx]
+                    if value in columns:
+                        logger.warning(
+                            "%s column value '%s' matches a header, but Galaxy data_column "
+                            "inputs are interpreted as 1-based indices; using column #%s header '%s'.",
+                            label,
+                            value,
+                            idx + 1,
+                            resolved,
+                        )
+                    logger.info(
+                        "%s column '%s' not found; using column #%s header '%s' instead.",
+                        label,
+                        value,
+                        idx + 1,
+                        resolved,
+                    )
+                    return resolved
+                raise ValueError(
+                    f"{label} column index '{value}' is out of range for dataset with "
+                    f"{len(columns)} columns. Update the XML selections or rename your columns."
+                )
+            if value in columns:
+                return value
+            return value
 
-        # Remember the user-specified columns for reporting
+        label_col = resolve_column_name(self.args.target_column, df.columns, "Target") or LABEL_COLUMN_NAME
+        image_col = resolve_column_name(self.args.image_column, df.columns, "Image") or IMAGE_PATH_COLUMN_NAME
+        self.args.sample_id_column = resolve_column_name(
+            self.args.sample_id_column, df.columns, "Sample ID"
+        )
+
+        # Remember the resolved columns for reporting
         self.args.report_target_column = label_col
         self.args.report_image_column = image_col