{"id":27607,"library":"batchgeneratorsv2","title":"batchgeneratorsv2","description":"Batchgenerators is a deep learning data augmentation and batching library originally for medical image segmentation. Version 2 overhauls the API for composable transformations, deterministic ordering, and reduced overhead. Current version 0.3.2 (pre-1.0, breaking changes likely). Released irregularly.","status":"active","version":"0.3.2","language":"python","source_language":"en","source_url":"https://github.com/MIC-DKFZ/batchgenerators","tags":["batchgenerators","data-augmentation","medical-imaging","deep-learning","pytorch","batch","transforms"],"install":[{"cmd":"pip install batchgeneratorsv2","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"core data structures","package":"numpy","optional":false},{"reason":"PyTorch tensor operations","package":"torch","optional":false},{"reason":"interpolation for geometric transforms","package":"scipy","optional":false}],"imports":[{"note":"BatchGenerator is in the generators submodule, not top-level.","wrong":"from batchgeneratorsv2 import BatchGenerator","symbol":"BatchGenerator","correct":"from batchgeneratorsv2.generators import BatchGenerator"},{"note":"Compose moved to transforms submodule.","wrong":"from batchgeneratorsv2 import Compose","symbol":"Compose","correct":"from batchgeneratorsv2.transforms import Compose"}],"quickstart":{"code":"import numpy as np\nfrom batchgeneratorsv2.generators import BatchGenerator\nfrom batchgeneratorsv2.transforms import Compose, SpatialTransform, ColorTransform\n\n# Dummy data\ndata = np.random.rand(100, 3, 128, 128)  # N, C, H, W\n\n# Define transforms\ntransforms = Compose([\n    SpatialTransform(patch_size=(64, 64), do_rotation=True),\n    ColorTransform(brightness_range=(0.9, 1.1), contrast_range=(0.9, 1.1))\n])\n\n# Create batch generator\nbatch_gen = BatchGenerator(\n    data=data,\n    batch_size=4,\n    transforms=transforms,\n    num_processes=1\n)\n\n# Iterate\nfor batch in batch_gen:\n    x = batch['data']\n    # x shape: (4, 3, 64, 64)\n    break\nprint('Quickstart works: shape', x.shape)","lang":"python","description":"Minimal example: create a BatchGenerator with transforms and iterate."},"warnings":[{"fix":"Do not mix v1 and v2 imports. Rewrite code to use v2 API: from batchgeneratorsv2.generators import BatchGenerator; from batchgeneratorsv2.transforms import Compose.","message":"batchgeneratorsv2 is a complete rewrite from batchgenerators (v1). Import paths, API, and behavior differ: v2 uses generators module, Compose is in transforms, and data is passed as dict with 'data' key.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Use transforms.base.AbstractTransform instead of transforms.abstract.AbstractTransform.","message":"v0.3.0 removed the old 'batchgeneratorsv2.transforms.abstract' submodule. All transforms now inherit from base classes in transforms.base.","severity":"breaking","affected_versions":">=0.3.0"},{"fix":"Use num_processes=1 for stability, or test carefully with multiprocessing.","message":"Setting num_processes > 1 is experimental. May cause deadlocks or data corruption.","severity":"deprecated","affected_versions":"<=0.3.2"},{"fix":"Ensure patch_size is less than or equal to the spatial dimensions of your input data.","message":"SpatialTransform's 'patch_size' must be smaller than input dimensions; otherwise, it silently fails or returns empty arrays.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Use: from batchgeneratorsv2.generators import BatchGenerator","cause":"Trying to import BatchGenerator from the top module instead of submodule.","error":"AttributeError: module 'batchgeneratorsv2' has no attribute 'BatchGenerator'"},{"fix":"Use: from batchgeneratorsv2.transforms import Compose","cause":"Compose is not in the top-level package; it's in transforms.","error":"ImportError: cannot import name 'Compose' from 'batchgeneratorsv2'"},{"fix":"Set num_processes=1 or use single-process mode.","cause":"Using num_processes > 1 with multiprocessing has known issues.","error":"RuntimeError: DataLoader worker (pid(s) ...) exited unexpectedly"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}