Pure MoonBit bounded NRRD raster interchange and dimension-aware tensor operations
moon add 3smallpig/moonnrrd@0.1.0import { "3smallpig/moonnrrd" @nrrd }
options("is-main": true)fn main raise {
let t = @nrrd.Tensor::new([2, 2], @nrrd.F32, [1.0, 2.0, 3.0, 4.0])
let encoded = @nrrd.write_nrrd(t, encoding=@nrrd.Raw, endian=@nrrd.Big)
let restored = @nrrd.read_nrrd(encoded.attached())
assert_eq(restored.get([1, 1]), 4.0)
assert_eq(restored.reduce(1, @nrrd.Mean).values(), [2.0, 3.0])
println("NRRD round trip passed")
}git clone https://github.com/3smallpig/moonnrrd.git
cd moonnrrd
moon run examples/simulation --target js
moon run examples/spatial --target js
moon run examples/tensor --target js| 任务 | 入口 | 语义 |
|---|---|---|
| 构造与类型 | Tensor::new、cast、with_metadata | 检查尺寸、预算、类型范围及元数据;返回新的张量 |
| 布局 | Shape::new、offset、indices | 轴 0 最快;拒绝负数与越界 |
| 文件交换 | parse_header、read_nrrd、write_nrrd | 纯缓冲区 API;不访问文件或网络 |
| 空间位置 | world | 必须显式提供 origin 和 directions;非空间轴贡献为零 |
| 轴操作 | permute、flip、crop、slice | 样本与相应轴属性同步;位置有定义时保留坐标 |
| 组合 | concatenate(left, right, axis) | 非拼接轴形状、类型及元数据匹配;空间原点精确相邻 |
| 归约 | reduce(axis, operation) | 忽略 NaN/Inf;全非有限组为 NaN;输出 F64 |
| 统计 | summary、histogram | 单列 NaN/Inf;直方图最后一格包含上界 |
moon version --all
moon info
moon fmt --check
moon check --target all --deny-warn
moon build --target js --deny-warn
moon test --target js --deny-warnpython -m pip install -r scripts/requirements-oracle.txt
python scripts/interop.py --checkInstall
Download zipPure MoonBit bounded NRRD raster interchange and dimension-aware tensor operations