{"library":"pims","title":"Python Image Sequence (PIMS)","description":"PIMS (Python Image Sequence) provides a lazy-loading, NumPy-like interface for accessing sequential image and video data from various file formats. It handles diverse inputs, including image directories, TIFF stacks, and common video formats, offering a consistent API for slicing and iteration. The library is actively maintained, with a recent major release (v0.7) in June 2024.","language":"python","status":"active","last_verified":"Thu Apr 16","install":{"commands":["pip install pims","pip install pims[all]","pip install pims imageio-ffmpeg"],"cli":null},"imports":["import pims\nimages = pims.open('path/to/files/*.tif')","from pims import ImageSequence\nimages = ImageSequence('path/to/images/*.png')","from pims import as_grey, open\ncolored_images = pims.open('path/to/color_images/*.tif')\ngreyscale_images = as_grey(colored_images)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pims\nimport numpy as np\nimport os\n\n# Create dummy image files for demonstration\nif not os.path.exists('test_images'):\n    os.makedirs('test_images')\nfor i in range(5):\n    # Using a minimal image writing approach or mocking if actual image lib is heavy\n    # For real use, ensure Pillow or scikit-image is installed.\n    try:\n        from PIL import Image\n        img = Image.new('L', (10, 10), color = i * 50)\n        img.save(f'test_images/frame_{i:02d}.png')\n    except ImportError:\n        print(\"Pillow not found, cannot create dummy images. Skipping image creation.\")\n        break\n\n# Open a sequence of images\ntry:\n    frames = pims.open('test_images/frame_*.png')\n    print(f\"Opened sequence with {len(frames)} frames.\")\n    \n    # Access a single frame (lazy loading)\n    first_frame = frames[0]\n    print(f\"Shape of the first frame: {first_frame.shape}\")\n    print(f\"Pixel value at (0,0) in first frame: {first_frame[0, 0]}\")\n    \n    # Iterate through frames\n    sum_pixels = 0\n    for frame in frames:\n        sum_pixels += np.sum(frame)\n    print(f\"Total sum of all pixel values: {sum_pixels}\")\n\n    # Slicing returns another lazy-loading object\n    sub_sequence = frames[1:4]\n    print(f\"Sub-sequence has {len(sub_sequence)} frames.\")\n\n    # Example with a specific reader (if 'test_tiff.tif' existed)\n    # from pims import TiffStack\n    # tiff_stack = TiffStack('test_tiff.tif')\n    # print(f\"Tiff stack has {len(tiff_stack)} frames.\")\n\nexcept Exception as e:\n    print(f\"Could not run PIMS quickstart example: {e}\")\n    print(\"Ensure test_images/ directory and dummy images exist or necessary reader dependencies are installed.\")\n","lang":"python","description":"This quickstart demonstrates how to open a sequence of image files using `pims.open`, access individual frames, iterate through the sequence, and use NumPy-like slicing. It includes a basic setup to create dummy image files if Pillow is available.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}