{"id":13551050,"url":"https://github.com/joiningdata/lollipops","last_synced_at":"2026-02-15T10:43:16.389Z","repository":{"id":50460096,"uuid":"23934409","full_name":"joiningdata/lollipops","owner":"joiningdata","description":"Lollipop-style mutation diagrams for annotating genetic variations.","archived":false,"fork":false,"pushed_at":"2024-09-20T19:06:26.000Z","size":2615,"stargazers_count":189,"open_issues_count":4,"forks_count":70,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-03T01:33:57.750Z","etag":null,"topics":["cancer-genomics","cancer-variants","diagram","go","visualization"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/joiningdata.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":"2014-09-11T20:25:12.000Z","updated_at":"2025-03-26T21:16:34.000Z","dependencies_parsed_at":"2022-09-26T21:12:18.870Z","dependency_job_id":"abba95b7-7ee1-4639-ba63-6f3246f07341","html_url":"https://github.com/joiningdata/lollipops","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/joiningdata/lollipops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joiningdata%2Flollipops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joiningdata%2Flollipops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joiningdata%2Flollipops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joiningdata%2Flollipops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joiningdata","download_url":"https://codeload.github.com/joiningdata/lollipops/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joiningdata%2Flollipops/sbom","scorecard":{"id":529365,"data":{"date":"2025-08-11","repo":{"name":"github.com/joiningdata/lollipops","commit":"2587aaded33dccb84d2d90f5bf79872492df355b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.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":"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":"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":2,"reason":"Found 6/30 approved changesets -- score normalized to 2","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":"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":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: containerImage not pinned by hash: Dockerfile:1","Info:   0 out of   1 containerImage dependencies pinned","Info:   1 out of   1 goCommand 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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: 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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.7.2 not signed: https://api.github.com/repos/joiningdata/lollipops/releases/176174682","Warn: release artifact v1.7.1 not signed: https://api.github.com/repos/joiningdata/lollipops/releases/123796001","Warn: release artifact v1.7.0 not signed: https://api.github.com/repos/joiningdata/lollipops/releases/123790653","Warn: release artifact v1.6.0 not signed: https://api.github.com/repos/joiningdata/lollipops/releases/92794334","Warn: release artifact v1.5.6 not signed: https://api.github.com/repos/joiningdata/lollipops/releases/80540162","Warn: release artifact v1.7.2 does not have provenance: https://api.github.com/repos/joiningdata/lollipops/releases/176174682","Warn: release artifact v1.7.1 does not have provenance: https://api.github.com/repos/joiningdata/lollipops/releases/123796001","Warn: release artifact v1.7.0 does not have provenance: https://api.github.com/repos/joiningdata/lollipops/releases/123790653","Warn: release artifact v1.6.0 does not have provenance: https://api.github.com/repos/joiningdata/lollipops/releases/92794334","Warn: release artifact v1.5.6 does not have provenance: https://api.github.com/repos/joiningdata/lollipops/releases/80540162"],"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":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2023-1572 / GHSA-qgc7-mgm3-q253","Warn: Project is vulnerable to: GO-2023-1990 / GHSA-j3p8-6mrq-6g7h","Warn: Project is vulnerable to: GO-2023-1989 / GHSA-x92r-3vfx-4cv3","Warn: Project is vulnerable to: GO-2024-2937 / GHSA-9phm-fm57-rhg8"],"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 6 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-20T05:20:23.127Z","repository_id":50460096,"created_at":"2025-08-20T05:20:23.127Z","updated_at":"2025-08-20T05:20:23.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29475991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T10:25:47.032Z","status":"ssl_error","status_checked_at":"2026-02-15T10:25:01.815Z","response_time":118,"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":["cancer-genomics","cancer-variants","diagram","go","visualization"],"created_at":"2024-08-01T12:01:41.653Z","updated_at":"2026-02-15T10:43:16.370Z","avatar_url":"https://github.com/joiningdata.png","language":"Go","funding_links":[],"categories":["Go","go","Static"],"sub_categories":[],"readme":"# lollipops\n\n**Please cite this work as**\n\n- Jay JJ, Brouwer C (2016) Lollipops in the Clinic: Information Dense Mutation Plots for Precision Medicine. PLoS ONE 11(8): e0160519. doi: [10.1371/journal.pone.0160519](http://dx.doi.org/10.1371/journal.pone.0160519).\n\nA simple 'lollipop' mutation diagram generator that tries to make things\nsimple and easy by automating as much as possible. It uses the\n[UniProt REST API](http://www.uniprot.org/uploadlists/) and\n[InterPro API](https://interpro-documentation.readthedocs.io/en/latest/faq.html#application-programming-interface-api) to automate translation\nof Gene Symbols and lookup domain/motif features for display. If\nvariant changes are provided, it will also annotate them to the diagram\nusing the \"lollipops\" markers that give the tool it's name.\n\n## Example\n\nBasic usage is just the gene symbol (ex: `TP53`) and a list of\nmutations (ex: `R273C R175H T125 R248Q`)\n\n    ./lollipops TP53 R273C R175H T125 R248Q\n\n![TP53 Lollipop diagram with 4 marked mutations](tp53.png?raw=true)\n\nMore advanced usage allows for per-mutation color (e.g. sample type) and\nsize specification (e.g. denoting number of samples), along with text\nlabels, a legend for abbreviated domains, and more:\n\n    \t./lollipops -legend -labels TP53 R248Q#7f3333@131 R273C R175H T125@5\n\n![TP53 Lollipop diagram with 5 customized mutations](tp53_more.png?raw=true)\n\n## Usage\n\nUsage: `lollipops [options] {-U UNIPROT_ID | GENE_SYMBOL} [PROTEIN CHANGES ...]`\n\nWhere **GENE_SYMBOL** is the official human HGNC gene symbol. This will use the\nofficial API to lookup the **UNIPROT_ID**. To skip the lookup or use other species,\nspecify the UniProt ID with -U (e.g. `-U P04637` for TP53)\n\n#### Protein changes\n\nCurrently only point mutations are supported, and may be specified as:\n\n    \u003cAMINO\u003e\u003cCODON\u003e\u003cAMINO\u003e\u003c#COLOR\u003e\u003c@COUNT\u003e\n\nOnly CODON is required, and AMINO tags are not parsed.\n\nSynonymous mutations are denoted if the first AMINO tag matches the second\nAMINO tag, or if the second tag is not present. Otherwise the non-synonymous\nmutation color is used. The COLOR tag will override using the #RRGGBB style\nprovided. The COUNT tag can be used to scale the lollipop marker size so that\nthe area is exponentially proportional to the count indicated. Examples:\n\n    R273C            -- non-synonymous mutation at codon 273\n    T125@5           -- synonymous mutation at codon 125 with \"5x\" marker sizing\n    R248Q#00ff00     -- green lollipop at codon 248\n    R248Q#00ff00@131 -- green lollipop at codon 248 with \"131x\" marker sizing\n\n**N.B.** Color must come before count in tags.\n\n#### Diagram generation options\n\n```\n  -legend                 draw a legend for colored regions\n  -syn-color=\"#0000ff\"    color to use for synonymous mutation markers\n  -mut-color=\"#ff0000\"    color to use for non-synonymous mutation markers\n  -hide-axis              do not draw the amino position x-axis\n  -show-disordered        draw disordered regions on the backbone\n  -show-motifs            draw simple motif regions\n  -labels                 draw label text above lollipop markers\n  -no-patterns            use solid fill instead of patterns (SVG only)\n```\n\n#### Output options\n\n```\n  -o=filename.png         set output filename (.png or .svg supported)\n  -w=700                  set diagram pixel width (default = automatic fit)\n  -dpi=300                set DPI (PNG output only)\n```\n\n#### Domain sources:\n\n```\n  -D pfam                 set the source of protein domains\n                          pfam:     use Pfam domains only\n                          interpro: use representative domains \n                                    from CDD, NCBIfam, Pfam, PROSITE, and SMART\n```\n\n## Installation\n\nHead over to the [Releases](https://github.com/joiningdata/lollipops/releases) to\ndownload the latest version for your system in a simple command-line executable.\n\nIf you already have Go installed and want the bleeding edge, just\n`go get -u github.com/joiningdata/lollipops` to download the latest version.\n\n## Embedding\n\nAs of v0.97, lollipops is now easy to embed in other Go applications. The following code prints an SVG for TP53 and some mutations to standard output:\n\n```go\npackage main\n\nimport (\n    \"os\"\n\n    \"github.com/joiningdata/lollipops/data\"\n    \"github.com/joiningdata/lollipops/drawing\"\n)\n\nfunc main() {\n    uniprot_id := \"P04637\"\n    mutations := []string{\"R273C\", \"R175H\", \"T125@5\", \"R248Q#7f3333@131\"}\n\n    p53_domains, err := data.GetGraphicData(uniprot_id)\n    if err != nil {\n        panic(err)\n    }\n\n    drawing.DrawSVG(os.Stdout, mutations, p53_domains)\n}\n\n```\n\n# CONTRIBUTING\n\nPlease submit your bugs and features requests via the [Issues](https://github.com/joiningdata/lollipops/issues) tab. Be sure to\nsearch closed issues before submitting a new one in case the issue has been\npreviously discussed. Pull Requests are welcome, but please create an issue beforehand\nto discuss significant changes.\n\nCode contributions are expected to be properly formatted with `go fmt`, and generally adhere to the standard [Golang review guidelines](https://github.com/golang/go/wiki/CodeReviewComments).\n\n# LICENSE\n\nLollipops is released under the [GPL license](LICENSE). If your institution requires\nadditional licensing options please contact the author.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoiningdata%2Flollipops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoiningdata%2Flollipops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoiningdata%2Flollipops/lists"}