App to plot multidimensional data to a metabolic map. Metabolic maps are graphs with metabolites as nodes and reactions as edges.
For a quick start, we provide a web application at https://biosustain.github.io/shu. There are example maps and data available at https://github.com/biosustain/shu_case_studies, that can be load with the buttons at the top-right.
For a more comprehensive guide, visit the documentation.
Paper to cite: https://doi.org/10.1093/bioinformatics/btae140
Escher is great. In fact, the format of the map is exactly the same as escher's. However, escher only allows for plotting 2 (+2 with tooltips) kinds of data: reaction data and metabolite data. Shu attempts to provide ways of plotting at least 6:
- Reaction sizes.
- Reaction colors.
- Reaction right sides.
- Reaction left sides.
- Metabolite sizes.
- Metabolite colors.
(+2 with hovers):
- Hover reactions.
- Hover metabolites.
with special focus on being able to plot distributions (not just points) and n-conditions. Escher also has the distinction between color and size, it is simply that they are not independently accessible from the GUI.
Shu is distributed both through a web app (preview build at https://biosustain.github.io/shu) and as standalone native application. To use the latter, download the latest release for your operating system, unpack if necessary and run it as executable.
Documentation for the rust crate and the python API will be made available once they are published. In the meantime, a preview of the python documentation can be found at https://biosustain.github.io/shu/docs.
Install cargo and run
git clone https://github.com/biosustain/shu.git
cd shu
cargo install --path .
This may possibly require extra dependencies. Check the bevy setup, shu uses lld
to fasten linking times.
Shu follows a Grammar of Graphics design like ggplot or plotnine. See the python API for the full analogy. The particular implementation is an Entity Component System in bevy:
- Each aesthetic is a component (
Gsize
,Gcolor
, etc.) containing its data (seesrc/aesthetics.rs
). Identifiers are stored in theAesthetic
component. - Entities with
Aesthetic
, other aes components and Geom component (GeomArrow
,GeomMetabolite
, etc. insrc/geom.rs
) are processed and plotted by a system (insrc/aesthetics.rs
). - The accepted aesthetics for a given geom are made explicit in the queries of the systems.
Data handling (df
, ad map_file
) lives in src/data.rs
and
src/escher.rs
and the GUI componets lives in src/gui.rs
.
Copyright 2023 The Novo Nordisk Foundation Center for Biosustainability.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.