Mercurial > repos > bgruening > flexynesis_utils
comparison index_to_name.py @ 3:f413f828ef30 draft default tip
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/flexynesis commit 6b520305ec30e6dc37eba92c67a5368cea0fc5ad
| author | bgruening |
|---|---|
| date | Wed, 23 Jul 2025 07:50:03 +0000 |
| parents | e5ecfffcfe45 |
| children |
comparison
equal
deleted
inserted
replaced
| 2:e5ecfffcfe45 | 3:f413f828ef30 |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 | 2 |
| 3 import sys | 3 import sys |
| 4 from pathlib import Path | |
| 4 | 5 |
| 5 import pandas as pd | 6 import pandas as pd |
| 6 | 7 |
| 7 | 8 |
| 8 def get_column_name(file_path, index): | 9 def get_column_names(file_path, indices): |
| 9 """ | 10 """ |
| 10 Get the column name based on an index from a tabular file. | 11 Get column names based on multiple indices from a tabular file. |
| 11 """ | 12 """ |
| 12 data = pd.read_csv(file_path, sep=",") | 13 try: |
| 13 index = index - 1 # Convert to zero-based index | 14 file_ext = Path(file_path).suffix.lower() |
| 14 if index < 0 or index >= len(data.columns): | 15 sep = ',' if file_ext == '.csv' else '\t' |
| 15 print(f"Error: Index {index+1} is out of range. File has {len(data.columns)} columns (1-{len(data.columns)}).") | 16 |
| 16 return None | 17 if file_ext in ['.csv', '.tsv', '.txt', '.tab', '.tabular']: |
| 17 return data.columns[index].strip() | 18 data = pd.read_csv(file_path, sep=sep) |
| 19 else: | |
| 20 raise ValueError(f"Unsupported file extension: {file_ext}") | |
| 21 | |
| 22 except Exception as e: | |
| 23 raise ValueError(f"Error loading data from {file_path}: {e}") from e | |
| 24 | |
| 25 column_names = [] | |
| 26 | |
| 27 for index in indices: | |
| 28 zero_based_index = index - 1 # Convert to zero-based index | |
| 29 if zero_based_index < 0 or zero_based_index >= len(data.columns): | |
| 30 print(f"Error: Index {index} is out of range. File has {len(data.columns)} columns (1-{len(data.columns)}).") | |
| 31 return None | |
| 32 column_names.append(data.columns[zero_based_index].strip()) | |
| 33 | |
| 34 return column_names | |
| 18 | 35 |
| 19 | 36 |
| 20 if __name__ == "__main__": | 37 if __name__ == "__main__": |
| 21 | 38 |
| 22 file_path = sys.argv[1] | 39 file_path = sys.argv[1] |
| 23 index = int(sys.argv[2]) | 40 indices_str = sys.argv[2] |
| 24 | 41 |
| 25 print(get_column_name(file_path, index)) | 42 # Parse comma-separated indices |
| 43 try: | |
| 44 indices = [int(i.strip()) for i in indices_str.split(',')] | |
| 45 except ValueError: | |
| 46 print("Error: All indices must be integers.") | |
| 47 sys.exit(1) | |
| 48 | |
| 49 result = get_column_names(file_path, indices) | |
| 50 if result is not None: | |
| 51 print(','.join(result)) |
