Location: Blood volume control model @ 0b5f3945d338 / create_omex_files.py

Author:
David Brooks <d.brooks@auckland.ac.nz>
Date:
2025-08-26 14:09:16+12:00
Desc:
Remove pink blobs from map.
Permanent Source URI:
https://staging.physiomeproject.org/workspace/c99/rawfile/0b5f3945d3382860002ba7dcf93e855d6750bc25/create_omex_files.py

import zipfile
from pathlib import Path


def create_zip(output_zip, files_to_add):
    """
    Create a zip file from a list of files.

    Parameters
    ----------
    output_zip : str or Path
        Path for the output ZIP file.
    files_to_add : list of tuple
        List of (source_path, archive_name) tuples.
        If archive_name is None, the original filename is used.
    """
    output_zip = Path(output_zip)

    with zipfile.ZipFile(output_zip, 'w', compression=zipfile.ZIP_DEFLATED) as zipf:
        for src, arcname in files_to_add:
            src_path = Path(src)
            if not src_path.is_file():
                print(f"Skipping missing file: {src_path}")
                continue
            if arcname is None:
                arcname = src_path.name
            zipf.write(src_path, arcname)
            print(f"Added {src_path} as {arcname}")


if __name__ == "__main__":

    baseline_protocol_files = [
        ("BloodVolumeControl.cellml", None),
        ("BloodVolumeControl.sedml", None),
        ("manifest.xml", None),
        ("simulation.json", None)
    ]

    eat_drink_protocol_files = [
        ("BloodVolumeControl.cellml", None),
        ("EatDrink.sedml", None),
        ("manifest-EatDrink.xml", "manifest.xml"),
        ("simulation-EatDrink.json", "simulation.json")
    ]

    create_zip("baseline-simulation.omex", baseline_protocol_files)
    print("ZIP file created: baseline-simulation.omex")

    create_zip("eat-drink-simulation.omex", eat_drink_protocol_files)
    print("ZIP file created: eat-drink-simulation.omex")