[package] name = "rtx-neuro-core" version = "1.0.0" edition = "2024" authors.workspace = true license.workspace = true repository.workspace = true description = "Unified neuro-imaging super-crate consolidating 16 neuro crates (47K LOC) - MEG/EEG/fMRI analysis platform" [dependencies] # Core RustyTorch dependencies rtx-tensor = { workspace = true } rtx-autograd = { workspace = true } # Neuro-specific crates (conditional on features) # rtx-neuro is no longer used - core module is now built-in # rtx-neuro-io is now built-in (migrated into this crate) # rtx-neuro-signal is now built-in (migrated into this crate) # rtx-neuro-forward is now built-in (migrated into this crate) # rtx-neuro-inverse is now built-in (migrated into this crate) # rtx-neuro-connectivity is now built-in (migrated into this crate) # rtx-neuro-anatomy is now built-in (migrated into this crate) # rtx-neuro-stats is now built-in (migrated into this crate) rtx-neuro-artifacts = { workspace = true, optional = true } rtx-neuro-realtime = { workspace = true, optional = true } rtx-neuro-lsl = { workspace = true, optional = true } rtx-neuro-db = { workspace = true, optional = true } rtx-neuro-gnn = { workspace = true, optional = true } rtx-neuro-pinn = { workspace = true, optional = true } rtx-neuro-fem = { workspace = true, optional = true } # Essential dependencies (always available) thiserror = { workspace = true } serde = { workspace = true } chrono = { workspace = true } uuid = { workspace = true } serde_json = { workspace = true } # I/O module dependencies (conditional on io feature) byteorder = { workspace = true, optional = true } memmap2 = { version = "0.9", optional = true } walkdir = { workspace = true, optional = true } regex = { workspace = true, optional = true } # Signal processing dependencies (conditional on signal feature) rustfft = { version = "6.2", optional = true } num-complex = { workspace = true, optional = true } rayon = { workspace = true, optional = true } # Forward modeling dependencies (conditional on forward feature) nalgebra = { version = "0.33", optional = true } # Connectivity dependencies (conditional on connectivity feature) # rustfft and num-complex already included in signal feature # Statistics module dependencies (conditional on stats feature) rand = { workspace = true, optional = true } statrs = { version = "0.18", optional = true } ndarray = { version = "0.16", features = ["rayon"], optional = true } [dev-dependencies] tokio-test = { workspace = true } tempfile = { workspace = true } approx = "0.5" [features] default = ["core", "io", "signal"] # Core functionality (now built-in, not dependent on rtx-neuro) core = [] io = ["dep:byteorder", "dep:memmap2", "dep:walkdir", "dep:regex"] signal = ["dep:rustfft", "dep:num-complex", "dep:rayon"] # Analysis modules # Note: rtx-neuro-forward, rtx-neuro-inverse, rtx-neuro-connectivity, and rtx-neuro-anatomy are now built-in (migrated into this crate) forward = ["dep:nalgebra", "dep:rayon"] inverse = ["forward", "dep:nalgebra"] connectivity = ["signal", "dep:nalgebra"] # Requires signal for FFT, nalgebra for Granger causality anatomy = ["dep:nalgebra", "dep:byteorder"] # FreeSurfer file reading requires nalgebra for Vector3, byteorder for binary I/O artifacts = ["dep:rtx-neuro-artifacts"] stats = ["dep:rand", "dep:rayon", "dep:statrs", "dep:ndarray"] # Statistical analysis now built-in # Real-time and streaming realtime = ["dep:rtx-neuro-realtime", "dep:rtx-neuro-lsl"] # Machine learning extensions ml = ["dep:rtx-neuro-gnn", "dep:rtx-neuro-pinn", "dep:rtx-neuro-fem"] # Database support db = ["dep:rtx-neuro-db"] # Hardware acceleration cuda = ["rtx-tensor/cuda"] metal = ["rtx-tensor/metal"] # Python bindings (note: rtx-neuro-python excluded from workspace, built separately) python = [] # Full feature set (all modules) full = [ "core", "io", "signal", "forward", "inverse", "connectivity", "artifacts", "stats", "anatomy", "realtime", "ml", "db", ] [lints] workspace = true