{"id":13593464,"url":"https://github.com/aertslab/SCope","last_synced_at":"2025-04-09T05:31:18.216Z","repository":{"id":36456921,"uuid":"121366102","full_name":"aertslab/SCope","owner":"aertslab","description":"Fast visualization tool for large-scale and high dimensional single-cell data","archived":false,"fork":false,"pushed_at":"2023-03-05T21:47:00.000Z","size":34525,"stargazers_count":69,"open_issues_count":99,"forks_count":15,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-08-02T16:47:31.204Z","etag":null,"topics":["aws","cloud","gene-expression","gene-regulatory-network","grpc","large-scale-data-visualization","loom","reactjs","single-cell"],"latest_commit_sha":null,"homepage":"","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/aertslab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2018-02-13T09:58:55.000Z","updated_at":"2024-06-02T08:54:28.000Z","dependencies_parsed_at":"2023-10-20T16:22:57.306Z","dependency_job_id":null,"html_url":"https://github.com/aertslab/SCope","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aertslab%2FSCope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aertslab%2FSCope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aertslab%2FSCope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aertslab%2FSCope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aertslab","download_url":"https://codeload.github.com/aertslab/SCope/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223365274,"owners_count":17133681,"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":["aws","cloud","gene-expression","gene-regulatory-network","grpc","large-scale-data-visualization","loom","reactjs","single-cell"],"created_at":"2024-08-01T16:01:20.549Z","updated_at":"2024-11-06T15:30:28.134Z","avatar_url":"https://github.com/aertslab.png","language":"Python","funding_links":[],"categories":["Software packages"],"sub_categories":["Other applications"],"readme":"[![CodeFactor](https://www.codefactor.io/repository/github/aertslab/scope/badge)](https://www.codefactor.io/repository/github/aertslab/scope)\n\n# SCope v1.8.2: Visualization of large-scale and high dimensional single cell data\n\n\u003cimg src=\"images/SCope_Logo.png\" width=\"640\"\u003e\n\nSCope is a fast visualization tool for large-scale and high dimensional scRNA-seq datasets.\nCurrently the data format supported by SCope is `.loom`. This file format for very large omics datasets is maintained by the Linnarsson Lab through the `loompy` Python package (https://github.com/linnarsson-lab/loompy).\n\nView the [change log here](CHANGELOG.md).\n\n## Demo\n\nVisit [https://scope.aertslab.org](https://scope.aertslab.org) to test out SCope on several published datasets! Personal loom file files can be uploaded but will only be kept for 5 days.\n\n## Loom File Generation\n\nCurrently there are two packages to generate extended loom files compatible with SCope.\n\n-   R: [SCopeLoomR](https://github.com/aertslab/SCopeLoomR) - Dedicated R package\n-   Python: [pySCENIC](https://github.com/aertslab/pySCENIC) - Single function for generation from SCENIC results\n\nEventually the functionality from pySCENIC will be expanded and put in its own python package.\n\n## Run SCope\n\n### Standalone App\n\nStandalone apps for **macOS** and **Linux** can be downloaded from [the releases page.](https://github.com/aertslab/SCope/releases).\n\n:exclamation: SCope standalone app requires Node.js (\u003e v9). To install it, go to https://nodejs.org/en/download/.\n\nA **Windows** app is under development, but currently has no ETA.\n\n### Command Line\n\nYou will need access to at least Python 3.7 do run this.\n\n1. Clone the GitHub repository and install,\n\n```bash\n# Define where you want to clone the SCope repository.\nLOCAL_SCOPE_REPO=\"${HOME}/repos/SCope\"\n# Clone SCope git repository.\ngit clone https://github.com/aertslab/SCope \"${LOCAL_SCOPE_REPO}\"\n# Go to your local cloned SCope repository.\ncd \"${LOCAL_SCOPE_REPO}\"\n# Install SCope.\nnpm install\n```\n\n2. Run,\n\n```bash\n# Go to your local cloned SCope repository.\ncd \"${LOCAL_SCOPE_REPO}\"\nSCOPE_CONFIG=config.json npm run scope\n```\n\n## Deploy a Cloud-based Instance\n\n### Amazon Web Services\n\n#### Public AMI\n\nNo ETA.\n\n#### Source\n\nTo create a SCope AWS instance from scratch please read the tutorial [aws-deployment-source](https://github.com/aertslab/SCope/tree/master/tutorials/aws-deployment-source).\n\n## Features\n\n### Enabling ORCID Functionality\n\nTo enable colaborative annotations and login via ORCID ID, API credentials (`orcidAPIClientID`, `orcidAPIClientSecret` and `orcidAPIRedirectURI`) must be added to the config file provided.\nThese can be generated at the [orcid developer tools page](https://orcid.org/developer-tools).\n\nThe `dataHashSecret` entry in the config file should be filled in with a randomly generated string for example from the python [secrets package](https://docs.python.org/3/library/secrets.html).\nThis string will be used to salt all annotation data, allowing validation of data generated on the instance of SCope. Any changes in this string will invalidate all pre-existing annotations.\n\n## Development\n\n1. Clone the GitHub repository and install,\n\n```bash\n# Define where you want to clone the SCope repository.\nLOCAL_SCOPE_REPO=\"${HOME}/repos/SCope\"\n# Clone SCope git repository.\ngit clone https://github.com/aertslab/SCope \"${LOCAL_SCOPE_REPO}\"\n# Go to your local cloned SCope repository.\ncd \"${LOCAL_SCOPE_REPO}\"\n# Install SCope.\nnpm install\n```\n\n2. Run,\n\n```bash\n# Go to your local cloned SCope repository.\ncd \"${LOCAL_SCOPE_REPO}\"\n\n# Start SCope Server (terminal 1).\ncd opt\npoetry run hypercorn main:scope_api --reload\n\n# Start SCope Client (terminal 2).\ncd ..\nnpm run dev\n```\n\n### Configuration file (`config.json`)\n\nKeys:\n\n-   `data`: This is a directory containing data files (e.g. the `motd.txt` message of the day).\n    Can be an absolute path or a relative path from where you start SCope. By default it is\n    `./data/`.\n\n\n### Deploying SCope with Docker\n\n`docker-compose.yml` is configured to spin up 2 containers: One to run the SCope backend and another to run an Apache\nreverse proxy server.\n\nThe SCope application will be available on port `80` by default. You can specify a port by using env variable: `SCOPE_PORT`\nbefore running the docker-compose command. Apache will proxy requests through to the appropriate port inside the container.\n\nThe `docker-compose.yml` will serve the assets from inside the scope container, and the `docker-compose.host.yml` will serve them from the host.\nThis supports as many use cases as possible, because you can either build the assets on the host yourself using whatever configuration you need,\nor serve them from the container if your environment doesn't allow for that (e.g. you don't have npm installed on the host).\n\nBefore running the compose build, you can specify a SCOPE_PORT with: `docker-compose build --build-arg SCOPE_PORT=8080`\n\nThe scope webpack assets will have to be built with the config: `\"reverseProxyOn\": true`.\nYou can use environment variable: `SCOPE_CONFIG=path to your config` to specify a config file instead of changing the main one.\n\nYou can configure where the dockerised SCope data directories should be located\non the host machine by using the env var `SCOPE_DATA_DIR` before launching the docker-compose. \nThe default location is `./scope_data` which will be created if you do not specify one.\n\n**Note**: in this config, you do not need to specify the port in `publicHostAddress`. The env var `SCOPE_PORT` gets appended for you.\n\nIf deploying the container on a specific port with another external apache reverse-proxy server, \nyou may have to add a config to the external apache site config to allow http and websocket reverse-proxying.\nHere is an example:\n\n```\n    ProxyPass / http://0.0.0.0:8080/\n    RewriteEngine on\n    RewriteCond %{HTTP:Upgrade} websocket [NC]\n    RewriteCond %{HTTP:Connection} upgrade [NC]\n    RewriteRule ^/?(.*) \"ws://0.0.0.0:8080/$1\" [P,L]\n```\n\n##### Example serve from container\n\n1. Copy `config.json` to a new file and modify with `\"reverseProxyOn\": true,` and `publicHostAddress` set to your domain\n1. `docker-compose build --build-arg SCOPE_PORT=8080`\n1. ```SCOPE_DATA_DIR=$HOME/scope_data SCOPE_PORT=8080 docker-compose up -d```\n\n##### OR Serve from host\n1. ```npm run build```\n1. ```SCOPE_DATA_DIR=$HOME/scope_data SCOPE_PORT=8080 docker-compose -f docker-compose.host.yml up -d```\n\nYou should be able to visit `http://localhost:8080` and see the app!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faertslab%2FSCope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faertslab%2FSCope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faertslab%2FSCope/lists"}