{"id":38742052,"url":"https://github.com/kishwarshafin/helen","last_synced_at":"2026-01-17T11:41:11.888Z","repository":{"id":57437062,"uuid":"170924098","full_name":"kishwarshafin/helen","owner":"kishwarshafin","description":"H.E.L.E.N. (Homopolymer Encoded Long-read Error-corrector for Nanopore)","archived":false,"fork":false,"pushed_at":"2020-10-28T03:26:44.000Z","size":7623,"stargazers_count":72,"open_issues_count":1,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-09-24T00:24:17.137Z","etag":null,"topics":["genome-analysis","genome-assembly","genome-scale-models","genome-sequencing","genomes","genomic-data-analysis","genomics","human-genetics","oxford-nanopore"],"latest_commit_sha":null,"homepage":"","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/kishwarshafin.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-15T20:28:09.000Z","updated_at":"2025-07-29T05:23:42.000Z","dependencies_parsed_at":"2022-09-26T17:11:21.316Z","dependency_job_id":null,"html_url":"https://github.com/kishwarshafin/helen","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kishwarshafin/helen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kishwarshafin%2Fhelen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kishwarshafin%2Fhelen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kishwarshafin%2Fhelen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kishwarshafin%2Fhelen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kishwarshafin","download_url":"https://codeload.github.com/kishwarshafin/helen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kishwarshafin%2Fhelen/sbom","scorecard":{"id":561538,"data":{"date":"2025-08-11","repo":{"name":"github.com/kishwarshafin/helen","commit":"a075e9f0a753d3db77f8727b83cd425b6dcdd8a4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/15 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile/Dockerfile:1: pin your Docker image by updating pytorch/pytorch:1.4-cuda10.1-cudnn7-devel to pytorch/pytorch:1.4-cuda10.1-cudnn7-devel@sha256:c612782acc39256aac0637d58d297644066c62f6f84f0b88cfdc335bb25d0d22","Warn: pipCommand not pinned by hash: Dockerfile/Dockerfile:15-22","Warn: pipCommand not pinned by hash: Dockerfile/Dockerfile:15-22","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":0,"reason":"23 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: GHSA-6rq9-53c3-f7vj","Warn: Project is vulnerable to: PYSEC-2023-38 / GHSA-ffxj-547x-5j7c","Warn: Project is vulnerable to: PYSEC-2025-10 / GHSA-h36j-8vv3-cj52","Warn: Project is vulnerable to: PYSEC-2024-223 / GHSA-h8wv-9h96-m4hr","Warn: Project is vulnerable to: PYSEC-2024-222 / GHSA-whh8-fjgc-qp73","Warn: Project is vulnerable to: PYSEC-2021-142 / GHSA-8q59-q68h-6hv4","Warn: Project is vulnerable to: PYSEC-2018-49 / GHSA-rprw-h62v-c2w7","Warn: Project is vulnerable to: GHSA-3749-ghw9-m3mg","Warn: Project is vulnerable to: PYSEC-2022-43015 / GHSA-47fc-vmwq-366v","Warn: Project is vulnerable to: PYSEC-2025-41 / GHSA-53q9-r3pm-6pq6","Warn: Project is vulnerable to: PYSEC-2024-252 / GHSA-5pcm-hx3q-hm94","Warn: Project is vulnerable to: GHSA-887c-mr87-cxwp","Warn: Project is vulnerable to: PYSEC-2024-251 / GHSA-pg7h-5qx3-wjr3","Warn: Project is vulnerable to: PYSEC-2024-250","Warn: Project is vulnerable to: PYSEC-2024-259","Warn: Project is vulnerable to: PYSEC-2017-74"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T13:51:33.369Z","repository_id":57437062,"created_at":"2025-08-20T13:51:33.369Z","updated_at":"2025-08-20T13:51:33.369Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28508178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["genome-analysis","genome-assembly","genome-scale-models","genome-sequencing","genomes","genomic-data-analysis","genomics","human-genetics","oxford-nanopore"],"created_at":"2026-01-17T11:41:11.814Z","updated_at":"2026-01-17T11:41:11.873Z","avatar_url":"https://github.com/kishwarshafin.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# POLISHER UPDATE: P.E.P.P.E.R.\nWe have released a new polisher [PEPPER](https://github.com/kishwarshafin/pepper/releases/tag/v0.1) that replaces `MarginPolish-HELEN`. If you have newer data `Guppy \u003e= 3.0.5` please use `PEPPER` instead of `MarginPolish-HELEN`. `PEPPER` is fully supported by our team.\n\n## H.E.L.E.N.\nH.E.L.E.N. (Homopolymer Encoded Long-read Error-corrector for Nanopore)\n\n[![Build Status](https://travis-ci.com/kishwarshafin/helen.svg?branch=master)](https://travis-ci.com/kishwarshafin/helen)\n___________________________________________________________\nHELEN is published in Nature Biotechnology:\n#### [Nanopore sequencing and the Shasta toolkit enable efficient de novo assembly of eleven human genomes](https://www.nature.com/articles/s41587-020-0503-6)\n__________________________________________________________\n\n## Overview\n`HELEN` uses a Recurrent-Neural-Network (RNN) based Multi-Task Learning (MTL) model that can predict a base and a run-length for each genomic position using the weights generated by `MarginPolish`.\n\n© 2020 Kishwar Shafin, Trevor Pesout, Benedict Paten. \u003cbr/\u003e\nComputational Genomics Lab (CGL), University of California, Santa Cruz.\n\n## Why MarginPolish-HELEN ?\n* `MarginPolish-HELEN` outperforms other graph-based and Neural-Network based polishing pipelines.\n* Simple installation steps.\n* `HELEN` can use multiple GPUs at the same time.\n* Highly optimized pipeline that is faster than any other available polishing tool.\n* We have \u003cb\u003esequenced-assembled-polished 11 samples\u003c/b\u003e to ensure robustness, runtime-consistency and cost-efficiency.\n* We tested GPU usage on `Amazon Web Services (AWS)` and `Google Cloud Platform (GCP)` to ensure scalability.\n* Open source [(MIT License)](LICENSE).\n\n## Walkthrough\n* [Docker based installation walkthrough](./docs/walkthrough_docker.md).\n* [Local installation walkthrough](./docs/walkthrough_local.md).\n\n## Installation\n`MarginPolish-HELEN` is supported on  \u003cb\u003e`Ubuntu 16.10/18.04`\u003c/b\u003e or any other Linux-based system.\nÂ\n#### Install prerequisites\nBefore you follow any of the methods, make sure you install all the dependencies:\n```bash\nsudo apt-get -y install git cmake make gcc g++ autoconf bzip2 lzma-dev zlib1g-dev \\\nlibcurl4-openssl-dev libpthread-stubs0-dev libbz2-dev liblzma-dev libhdf5-dev \\\npython3-pip python3-virtualenv virtualenv\n```\n\n#### Method 1: Install MarginPolish-HELEN from GitHub\nYou can install from the `GitHub` repository:\n```bash\ngit clone https://github.com/kishwarshafin/helen.git\ncd helen\nmake install\n. ./venv/bin/activate\n\nhelen --help\nmarginpolish --help\n```\nEach time you want to use it, activate the virtualenv:\n```bash\n. \u003cpath/to/helen/venv/bin/activate\u003e\n```\n\n#### Method 2: Install using PyPi\nInstall  prerequisites and the install `MarginPolish-HELEN` using pip:\n```bash\npython3 -m pip install helen --user\n\npython3 -m helen.helen --help\npython3 -m helen.marginpolish --help\n```\n\nUpdate the installed version:\n```bash\npython3 -m pip install update pip\npython3 -m pip install helen --upgrade\n```\n\nYou can also add module locations to path:\n```bash\necho 'export PATH=\"$(python3 -m site --user-base)/bin\":$PATH' \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n\nmarginpolish --help\nhelen --help\n```\n\n#### Method 3: Use docker image\n\n##### CPU based docker:\n```bash\n# SEE CONFIGURATION\ndocker run --rm -it --ipc=host kishwars/helen:latest helen --help\ndocker run --rm -it --ipc=host kishwars/helen:latest marginpolish --help\n\ndocker run -it --ipc=host --user=`id -u`:`id -g` --cpus=\"16\" \\\n-v \u003c/directory/with/inputs_outputs\u003e:/data kishwars/helen:latest \\\nhelen --help\n```\n\n##### GPU based docker:\n```bash\nsudo apt-get install -y nvidia-docker2\n# SEE CONFIGURATION\nnvidia-docker run -it --ipc=host kishwars/helen:latest helen torch_stat\nnvidia-docker run -it --ipc=host kishwars/helen:latest helen --help\nnvidia-docker run -it --ipc=host kishwars/helen:latest marginpolish --help\n\n# RUN HELEN\nnvidia-docker run -it --ipc=host --user=`id -u`:`id -g` --cpus=\"16\" \\\n-v \u003c/directory/with/inputs_outputs\u003e:/data kishwars/helen:latest \\\nhelen --help\n```\n## Usage\n`MarginPolish` requires a draft assembly and a mapping of reads to the draft assembly. We commend using `Shasta` as the initial assembler and `MiniMap2` for the mapping.\n\n#### Step 1: Generate an initial assembly\nGenerate an assembly using one of the ONT assemblers:\n* [Shasta long read assembler](https://github.com/chanzuckerberg/shasta).\n* [Flye assembler](https://github.com/fenderglass/Flye)\n* [Canu assembler](https://github.com/marbl/canu)\n* [WTDBG2 assembler](https://github.com/ruanjue/wtdbg2)\n\n#### Step 2: Create an alignment between reads and shasta assembly\nWe recommend using `MiniMap2` to generate the mapping between the reads and the assembly. You don't have to follow these exact commands.\n```bash\nminimap2 -ax map-ont -t 32 shasta_assembly.fa reads.fq | samtools view -hb -F 0x904 \u003e unsorted.bam;\nsamtools sort -@32 -o reads_2_assembly.0x904.bam unsorted.bam;\nsamtools index -@32 reads_2_assembly.0x904.bam\n```\n#### Step 3: Generate images using MarginPolish\n##### Download Model\n```bash\nhelen download_models \\\n--output_dir \u003cpath/to/mp_helen_models/\u003e\n```\n\n##### Run MarginPolish\nYou can generate images using MarginPolish by running:\n```bash\nmarginpolish reads_2_assembly.bam \\\nAssembly.fa \\\n\u003c/path/to/model_name.json\u003e \\\n-t \u003cnumber_of_threads\u003e \\\n-o \u003cpath/to/marginpolish_images\u003e \\\n-f\n```\n\nYou can find the models by downloading them.\n\n#### Step 4: Run HELEN\nNext, run `HELEN` to polish using a RNN.\n```bash\nhelen polish \\\n--image_dir \u003c/path/to/marginpolish_images/\u003e \\\n--model_path \u003c/path/to/model.pkl\u003e \\\n--batch_size 256 \\\n--num_workers 4 \\\n--threads \u003cnum_of_threads\u003e \\\n--output_dir \u003c/path/to/output_dir\u003e \\\n--output_prefix \u003coutput_filename.fa\u003e \\\n--gpu_mode\n```\n\nIf you are using `CPUs` then remove the `--gpu_mode` argument.\n\n## Help\nPlease open a github issue if you face any difficulties.\n\n## Acknowledgement\nWe are thankful to [Segey Koren](https://github.com/skoren) and [Karen Miga](https://github.com/khmiga) for their help with `CHM13` data and evaluation.\n\nWe downloaded our data from [Telomere-to-telomere consortium](https://github.com/nanopore-wgs-consortium/CHM13) to evaluate our pipeline against `CHM13`.\n\nWe acknowledge the work of the developers of these packages: \u003c/br\u003e\n* [Shasta](https://github.com/chanzuckerberg/shasta/commits?author=paoloczi)\n* [pytorch](https://pytorch.org/)\n* [ssw library](https://github.com/mengyao/Complete-Striped-Smith-Waterman-Library)\n* [hdf5 python (h5py)](https://www.h5py.org/)\n* [pybind](https://github.com/pybind/pybind11)\n* [hyperband](https://github.com/zygmuntz/hyperband)\n\n## Fun Fact\n\u003cimg src=\"https://vignette.wikia.nocookie.net/marveldatabase/images/e/eb/Iron_Man_Armor_Model_45_from_Iron_Man_Vol_5_8_002.jpg/revision/latest?cb=20130420194800\" alt=\"guppy235\" width=\"240p\"\u003e \u003cimg src=\"https://vignette.wikia.nocookie.net/marveldatabase/images/c/c0/H.E.L.E.N._%28Earth-616%29_from_Iron_Man_Vol_5_19_002.jpg/revision/latest?cb=20140110025158\" alt=\"guppy235\" width=\"120p\"\u003e \u003cbr/\u003e\n\nThe name \"HELEN\" is inspired from the A.I. created by Tony Stark in the  Marvel Comics (Earth-616). HELEN was created to control the city Tony was building named \"Troy\" making the A.I. \"HELEN of Troy\".\n\nREAD MORE: [HELEN](https://marvel.fandom.com/wiki/H.E.L.E.N._(Earth-616))\n\n\n\n© 2020 Kishwar Shafin, Trevor Pesout, Benedict Paten.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkishwarshafin%2Fhelen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkishwarshafin%2Fhelen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkishwarshafin%2Fhelen/lists"}