comparison utils.py @ 0:209b663a4f62 draft

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