{"id":42060204,"url":"https://github.com/statgen/locuszoom-hosted","last_synced_at":"2026-01-26T07:38:54.043Z","repository":{"id":38262296,"uuid":"170378816","full_name":"statgen/locuszoom-hosted","owner":"statgen","description":"A web service to upload and share GWAS results with LocusZoom.js","archived":false,"fork":false,"pushed_at":"2025-05-08T14:23:20.000Z","size":3679,"stargazers_count":1,"open_issues_count":24,"forks_count":0,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-08-23T01:03:39.076Z","etag":null,"topics":["gwas","gwas-pipeline","gwas-summary-statistics","gwas-tools","locuszoom","locuszoom-plot"],"latest_commit_sha":null,"homepage":"https://my.locuszoom.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/statgen.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}},"created_at":"2019-02-12T19:33:59.000Z","updated_at":"2024-02-22T21:51:02.000Z","dependencies_parsed_at":"2023-02-06T12:45:57.844Z","dependency_job_id":null,"html_url":"https://github.com/statgen/locuszoom-hosted","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/statgen/locuszoom-hosted","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statgen%2Flocuszoom-hosted","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statgen%2Flocuszoom-hosted/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statgen%2Flocuszoom-hosted/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statgen%2Flocuszoom-hosted/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/statgen","download_url":"https://codeload.github.com/statgen/locuszoom-hosted/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statgen%2Flocuszoom-hosted/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28769853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T06:37:25.426Z","status":"ssl_error","status_checked_at":"2026-01-26T06:37:23.039Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["gwas","gwas-pipeline","gwas-summary-statistics","gwas-tools","locuszoom","locuszoom-plot"],"created_at":"2026-01-26T07:38:50.668Z","updated_at":"2026-01-26T07:38:54.032Z","avatar_url":"https://github.com/statgen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LocusZoom: Hosted Upload Service\n\nUpload, analyze, and share GWAS results with LocusZoom.js. Try it at [my.locuszoom.org](https://my.locuszoom.org).\n\n\n## Settings\n\nFor a basic guide to most settings, see the [cookiecutter-django docs](https://cookiecutter-django.readthedocs.io/en/latest/settings.html).\n\n## Basic Commands\n\n\n### Quickstart\nThe following commands will start a development environment. Some IDEs (such as Pycharm) are able to run the app via run configurations, which may be more convenient than starting things through the terminal.\n\nFor production deployment instructions, see [docs/deploy/index.md](docs/deploy/index.md). \n \n- In one tab, build assets (in local development, this is currently done on the host system, outside of Docker): \n\n`$ npm run prod`\n\nor with live rebuilding, if you intend to be changing JS code as you work:\n\n`$ npm run dev`\n\n- In a second open terminal::\n\n```\n$ docker system prune \u0026\u0026 docker-compose -f local.yml build --pull\n$ docker-compose -f local.yml up\n```\n\n(`docker system prune` is optional, but it can save your hard drive from filling up as you experiment with different build options)\n\nOn the first installation, you will also need to download some large asset files required for annotations. For local development, a \"test\" version is available that will only annotate a limited subset of biologically interesting genes; this subset is much smaller than the full database, and easier to use on a laptop.\n\n(see deployment docs for the correct command to use with production assets)\n\n```bash\n$ docker-compose -f local.yml run --rm django zorp-assets download --type snp_to_rsid_test --tag genome_build GRCh37 --no-update\n$ docker-compose -f local.yml run --rm django zorp-assets download --type snp_to_rsid_test --tag genome_build GRCh38 --no-update\n```\n\n### Setting Up Your Users\n\n- To create an **superuser account**, use the following command. This must be performed first, in order to set up\nGoogle OAuth social authentication for everyone else::\n\n    `$ docker-compose -f local.yml run --rm django python manage.py createsuperuser`\n\nFor convenience, you can keep your normal user logged in on Chrome and your superuser logged in on Firefox\n(or similar), so that you can see how the site behaves for both kinds of users.\n\nThen follow the [authentication setup instructions](https://django-allauth.readthedocs.io/en/latest/installation.html).\n\nThe OAuth credentials may be obtained through the Google API console. For local development, you must use named origins\n  (not an IP address) for the values you enter in the console:\n- Allowed origins: `http://localhost:8000`\n- Authorized redirect URIs:  `http://localhost:8000/accounts/google/login/callback/`\n\n- To create a **normal user account**, just go to Sign Up and fill out the form. Once you submit it, you'll see a\n\"Verify Your E-mail Address\" page. Go to your console to see a simulated email verification message. Copy the link\ninto your browser. Now the user's email should be verified and ready to go.\n\n\n- To generate database migrations within the docker container, run::\n\n`$ docker-compose -f local.yml run --rm django python manage.py makemigrations`\n\nThen verify the migration file is correct, and restart Docker to apply the migrations automatically. (in production, you must apply the migrations manually; see deployment guide for details)\n\n\n## Development and testing helpers\n### Generating sample data for testing\n\n- A bootstrapping script has been created to populate the database with fake users and studies. To use it, run::\n\n    `$ docker-compose -f local.yml run --rm django python3 scripts/populate_db.py -n 10`\n\nThis script generates fake studies for search results, but it notably does not run the ingest pipeline.\n It may be improved in the future to generate more realistic and complete fake data. \n\n### Opening a terminal for debugging\nBecause all development happens inside a Docker container, it is sometimes useful to open a terminal for debugging\npurposes. This can be done as follows.\n\nOn a running container::\n\n`$ docker-compose -f local.yml exec django bash`\n\nCreate a container just to run a command::\n\n`$ docker-compose -f local.yml run --rm django bash`\n\nSimilarly, the django app can be probed interactively (eg, to experiment with the ORM) via an enhanced python shell::\n\n`$ docker-compose -f local.yml run --rm django ./manage.py shell_plus`\n\n\n### Static analysis checks\n\nWe run static analysis with flake8, and type checks with mypy:::\n\n`$ flake8 .`\n`$ mypy .`\n\n### Test coverage\n\nTo run the tests, check your test coverage, and generate an HTML coverage report::\n\n`$ coverage run -m pytest`\n`$ coverage html`\n`$ open htmlcov/index.html`\n\n### Running tests with py.test\nA suite of unit tests is available::\n\n`$ docker-compose -f local.yml run --rm django pytest`\n\n## Sentry\n\nSentry is an error logging aggregator service. If a key (DSN) is provided in your .env file, errors will be tracked\n automatically.\n\n## Deployment\n\n### Docker\nThis app uses Docker to manage dependencies and create a working environment. See \n[deployment documentation](docs/deploy/index.md) for instructions on how to create a working, production server \nenvironment. A local, debug-friendly Docker configuration is also provided in this repo, and many of the instructions \nin this document assume this is what you will use. \n \n The original Docker configuration has been modified from cookiecutter-django; see their docs for more information \n about default options and design choices.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatgen%2Flocuszoom-hosted","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstatgen%2Flocuszoom-hosted","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatgen%2Flocuszoom-hosted/lists"}