Mercurial > repos > goeckslab > pycaret_predict
comparison utils.py @ 0:1f20fe57fdee draft
planemo upload for repository https://github.com/goeckslab/Galaxy-Pycaret commit d79b0f722b7d09505a526d1a4332f87e548a3df1
| author | goeckslab |
|---|---|
| date | Wed, 11 Dec 2024 04:59:43 +0000 |
| parents | |
| children | 0314dad38aaa |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:1f20fe57fdee |
|---|---|
| 1 import base64 | |
| 2 import logging | |
| 3 | |
| 4 logging.basicConfig(level=logging.DEBUG) | |
| 5 LOG = logging.getLogger(__name__) | |
| 6 | |
| 7 | |
| 8 def get_html_template(): | |
| 9 return """ | |
| 10 <html> | |
| 11 <head> | |
| 12 <title>Model Training Report</title> | |
| 13 <style> | |
| 14 body { | |
| 15 font-family: Arial, sans-serif; | |
| 16 margin: 0; | |
| 17 padding: 20px; | |
| 18 background-color: #f4f4f4; | |
| 19 } | |
| 20 .container { | |
| 21 max-width: 800px; | |
| 22 margin: auto; | |
| 23 background: white; | |
| 24 padding: 20px; | |
| 25 box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); | |
| 26 } | |
| 27 h1 { | |
| 28 text-align: center; | |
| 29 color: #333; | |
| 30 } | |
| 31 h2 { | |
| 32 border-bottom: 2px solid #4CAF50; | |
| 33 color: #4CAF50; | |
| 34 padding-bottom: 5px; | |
| 35 } | |
| 36 table { | |
| 37 width: 100%; | |
| 38 border-collapse: collapse; | |
| 39 margin: 20px 0; | |
| 40 } | |
| 41 table, th, td { | |
| 42 border: 1px solid #ddd; | |
| 43 } | |
| 44 th, td { | |
| 45 padding: 8px; | |
| 46 text-align: left; | |
| 47 } | |
| 48 th { | |
| 49 background-color: #4CAF50; | |
| 50 color: white; | |
| 51 } | |
| 52 .plot { | |
| 53 text-align: center; | |
| 54 margin: 20px 0; | |
| 55 } | |
| 56 .plot img { | |
| 57 max-width: 100%; | |
| 58 height: auto; | |
| 59 } | |
| 60 .tabs { | |
| 61 display: flex; | |
| 62 margin-bottom: 20px; | |
| 63 cursor: pointer; | |
| 64 justify-content: space-around; | |
| 65 } | |
| 66 .tab { | |
| 67 padding: 10px; | |
| 68 background-color: #4CAF50; | |
| 69 color: white; | |
| 70 border-radius: 5px 5px 0 0; | |
| 71 flex-grow: 1; | |
| 72 text-align: center; | |
| 73 margin: 0 5px; | |
| 74 } | |
| 75 .tab.active-tab { | |
| 76 background-color: #333; | |
| 77 } | |
| 78 .tab-content { | |
| 79 display: none; | |
| 80 padding: 20px; | |
| 81 border: 1px solid #ddd; | |
| 82 border-top: none; | |
| 83 background-color: white; | |
| 84 } | |
| 85 .tab-content.active-content { | |
| 86 display: block; | |
| 87 } | |
| 88 </style> | |
| 89 </head> | |
| 90 <body> | |
| 91 <div class="container"> | |
| 92 """ | |
| 93 | |
| 94 | |
| 95 def get_html_closing(): | |
| 96 return """ | |
| 97 </div> | |
| 98 <script> | |
| 99 function openTab(evt, tabName) {{ | |
| 100 var i, tabcontent, tablinks; | |
| 101 tabcontent = document.getElementsByClassName("tab-content"); | |
| 102 for (i = 0; i < tabcontent.length; i++) {{ | |
| 103 tabcontent[i].style.display = "none"; | |
| 104 }} | |
| 105 tablinks = document.getElementsByClassName("tab"); | |
| 106 for (i = 0; i < tablinks.length; i++) {{ | |
| 107 tablinks[i].className = | |
| 108 tablinks[i].className.replace(" active-tab", ""); | |
| 109 }} | |
| 110 document.getElementById(tabName).style.display = "block"; | |
| 111 evt.currentTarget.className += " active-tab"; | |
| 112 }} | |
| 113 document.addEventListener("DOMContentLoaded", function() {{ | |
| 114 document.querySelector(".tab").click(); | |
| 115 }}); | |
| 116 </script> | |
| 117 </body> | |
| 118 </html> | |
| 119 """ | |
| 120 | |
| 121 | |
| 122 def customize_figure_layout(fig, margin_dict=None): | |
| 123 """ | |
| 124 Update the layout of a Plotly figure to reduce margins. | |
| 125 | |
| 126 Parameters: | |
| 127 fig (plotly.graph_objects.Figure): The Plotly figure to customize. | |
| 128 margin_dict (dict, optional): A dictionary specifying margin sizes. | |
| 129 Example: {'l': 10, 'r': 10, 't': 10, 'b': 10} | |
| 130 | |
| 131 Returns: | |
| 132 plotly.graph_objects.Figure: The updated Plotly figure. | |
| 133 """ | |
| 134 if margin_dict is None: | |
| 135 # Set default smaller margins | |
| 136 margin_dict = {'l': 40, 'r': 40, 't': 40, 'b': 40} | |
| 137 | |
| 138 fig.update_layout(margin=margin_dict) | |
| 139 return fig | |
| 140 | |
| 141 | |
| 142 def add_plot_to_html(fig, include_plotlyjs=True): | |
| 143 custom_margin = {'l': 40, 'r': 40, 't': 60, 'b': 60} | |
| 144 fig = customize_figure_layout(fig, margin_dict=custom_margin) | |
| 145 return fig.to_html(full_html=False, | |
| 146 default_height=350, | |
| 147 include_plotlyjs="cdn" if include_plotlyjs else False) | |
| 148 | |
| 149 | |
| 150 def add_hr_to_html(): | |
| 151 return "<hr>" | |
| 152 | |
| 153 | |
| 154 def encode_image_to_base64(image_path): | |
| 155 """Convert an image file to a base64 encoded string.""" | |
| 156 with open(image_path, "rb") as img_file: | |
| 157 return base64.b64encode(img_file.read()).decode("utf-8") |
