marsilea 0.3.2__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {marsilea-0.3.2 → marsilea-0.3.3}/.github/workflows/build.yaml +1 -1
- marsilea-0.3.3/.github/workflows/deploy_streamlit.yaml +39 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/.github/workflows/lint.yaml +1 -1
- {marsilea-0.3.2 → marsilea-0.3.3}/.gitignore +2 -1
- marsilea-0.3.3/CITATION.cff +37 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/LICENSE +1 -1
- marsilea-0.3.3/PKG-INFO +74 -0
- marsilea-0.3.3/README.md +42 -0
- marsilea-0.3.3/app/Dockerfile +20 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/Home.py +9 -9
- marsilea-0.3.3/app/README.md +17 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/initialize.py +3 -3
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/main_plots.py +1 -1
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/resource.py +1 -1
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/side_plots.py +16 -16
- marsilea-0.3.2/app/pages/01 /360/237/237/250 Simple_Heatmap.py" → marsilea-0.3.3/app/pages/01 Simple_Heatmap.py +5 -2
- marsilea-0.3.2/app/pages/02 /360/237/215/261 X-Layout_Heatmap.py" → marsilea-0.3.3/app/pages/02 X-Layout_Heatmap.py +1 -1
- marsilea-0.3.2/app/pages/03 /360/237/225/270/357/270/217 Upsetplot.py" → marsilea-0.3.3/app/pages/03 Upsetplot.py +39 -10
- marsilea-0.3.2/app/pages/04 /360/237/223/232 Manual.py" → marsilea-0.3.3/app/pages/04 Manual.py +3 -3
- {marsilea-0.3.2 → marsilea-0.3.3}/app/requirements.txt +1 -1
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/Makefile +10 -0
- marsilea-0.3.3/docs/examples/.gitignore +2 -0
- marsilea-0.3.3/docs/examples/Basics/README.rst +2 -0
- marsilea-0.3.3/docs/examples/Basics/plot_adv_heatmap.py +23 -0
- marsilea-0.3.3/docs/examples/Basics/plot_heatmap.py +21 -0
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/README.rst +2 -2
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/plot_arc_diagram.py +8 -0
- marsilea-0.3.3/docs/examples/Gallery/plot_available_plotters.py +173 -0
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/plot_bivariate_dist.py +12 -1
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/plot_mouse_embryo.py +24 -5
- marsilea-0.3.3/docs/examples/Gallery/plot_oil_well.py +92 -0
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/plot_oncoprint.py +9 -1
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/plot_pbmc3k.py +29 -8
- marsilea-0.3.3/docs/examples/Gallery/plot_sc_multiomics.py +86 -0
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/plot_seqalign.py +11 -0
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/plot_stacked_bar.py +14 -1
- {marsilea-0.3.2/examples → marsilea-0.3.3/docs/examples/Gallery}/plot_upset.py +21 -8
- marsilea-0.3.3/docs/examples/Plotters/README.rst +4 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_anno_labels.py +21 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_arc.py +19 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_bar.py +18 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_box.py +18 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_boxen.py +18 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_center_bar.py +19 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_chunk.py +19 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_color_mesh.py +20 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_colors.py +20 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_fixed_chunk.py +21 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_labels.py +20 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_marker_mesh.py +19 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_numbers.py +17 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_point.py +18 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_seq_logo.py +21 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_sized_mesh.py +18 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_stack_bar.py +19 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_strip.py +18 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_swarm.py +18 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_text_mesh.py +19 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_title.py +20 -0
- marsilea-0.3.3/docs/examples/Plotters/plot_violin.py +18 -0
- marsilea-0.3.3/docs/examples/README.rst +2 -0
- marsilea-0.3.3/docs/how_to/README.rst +4 -0
- marsilea-0.3.3/docs/how_to/customization/README.rst +8 -0
- marsilea-0.3.3/docs/how_to/customization/plot_add_border.py +32 -0
- marsilea-0.3.3/docs/how_to/customization/plot_get_axes.py +33 -0
- marsilea-0.3.3/docs/how_to/dendrogram/README.rst +2 -0
- marsilea-0.3.3/docs/how_to/dendrogram/plot_color_dendrogram.py +32 -0
- marsilea-0.3.3/docs/how_to/dendrogram/plot_dendrogram_control.py +19 -0
- marsilea-0.3.3/docs/how_to/layout/README.rst +3 -0
- marsilea-0.3.3/docs/how_to/layout/plot_adjust_figure_size.py +58 -0
- marsilea-0.3.3/docs/how_to/layout/plot_labeling.py +39 -0
- marsilea-0.3.3/docs/how_to/layout/plot_margin.py +28 -0
- marsilea-0.3.3/docs/how_to/legends/README.rst +7 -0
- marsilea-0.3.3/docs/how_to/legends/plot_disable_legend.py +29 -0
- marsilea-0.3.3/docs/how_to/legends/plot_legends.py +24 -0
- marsilea-0.3.3/docs/how_to/save/README.rst +5 -0
- marsilea-0.3.3/docs/how_to/save/plot.pdf +0 -0
- marsilea-0.3.3/docs/how_to/save/plot.png +0 -0
- marsilea-0.3.3/docs/how_to/save/plot_save.py +29 -0
- marsilea-0.3.3/docs/source/.gitignore +4 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/_static/css/custom.css +7 -0
- marsilea-0.3.3/docs/source/api/index.rst +293 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/conf.py +30 -4
- marsilea-0.3.3/docs/source/img/code_example.png +0 -0
- marsilea-0.3.3/docs/source/img/cover.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/index.rst +36 -6
- marsilea-0.3.3/docs/source/installation.rst +14 -0
- marsilea-0.3.3/docs/source/sg_execution_times.rst +169 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/tutorial/intro.rst +1 -1
- marsilea-0.3.3/img/publication/API-interface.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-canvas-size-code.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-canvas-size.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-location-code.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-location.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-pad-code.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-pad.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-plotter-size-code.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-plotter-size.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-plotter-type-code.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-change-plotter-type.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic-code.png +0 -0
- marsilea-0.3.3/img/publication/layout-basic.png +0 -0
- marsilea-0.3.3/img/publication/layout-step-1a-code.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/layout-step-1a.png +0 -0
- marsilea-0.3.3/img/publication/layout-step-1b-code.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/layout-step-1b.png +0 -0
- marsilea-0.3.3/img/publication/layout-step-2-code.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/layout-step-2.png +0 -0
- marsilea-0.3.3/img/publication/layout-step-3-code.png +0 -0
- marsilea-0.3.3/img/publication/layout-step-3.png +0 -0
- marsilea-0.3.3/img/publication/layout-step-4-code.png +0 -0
- marsilea-0.3.3/img/publication/layout-step-4.png +0 -0
- marsilea-0.3.3/img/publication/web-app-screenshot-1.png +0 -0
- marsilea-0.3.3/img/publication/web-app-screenshot-2.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/pyproject.toml +5 -3
- marsilea-0.3.3/scripts/benchmark/marsilea/marsilea_cooking_oils_base.py +97 -0
- marsilea-0.3.3/scripts/benchmark/marsilea/marsilea_cooking_oils_v1.py +105 -0
- marsilea-0.3.3/scripts/benchmark/marsilea/marsilea_cooking_oils_v2.py +118 -0
- marsilea-0.3.3/scripts/benchmark/marsilea_vs_matplotlib.png +0 -0
- marsilea-0.3.3/scripts/benchmark/marsilea_vs_matplotlib.svg +1846 -0
- marsilea-0.3.3/scripts/benchmark/matplotlib/matplotlib_cooking_oils_base.py +180 -0
- marsilea-0.3.3/scripts/benchmark/matplotlib/matplotlib_cooking_oils_v1.py +230 -0
- marsilea-0.3.3/scripts/benchmark/matplotlib/matplotlib_cooking_oils_v2.py +220 -0
- marsilea-0.3.3/scripts/benchmark/result.py +159 -0
- marsilea-0.3.3/scripts/pub_figure.py +15 -0
- marsilea-0.3.3/scripts/pub_figures/layout-step.py +120 -0
- marsilea-0.3.3/scripts/publication/arc_diagram.svg +5974 -0
- marsilea-0.3.3/scripts/publication/bivariate_dist.svg +32 -0
- marsilea-0.3.3/scripts/publication/mouse_embryo.svg +168201 -0
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/__init__.py +3 -2
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/_api.py +3 -2
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/_deform.py +44 -38
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/base.py +702 -118
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/dataset.py +49 -23
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/dendrogram.py +119 -84
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/exceptions.py +5 -6
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/heatmap.py +85 -25
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/layers.py +77 -69
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/layout.py +132 -102
- marsilea-0.3.3/src/marsilea/plotter/__init__.py +36 -0
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/_images.py +37 -7
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/_seaborn.py +35 -24
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/_utils.py +3 -2
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/arc.py +29 -19
- marsilea-0.3.3/src/marsilea/plotter/area.py +80 -0
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/bar.py +113 -90
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/base.py +76 -49
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/bio.py +40 -30
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/mesh.py +184 -88
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/plotter/text.py +303 -194
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/upset.py +229 -151
- {marsilea-0.3.2 → marsilea-0.3.3/src}/marsilea/utils.py +23 -10
- marsilea-0.3.3/src/oncoprinter/__init__.py +4 -0
- marsilea-0.3.3/src/oncoprinter/core.py +296 -0
- marsilea-0.3.3/src/oncoprinter/preset.py +258 -0
- marsilea-0.3.2/PKG-INFO +0 -50
- marsilea-0.3.2/README.md +0 -20
- marsilea-0.3.2/docs/source/.gitignore +0 -3
- marsilea-0.3.2/docs/source/api/base.rst +0 -49
- marsilea-0.3.2/docs/source/api/index.rst +0 -9
- marsilea-0.3.2/docs/source/api/plots.rst +0 -62
- marsilea-0.3.2/docs/source/api/viz.rst +0 -40
- marsilea-0.3.2/docs/source/how-to.rst +0 -53
- marsilea-0.3.2/examples/.gitignore +0 -1
- marsilea-0.3.2/examples/plot_oil_well.py +0 -84
- marsilea-0.3.2/img/publication/layout-step-3.png +0 -0
- marsilea-0.3.2/img/publication/layout-step-4.png +0 -0
- marsilea-0.3.2/marsilea/plotter/__init__.py +0 -7
- marsilea-0.3.2/scripts/pub_figure.py +0 -0
- marsilea-0.3.2/scripts/pub_figures/layout-step.py +0 -70
- {marsilea-0.3.2 → marsilea-0.3.3}/.streamlit/config.toml +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/.gitignore +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/__init__.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/cmap_selector/__init__.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/cmap_selector/selector.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/data_input.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/example_download.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/saver.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/state.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/transformation.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/components/upset_example.csv +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/V1.mp4 +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/V2.mp4 +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/annolabels.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/bar.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/box.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/boxen.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/colors.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/dendrogram.svg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/favicon.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/favicon.svg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/heatmap.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/heatmap.svg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/logo.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/mark_map.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/mark_map.svg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/point.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/sized_heatmap.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/sized_heatmap.svg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/sized_onlymap.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/strip.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/swarm.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/violin.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/img/x-layout.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/script/heatmap_data.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/script/plot_layer_example_images.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/script/plotter_example_images.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/set_data_memberships.txt +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/test.xlsx +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/test_data/Stats_plot.txt +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/test_data/example_data.txt +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/test_data/number.txt +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/test_data/row_labels.txt +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/test_data/set_data_memberships.txt +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/app/upset.xlsx +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/data/IMDB.csv +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/data/PATIENT_DATA_oncoprint.tsv +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/data/pbmc3k.h5ad +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/README.md +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/make.bat +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/requirements.txt +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/_templates/autosummary.rst +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/img/marsilea-renderplan-logic.drawio.svg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/tutorial/axes-level.rst +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/tutorial/concatenation.rst +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/tutorial/heatmap.rst +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/tutorial/index.rst +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/tutorial/intro2.rst +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/tutorial/new_renderplan.rst +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/docs/source/tutorial/upset.rst +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/Logo(1).zip +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/Logo.zip +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/banner-blue.jpg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/banner-dark-gradient.jpg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/banner-dark.jpg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/banner-rice-white.jpg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/banner-white.jpg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/Logo/.DS_Store +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/Logo/Logo.svg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/Logo/logo.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/Logo//346/265/205/350/223/235/346/270/220/345/217/230.jpg" +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/Logo//346/267/261/350/211/262/350/203/214/346/231/257.jpg" +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/Logo//347/261/263/350/211/262.jpg" +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/Logo//347/272/257/347/231/275.jpg" +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/Logo//350/247/222/345/272/246/346/270/220/345/217/230.jpg" +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo/__MACOSX/Logo/._.DS_Store +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/logo.svg +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/Snap-1.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/Snap-2.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/Snap-3.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/Stacked bar.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/bivar_kde.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/layout-skeleton-step1.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/layout-skeleton-step2.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/layout-skeleton-step3.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/layout-skeleton-step4.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/oncoprint.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/img/publication/upset.png +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/readthedocs.yaml +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/scripts/logo.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/scripts/pub_figures/bivariate_kde.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/scripts/pub_figures/layout-skeleton-step.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/scripts/pub_figures/onco.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/scripts/pub_figures/stacked_bar.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/scripts/pub_figures/upset.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/scripts/x-layout.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/setup.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/tests/test_data_input.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/tests/test_deform.py +0 -0
- {marsilea-0.3.2 → marsilea-0.3.3}/tests/test_mesh.py +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Deploy streamlit docker to Azure
|
|
2
|
+
on: []
|
|
3
|
+
# push:
|
|
4
|
+
# paths:
|
|
5
|
+
# - '.github/**'
|
|
6
|
+
# - 'app/**'
|
|
7
|
+
# - 'marsilea/**'
|
|
8
|
+
# - 'pyproject.toml'
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v2
|
|
15
|
+
- name: Login to Azure
|
|
16
|
+
uses: azure/login@v1
|
|
17
|
+
with:
|
|
18
|
+
creds: ${{ secrets.AZURE_CREDENTIALS }}
|
|
19
|
+
- name: Build and push
|
|
20
|
+
uses: azure/docker-login@v1
|
|
21
|
+
with:
|
|
22
|
+
login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
|
|
23
|
+
username: ${{ secrets.REGISTRY_USERNAME }}
|
|
24
|
+
password: ${{ secrets.REGISTRY_PASSWORD }}
|
|
25
|
+
- run: |
|
|
26
|
+
docker build . -t ${{ secrets.REGISTRY_LOGIN_SERVER }}/marsilea:${{ github.sha }}
|
|
27
|
+
docker push ${{ secrets.REGISTRY_LOGIN_SERVER }}/marsilea:${{ github.sha }}
|
|
28
|
+
|
|
29
|
+
- name: Deploy to Azure Web App
|
|
30
|
+
uses: azure/webapps-deploy@v2
|
|
31
|
+
with:
|
|
32
|
+
resource-group: ${{ secrets.RESOURCE_GROUP }}
|
|
33
|
+
dns-name-label: ${{ secrets.RESOURCE_GROUP }}${{ github.run_number }}
|
|
34
|
+
image: ${{ secrets.REGISTRY_LOGIN_SERVER }}/marsilea:${{ github.sha }}
|
|
35
|
+
registry-login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
|
|
36
|
+
registry-username: ${{ secrets.REGISTRY_USERNAME }}
|
|
37
|
+
registry-password: ${{ secrets.REGISTRY_PASSWORD }}
|
|
38
|
+
name: marsilea
|
|
39
|
+
location: 'northeurope'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# This CITATION.cff file was generated with cffinit.
|
|
2
|
+
# Visit https://bit.ly/cffinit to generate yours today!
|
|
3
|
+
|
|
4
|
+
cff-version: 1.2.0
|
|
5
|
+
title: Marsilea
|
|
6
|
+
message: >-
|
|
7
|
+
An intuitive generalized visualization paradigm for
|
|
8
|
+
complex datasets
|
|
9
|
+
type: software
|
|
10
|
+
authors:
|
|
11
|
+
- given-names: Yimin
|
|
12
|
+
family-names: Zheng
|
|
13
|
+
email: yzheng@cemm.at
|
|
14
|
+
affiliation: CeMM
|
|
15
|
+
orcid: 'https://orcid.org/0000-0002-0394-9735'
|
|
16
|
+
- given-names: Zhihang
|
|
17
|
+
family-names: Zheng
|
|
18
|
+
affiliation: >-
|
|
19
|
+
Hong Kong University of Science and Technology
|
|
20
|
+
(Guangzhou)
|
|
21
|
+
orcid: 'https://orcid.org/0000-0001-7986-4925'
|
|
22
|
+
- given-names: Andre
|
|
23
|
+
family-names: Rendeiro
|
|
24
|
+
affiliation: CeMM
|
|
25
|
+
orcid: 'https://orcid.org/0000-0001-9362-5373'
|
|
26
|
+
- given-names: Edwin
|
|
27
|
+
family-names: Cheung
|
|
28
|
+
affiliation: University of Macau
|
|
29
|
+
orcid: 'https://orcid.org/0000-0001-8034-2833'
|
|
30
|
+
identifiers:
|
|
31
|
+
- type: doi
|
|
32
|
+
value: 10.1101/2024.02.14.580236
|
|
33
|
+
description: Bioarxiv
|
|
34
|
+
repository-code: 'https://github.com/Marsilea-viz/marsilea'
|
|
35
|
+
keywords:
|
|
36
|
+
- Visualization
|
|
37
|
+
license: MIT
|
marsilea-0.3.3/PKG-INFO
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: marsilea
|
|
3
|
+
Version: 0.3.3
|
|
4
|
+
Summary: Create x-layout visualization
|
|
5
|
+
Author: Zhihang Zheng
|
|
6
|
+
Author-email: Mr-Milk <yzheng@cemm.at>
|
|
7
|
+
Requires-Python: >=3.8
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Requires-Dist: numpy
|
|
11
|
+
Requires-Dist: pandas
|
|
12
|
+
Requires-Dist: matplotlib>=3.6
|
|
13
|
+
Requires-Dist: seaborn
|
|
14
|
+
Requires-Dist: scipy
|
|
15
|
+
Requires-Dist: legendkit
|
|
16
|
+
Requires-Dist: platformdirs
|
|
17
|
+
Requires-Dist: ruff ; extra == "dev"
|
|
18
|
+
Requires-Dist: icecream ; extra == "dev"
|
|
19
|
+
Requires-Dist: python-hmr ; extra == "dev"
|
|
20
|
+
Requires-Dist: pytest ; extra == "dev"
|
|
21
|
+
Requires-Dist: scikit-learn ; extra == "dev"
|
|
22
|
+
Requires-Dist: sphinx ; extra == "dev"
|
|
23
|
+
Requires-Dist: numpydoc ; extra == "dev"
|
|
24
|
+
Requires-Dist: sphinx_design ; extra == "dev"
|
|
25
|
+
Requires-Dist: pydata-sphinx-theme ; extra == "dev"
|
|
26
|
+
Requires-Dist: sphinx-copybutton ; extra == "dev"
|
|
27
|
+
Requires-Dist: sphinx_gallery ; extra == "dev"
|
|
28
|
+
Requires-Dist: mpl_fontkit ; extra == "dev"
|
|
29
|
+
Project-URL: Home, https://github.com/Marsilea-viz/marsilea
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
|
|
32
|
+
<p align="center">
|
|
33
|
+
<picture align="center">
|
|
34
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/Marsilea-viz/marsilea/raw/main/img/banner-dark.jpg">
|
|
35
|
+
<source media="(prefers-color-scheme: light)" srcset="https://github.com/Marsilea-viz/marsilea/raw/main/img/banner-blue.jpg">
|
|
36
|
+
<img alt="Shows a bar chart with benchmark results." src="https://github.com/Marsilea-viz/marsilea/raw/main/img/banner-dark.jpg" width="400">
|
|
37
|
+
</picture>
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
[](https://marsilea.readthedocs.io/en/stable)
|
|
41
|
+

|
|
42
|
+
|
|
43
|
+
❗We are in beta, API may change and bugs expected
|
|
44
|
+
|
|
45
|
+
### Declarative creation of composable visualization!
|
|
46
|
+
|
|
47
|
+
[Read Documentation](https://marsilea.readthedocs.io/)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Installation
|
|
51
|
+
|
|
52
|
+
```shell
|
|
53
|
+
pip install marsilea
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
[//]: # (### Examples)
|
|
57
|
+
|
|
58
|
+
[//]: # ()
|
|
59
|
+
[//]: # (| | |)
|
|
60
|
+
|
|
61
|
+
[//]: # (|-----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|)
|
|
62
|
+
|
|
63
|
+
[//]: # (| Heatmap | Oncoprint |)
|
|
64
|
+
|
|
65
|
+
[//]: # (| <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_pbmc3k_001_2_00x.png" width=400> | <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_oncoprint_005_2_00x.png" width=400> |)
|
|
66
|
+
|
|
67
|
+
[//]: # (| Upsetplot | Composition Stacked Bar |)
|
|
68
|
+
|
|
69
|
+
[//]: # (| <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_upset_001_2_00x.png" width=400> | <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_oil_well_001_2_00x.png" width=400> |)
|
|
70
|
+
|
|
71
|
+
[//]: # (| Arc Diagram | Protein sequence alignment |)
|
|
72
|
+
|
|
73
|
+
[//]: # (| <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_arc_diagram_001_2_00x.png" width=400> | <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_seqalign_001_2_00x.png" width=400> |)
|
|
74
|
+
|
marsilea-0.3.3/README.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture align="center">
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/Marsilea-viz/marsilea/raw/main/img/banner-dark.jpg">
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="https://github.com/Marsilea-viz/marsilea/raw/main/img/banner-blue.jpg">
|
|
5
|
+
<img alt="Shows a bar chart with benchmark results." src="https://github.com/Marsilea-viz/marsilea/raw/main/img/banner-dark.jpg" width="400">
|
|
6
|
+
</picture>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
[](https://marsilea.readthedocs.io/en/stable)
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
❗We are in beta, API may change and bugs expected
|
|
13
|
+
|
|
14
|
+
### Declarative creation of composable visualization!
|
|
15
|
+
|
|
16
|
+
[Read Documentation](https://marsilea.readthedocs.io/)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Installation
|
|
20
|
+
|
|
21
|
+
```shell
|
|
22
|
+
pip install marsilea
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
[//]: # (### Examples)
|
|
26
|
+
|
|
27
|
+
[//]: # ()
|
|
28
|
+
[//]: # (| | |)
|
|
29
|
+
|
|
30
|
+
[//]: # (|-----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|)
|
|
31
|
+
|
|
32
|
+
[//]: # (| Heatmap | Oncoprint |)
|
|
33
|
+
|
|
34
|
+
[//]: # (| <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_pbmc3k_001_2_00x.png" width=400> | <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_oncoprint_005_2_00x.png" width=400> |)
|
|
35
|
+
|
|
36
|
+
[//]: # (| Upsetplot | Composition Stacked Bar |)
|
|
37
|
+
|
|
38
|
+
[//]: # (| <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_upset_001_2_00x.png" width=400> | <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_oil_well_001_2_00x.png" width=400> |)
|
|
39
|
+
|
|
40
|
+
[//]: # (| Arc Diagram | Protein sequence alignment |)
|
|
41
|
+
|
|
42
|
+
[//]: # (| <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_arc_diagram_001_2_00x.png" width=400> | <img src="https://marsilea.readthedocs.io/en/latest/_images/sphx_glr_plot_seqalign_001_2_00x.png" width=400> |)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Use the official Python image as the base image
|
|
2
|
+
FROM python:3.10
|
|
3
|
+
|
|
4
|
+
# Set the working directory in the container
|
|
5
|
+
WORKDIR /app
|
|
6
|
+
|
|
7
|
+
# Copy the requirements.txt file into the container
|
|
8
|
+
COPY requirements.txt .
|
|
9
|
+
|
|
10
|
+
# Install any dependencies
|
|
11
|
+
RUN pip install --no-cache-dir -r requirements.txt
|
|
12
|
+
|
|
13
|
+
# Copy the content of the local src directory to the working directory
|
|
14
|
+
COPY . .
|
|
15
|
+
|
|
16
|
+
# Expose the port that Streamlit will run on
|
|
17
|
+
EXPOSE 8501
|
|
18
|
+
|
|
19
|
+
# Command to run the application when the container starts
|
|
20
|
+
CMD ["streamlit", "run", "Home.py", "--server.port=8501", "--server.address=0.0.0.0"]
|
|
@@ -2,7 +2,7 @@ import streamlit as st
|
|
|
2
2
|
|
|
3
3
|
from components.initialize import init_page, inject_css
|
|
4
4
|
|
|
5
|
-
init_page("
|
|
5
|
+
init_page("Marsilea")
|
|
6
6
|
inject_css()
|
|
7
7
|
|
|
8
8
|
banner, title = st.columns([1, 1.2])
|
|
@@ -10,12 +10,12 @@ with banner:
|
|
|
10
10
|
st.markdown(
|
|
11
11
|
'<video controls width="250" autoplay="true" muted="true" '
|
|
12
12
|
'loop="true" playsinline style="pointer-events: none;">'
|
|
13
|
-
'<source src="https://raw.githubusercontent.com/
|
|
13
|
+
'<source src="https://raw.githubusercontent.com/Marsilea-viz/'
|
|
14
14
|
'marsilea/main/app/img/V1.mp4" '
|
|
15
15
|
'type="video/mp4" /></video>', unsafe_allow_html=True)
|
|
16
16
|
|
|
17
17
|
with title:
|
|
18
|
-
st.title("
|
|
18
|
+
st.title("Marsilea")
|
|
19
19
|
st.subheader("Create :blue[x-layout] visualization")
|
|
20
20
|
st.text("")
|
|
21
21
|
st.markdown(
|
|
@@ -25,7 +25,7 @@ with title:
|
|
|
25
25
|
st.markdown("---")
|
|
26
26
|
|
|
27
27
|
st.subheader("About")
|
|
28
|
-
st.markdown("
|
|
28
|
+
st.markdown("Marsilea is a tool for you to create x-layout visualization. "
|
|
29
29
|
"x-layout is a way to visualize a multi-feature dataset. "
|
|
30
30
|
"Instead of creating one plot for each feature, x-layout groups "
|
|
31
31
|
"the plots of different features together "
|
|
@@ -50,17 +50,17 @@ def tools(name, img, page, size=150):
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
with t1:
|
|
53
|
-
tools("Simple Heatmap", "https://
|
|
54
|
-
"_images/
|
|
53
|
+
tools("Simple Heatmap", "https://marsilea.readthedocs.io/en/latest/"
|
|
54
|
+
"_images/concatenation-1.png",
|
|
55
55
|
page="/Simple_Heatmap", size=130)
|
|
56
56
|
|
|
57
57
|
with t2:
|
|
58
|
-
tools("x-layout", "https://
|
|
58
|
+
tools("x-layout", "https://marsilea.readthedocs.io/en/latest/"
|
|
59
59
|
"_images/sphx_glr_plot_pbmc3k_thumb.png",
|
|
60
60
|
page="X-Layout_Heatmap", size=200)
|
|
61
61
|
|
|
62
62
|
with t3:
|
|
63
|
-
tools("Upset Plot", "https://
|
|
63
|
+
tools("Upset Plot", "https://marsilea.readthedocs.io/en/latest/"
|
|
64
64
|
"_images/sphx_glr_plot_upset_thumb.png",
|
|
65
65
|
page="/Upsetplot", size=220)
|
|
66
66
|
|
|
@@ -83,4 +83,4 @@ with s3:
|
|
|
83
83
|
|
|
84
84
|
st.markdown("---")
|
|
85
85
|
|
|
86
|
-
st.markdown("Copyright ©
|
|
86
|
+
st.markdown("Copyright © 2024 [Marsilea](https://github.com/Marsilea-viz)")
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# How to run the app version of Marsilea
|
|
2
|
+
|
|
3
|
+
## Using Docker
|
|
4
|
+
|
|
5
|
+
### Step 1: Build the image
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
docker build -t marsilea-app .
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Step 2: Run the container
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
docker run -p 8501:8501 marsilea-app
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Go to http://localhost:8501 to see the app.
|
|
@@ -110,7 +110,7 @@ def inject_css():
|
|
|
110
110
|
|
|
111
111
|
def init_page(title):
|
|
112
112
|
IMG_ROOT = "https://raw.githubusercontent.com/" \
|
|
113
|
-
"
|
|
113
|
+
"Marsilea-viz/marsilea/main/app/img"
|
|
114
114
|
|
|
115
115
|
st.set_page_config(
|
|
116
116
|
page_title=title,
|
|
@@ -118,7 +118,7 @@ def init_page(title):
|
|
|
118
118
|
page_icon=f"{IMG_ROOT}/favicon.png",
|
|
119
119
|
# initial_sidebar_state="collapsed",
|
|
120
120
|
menu_items={
|
|
121
|
-
'Report a bug': 'https://github.com/
|
|
122
|
-
'About': 'A web interface for
|
|
121
|
+
'Report a bug': 'https://github.com/Marsilea-viz/marsilea/issues/new/choose',
|
|
122
|
+
'About': 'A web interface for Marsilea'
|
|
123
123
|
}
|
|
124
124
|
)
|
|
@@ -8,7 +8,7 @@ from marsilea.plotter import ColorMesh, SizedMesh, MarkerMesh
|
|
|
8
8
|
from .cmap_selector import ColormapSelector
|
|
9
9
|
|
|
10
10
|
IMG_ROOT = "https://raw.githubusercontent.com/" \
|
|
11
|
-
"
|
|
11
|
+
"Marsilea-viz/marsilea/main/app/img/"
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class MainPlotter:
|
|
@@ -15,7 +15,7 @@ np.random.seed(0)
|
|
|
15
15
|
|
|
16
16
|
@st.cache_resource
|
|
17
17
|
def get_font_list():
|
|
18
|
-
fonts = ["Source Sans
|
|
18
|
+
fonts = ["Source Sans 3", "Roboto", "Open Sans", "Noto Sans", "Raleway",
|
|
19
19
|
"Lato", "Montserrat", "Inter", "Oswald"]
|
|
20
20
|
for f in fonts:
|
|
21
21
|
fk.install(f, as_global=False)
|
|
@@ -6,7 +6,7 @@ import numpy as np
|
|
|
6
6
|
import streamlit as st
|
|
7
7
|
|
|
8
8
|
from marsilea.base import ClusterBoard
|
|
9
|
-
from marsilea.plotter import (Bar, Box, Boxen, Colors,
|
|
9
|
+
from marsilea.plotter import (Bar, Box, Boxen, Colors, Chunk, Strip,
|
|
10
10
|
Violin,
|
|
11
11
|
Point, Swarm, AnnoLabels, Labels,
|
|
12
12
|
Title)
|
|
@@ -134,7 +134,7 @@ class LabelAdder(PlotAdder):
|
|
|
134
134
|
key=f"{self.plot_key}_label_pad")
|
|
135
135
|
|
|
136
136
|
def get_options(self):
|
|
137
|
-
return dict(align=self.align,
|
|
137
|
+
return dict(align=self.align, padding=self.pad,
|
|
138
138
|
color=self.color)
|
|
139
139
|
|
|
140
140
|
|
|
@@ -524,19 +524,19 @@ class SwarmAdder(StripAdder):
|
|
|
524
524
|
example_image = "swarm.png"
|
|
525
525
|
|
|
526
526
|
|
|
527
|
-
class CountAdder(PlotAdder):
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
527
|
+
# class CountAdder(PlotAdder):
|
|
528
|
+
# name = "Count"
|
|
529
|
+
# plotter = Count
|
|
530
|
+
# color: str
|
|
531
|
+
#
|
|
532
|
+
# plot_explain = "Show the counts of observations in each categorical."
|
|
533
|
+
# example_image = "count.svg"
|
|
534
|
+
#
|
|
535
|
+
# def extra_options(self):
|
|
536
|
+
# self.color = st.color_picker("Color", value="#00b796")
|
|
537
|
+
#
|
|
538
|
+
# def get_options(self):
|
|
539
|
+
# return dict(color=self.color)
|
|
540
540
|
|
|
541
541
|
|
|
542
542
|
class AnnoLabelsAdder(PlotAdder):
|
|
@@ -605,7 +605,7 @@ class ChunkAdder(PlotAdder):
|
|
|
605
605
|
|
|
606
606
|
def apply(self, h):
|
|
607
607
|
p = Chunk(texts=self.labels, fill_colors=self.colors,
|
|
608
|
-
|
|
608
|
+
padding=self.text_pad)
|
|
609
609
|
h.add_plot(self.side, p, size=self.size, pad=self.pad)
|
|
610
610
|
|
|
611
611
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import matplotlib as mpl
|
|
2
|
+
import matplotlib.pyplot as plt
|
|
2
3
|
import streamlit as st
|
|
3
4
|
from components.cmap_selector import ColormapSelector
|
|
4
5
|
from components.data_input import FileUpload
|
|
@@ -184,7 +185,7 @@ if s['data'] is not None:
|
|
|
184
185
|
row_labels, mark=row_marks, fontsize=font_size
|
|
185
186
|
)
|
|
186
187
|
else:
|
|
187
|
-
row_label_plot = Labels(row_labels,
|
|
188
|
+
row_label_plot = Labels(row_labels, padding=1,
|
|
188
189
|
rotation=row_rotation,
|
|
189
190
|
fontsize=font_size)
|
|
190
191
|
h.add_right(row_label_plot)
|
|
@@ -195,7 +196,7 @@ if s['data'] is not None:
|
|
|
195
196
|
col_labels, mark=col_marks, fontsize=font_size
|
|
196
197
|
)
|
|
197
198
|
else:
|
|
198
|
-
col_label_plot = Labels(col_labels,
|
|
199
|
+
col_label_plot = Labels(col_labels, padding=1,
|
|
199
200
|
rotation=col_rotation,
|
|
200
201
|
fontsize=font_size)
|
|
201
202
|
h.add_bottom(col_label_plot)
|
|
@@ -205,6 +206,8 @@ if s['data'] is not None:
|
|
|
205
206
|
fontsize=title_fontsize), pad=.1)
|
|
206
207
|
|
|
207
208
|
h.add_legends()
|
|
209
|
+
if s['figure'] is not None:
|
|
210
|
+
plt.close(s['figure'])
|
|
208
211
|
h.render()
|
|
209
212
|
s['figure'] = h.figure
|
|
210
213
|
|
|
@@ -26,7 +26,7 @@ st.warning("We are still in beta stage, you may report to us "
|
|
|
26
26
|
st.markdown(
|
|
27
27
|
'<video controls width="250" autoplay="true" muted="true" loop="true" '
|
|
28
28
|
'playsinline style="pointer-events: none;">'
|
|
29
|
-
'<source src="https://raw.githubusercontent.com/
|
|
29
|
+
'<source src="https://raw.githubusercontent.com/Marsilea-viz'
|
|
30
30
|
'/marsilea/main/app/img/V2.mp4" '
|
|
31
31
|
'type="video/mp4" /></video>', unsafe_allow_html=True)
|
|
32
32
|
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import matplotlib as mpl
|
|
2
2
|
import matplotlib.pyplot as plt
|
|
3
|
-
import numpy as np
|
|
4
3
|
import pandas as pd
|
|
5
4
|
import streamlit as st
|
|
6
5
|
from components.data_input import FileUpload
|
|
7
6
|
from components.initialize import init_page
|
|
8
7
|
from components.initialize import inject_css
|
|
9
|
-
from components.resource import get_font_list, upset_showcase_data
|
|
8
|
+
from components.resource import get_font_list, upset_showcase_data, \
|
|
10
9
|
upset_example_data
|
|
11
10
|
from components.saver import ChartSaver
|
|
12
11
|
from components.state import State
|
|
@@ -63,7 +62,7 @@ load = st.button("Load Example")
|
|
|
63
62
|
if load:
|
|
64
63
|
example = upset_example_data()
|
|
65
64
|
s['upset_data'] = UpsetData(example.to_numpy(), items=example.index,
|
|
66
|
-
|
|
65
|
+
sets_names=example.columns, )
|
|
67
66
|
s["parse_success"] = True
|
|
68
67
|
s['format'] = "Binary Table"
|
|
69
68
|
st.experimental_rerun()
|
|
@@ -98,14 +97,13 @@ if data is not None:
|
|
|
98
97
|
|
|
99
98
|
if s["parse_success"]:
|
|
100
99
|
upset_data = s['upset_data']
|
|
101
|
-
filter,
|
|
100
|
+
filter, styles, highlight = st.tabs(["Filter", "Styles", "Highlight"])
|
|
102
101
|
|
|
103
102
|
with filter:
|
|
104
|
-
sets_table = pd.DataFrame(upset_data.cardinality()
|
|
105
|
-
columns=["size"])
|
|
103
|
+
sets_table = pd.DataFrame(upset_data.cardinality())
|
|
106
104
|
sets_table["degree"] = sets_table.index.to_frame().sum(axis=1)
|
|
107
105
|
|
|
108
|
-
size_upper = int(sets_table['
|
|
106
|
+
size_upper = int(sets_table['cardinality'].max())
|
|
109
107
|
degree_upper = int(sets_table['degree'].max())
|
|
110
108
|
|
|
111
109
|
c1, c2 = st.columns(2, gap="large")
|
|
@@ -118,8 +116,33 @@ if s["parse_success"]:
|
|
|
118
116
|
value=(0, degree_upper),
|
|
119
117
|
max_value=degree_upper)
|
|
120
118
|
|
|
119
|
+
sort_sets = st.selectbox("Sort sets", options=["ascending", "descending"])
|
|
120
|
+
sort_subsets = st.selectbox("Sort degree", options=["cardinality", "degree"])
|
|
121
|
+
|
|
121
122
|
with styles:
|
|
122
123
|
st.markdown("**General**")
|
|
124
|
+
orient_dict = {"h": "Horizontal", "v": "Vertical"}
|
|
125
|
+
orient = st.selectbox("Orientation",
|
|
126
|
+
options=["h", "v"],
|
|
127
|
+
format_func=lambda x: orient_dict[x]
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
c1, c2, c3 = st.columns(3)
|
|
131
|
+
with c1:
|
|
132
|
+
if orient == "v":
|
|
133
|
+
options = ["left", "right"]
|
|
134
|
+
else:
|
|
135
|
+
options = ["top", "bottom"]
|
|
136
|
+
intersection_plot_pos = st.selectbox("Intersection Plot Position", options=options)
|
|
137
|
+
with c2:
|
|
138
|
+
if orient == "v":
|
|
139
|
+
options = ["top", "bottom"]
|
|
140
|
+
else:
|
|
141
|
+
options = ["left", "right"]
|
|
142
|
+
sets_size_pos = st.selectbox("Sets size Plot Position", options=options)
|
|
143
|
+
with c3:
|
|
144
|
+
label_pos = st.selectbox("Label Position", options=options)
|
|
145
|
+
|
|
123
146
|
g1, g2 = st.columns(2)
|
|
124
147
|
with g1:
|
|
125
148
|
linewidth = st.number_input("Line Width", min_value=.5,
|
|
@@ -146,7 +169,7 @@ if s["parse_success"]:
|
|
|
146
169
|
"Font size", min_value=1, step=1, value=10)
|
|
147
170
|
with f2:
|
|
148
171
|
font_list = get_font_list()
|
|
149
|
-
DEFAULT_FONT = font_list.index("
|
|
172
|
+
DEFAULT_FONT = font_list.index("Lato")
|
|
150
173
|
fontfamily = st.selectbox("Font Family", options=font_list,
|
|
151
174
|
index=DEFAULT_FONT)
|
|
152
175
|
with f3:
|
|
@@ -166,9 +189,10 @@ if s["parse_success"]:
|
|
|
166
189
|
'font.size': fontsize,
|
|
167
190
|
'font.family': fontfamily}):
|
|
168
191
|
fig = plt.figure()
|
|
192
|
+
upset_data.reset()
|
|
169
193
|
up = Upset(upset_data,
|
|
170
|
-
|
|
171
|
-
|
|
194
|
+
min_cardinality=size_range[0],
|
|
195
|
+
max_cardinality=size_range[1],
|
|
172
196
|
min_degree=degree_range[0],
|
|
173
197
|
max_degree=degree_range[1],
|
|
174
198
|
color=color,
|
|
@@ -176,6 +200,11 @@ if s["parse_success"]:
|
|
|
176
200
|
shading=shading,
|
|
177
201
|
grid_background=grid_background,
|
|
178
202
|
radius=dot_size,
|
|
203
|
+
sort_sets=sort_sets,
|
|
204
|
+
sort_subsets=sort_subsets,
|
|
205
|
+
orient=orient,
|
|
206
|
+
add_intersections=intersection_plot_pos,
|
|
207
|
+
add_sets_size=sets_size_pos,
|
|
179
208
|
)
|
|
180
209
|
up.render(fig)
|
|
181
210
|
s['figure'] = fig
|
marsilea-0.3.2/app/pages/04 /360/237/223/232 Manual.py" → marsilea-0.3.3/app/pages/04 Manual.py
RENAMED
|
@@ -5,7 +5,7 @@ from components.initialize import init_page
|
|
|
5
5
|
init_page("Manual")
|
|
6
6
|
|
|
7
7
|
IMG_ROOT = "https://raw.githubusercontent.com/" \
|
|
8
|
-
"
|
|
8
|
+
"Marsilea-viz/marsilea/main/app/img"
|
|
9
9
|
|
|
10
10
|
st.header("Manual")
|
|
11
11
|
|
|
@@ -45,8 +45,8 @@ st.markdown("## How to report a bug?")
|
|
|
45
45
|
|
|
46
46
|
st.markdown("Click the botton on the Top Right ➡️ **Report a bug**")
|
|
47
47
|
|
|
48
|
-
st.markdown("## Can I host my own version of
|
|
48
|
+
st.markdown("## Can I host my own version of Marsilea?")
|
|
49
49
|
|
|
50
50
|
st.markdown("Sure! Check our "
|
|
51
|
-
"[GitHub repository](https://github.com/
|
|
51
|
+
"[GitHub repository](https://github.com/Marsilea-viz/marsilea) "
|
|
52
52
|
"for detail instruction.")
|
|
@@ -14,7 +14,17 @@ help:
|
|
|
14
14
|
|
|
15
15
|
.PHONY: help Makefile
|
|
16
16
|
|
|
17
|
+
deepclean:
|
|
18
|
+
@$(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
19
|
+
rm -rf $(SOURCEDIR)/api/APIs/*
|
|
20
|
+
rm -rf $(SOURCEDIR)/examples
|
|
21
|
+
rm -rf $(SOURCEDIR)/how_to
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
17
25
|
# Catch-all target: route all unknown targets to Sphinx using the new
|
|
18
26
|
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|
19
27
|
%: Makefile
|
|
20
28
|
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
29
|
+
|
|
30
|
+
|