{"library":"qudida","title":"QUick and DIrty Domain Adaptation (QuDiDA)","description":"QuDiDA is a micro library designed for quick and naive pixel-level image domain adaptation. It leverages scikit-learn transformers for its operations and is primarily intended as an image augmentation technique. The current version is 0.0.4, with releases being infrequent; the last update was in August 2021, suggesting a low-maintenance but functional status.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install qudida"],"cli":null},"imports":["from qudida import DomainAdapter"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import cv2\nfrom sklearn.decomposition import PCA\nfrom qudida import DomainAdapter\nimport os\n\n# Create dummy image files for demonstration if they don't exist\n# In a real scenario, these would be your source and target images.\nif not os.path.exists('source.png'):\n    dummy_img = (255 * (0.5 + 0.5 * (1 + 0.2 * (0.5 - 0.5 * (0.5 * (2 * 0.5 - 1) + 0.5)) + 0.5))) * 255\n    cv2.imwrite('source.png', dummy_img.astype('uint8'))\nif not os.path.exists('target.png'):\n    dummy_img_target = (255 * (0.5 + 0.5 * (1 + 0.2 * (0.5 - 0.5 * (0.5 * (2 * 0.5 - 1) + 0.5)) + 0.5))) * 255\n    cv2.imwrite('target.png', dummy_img_target.astype('uint8'))\n\n# Initialize the DomainAdapter with a scikit-learn transformer and a reference (target) image\n# For simplicity, using a dummy image if actual images are not present\nref_img_path = 'target.png'\nsource_img_path = 'source.png'\n\n# Ensure dummy images exist for the quickstart to run\nif not os.path.exists(ref_img_path) or not os.path.exists(source_img_path):\n    # If dummy images were not created above (e.g., due to a previous run or error),\n    # create them directly here for robustness.\n    import numpy as np\n    dummy_source = np.full((100, 100, 3), [100, 50, 200], dtype=np.uint8) # BGR blue-ish\n    dummy_target = np.full((100, 100, 3), [50, 200, 100], dtype=np.uint8) # BGR green-ish\n    cv2.imwrite(source_img_path, dummy_source)\n    cv2.imwrite(ref_img_path, dummy_target)\n\nadapter = DomainAdapter(transformer=PCA(n_components=3), ref_img=cv2.imread(ref_img_path))\n\n# Load the source image\nsource = cv2.imread(source_img_path)\n\n# Apply domain adaptation\nresult = adapter(source)\n\n# Save the result (optional, for verification)\n# cv2.imwrite('result_adapted.png', result)\n\nprint(\"Domain adaptation applied successfully. Result image shape:\", result.shape)\n# Clean up dummy files\nos.remove(source_img_path)\nos.remove(ref_img_path)\n","lang":"python","description":"This quickstart demonstrates how to use `qudida.DomainAdapter` to perform pixel-level domain adaptation. It initializes the adapter with a `scikit-learn` transformer (e.g., `PCA`) and a reference (target) image. It then applies the adaptation to a source image, returning the adapted image. Ensure `opencv-python-headless` and `scikit-learn` are installed as dependencies. The example includes creating dummy images to ensure the code is runnable without external files.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.0.4","pypi_latest":"0.0.4","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":10.8,"avg_import_s":3.62,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"qudida","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"qudida","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":10.9,"import_time_s":2.34,"mem_mb":51.2,"disk_size":"427M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"qudida","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"qudida","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":10.2,"import_time_s":4.25,"mem_mb":62.2,"disk_size":"444M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"qudida","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"qudida","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":10.7,"import_time_s":4.86,"mem_mb":61.1,"disk_size":"428M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"qudida","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"qudida","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":10.7,"import_time_s":4.25,"mem_mb":60.3,"disk_size":"427M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"qudida","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"qudida","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":11.7,"import_time_s":2.4,"mem_mb":47,"disk_size":"442M"}]}}