[package] name = "ndbioimage" version.workspace = true edition.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true description.workspace = true repository.workspace = true documentation.workspace = true keywords.workspace = true categories.workspace = true readme = "../README.md" exclude = ["/tests"] [lib] name = "ndbioimage" crate-type = ["cdylib", "rlib"] [dependencies] bioformats = { version = "0.1", optional = true, default-features = false, features = ["zarr", "tissuefaxs"] } clap = { version = "4", features = ["derive"] } console = { version = "0.16", optional = true } downloader = { version = "0.2", optional = true, default-features = false, features = ["rustls-tls"] } ffmpeg-sidecar = { version = "2", optional = true } itertools = "0.15" image-registration = { path = "../image-registration", version = "0.1", optional = true } indexmap = { version = "2", features = ["serde"] } indicatif = { version = "0.18", features = ["rayon"], optional = true } j4rs = { version = "0.25", optional = true } libczirw-sys = { version = "0.5.2", optional = true } ndarray = { version = "0.17", features = ["serde"] } num = "0.4" numpy = { version = "0.29", optional = true } ome-metadata = "0.6" ordered-float = { version = "5", optional = true } phf = { version = "0.14", features = ["macros"] } postcard = { version = "1", features = ["use-std"], optional = true } pyo3 = { version = "0.29", features = ["abi3-py310", "anyhow", "generate-import-lib", "multiple-pymethods"], optional = true } pyo3-stub-gen = { version = "0.23", optional = true } rayon = { version = "1", optional = true } regex = "1" serde = { version = "1", features = ["rc", "derive"] } serde_with = "3" strum = { version = "0.28", features = ["derive"] } thiserror = "2" tiff = { package = "ndbioimage-tiff", path = "../image-tiff", version = "0.11", features = ["zstd"], optional = true } tiffwrite = { version = "2026.6.0", optional = true } tokio = { version = "1", features = ["rt", "rt-multi-thread"], optional = true } thread_local = { version = "1", optional = true } xmltree = { version = "0.12", optional = true } yaml_serde = { version = "0.10", optional = true } # "bioformats 0.1.8" is written for "zip 2.4.x", where zip::read::ZipFile has a single lifetime parameter. # "zip >= 2.5" added a second "R: Read" generic (2.6.1 breaks bioformats), so the build fails. zip = { version = "=2.4.2", optional = true, default-features = false } [dev-dependencies] rayon = "1" regex = "1" postcard = { version = "1", features = ["use-std"] } [build-dependencies] j4rs = "0.25" ffmpeg-sidecar = "2" retry = "2" toml = "1" [features] default = ["bioformats_java", "gpl-formats", "czi", "tiff", "tiffseq", "movie", "tiffwrite"] all = ["bioformats_java", "bioformats_rust", "czi", "gpl-formats", "movie", "tiffseq", "tiffwrite", "tiff", "transforms"] gpl-formats = [] python = ["dep:pyo3", "dep:numpy", "dep:pyo3-stub-gen", "dep:postcard", "ome-metadata/python"] czi = ["dep:libczirw-sys", "dep:xmltree", "dep:thread_local"] bioformats_rust = ["dep:bioformats", "dep:thread_local", "dep:zip"] bioformats_java = ["dep:j4rs", "dep:thread_local", "dep:downloader"] tiffwrite = ["dep:tiffwrite", "dep:indicatif", "dep:console", "dep:rayon"] tiffseq = ["dep:tiff", "dep:yaml_serde"] tiff = ["dep:tiff", "dep:thread_local"] movie = ["dep:ffmpeg-sidecar", "dep:tokio", "dep:ordered-float", "dep:indicatif", "dep:console"] transforms = ["dep:image-registration", "dep:yaml_serde"] [package.metadata.docs.rs] no-default-features = true features = ["bioformats_java", "bioformats_rust", "czi", "movie", "tiffseq", "tiffwrite", "tiff", "transforms"]