{"id":27060335,"url":"https://github.com/elevans/imgal","last_synced_at":"2025-06-12T23:03:13.993Z","repository":{"id":285465761,"uuid":"901467241","full_name":"elevans/imgal","owner":"elevans","description":"An image algorithm library written in Rust.","archived":false,"fork":false,"pushed_at":"2025-06-09T01:49:28.000Z","size":74,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-09T02:36:23.671Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elevans.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-10T17:58:10.000Z","updated_at":"2025-06-09T01:49:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"789294a0-5ea3-46bd-a55e-465b271e3ee6","html_url":"https://github.com/elevans/imgal","commit_stats":null,"previous_names":["elevans/imgal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/elevans/imgal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elevans%2Fimgal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elevans%2Fimgal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elevans%2Fimgal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elevans%2Fimgal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elevans","download_url":"https://codeload.github.com/elevans/imgal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elevans%2Fimgal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259546383,"owners_count":22874557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-05T13:18:43.826Z","updated_at":"2025-06-12T23:03:13.984Z","avatar_url":"https://github.com/elevans.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# imgal\n\n⚠️ Warning: This is an experimental project!\n\nImgal (**Im**a**g**e **A**lgorithm **L**ibrary), is fast and mostly* safe image processing and algorithm library written in Rust. This library is directly inspired by [imagej-ops](https://github.com/imagej/imagej-ops/),\n[SciJava Ops](https://github.com/scijava/scijava), [ImgLib2](https://github.com/imglib/imglib2), the ImageJ2 ecosystem. `imgal` is organized as a monorepo with `imgal_core` as the core library that contains the algorithm logic while `imgal_java` and `imgal_python` serve `imgal`'s\nJava and Python language bindings.\n\n# Building `imgal` from source\n\nYou can build the entire project from the root with:\n\n```bash\n$ cargo build --release\n```\n\u003e [!NOTE]\n\u003e\n\u003e `--release` is _necessary_ to compile speed optimized libraries. Without this flag `rustc` will retain debug symbols (among other things) that reduce the performance of the libraries.\n\nThis will create one Rust static library (`.rlib`) file for `imgal` and two shared library files for the Java and Python bindings respectively. The file extension of the shared library is operating system dependent:\n\n| Platform | Extension |\n| :---     | :---      |\n| Linux    | `.so`     |\n| macOS    | `.dylib`  |\n| Windows  | `.dll`    |\n\nAdditionally, shared libraries will be prefixed with `lib`, making the compiled `imgal` library filename `libimgal.rlib`. After building `imgal` the three library files can be found in `target/release`.\n\n| File name | Description |\n| :---      | :---        |\n| libimgal | The main Rust static library.\n| libimgal_java | Java bindings using the Foreign Function and Memory (FFM) API (targeting Java 22+). |\n| libimgal_python | Python bindings (using PyO3). |\n\n\n# Building `imgal_python` from source\n\nTo build the `imgal` Python bindings, use the `maturin` build tool. If you're using `uv` you can do the following in the `imgal_python`:\n\n```bash\n$ cd imgal_python\n$ uv run maturin develop --release\n```\n\nThis will create a `.venv` in the local directory, compile `imgal_core` and `imgal_python` and install the bindings in the venv.\n\nAlternatively if you're using `conda` or `mamba` you can do the following:\n\n```bash\n$ cd imgal_python\n$ mamba activate myenv\n(myenv) $ mamba install maturin\n...\n(myenv) $ maturin develop --release\n```\n\n# Using `imgal` from Python\n\n```python\nimport imgal_python.phasor.time_domain as td\nimport numpy as np\nfrom tifffile import imread\n\n# read some FLIM data\ndata = imread(\"/path/to/flim_data.tif\")\n\n# transpose lifetime axis to last position for fastest\n# compute time (contigous memory with C-order)\ndata = data.transpose(1, 2, 0).copy()\n\n# compute phasor\nresult = td.image(data, 0.0012)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felevans%2Fimgal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felevans%2Fimgal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felevans%2Fimgal/lists"}