Mercurial > repos > goeckslab > image_learner
comparison image_workflow.py @ 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 |
comparison
equal
deleted
inserted
replaced
| 21:d5c582cf74bc | 22:ccbcc012d78d |
|---|---|
| 127 logger.info(f"Loaded metadata file: {self.args.csv_file}") | 127 logger.info(f"Loaded metadata file: {self.args.csv_file}") |
| 128 except Exception: | 128 except Exception: |
| 129 logger.error("Error loading metadata file", exc_info=True) | 129 logger.error("Error loading metadata file", exc_info=True) |
| 130 raise | 130 raise |
| 131 | 131 |
| 132 label_col = self.args.target_column or LABEL_COLUMN_NAME | 132 def resolve_column_name(value: Optional[str], columns, label: str) -> Optional[str]: |
| 133 image_col = self.args.image_column or IMAGE_PATH_COLUMN_NAME | 133 """Resolve Galaxy data_column index (1-based) to header if needed.""" |
| 134 | 134 if value is None: |
| 135 # Remember the user-specified columns for reporting | 135 return None |
| 136 if str(value).isdigit(): | |
| 137 idx = int(value) - 1 | |
| 138 if 0 <= idx < len(columns): | |
| 139 resolved = columns[idx] | |
| 140 if value in columns: | |
| 141 logger.warning( | |
| 142 "%s column value '%s' matches a header, but Galaxy data_column " | |
| 143 "inputs are interpreted as 1-based indices; using column #%s header '%s'.", | |
| 144 label, | |
| 145 value, | |
| 146 idx + 1, | |
| 147 resolved, | |
| 148 ) | |
| 149 logger.info( | |
| 150 "%s column '%s' not found; using column #%s header '%s' instead.", | |
| 151 label, | |
| 152 value, | |
| 153 idx + 1, | |
| 154 resolved, | |
| 155 ) | |
| 156 return resolved | |
| 157 raise ValueError( | |
| 158 f"{label} column index '{value}' is out of range for dataset with " | |
| 159 f"{len(columns)} columns. Update the XML selections or rename your columns." | |
| 160 ) | |
| 161 if value in columns: | |
| 162 return value | |
| 163 return value | |
| 164 | |
| 165 label_col = resolve_column_name(self.args.target_column, df.columns, "Target") or LABEL_COLUMN_NAME | |
| 166 image_col = resolve_column_name(self.args.image_column, df.columns, "Image") or IMAGE_PATH_COLUMN_NAME | |
| 167 self.args.sample_id_column = resolve_column_name( | |
| 168 self.args.sample_id_column, df.columns, "Sample ID" | |
| 169 ) | |
| 170 | |
| 171 # Remember the resolved columns for reporting | |
| 136 self.args.report_target_column = label_col | 172 self.args.report_target_column = label_col |
| 137 self.args.report_image_column = image_col | 173 self.args.report_image_column = image_col |
| 138 | 174 |
| 139 missing_cols = [] | 175 missing_cols = [] |
| 140 if label_col not in df.columns: | 176 if label_col not in df.columns: |
