mail@pastecode.io avatar
17 days ago
1.6 kB
import h5py
import os

def find_hdf5_files(root_folder):
    """Recursively find all HDF5 files in the given root folder."""
    hdf5_files = []
    for subdir, _, files in os.walk(root_folder):
        for file in files:
            if file.endswith('.hdf5'):
                hdf5_files.append(os.path.join(subdir, file))
    return hdf5_files

def extract_first_image(hdf5_path):
    """Extract the first image from the 'entry/data/data' dataset of an HDF5 file."""
    with h5py.File(hdf5_path, 'r') as file:
        data = file['entry/data/data'][0]  # Assuming the first image can be indexed like this
    return data

def create_output_file(output_path, images):
    """Create an output HDF5 file and append all images to the 'entry/data/data' dataset."""
    with h5py.File(output_path, 'w') as file:
        # Determine the shape and dtype for the dataset based on the first image
        dataset = file.create_dataset("entry/data/data", shape=(len(images), *images[0].shape), dtype=images[0].dtype)
        for i, image in enumerate(images):
            dataset[i] = image

def process_hdf5_files(root_folder):
    """Process all HDF5 files in the given root folder and create an output file with all first images."""
    hdf5_files = find_hdf5_files(root_folder)
    first_images = [extract_first_image(file) for file in hdf5_files]
    output_path = os.path.join(root_folder, "output.hdf5")
    create_output_file(output_path, first_images)

# Example usage
root_folder = 'path/to/your/folder'

Leave a Comment