|
1 | | -# Report Generator |
2 | | -Generates web interface reports with visualisations |
| 1 | +<div align="center"> |
| 2 | + <img width="300px" src="docs/images/vuegen_logo.svg"> |
| 3 | +</div> |
3 | 4 |
|
4 | | - |
5 | | -The Report Generator allows you to create web interfaces in an automated manner by defining Reports as collections of Plots divided into Sections (pages). |
| 5 | +----------------- |
6 | 6 |
|
7 | 7 | <p align="center"> |
8 | | - <img src="https://github.com/Multiomics-Analytics-Group/report_generator/assets/1425851/439f4656-25a9-4be7-80d7-67b60e068d2a" width="600"> |
| 8 | + VueGen is a Python library that automates the creation of scientific reports. |
9 | 9 | </p> |
10 | 10 |
|
| 11 | +## Table of contents: |
| 12 | +- [About the project](#about-the-project) |
| 13 | +- [Installation](#installation) |
| 14 | +- [Execution](#execution) |
| 15 | +- [Contact](#contact) |
11 | 16 |
|
| 17 | +## About the project |
| 18 | +VueGen automates the creation of scientific reports based on a YAML configuration file. This configuration file specifies the structure of the report, including sections, subsections, and various components such as plots, dataframes, markdown, and API calls. Reports can be generated in various formats, including documents (PDF, HTML, DOCX, ODT), presentations (PPTX, Reveal.js), notebooks (Jupyter) or [Streamlit](streamlit) web applications. |
12 | 19 |
|
13 | | -For now, the generated reports can run as multi-page [Streamlit](https://streamlit.io/) sharable interfaces but the ReportInterface `class` can be extended to other frontend libraries. |
| 20 | +An overview of the VueGen workflow is shown in the figure below: |
14 | 21 |
|
15 | | -### Installation |
16 | | -``` shell |
17 | | -python setup.py install |
18 | | -``` |
| 22 | +<p align="center"> |
| 23 | +<figure> |
| 24 | + <img width="650px" src="docs/images/vuegen_graph_abstract.png" alt="VueGen overview"/> |
| 25 | +</figure> |
| 26 | +</p> |
19 | 27 |
|
20 | | -### Execution Example |
21 | | -``` shell |
22 | | -python report/main.py |
23 | | -``` |
| 28 | +Also, the class diagram for the project is presented below to illustrate the architecture and relationships between classes: |
| 29 | + |
| 30 | +<p align="center"> |
| 31 | +<figure> |
| 32 | + <img width="650px" src="docs/images/vuegen_classdiagram_noattmeth.png" alt="VueGen class diagram"/> |
| 33 | +</figure> |
| 34 | +</p> |
| 35 | + |
| 36 | +## Installation |
| 37 | +...... |
24 | 38 |
|
25 | | -#### main.py |
26 | | -``` python |
27 | | -import os |
28 | | -import report as r |
29 | | - |
30 | | -if __name__ == '__main__': |
31 | | - # Reading Plotly plots in json format |
32 | | - with open(os.path.join('example_data', 'barplot.json'), 'r') as bf: |
33 | | - plotly_code1 = bf.read() |
34 | | - with open(os.path.join('example_data', 'lineplot.json'), 'r') as lf: |
35 | | - plotly_code2 = lf.read() |
36 | | - |
37 | | - # Creating a new Report |
38 | | - report = r.Report(1213412, "test_report", 'DOES it WoRK', "Just a test", sections=[]) |
39 | | - |
40 | | - # Creating Sections |
41 | | - section1 = r.Section(21324, "Proteomics", "This is a Proteomics example", "Not much", plots=[]) |
42 | | - section2 = r.Section(24324, "Transcriptomics", "This is a Transcriptomics example", "Not much", plots=[]) |
43 | | - |
44 | | - # Creating Plots |
45 | | - plot1 = r.Plot(3323, "plot1", "plotly", "Test 1", "", plotly_code1) |
46 | | - plot2 = r.Plot(3423, "plot2", "plotly", "Test 2", "", plotly_code2) |
47 | | - |
48 | | - # Adding the Plots to the Sections |
49 | | - section1._plots.extend([plot1, plot2]) |
50 | | - section2._plots.extend([plot1, plot2]) |
51 | | - # Adding the Sections to the Report |
52 | | - report._sections.extend([section1, section2]) |
53 | | - |
54 | | - # Generating a Streamlit interface |
55 | | - report_gui = r.StreamlitReport(12312, "MyPage", columns=None, report=report) |
56 | | - report_gui.generate_report(output_dir="tmp") |
57 | | - report_gui.run_report(output_dir='tmp') |
| 39 | +## Execution |
| 40 | +``` shell |
| 41 | +python vuegen/main.py |
58 | 42 | ``` |
59 | 43 |
|
| 44 | +## Contact |
| 45 | +If you have comments or suggestions about this project, you can [open an issue][issues] in this repository. |
60 | 46 |
|
| 47 | +[issues]: https://github.com/Multiomics-Analytics-Group/vuegen/issues/new |
| 48 | +[streamlit]: https://streamlit.io/ |
0 commit comments