{"id":19379578,"url":"https://github.com/we-gold/ouroboros","last_synced_at":"2026-04-07T08:01:34.363Z","repository":{"id":248146896,"uuid":"815558032","full_name":"We-Gold/ouroboros","owner":"We-Gold","description":"Extract ROIs (e.g. nerves, blood vessels) from multi-terabyte cloud-hosted medical scans.","archived":false,"fork":false,"pushed_at":"2024-08-13T20:28:42.000Z","size":7982,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-07T05:44:31.863Z","etag":null,"topics":["binary-space-partitioning","cloud-files","cloud-volume","data-visualization","docker","docker-compose","electron","interpolation","micro-ct","neuroglancer","python","react","rotation-minimizing-frames","segmentation","splines","threejs","typescript"],"latest_commit_sha":null,"homepage":"http://wegold.me/ouroboros/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/We-Gold.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}},"created_at":"2024-06-15T13:14:19.000Z","updated_at":"2024-08-13T20:28:45.000Z","dependencies_parsed_at":"2024-11-10T09:10:39.805Z","dependency_job_id":"9b9b7e32-8918-45d2-8bf8-6f4f64cc009d","html_url":"https://github.com/We-Gold/ouroboros","commit_stats":null,"previous_names":["we-gold/ouroboros"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/We-Gold%2Fouroboros","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/We-Gold%2Fouroboros/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/We-Gold%2Fouroboros/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/We-Gold%2Fouroboros/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/We-Gold","download_url":"https://codeload.github.com/We-Gold/ouroboros/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240515122,"owners_count":19813801,"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":["binary-space-partitioning","cloud-files","cloud-volume","data-visualization","docker","docker-compose","electron","interpolation","micro-ct","neuroglancer","python","react","rotation-minimizing-frames","segmentation","splines","threejs","typescript"],"created_at":"2024-11-10T09:10:35.420Z","updated_at":"2026-04-07T08:01:34.351Z","avatar_url":"https://github.com/We-Gold.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ouroboros\n\n`or-uh-bore-us`\n\nQuickly extract ROIs from cloud-hosted medical scans.\n\nThis repository is a monorepo containing the code for the Ouroboros app and the Ouroboros Python package (`python` folder). \n\nFor a **usage guide**, check out the [Documentation](https://chenglabresearch.github.io/ouroboros/).\n\n# Quick Start\n\n**[Docker](https://www.docker.com/products/docker-desktop/) is REQUIRED to run Ouroboros.**\n\nThere are prebuilt applications available in [Releases](https://github.com/ChengLabResearch/ouroboros/releases).\n\n- Windows: `*-setup.exe`\n- Mac: `*.dmg`\n- Linux: Multiple options available\n\nWhen you open the app, the GUI will open immediately, but **the local server that runs the processing could a while to start the first time** (the server needs to build). \n\nThere is an indicator in the GUI that shows if the server is connected.\n\nCurrently, none of the apps are notarized. \n\nFor Mac, if an error occurs when you try to run the app, find the app installation (should be called `Ouroboros.app`) and run `xattr -d com.apple.quarantine Ouroboros.app`. \n\n# Plugins\n\n### Recommended Plugins\n\n- [Neuroglancer Plugin](https://github.com/ChengLabResearch/neuroglancer-plugin)\n    - Embeds Neuroglancer as a page in the app.\n    - Supports loading from and saving to JSON configuration files in Ouroboros's File Explorer.\n    - Has additional features like fullscreen mode and screenshots.\n\n- Assisted Automatic Segmentation Plugin\n    - Coming Soon!\n    - Based on Segment Anything, it attempts to automatically segment the ROI.\n        - Benefits from the assumption that the desired structure is centered in each slice.\n    - Supports human input via bounding boxes and positive or negative annotations.\n\n### Installing a Plugin\n\n1. Open the Plugin Manager: `File \u003e Manage Plugins`.\n2. Press the Plus Icon\n3. Paste the GitHub URL of the plugin.\n4. Press Download (Ouroboros downloads and installs the plugin for you)\n\n_Where are plugins installed? In the [appData](https://github.com/electron/electron/blob/main/docs/api/app.md#appgetpathname)/ouroboros folder. This folder is different on each OS._\n\n### Creating a Plugin\n\nSee the [template README](https://github.com/ChengLabResearch/ouroboros/blob/main/plugins/plugin-template/README.md) for more information.\n\n# Development Quick Start\n\n**[Docker](https://www.docker.com/products/docker-desktop/) is REQUIRED to run Ouroboros.**\n\nOuroboros has two main components:\n\n- Python package (`python` folder within repository)\n- Electron app (main repository)\n\nThe Python package and the Electron app have separate setup steps which are listed below. Before you begin, **it is recommended that you open the Python package (`python` folder) in a separate VSCode window whenever you are running or writing Python code** (one window for the Electron app and one window for Python).\n\n**Before you begin, `git clone` the project locally.**\n\n## Electron Setup\n\nVScode Setup: [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) \u0026 [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)\n\n### 1. Install Node.js and NPM\n\nIf you don't already have them installed, follow the instructions at the following link: https://nodejs.org/en/download/\n\n### 2. Install Dependencies\n\n```bash\n$ npm install\n```\n\n### 3. Run Electron App In Development Mode\n\n```bash\n$ npm run dev\n```\n\n## Python Setup\n\nThe following steps are here to streamline the setup process for Python. For more advanced development or if you encounter any issues, you may need to follow the instructions available in the [Python README](./python/README.md).\n\n**Easier Python Option (No Python Setup)**\n\nIf you only plan on developing the Electron app and not the Python package, there is no need to setup Python.\n\nRunning `npm run dev` in the Electron app will automatically build and start the Python server inside of Docker.\n\nThis may take up to a minute the first time, but after that, it will be almost instantaneous.\n\n### 1. Install Python\n\nDue to some Python dependencies, it is highly recommended that the default Python installation for the system is `3.11`.\n\n**Easy Installation**\n\nDownload and install Python `3.11` from their website: https://www.python.org/downloads/.\n\n**Advanced Installation**\n\nIf you use [pyenv](https://github.com/pyenv/pyenv) or a similar Python version manager, install `3.11` and set it to be the global default.\n\nIf you don't make it the global version, you'll need to use `poetry env use 3.11` later to set the Python version before running `poetry install`. \n\n_Example:_\n\n```\npyenv install 3.11\npyenv global 3.11\n```\n\nI recommend following the instructions below first if you want to be able to compile the Python server using PyInstaller:\n\nhttps://stackoverflow.com/questions/60917013/how-to-build-python-with-enable-framework-enable-shared-on-macos\n\n### 2. Install Poetry and Dependencies\n\n[Poetry](https://python-poetry.org/) is the Python project and dependency manager used for the Ouroboros Python package.\n\nFollow the instructions on the following page to install Poetry on your system: https://python-poetry.org/docs/#installing-with-the-official-installer\n\n**Before you continue, it is recommended that you open the Python folder (`python`) of the project in a separate window in VSCode.**\n\n**It is also usually easier to run the setup commands in the VSCode integrated terminal, which can be opened with `CMD/CTRL + J`.**\n\nConfigure Poetry to install the virtual environment in the project folder. This allows VSCode to detect the virtual environment.\n\n```\npoetry config virtualenvs.in-project true\n```\n\nInstall the project dependencies. **Make sure the terminal is in the `python` folder before running this command.**\n\n```\npoetry install\n```\n\nNow kill the current terminal and open a new one, and it should indicate that it is using the local virtual environment for Ouroboros. If not, you can run `poetry shell` to activate the shell in the current terminal.\n\nPoetry makes it easier to run the built-in CLI or server with the following commands:\n\n- `ouroboros-cli` - Runs the CLI in the current folder. Use `--help` to learn more.\n\n- `ouroboros-server` - Runs the server that communicates with the Electron app.\n\n\n## Running the App in Development Mode\n\nIn the Electron VSCode window, run `npm run dev` to start the Electron app. This will start the main server in the background in a Docker container.\n\nThe initial Docker build may take up to a minute, but after that it should only take a second or so.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwe-gold%2Fouroboros","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwe-gold%2Fouroboros","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwe-gold%2Fouroboros/lists"}