[package]
edition = "2021"
rust-version = "1.78"
name = "brainharmony"
version = "0.1.0"
authors = ["Eugene Hauptmann"]
build = false
exclude = [
"data/*",
"figures/*",
"hf_model_card/*",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Brain-Harmony multimodal brain foundation model — inference in Rust with Burn ML"
homepage = "https://github.com/eugenehp/brainharmony-rs"
documentation = "https://docs.rs/brainharmony"
readme = "README.md"
keywords = [
"fmri",
"foundation-model",
"neuroscience",
"brain",
"vision-transformer",
]
categories = [
"science",
"mathematics",
"algorithms",
]
license = "MIT"
repository = "https://github.com/eugenehp/brainharmony-rs"
[features]
accelerate = ["blas-accelerate"]
blas-accelerate = ["burn-ndarray?/blas-accelerate"]
default = ["ndarray"]
hf-download = ["dep:hf-hub"]
ndarray = [
"dep:burn-ndarray",
"burn/ndarray",
]
openblas-system = ["burn-ndarray?/blas-openblas-system"]
wgpu = [
"burn/wgpu",
"dep:burn-cubecl",
"dep:burn-backend",
"dep:cubek",
"dep:cubecl",
]
wgpu-f16 = [
"burn/wgpu",
"dep:burn-cubecl",
"dep:burn-backend",
"dep:cubek",
"dep:cubecl",
]
[lib]
name = "brainharmony"
path = "src/lib.rs"
[[bin]]
name = "infer"
path = "src/bin/infer.rs"
[[example]]
name = "batch"
path = "examples/batch.rs"
required-features = ["ndarray"]
[[example]]
name = "bench"
path = "examples/bench.rs"
required-features = ["ndarray"]
[[example]]
name = "bench_2d_vs_3d"
path = "examples/bench_2d_vs_3d.rs"
[[example]]
name = "bench_cache"
path = "examples/bench_cache.rs"
[[example]]
name = "bench_chain"
path = "examples/bench_chain.rs"
[[example]]
name = "bench_dispatch"
path = "examples/bench_dispatch.rs"
[[example]]
name = "bench_flash"
path = "examples/bench_flash.rs"
[[example]]
name = "bench_fused"
path = "examples/bench_fused.rs"
[[example]]
name = "bench_fused_block"
path = "examples/bench_fused_block.rs"
[[example]]
name = "bench_gpu"
path = "examples/bench_gpu.rs"
[[example]]
name = "bench_module_vs_raw"
path = "examples/bench_module_vs_raw.rs"
[[example]]
name = "bench_notile"
path = "examples/bench_notile.rs"
[[example]]
name = "bench_ops"
path = "examples/bench_ops.rs"
[[example]]
name = "bench_overhead"
path = "examples/bench_overhead.rs"
[[example]]
name = "classify"
path = "examples/classify.rs"
required-features = ["ndarray"]
[[example]]
name = "csv_export"
path = "examples/csv_export.rs"
required-features = ["ndarray"]
[[example]]
name = "embed"
path = "examples/embed.rs"
[[example]]
name = "profile"
path = "examples/profile.rs"
required-features = ["ndarray"]
[[test]]
name = "classification"
path = "tests/classification.rs"
[[test]]
name = "config"
path = "tests/config.rs"
[[test]]
name = "csv_export"
path = "tests/csv_export.rs"
[[test]]
name = "data_loading"
path = "tests/data_loading.rs"
[[test]]
name = "masks"
path = "tests/masks.rs"
[[test]]
name = "model"
path = "tests/model.rs"
[dependencies.anyhow]
version = "1"
[dependencies.burn]
version = "0.20.1"
features = [
"std",
"simd",
]
default-features = false
[dependencies.burn-backend]
version = "0.20.1"
optional = true
[dependencies.burn-cubecl]
version = "0.20.1"
optional = true
[dependencies.burn-ndarray]
version = "0.20.1"
features = [
"std",
"simd",
"multi-threads",
]
optional = true
default-features = false
[dependencies.clap]
version = "4"
features = [
"derive",
"env",
]
[dependencies.cubecl]
version = "0.9.0"
optional = true
[dependencies.cubek]
version = "0.1.1"
optional = true
[dependencies.fastrand]
version = "2"
[dependencies.half]
version = "2"
features = ["bytemuck"]
[dependencies.hf-hub]
version = "0.5"
features = ["ureq"]
optional = true
default-features = false
[dependencies.ndarray]
version = "0.16"
[dependencies.rayon]
version = "1"
[dependencies.safetensors]
version = "0.7"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.thiserror]
version = "2"
[dev-dependencies.tempfile]
version = "3"
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = true