{"id":50718701,"url":"https://github.com/husonlab/catrenet","last_synced_at":"2026-06-09T21:30:50.975Z","repository":{"id":94353468,"uuid":"193109120","full_name":"husonlab/catrenet","owner":"husonlab","description":"Autocatalytic networks","archived":false,"fork":false,"pushed_at":"2026-04-22T17:05:02.000Z","size":13432,"stargazers_count":9,"open_issues_count":1,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-22T19:08:54.522Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/husonlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"licenses/JLODA-LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-06-21T14:11:43.000Z","updated_at":"2026-04-22T17:04:19.000Z","dependencies_parsed_at":"2023-05-20T11:45:50.064Z","dependency_job_id":"ae90416c-3c80-4ece-8996-bb8c0fbcf46c","html_url":"https://github.com/husonlab/catrenet","commit_stats":null,"previous_names":["husonlab/bioraf"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/husonlab/catrenet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husonlab%2Fcatrenet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husonlab%2Fcatrenet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husonlab%2Fcatrenet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husonlab%2Fcatrenet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/husonlab","download_url":"https://codeload.github.com/husonlab/catrenet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husonlab%2Fcatrenet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34127342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-09T21:30:49.876Z","updated_at":"2026-06-09T21:30:50.968Z","avatar_url":"https://github.com/husonlab.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CatReNet\n\n\u003cimg src=\"https://github.com/husonlab/catrenet/blob/master/src/main/resources/catrenet/resources/images/splash.png\" alt=\"Splash\" width=\"600\"/\u003e\n\nCatReNet (formerly CatlyNet) is a program for working with (auto-)catalytic reaction networks, based on a set of\n'catalyzed reactions' and a given 'food set' of molecules  [[HXS24b]](#70).\nIt provides fast and exact algorithms for calculating three main types of autocatalytic networks,\nnamely (maximal) RAFs, CAFs, and pseudo-RAFs. These three notions are formalizations of the concept of a 'collectively\nautocatalytic set' originally introduced by Stuart Kauffman. Several other algorithms are also implemented.\nThe program can visualize a CRS and animate the emergence of a maximal auto-catalytic network.\nCatReNet was first introduced as CatlyNet in [[SXH20]](#25).\n\nCatReNet is written in Java using JavaFX and\nis loosely based on a web application written by Dietrich Radel: http://www.math.canterbury.ac.nz/bio/RAF/.\nThis software was developed by Daniel H. Huson, Joana C. Xavier and Mike A. Steel, see [[HXS24b]](#70).\n\n## 📦 Installers\n\nInteractive installers for MacOS, Windows and Linux are\navailable [here](https://software-ab.cs.uni-tuebingen.de/download/catrenet/welcome.html or [here](https://unitc-my.sharepoint.com/:f:/g/personal/iijhu01_cloud_uni-tuebingen_de/EmvzMdVieMZMijtxKhVbI-oBqq9fGYHKhVnW4vqLlZ3_IA?e=U2YIwh).\n\nVersions for Android and iOS are under development.\n\n## 🎥 Video Introduction\n\nWe’ve prepared a short video on how to get started using CatReNet:\n\n👉 [Watch on YouTube](https://youtu.be/8sBZtX101gU)\n\n## 🚀 Getting started\n\nInstall the software using the interactive installer.\n\nThe installation directory contains a directory of examples. Select the `File-\u003eOpen` menu item, navigate to the examples directory and select an example file to open:\n\n\u003cimg width=\"962\" alt=\"image\" src=\"https://github.com/husonlab/catrenet/assets/6740594/428eac27-5a25-4a57-b406-67ae1c92663f\"\u003e.\n\nThen select an algorithm to run:\n\n\u003cimg width=\"962\" alt=\"image\" src=\"https://github.com/husonlab/catrenet/assets/6740594/ba30d87a-8093-4a7a-83f2-5dad02285133\"\u003e\n\nOr view the network:\n\n\u003cimg width=\"962\" alt=\"image\" src=\"https://github.com/husonlab/catrenet/assets/6740594/4b3d09c8-3880-4680-b371-9cb01b39ba3e\"\u003e\n\n## ✨ Main features\n\nInput to CatReNet is a catalytic reaction system (CRS), which consists of a list of catalyzed reactions and a food set\nof molecules, specified like this example consisting of two food items and three (one-way) reactions:\n\n```\nFood: f1 f2\n\nr1 : f2 [f1,p3] =\u003e p1\nr2 : p1 [f2] =\u003e p2\nr3 : p2 [p1] =\u003e p3\n```\n\nSeveral algorithms are available that aim at computing certain 'auto-catalytic' subsystems.\nThe three main calculations are the computation of a \"maxRAF\"\n(maximal RAF, reflexively autocatalytic f-generated system), a maxCAF (maximal CAF, constructively autocatalytic and\nf-generated system)\nand a maxPseudoRAF (maximal pseudo RAF) of a CRS.\n\nThe program can display a CRS as a network, in several ways. Moreover, it can animate the emergence of a Max RAF, Max\nCAF\nor Max Pseudo RAF.\n\n## 🧠 Algorithms and heuristics\n\nIn more detail, the program provides the following calculations:\n\n- Max RAF Algorithm - computes the maximal RAF [[HMS15]](#10) (see also  [[H23]](#40))\n- Max CAF Algorithm - computes the maximal CAF [[HMS15]](#10)\n- Max Pseudo RAF Algorithm - computes the maximal Pseudo RAF [[HMS15]](#10)\n- Strictly Autocatalytic Max RAF Algorithm - computes a Max RAF that has the additional property that any contained\n  reaction requires at least one molecule type for catalyzation that is not in the food set [[HXS24]](#60)\n- Min RAF-Generating Given Element Algorithm - Identifies a subset of the Max RAF that is (i) a RAF and (ii) generates a\n  given element x\n  (not in the food set) and (iii) which is minimal amongst all such sets satisfying (i) and (ii).\n- Trivial CAFs Algorithm - computes all reactions that can run using only the food set\n- Trivial RAFs Algorithm - computes all reactions that can run using only the food set, where the catalyst need not be\n  in the food set if the reaction produces it\n- Core RAF Algorithm - computes the unique irreducible RAF, if it exists (Section 4.1 of [[SXH20]](#25))\n- Quotient RAF Algorithm - computes the Max RAF minus all the reactions from the Max CAF and adds all products of the\n  Max CAF to the food set [[SXH20]](#25)\n- Remove Trivial RAFs Algorithm - computes CRS that is obtained by removing all trivial RAFs\n- Min iRAF Heuristic - searches for a smallest irreducible RAF in a heuristic fashion [[HXS24b]](#50)\n- MU CAF Algorithm - computes one maximal uninhibited CAF\n- U RAF Algorithm - computes a max RAF, removes inhibited reactions, and then recomputes the max RAF\n  (Section 6 of [[HMS16]](#20))\n- Run MU CAF Multiple Times... - Runs the MU CAF algorithm multiple times, using different orderings of the input\n  reactions\n- Determine Necessarily Spontaneous in RAF - determine those reactions that must initially run uncatalyzed and then\n  beome catalyzed later\n- Greedily Grow MaxCAF to MaxRAF - greedily grow maxCAF to maxRAF by making reactions spontaneous\n- Compute Reaction Dependencies - computes the graph of dependencies between all food-set generated\n  reactions [[HXS24]](#60)\n- Compute Molecule Dependencies - computes the graph of dependencies between all molecules [[HXS24]](#60)\n- Stratify reactions and molecules - list reactions and molecules ranked by order in which they first appear\n- Compute Importance - computes the percent difference between model size and model size without given food\n  item [[HS23]](#50)\n\nIn addition, the program provides an implementation of Kauffman's  'binary polymer model'.\nThis features generates a system consisting of all polymers (over a finite alphabet)\nof length at most n, with ligation-cleavage reactions, and with catalysis assigned randomly (each molecule catalysing on\naverage m reactions).\n\n## 📤 Export computed systems\n\nAny of the computed subsystems can be exported to a new file.\n\n## 🌐 Network visualization\n\nThe program provides a number or visualizations. Because the visualization of very large graphs can be challenging for\nthe current\nimplementation of CatReNet, visualization menu items are disabled for reaction systems containing more than 500\nreactions.\nYou can change this threshold using the settings panel.\n\nNote that the currently implemented network layout algorithm is very basic. For nice layouts,\nexport a computed network in GML format and then view it in Cytoscape  (see [Export network](#export-network)).\n\nThe program can represent a CRS using several types of networks:\n\n- Full network - this shows all reactions, food items, reactants, produces and catalysts as nodes connected by directed\n  edges.\n- Association Network - reactions are shown as nodes and a directed edge from one reaction to the other indicates that\n  the one reaction produces a reactant or catalyst for the other\n- Reactant Association Network - reactions are shown as nodes and a directed edge indicates that one reaction produces a\n  reactant for the other.\n- Reaction-Dependency Network - shows dependencies between reactions (this feature requires testing and debugging)\n- Molecule-Dependency Network - show dependencies between molecules (this feature requires testing and debugging)\n\nThere are a several options:\n\n- Suppress Formal Food Item - if there is a formal food item present, which is used to implement \"catalyst-free\"\n  reactions, then selecting this option will hide it\n- Suppress Catalyst Edges - select this to hide catalyst edges\n- Use Multicopy Food Nodes - select this to show each food node multiple times, to produce a less tangled network\n- Show/Hide Node Labels - select to hide node labels\n\n## 🧮 Other network calculations\n\nThese graph calculations all ignore any catalysts that might be present and are untested on datasets using two-way\nreactions:\n\n- Stratification network (Reactions only) - A directed network that aims at capturing the partial ordering of reactions\n  based on\n  their dependencies: There is an edge from reaction r to reaction s, if reaction r occurs earlier than s in the\n  stratification of\n  reactions and r has a product that is a reactant for s (and r is the latest reaction to provide that reactant)\n\n- Stratification network (Reactions and Required Molecules) - The same graph as the previous one, except there are now\n  edges from r to m to s, where r and s are reactions as described in the previous point, and m is a node that\n  represents\n  the molecule that is produced by r and used by s. We also have edges m to r, where m is an item of the food set and r\n  requires m as a reactant.\n\n- Stratification network (Reactions and All Molecules) - The same graph as the previous one, plus additional nodes\n  that represent the other products of reactions.\n\n- Reaction Precedence Network – A directed network that aims at capturing the partial ordering of reactions based on\n  their dependencies:\n  if an admissible ordering of reactions exists (ignoring catalysts), then this graph is a DAG that represents which\n  reactions must occur before others.\n\n## 🎞️ Animation\n\nThe program can animate the emergence of three types of systems:\n\n- Animate Max RAF - in this animation, uncatalyzed reactions run at a low rate, as long as all reactants are present.\n- Animate Max CAF - reactions only run (at full rate) when catalyzed and all reactants are present.\n- Animate Max Pseudo RAF - same as Max RAF, but additionally, molecules that are not being produced can spontaneously\n  arise at a low rate.\n\nRun long enough, in each case, the set of reactions running at full rate, together with the assoicated food sources,\nconstitutes a subsytem of the animated type.\n\nThere are several options:\n\n- Animate Inhibitions - if inhibitions are present in the input CRS, then animate them\n- Move Labels - during animation, move copies of the molecule-type labels along the edges rather than just disks\n- Use Colors - during animation, give different molecules different colors\n- Network Embbedder Iterations - set the number of iterations used by the algorithm that computes the layout of the\n  network\n\n![Animated GIF](https://github.com/husonlab/catrenet/raw/master/artwork/animation.gif)\n\n## 📎 Export network\n\nThe network can be exported as an image in these formats: PNG, SVG and PDF.\n\nUsing the `File -\u003e Export -\u003e Network in GML Format...` format menu item, any network can be exported to a file in GML\nformat\nthat can be imported into [Cytoscape](https://cytoscape.org) (using that program's `File -\u003e Import -\u003e Network From File`\nmenu item).\n\n## ⚙️ Settings panel\n\nThe settings panel provides a number of configuration panels:\n\n- Notation for reactions: select between full, sparse, and tabbed notation. Select between two different arrow types.\n- Default styles for nodes and edges in network: set line style, color and width for all types of edges, and shape,\n  color and size of nodes.\n- Display labels: Maintains a list of labels to use in network visualizations, for example, in KEGG-based networks,\n  `C00005` represents `Reduced nicotinamide adenine dinucleotide phosphate`.\n- Animation: decide use different colors for different molecules, decide whether labels are used in animation\n- Other settings: maximum number of reactions allowed in network drawing, number of network embedding iterations, and\n  whether to wrap text.\n\n## 🛠️ Commandline tools\n\nThe Linux and MacOS distributions have a tools directory that contains two commandline programs:\n\n- catrenet-tool - runs the implemented algorithms on one or more CRS input files\n- polymer-tool - generates a set of CRS input files using the binary polymer model\n\n## 🗂️ Provided datasets\n\nThe program comes with a number of example datasets (from [here](http://www.math.canterbury.ac.nz/bio/RAF/)). They are\nplaced in a directory called `CatReNet-Examples`\nduring installation of the program.\n\n- [example-0.crs](examples/example-0.crs) - 6 reactions, 3 food items, has a Max RAF of size 3 and no Max CAF\n- [example-1.crs](examples/example-1.crs) - 6 reactions and 12 food itens, is a Max RAF and has no Max CAF\n- [example-2.crs](examples/example-2.crs) - uses binary polymers, has 5 reactions and 6 food items, has a Max RAF of size 5 and a Max CAF of size\n  3\n- [example-3.crs](examples/example-3.crs) - 14 reactions and 1 food item, is a Max RAF and has no Max CAF\n- [example-4.crs](examples/example-4.crs) - 9 reactions and 1 food item, is a Max RAF and has no Max CAF\n- [example-5.crs](examples/example-5.crs) - 15 reactions and 2 food items, is a Max RAF and has no Max CAF\n- [example-6.crs](examples/example-6.crs) - 7 reactions and 1 food item, is a Max RAF and has no Max CAF\n- [example-7.crs](examples/example-7.crs) - 3 reactions (1 of which is 2-way) and 4 food items, is a Max RAF and a Max CAF\n- [example-8.crs](examples/example-8.crs) - uses binary polymers, has 17 two-way reactions and 4 foot items, is a Max RAF and a Max CAF\n- [example-9.crs](examples/example-9.crs) - Has a maxRAF of size 4 (which is an iRAF), a pseudoRAF of size 7 (everything) and no CAF (Figure 2\n  from [[XHKSM20]](#35))\n- [example-10.crs](examples/example-10.crs) - 3 reactions and 1 food item, is a Max RAF and a Max CAF (Fig. 3(c) in [[GFHKU]](#22))\n- [inhibitions-1.crs](examples/inhibitions-1.crs) - 2 reactions (1 of which has an inhibitor) and 6 food items, Max RAF and Max CAF both have one reaction\n- [prokaryotic-network.crs](examples/prokaryotic-network.crs) - 6039 reactions and 68 food items. Prokaryotic catalytic reaction network from [[XHKSM20]](#35).\n\nHere are the two examples shown in our getting started video:\n\n- [how-to-build-a-house-maxCAF](examples/how-to-build-a-house-maxRAF.crs) - 6 reactions, 4 food items, has a Max CAF of\n  size 6\n- [how-to-build-a-house-maxRAF](examples/how-to-build-a-house-maxRAF.crs) - 7 reactions, 4 food items, has a Max RAF of\n  size 7 and no Max CAF\n\n## 📚 References\n\n\u003ca id=\"10\"\u003e[HSS15]\u003c/a\u003e\nHordijk, W., Smith, J.I. and Steel, M.A. (2015). [Algorithms for detecting and analysing autocatalytic sets](https://almob.biomedcentral.com/articles/10.1186/s13015-015-0042-8). Algorithms in\nMolecular Biology 10: 15.\n\n\u003ca id=\"20\"\u003e[HS16]\u003c/a\u003e\nHordijk, W. and Steel, M.A. (2016). [Autocatalytic sets in polymer networks with variable catalysis distributions](https://www.math.canterbury.ac.nz/~m.steel/Non_UC/files/research/catswim.pdf). J. Math.\nChem., 54(10): 1997-2021.\n\n\u003ca id=\"22\"\u003e[GFHKU]\u003c/a\u003e\nGatti, R.C., Fath, B., Hordijk, W., Kauffman, S. and Ulanowicz, R. (2018).\n[Niche emergence as an autocatalytic process in the evolution of ecosystems](https://pubmed.ncbi.nlm.nih.gov/29864429/),\nJournal of Theoretical Biology, 454: 110-117.\n\n\u003ca id=\"25\"\u003e[SXH20]\u003c/a\u003e\nSteel, M., Xavier, J. C., and Huson, D.H. (2020). [The structure of autocatalytic networks, with application to early biochemistry.](https://royalsocietypublishing.org/doi/10.1098/rsif.2020.0488)\nJ. Royal Society Interface, 17: 20200488.\n\n\u003ca id=\"35\"\u003e[XHKSM20]\u003c/a\u003e\nXavier, J.C., Hordijk, W., Kauffman, S., Steel M. and Martin, W.F. (2020). [Autocatalytic chemical networks at the origin of metabolism](https://royalsocietypublishing.org/doi/10.1098/rspb.2019.2377). Proc. Roy. Soc. B. 287: 20192377\n\n\u003ca id=\"40\"\u003e[H23]\u003c/a\u003e\nHordijk, W. (2023). [A concise and formal definition of RAF sets and the RAF algorithm](https://arxiv.org/abs/2303.01809), arXiv:2303.01809.\n\n\u003ca id=\"60\"\u003e[HXS24]\u003c/a\u003e\nHuson, D. H., Xavier, J. C., \u0026 Steel, M. A. (2024). _Self‑generating autocatalytic networks: structural results, algorithms, and their relevance to early biochemistry_. *Journal of the Royal Society Interface*, **21**(214), Article 20230732. [📄 PDF](https://royalsocietypublishing.org/doi/pdf/10.1098/rsif.2023.0732) • [🔗 DOI](https://doi.org/10.1098/rsif.2023.0732)\n\n\u003ca id=\"70\"\u003e[HXS24b]\u003c/a\u003e\nHuson, D. H., Xavier, J. C., \u0026 Steel, M. A. (2024). _CatReNet: interactive analysis of (auto‑) catalytic reaction networks_. *Bioinformatics*, **40**(8), btae515. [📄 PDF](https://academic.oup.com/bioinformatics/article-pdf/40/8/btae515/58967196/btae515.pdf) • [🔗 DOI](https://doi.org/10.1093/bioinformatics/btae515)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhusonlab%2Fcatrenet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhusonlab%2Fcatrenet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhusonlab%2Fcatrenet/lists"}