{"id":13756416,"url":"https://github.com/dubssieg/pancat","last_synced_at":"2025-05-10T03:31:52.179Z","repository":{"id":113820284,"uuid":"592387566","full_name":"dubssieg/pancat","owner":"dubssieg","description":"Pangenome graphs visualisation, distance computing, reconstruction of sequences and other utility functions","archived":false,"fork":false,"pushed_at":"2024-08-19T08:10:55.000Z","size":1800,"stargazers_count":31,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-14T03:19:48.356Z","etag":null,"topics":["pangenome","pangenome-graph","pangenomics","variation-graph","variation-graphs"],"latest_commit_sha":null,"homepage":"https://tharos-ux.github.io/pangenome-notes/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dubssieg.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":"2023-01-23T16:16:16.000Z","updated_at":"2024-08-19T08:10:59.000Z","dependencies_parsed_at":"2023-09-22T22:17:05.156Z","dependency_job_id":"c209a1b6-38d5-4060-a3a6-be24978206db","html_url":"https://github.com/dubssieg/pancat","commit_stats":null,"previous_names":["tharos-ux/pancat","dubssieg/pancat"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubssieg%2Fpancat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubssieg%2Fpancat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubssieg%2Fpancat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubssieg%2Fpancat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dubssieg","download_url":"https://codeload.github.com/dubssieg/pancat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224911505,"owners_count":17390840,"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":["pangenome","pangenome-graph","pangenomics","variation-graph","variation-graphs"],"created_at":"2024-08-03T11:00:43.694Z","updated_at":"2025-05-10T03:31:52.170Z","avatar_url":"https://github.com/dubssieg.png","language":"Python","funding_links":[],"categories":["A list of software capable of analyzing **eukaryotic** genomes for pangenomics"],"sub_categories":[],"readme":"[![](https://img.shields.io/badge/python-3.10-blue.svg)]()\n[![](https://img.shields.io/badge/python-3.11-blue.svg)]()\n[![](https://img.shields.io/badge/python-3.12-blue.svg)]()\n[![](https://img.shields.io/badge/documentation-unfinished-orange.svg)]()\n[![https://tharos-ux.github.io/pangenome-notes/](https://img.shields.io/badge/docs-unfinished-orange.svg)]()\n\n# PANCAT - PANgenome Comparison and Anlaysis Toolkit\n\n\u003e [!WARNING]\\\n\u003e py-pancat is currently not maintained with a lot of efforts. Please see rs-pancat-compare for the graph comparison tool, and rs-pancat-paths for various manipulations along the paths. Visualisation tools are currently under maintenance, and are not planned to be re-implemented in Rust.\n\nImplementations of many functions for performing various actions on GFA-like graphs in a command-line tool, such as extracting or offseting a pangenome graph.\nIs capable of comparing graphs topology between graphs that happen to contain the same set of sequences. Does pangenome graphs visualisation with interactive html files.\nUses the [gfagraphs library](https://pypi.org/project/gfagraphs/) to load and manipulate pangenome graphs.\n\n![](https://media.discordapp.net/attachments/874430800802754623/1180182798968033280/graph_big.png)\n\n\u003e [!NOTE]\\\n\u003e Want to contribute? Feel free to open a PR on an issue about a missing, buggy or incomplete feature! **Please do bug reports in the issue tracker!**.\n\n## Installation\n\nRequires **python $\\geq$ 3.10**.\n\nInstallation can be made with the following command line, and updates may be run using `just` (requires [just](https://github.com/casey/just))\n\n```bash\ngit clone https://github.com/Tharos-ux/pancat.git\ncd pancat\npip install -r requirements.txt --upgrade\npython -m pip install . --quiet\n```\n\n## Troubleshooting\n\n\u003e [!WARNING]\\\n\u003e This tool is under heavy devlopment, and so it's [associated library](https://github.com/Tharos-ux/gfagraphs). I advise to update `pip install gfagraphs --upgrade` every now and then, when you update the tool. Any issue to this project is more than welcome, as I could not test all usecases! Feel free to [open one here](https://github.com/Tharos-ux/pancat/issues) if any problems occurs. **Please do bug reports in the issue tracker as well**.\n\n## Quick start : provided commands\n\nThis program is a collection of tools.\nNot every function or script is accessible through the front-end `pancat`, but this front-end showcase what the tools can do.\nOther tools are in the `scripts` folder. \n\nAre available in `pancat`:\n\n+ **compare** - Aligns shared genomes in graphs and compute the minimal set of events that explains how we go from one graph to another. A fastest RUST implementation is available [here](https://github.com/Tharos-ux/rs-pancat-compare).\n+ **isolate** - Isolates a subgraph within a graph in-between two positions, according to a path or walk in the graph. Extraction only considers other paths and walks that cross both positions.\n+ **offset** - Add path offsets to a graph. Adds a JSON string, PO (Path Offset) positions, relative to paths in the GFA file. Hence, PO:J:{'w1':[(334,336,'+')],'w2':[(245,247,'-'),(336,338,'-')]} tells that the walk/path w1 contains the sequence starting at position 334 and ending at position 336, and the walk/path w2 contains the sequence starting at the offset 245 (ending 247) and crosses it a second time between position 336 and 338, and that the sequences are reversed one to each other. Note that any non-referenced walk in this field means that the node is not inside the given walk.\n+ **complete** - Asserts if the graph is a complete pangenome graph. A complete pangenome graph is a sequence graph where all the genomes used to build the graph are exactly contained in the graph, and that have paths.\n+ **grapher** - Creates a html view of the graph. Huge graphs may take long time to display, or might be messy. Advice would be to extract parts you want to display (with pancat isolate for instance), then computes the vizualisation on the selected part.\n+ **multigrapher** - Creates a html view of the alignment of two graphs. Huge graphs may take long time to display, or might be messy. Advice would be to extract parts you want to display (with pancat isolate for instance), then computes the vizualisation on the selected part.\n+ **stats** - Retrieves basic stats on a pangenome graph.\n+ **reconstruct** - Reconstruct linear sequences from a GFA graph. Given a GFA file with paths, reconstruct a linear sequence for each haplotype between two offsets.\n+ **unfold** - [WIP] Break cycles of a graph with paths or walks. Aims to linearize the graph by creating new nodes and connecting them in the graph.\n+ **compress** - [WIP] Does a compression of the graph, merging simple non-conflicting substitution bubbles.\n\nAt any point, one can use `pancat -h` to get the manpage of the tool and its available subcommands, and also can display the help for a specific command (let's say **compare**) with `pancat compare -h`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdubssieg%2Fpancat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdubssieg%2Fpancat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdubssieg%2Fpancat/lists"}