{"id":21523705,"url":"https://github.com/bhojpur/ode","last_synced_at":"2025-03-17T17:45:16.480Z","repository":{"id":41087619,"uuid":"441516406","full_name":"bhojpur/ode","owner":"bhojpur","description":"The Bhojpur ODE is a Quantum AI/ML enabled optical data engine software based on Bhojpur.NET Platform applied in different industry sectors for object recognition, annotation, and actionable insights.","archived":false,"fork":false,"pushed_at":"2022-06-29T16:00:57.000Z","size":43877,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T05:10:03.540Z","etag":null,"topics":["digitalpathology","image-processing","neural-network","quantum-algorithms"],"latest_commit_sha":null,"homepage":"https://page.bhojpur-consulting.com/product/ode/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bhojpur.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-24T16:59:45.000Z","updated_at":"2023-04-18T01:11:38.000Z","dependencies_parsed_at":"2022-07-30T21:18:07.389Z","dependency_job_id":null,"html_url":"https://github.com/bhojpur/ode","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhojpur%2Fode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhojpur%2Fode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhojpur%2Fode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhojpur%2Fode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bhojpur","download_url":"https://codeload.github.com/bhojpur/ode/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244081975,"owners_count":20395194,"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":["digitalpathology","image-processing","neural-network","quantum-algorithms"],"created_at":"2024-11-24T01:19:08.226Z","updated_at":"2025-03-17T17:45:16.454Z","avatar_url":"https://github.com/bhojpur.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bhojpur ODE - Optical Data Engine\n\nThe `Bhojpur ODE` is a high performance *optical data* processing engine based on\nthe [Bhojpur.NET Platform](https://github.com/bhojpur/platform) ecosystem for\ndelivery of distributed, AI/ML enabled, `applications` or `services`. It features\nadvanced visualization (both in *2D* and *3D* modes) of medical volumetric data,\nprovided in popular file formats: `DICOM`, `NIfTI`, `KTX`\u003csup\u003e™\u003c/sup\u003e, `HDR`, etc.\nIt has a proprietary *ODE-Formats* library for image data handling.\n\n## Motivation\n\nThe `Bhojpur ODE` is designed to be an *artificial intelligence* enabled digital\nimagery data processing and management engine. It could be applied in several\ndifferent sectors (e.g. Digital Pathology, Microscopy, Telescopy, Remote Sensing,\nGeology, Drone).\n\nFor example, it could be used in a *medical center* with *diagnostic equipment*.\n\n- ⚡️ MRI and CT scanning results could be viewed in any computer (inside the medical\noffice and in the client's home)\n- 💡 Qualified medical personnel could provide diagnosis or conclusion based  the\nprovided visualization.\n- :globe_with_meridians: App could be used as a web application as a part of large\nwebsites and services\n- :mortar_board: Could be used by research institutes due to NIfTI, HDR, etc. file\nstandards support\n- :hospital: Medical centers can create their clients database, based on this viewer.\n\n## Industry Standards\n\nDepending on specific use-cases, the `Bhojpur ODE` uses following digital imaging\nfile [formats](./pkg/formats/). It features ability to *import* / *export* images\nin various formats. For example\n\n- [Tagged Image File Format](https://docs.fileformat.com/image/tiff/)\n- [Scalable Vector Graphics](https://www.w3.org/TR/SVG2/)\n- [Joint Photographic Experts Group](https://jpeg.org/)\n- [NIH Medical Image Processing, Analysis, and Visualization](https://mipav.cit.nih.gov/)\n- [LuraTech Imaging](https://www.foxit.com/enterprise-automation/)\n- [Bio-Formats](https://eliceirilab.org/software/bio-formats/) defined by the University of Wisconsin - Madison's [Laboratory for Optical and Computation Instrumentation](https://eliceirilab.org/)\n- [Flexible Image Transport System](https://fits.gsfc.nasa.gov/)\n\n## Installation\n\nIt works as a standalone `HTML5` web application. The latest version can be used with\n`WebGL`-enabled desktop browsers (e.g. Chrome, Firefox, Opera) and allows limited usage\nwith mobile browsers (Android Chrome). Version for Safari (macOS, iOS) is planned for\nfuture.\n\n```bash\nnpm install\nnpm run start\n```\n\n## References\n\nThe `DICOM` file format description can be found [here](http://dicom.nema.org/standard.html)\nand [here](https://www.leadtools.com/sdk/medical/dicom-spec). KTX\u003csup\u003e™\u003c/sup\u003e file format\ndetails are listed in [KTX](https://www.khronos.org/registry/KTX/specs/1.0/ktxspec_v1.html).\nPopular DICOM loader framework: [GDCM](https://sourceforge.net/projects/gdcm/).\nSome JavaScript libraries to work with DICOM file format:\n\n1. [dicomParser](https://github.com/chafey/dicomParser)\n2. [Daikon](https://github.com/rii-mango/Daikon)\n3. [Xtk](https://github.com/xtk/X#readme).\n\n## 3D Volumetric Rendering\n\nThe `three.js` is used as some gateway to `WebGL` renderer. The current `three.js` version does\nnot support 3D textures, so we use tricky way to build 2D texture from initial 3D texture by\nlinking 2D slices all together as a large tile map. This idea (with source codes) can be seen\nin project [WebGL Volume Rendering](https://github.com/lebarba/WebGLVolumeRendering).\n\n## Build Source Code\n\nThe `Bhojpur ODE` platform *core* components are developed using several software technologies\n(e.g. [Ivy](https://ant.apache.org/ivy/), [Groovy](https://groovy-lang.org), [Gradle](https://gradle.org),\n[Ant](https://ant.apache.org/), [Ice](https://zeroc.com/products/ice), [Python](https://www.python.org),\n[Node.js](https://nodejs.org), [Java](https://www.java.com), [Spring](https://spring.io)).\n\nIn brief, most of the `Bhojpur ODE` core components (i.e. developed in *Java* and *Python*)\ncould be built using the following commands.\n\n```bash\ngradle --no-daemon --init-script pkg/init-ci.gradle build\ncd pkg \u0026\u0026 ant build\n```\n\nBased on Gradle [ICE Builder Plugin](https://github.com/zeroc-ice/ice-builder-gradle),\nwe have created a set of custom Gradle *plugins* for the `Bhojpur ODE` software.\n\n### Pre-requisites\n\nFirstly, you need to install [ZeroC ICE](https://doc.zeroc.com/ice/) middleware before\ncompiling `.ice` interface definition language files. For example, on a `macOS`\noperating system, issue the following commands\n\n```bash\nbrew install zeroc-ice/tap/ice\nbrew install ice\nbrew install zeroc-ice/tap/ice-builder-xcode\nslice2cpp -v\nslice2java -v\nsudo pip3 install zeroc-ice\nslice2py -v\nbrew install --cask zeroc-ice/tap/icegridgui\nexport ODEDIR==$(pwd)\n```\n\nThe ZeroC ICE tools generate `Java` source code for the *server-side* and `Python`\nsource code for the *client-side* frameworks.\n\n### Gradle Plugins\n\nOur Gradle plugins are defined in the [pkg/plugins](./pkg/plugins/) folder. So, you need\nto build different Gradle plugins (e.g. `artifact`, `project`, `api`, `dsl`, `server`,\n`javapackager`, `icebuilder`) that are used by source code generators. Simply issue the\nfollowing commands in a new Terminal window to `build` these plugins.\n\n```bash\ncd pkg/plugins\ngradle --no-daemon --init-script ../init-ci.gradle build\n```\n\nIt will only build the Gradle plugins. Then, you need to `publish` these Gradle plugins\nlocally by issuing the following command. It will be helpful in building other components.\nHowever, you need to uncomment the plugins sections in [settings.gradle](./settings.gradle)\nfile, if you are starting completely fresh. Or, you can download and utilize the plugins\nfrom the Bhojpur Artifactory.\n\n```bash\ngradle --no-daemon --init-script ../init-ci.gradle publishToMavenLocal\n```\n\nFinally, you can `publish` these Gradle plugins centrally by issuing the following command\n\n```bash\ngradle --no-daemon --init-script ../init-ci.gradle publish\n```\n\n### Core Framework Libraries\n\nThere are core components libraries that must be built first prior to builging the server.\n\n```bash\ncd pkg/formats/components/bundles/stubs \u0026\u0026 mvn\ncd pkg/formats/components/bundles/codecs \u0026\u0026 mvn\n```\n\n### Source Code Generator\n\nThe `Bhojpur ODE` generates a lot of source code for *client-* / *server-* side frameworks.\n\n#### Java-based Backend\n\nYou need to install `Java` \u003e= 1.8, `ant`, `ivy`, `mvn`, `gradle`, and other software tools\nor frameworks. Just issue the following command in your project root folder to build the\nBhojpur ODE backend server components developed uing Java programming language.\n\n```bash\ngradle --no-daemon --init-script pkg/init-ci.gradle build\n```\n\n#### Python-based Backend\n\nYou need to install `Python` \u003e= 3.8, `Django`, `appdirs`, `Pillow`, `numpy`, `tables`,\n`mox3`, `genshi`, and other software libraries. The Bhojpur CLI is dependent on\nPython-based server framework that access the Java-based backed using ZeroC middleware.\n\n```bash\nsudo pip3 install appdirs django Pillow numpy tables mox3 genshi\nsudo pip3 install -U -r requirements.txt\ncd pkg \u0026\u0026 ant build\n```\n\n### Server-side Framework\n\nThe source code is compiled into `.jar` libraries using `Gradle` software build tool. So,\nplease check if [settings.gradle](./settings.gradle) file points to `pkg/server` folder.\n\nIt is based on `Java` \u003e= 1.8 and `Spring Framework`. The Bhojpur ODE server is designed\nto securely store, retrieve, and process digital images efficiently.\n\n```bash\ncd pkg\ngradle --no-daemon --init-script init-ci.gradle build\n```\n\n### Client-side Framework\n\nIt is based on `Python` \u003e= 3.8 and `Ice` \u003e= 3.7. The client is designed to serve image\ndata efficiently using web-based APIs. You could use the [odectl](/cmd/odectl) tool as\na starting point to interact with the `Bhojpur ODE` server.\n\n```bash\nexport ODE_HOME==$(pwd)\n```\n\nHowever, you can develop *client-side* applications in `Java` as well using libraries.\nWe have created Java plugins for some popular image processing software products.\n\n### Web-based Forms\n\nIt enables extending the `Bhojpur ODE` capabilities using *web-based* Forms. You can\nbuild it using `node.js` and `webpack` framework.\n\n```bash\ncd pkg/webui\nnpm install\nnode_modules/webpack/bin/webpack.js --progress\n```\n\n### Web-based Application\n\n#### Engine Application\n\nBased on `Django` framework, it acts as a web-tier for all the Client-side applications.\nNow, change directory to `pkg/components/tools/OdeWeb` and issue the following commands\nto run the Bhojpur ODE web engine.\n\n```bash\ncd pkg/components/tools/OdeWeb\npython3 ./engine/manage.py runserver 0:8000\n```\n\n#### Viewer Application\n\nBased on `OpenLayers` and `Node.js`, it serves as a web viewer of `Bhojpur ODE`. It is\navailable in the `pkg/viewer` folder.\n\n```bash\nnpm install\nnpm run dev\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhojpur%2Fode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhojpur%2Fode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhojpur%2Fode/lists"}