Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	| import argparse | |
| import collections.abc as collections | |
| from pathlib import Path | |
| from typing import List, Optional, Union | |
| from . import logger | |
| from .utils.io import list_h5_names | |
| from .utils.parsers import parse_image_lists | |
| def main( | |
| output: Path, | |
| image_list: Optional[Union[Path, List[str]]] = None, | |
| features: Optional[Path] = None, | |
| ref_list: Optional[Union[Path, List[str]]] = None, | |
| ref_features: Optional[Path] = None, | |
| ): | |
| if image_list is not None: | |
| if isinstance(image_list, (str, Path)): | |
| names_q = parse_image_lists(image_list) | |
| elif isinstance(image_list, collections.Iterable): | |
| names_q = list(image_list) | |
| else: | |
| raise ValueError(f"Unknown type for image list: {image_list}") | |
| elif features is not None: | |
| names_q = list_h5_names(features) | |
| else: | |
| raise ValueError("Provide either a list of images or a feature file.") | |
| self_matching = False | |
| if ref_list is not None: | |
| if isinstance(ref_list, (str, Path)): | |
| names_ref = parse_image_lists(ref_list) | |
| elif isinstance(image_list, collections.Iterable): | |
| names_ref = list(ref_list) | |
| else: | |
| raise ValueError( | |
| f"Unknown type for reference image list: {ref_list}" | |
| ) | |
| elif ref_features is not None: | |
| names_ref = list_h5_names(ref_features) | |
| else: | |
| self_matching = True | |
| names_ref = names_q | |
| pairs = [] | |
| for i, n1 in enumerate(names_q): | |
| for j, n2 in enumerate(names_ref): | |
| if self_matching and j <= i: | |
| continue | |
| pairs.append((n1, n2)) | |
| logger.info(f"Found {len(pairs)} pairs.") | |
| with open(output, "w") as f: | |
| f.write("\n".join(" ".join([i, j]) for i, j in pairs)) | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--output", required=True, type=Path) | |
| parser.add_argument("--image_list", type=Path) | |
| parser.add_argument("--features", type=Path) | |
| parser.add_argument("--ref_list", type=Path) | |
| parser.add_argument("--ref_features", type=Path) | |
| args = parser.parse_args() | |
| main(**args.__dict__) | |