From 8e3db2af40b49aa611fed6678947d665d67d31ae Mon Sep 17 00:00:00 2001 From: Loosen-IT Date: Sun, 7 Jan 2024 14:18:15 +0100 Subject: [PATCH] 07/01/2023 --- .idea/UNI_Python.iml | 11 ++-- .idea/misc.xml | 2 +- .idea/modules.xml | 8 --- 7.0.0 | 70 ++++++++++++++++++++ ha_07/loosen_janniclas_1540907_08.py | 17 +++-- ha_08/loosen_janniclas_1540907_09.py | 99 ++++++++++++++++++++++++++-- 6 files changed, 180 insertions(+), 27 deletions(-) delete mode 100644 .idea/modules.xml create mode 100644 7.0.0 diff --git a/.idea/UNI_Python.iml b/.idea/UNI_Python.iml index 5854a2f..0070e87 100644 --- a/.idea/UNI_Python.iml +++ b/.idea/UNI_Python.iml @@ -1,10 +1,7 @@ - - - - - - - + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index c20271c..59b5b2e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 27d55c0..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/7.0.0 b/7.0.0 new file mode 100644 index 0000000..faf6fa2 --- /dev/null +++ b/7.0.0 @@ -0,0 +1,70 @@ +Requirement already satisfied: ipywidgets in c:\users\janni\anaconda3\lib\site-packages (7.6.5) +Requirement already satisfied: ipykernel>=4.5.1 in c:\users\janni\anaconda3\lib\site-packages (from ipywidgets) (6.19.2) +Requirement already satisfied: ipython-genutils~=0.2.0 in c:\users\janni\anaconda3\lib\site-packages (from ipywidgets) (0.2.0) +Requirement already satisfied: nbformat>=4.2.0 in c:\users\janni\anaconda3\lib\site-packages (from ipywidgets) (5.7.0) +Requirement already satisfied: ipython>=4.0.0 in c:\users\janni\anaconda3\lib\site-packages (from ipywidgets) (8.10.0) +Requirement already satisfied: jupyterlab-widgets>=1.0.0 in c:\users\janni\anaconda3\lib\site-packages (from ipywidgets) (1.0.0) +Requirement already satisfied: widgetsnbextension~=3.5.0 in c:\users\janni\anaconda3\lib\site-packages (from ipywidgets) (3.5.2) +Requirement already satisfied: traitlets>=4.3.1 in c:\users\janni\anaconda3\lib\site-packages (from ipywidgets) (5.7.1) +Requirement already satisfied: comm>=0.1.1 in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.2) +Requirement already satisfied: jupyter-client>=6.1.12 in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (7.3.4) +Requirement already satisfied: nest-asyncio in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (1.5.6) +Requirement already satisfied: pyzmq>=17 in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (23.2.0) +Requirement already satisfied: tornado>=6.1 in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (6.1) +Requirement already satisfied: packaging in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (22.0) +Requirement already satisfied: matplotlib-inline>=0.1 in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.6) +Requirement already satisfied: psutil in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (5.9.0) +Requirement already satisfied: debugpy>=1.0 in c:\users\janni\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets) (1.5.1) +Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.30 in c:\users\janni\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets) (3.0.36) +Requirement already satisfied: backcall in c:\users\janni\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets) (0.2.0) +Requirement already satisfied: pygments>=2.4.0 in c:\users\janni\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets) (2.11.2) +Requirement already satisfied: pickleshare in c:\users\janni\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets) (0.7.5) +Requirement already satisfied: jedi>=0.16 in c:\users\janni\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets) (0.18.1) +Requirement already satisfied: colorama in c:\users\janni\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets) (0.4.6) +Requirement already satisfied: stack-data in c:\users\janni\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets) (0.2.0) +Requirement already satisfied: decorator in c:\users\janni\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets) (5.1.1) +Requirement already satisfied: jupyter-core in c:\users\janni\anaconda3\lib\site-packages (from nbformat>=4.2.0->ipywidgets) (5.2.0) +Requirement already satisfied: jsonschema>=2.6 in c:\users\janni\anaconda3\lib\site-packages (from nbformat>=4.2.0->ipywidgets) (4.17.3) +Requirement already satisfied: fastjsonschema in c:\users\janni\anaconda3\lib\site-packages (from nbformat>=4.2.0->ipywidgets) (2.16.2) +Requirement already satisfied: notebook>=4.4.1 in c:\users\janni\anaconda3\lib\site-packages (from widgetsnbextension~=3.5.0->ipywidgets) (6.5.2) +Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\users\janni\anaconda3\lib\site-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets) (0.8.3) +Requirement already satisfied: attrs>=17.4.0 in c:\users\janni\anaconda3\lib\site-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets) (22.1.0) +Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in c:\users\janni\anaconda3\lib\site-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets) (0.18.0) +Requirement already satisfied: python-dateutil>=2.8.2 in c:\users\janni\anaconda3\lib\site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets) (2.8.2) +Requirement already satisfied: entrypoints in c:\users\janni\anaconda3\lib\site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets) (0.4) +Requirement already satisfied: pywin32>=1.0 in c:\users\janni\anaconda3\lib\site-packages (from jupyter-core->nbformat>=4.2.0->ipywidgets) (305.1) +Requirement already satisfied: platformdirs>=2.5 in c:\users\janni\anaconda3\lib\site-packages (from jupyter-core->nbformat>=4.2.0->ipywidgets) (2.5.2) +Requirement already satisfied: Send2Trash>=1.8.0 in c:\users\janni\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.8.0) +Requirement already satisfied: terminado>=0.8.3 in c:\users\janni\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.17.1) +Requirement already satisfied: jinja2 in c:\users\janni\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (3.1.2) +Requirement already satisfied: nbclassic>=0.4.7 in c:\users\janni\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.5.2) +Requirement already satisfied: prometheus-client in c:\users\janni\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.14.1) +Requirement already satisfied: nbconvert>=5 in c:\users\janni\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (6.5.4) +Requirement already satisfied: argon2-cffi in c:\users\janni\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (21.3.0) +Requirement already satisfied: wcwidth in c:\users\janni\anaconda3\lib\site-packages (from prompt-toolkit<3.1.0,>=3.0.30->ipython>=4.0.0->ipywidgets) (0.2.5) +Requirement already satisfied: pure-eval in c:\users\janni\anaconda3\lib\site-packages (from stack-data->ipython>=4.0.0->ipywidgets) (0.2.2) +Requirement already satisfied: asttokens in c:\users\janni\anaconda3\lib\site-packages (from stack-data->ipython>=4.0.0->ipywidgets) (2.0.5) +Requirement already satisfied: executing in c:\users\janni\anaconda3\lib\site-packages (from stack-data->ipython>=4.0.0->ipywidgets) (0.8.3) +Requirement already satisfied: notebook-shim>=0.1.0 in c:\users\janni\anaconda3\lib\site-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.2.2) +Requirement already satisfied: jupyter-server>=1.8 in c:\users\janni\anaconda3\lib\site-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.23.4) +Requirement already satisfied: defusedxml in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.7.1) +Requirement already satisfied: lxml in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (4.9.1) +Requirement already satisfied: jupyterlab-pygments in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.1.2) +Requirement already satisfied: mistune<2,>=0.8.1 in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.8.4) +Requirement already satisfied: nbclient>=0.5.0 in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.5.13) +Requirement already satisfied: tinycss2 in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.2.1) +Requirement already satisfied: bleach in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (4.1.0) +Requirement already satisfied: beautifulsoup4 in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (4.11.1) +Requirement already satisfied: MarkupSafe>=2.0 in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.1.1) +Requirement already satisfied: pandocfilters>=1.4.1 in c:\users\janni\anaconda3\lib\site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.5.0) +Requirement already satisfied: six>=1.5 in c:\users\janni\anaconda3\lib\site-packages (from python-dateutil>=2.8.2->jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets) (1.16.0) +Requirement already satisfied: pywinpty>=1.1.0 in c:\users\janni\anaconda3\lib\site-packages (from terminado>=0.8.3->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.0.10) +Requirement already satisfied: argon2-cffi-bindings in c:\users\janni\anaconda3\lib\site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (21.2.0) +Requirement already satisfied: anyio<4,>=3.1.0 in c:\users\janni\anaconda3\lib\site-packages (from jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (3.5.0) +Requirement already satisfied: websocket-client in c:\users\janni\anaconda3\lib\site-packages (from jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.58.0) +Requirement already satisfied: cffi>=1.0.1 in c:\users\janni\anaconda3\lib\site-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.15.1) +Requirement already satisfied: soupsieve>1.2 in c:\users\janni\anaconda3\lib\site-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.3.2.post1) +Requirement already satisfied: webencodings in c:\users\janni\anaconda3\lib\site-packages (from bleach->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.5.1) +Requirement already satisfied: sniffio>=1.1 in c:\users\janni\anaconda3\lib\site-packages (from anyio<4,>=3.1.0->jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.2.0) +Requirement already satisfied: idna>=2.8 in c:\users\janni\anaconda3\lib\site-packages (from anyio<4,>=3.1.0->jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (3.4) +Requirement already satisfied: pycparser in c:\users\janni\anaconda3\lib\site-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.21) diff --git a/ha_07/loosen_janniclas_1540907_08.py b/ha_07/loosen_janniclas_1540907_08.py index ec1516e..265775b 100644 --- a/ha_07/loosen_janniclas_1540907_08.py +++ b/ha_07/loosen_janniclas_1540907_08.py @@ -62,7 +62,7 @@ def mysterious_transformation_parallel(data, stripes=16): i += 1 return np.concatenate(data_new_stripes) - +3 img = Image.open("lokomotive.png") pixels = np.asarray(img, dtype=np.uint8) @@ -82,12 +82,19 @@ end_time_parallel = time.time() execution_time_parallel = end_time_parallel - start_time_parallel print("Execution time for parallel method:", execution_time_parallel, "seconds") -# Each time one pixel is different - don't know the reason? But this difference is negligible -num_different_pixels = np.count_nonzero(np.sum(data_new_normal != data_new_parallel, axis=-1)) -print("Number of different pixels:", num_different_pixels) - img_new_normal = Image.fromarray(data_new_normal, 'RGB') img_new_normal.save("new_normal_lokomotive.png") img_new_parallel = Image.fromarray(data_new_normal, 'RGB') img_new_parallel.save("new_parallel_lokomotive.png") + +img1 = Image.open("new_normal_lokomotive.png") +img2 = Image.open("new_parallel_lokomotive.png") + +diff_count = 0 +for x in range(img1.width): + for y in range(img1.height): + if img1.getpixel((x, y)) != img2.getpixel((x, y)): + diff_count += 1 + +print(diff_count) \ No newline at end of file diff --git a/ha_08/loosen_janniclas_1540907_09.py b/ha_08/loosen_janniclas_1540907_09.py index d7b04a9..295d37c 100644 --- a/ha_08/loosen_janniclas_1540907_09.py +++ b/ha_08/loosen_janniclas_1540907_09.py @@ -1,10 +1,9 @@ -import requests +import colorsys +import plotly.graph_objects as go from PIL import Image import numpy as np -from io import BytesIO - from matplotlib import pyplot as plt -import plotly.graph_objects as go +import time def apply_convolution_operator(operator, image): @@ -94,5 +93,93 @@ else: """ -class Simulation: - +class Heatmap_Simulator: + k = 1 + h = 2 + delta_f = 0.005 + cookie_size = 0.5 + + def __init__(self, y_size=28, x_size=28, tmp_min=0, tmp_max=1): + init_heatmap = np.zeros((y_size, x_size)) + self.x_size = x_size + self.y_size = y_size + self.tmp_min = tmp_min + self.tmp_max = tmp_max + size = self.cookie_size / 2 + for y in range(int(y_size * (0.5 - size)), int(y_size * (0.5 + size))): + for x in range(int(x_size * (0.5 - size)), int(x_size * (0.5 + size))): + init_heatmap[y][x] = 1 + self.heatmap = init_heatmap + + def simulate(self, cycles=1): + for c in range(cycles): + new_heatmap = np.zeros((self.y_size, self.x_size)) + for y in range(self.y_size): + for x in range(self.x_size): + u = self.heatmap[y, x] + value = u + self.delta_f * (self.k / (1 ** 2)) * self._consider_convolution(x, y) + value = max(self.tmp_min, min(self.tmp_max, value)) + new_heatmap[y][x] = value + self.heatmap = new_heatmap + + def _consider_convolution(self, x, y): + top = self.heatmap[y - 1, x] if y > 0 else 0 + bottom = self.heatmap[y + 1, x] if y < self.heatmap.shape[0] - 1 else 0 + left = self.heatmap[y, x - 1] if x > 0 else 0 + right = self.heatmap[y, x + 1] if x < self.heatmap.shape[1] - 1 else 0 + center = self.heatmap[y, x] + return top + bottom + left + right + center * (-4) + + def export(self): + if self.heatmap is not None: + return Heatmap_Image(self.heatmap, 0, 1) + else: + AttributeError("Heatmap is not initialized.") + + +class Visual_Heatmap_Simulator(Heatmap_Simulator): + def __init__(self, y_size=28, x_size=28, tmp_min=0, tmp_max=1, delay=0.5): + super().__init__(y_size, x_size, tmp_min, tmp_max) + self.delay = delay + + def simulate_visual(self, cycles=100, skip=5): + for c in range(cycles): + if c != 0: + self.simulate(1) + if c % skip == 0: + self._update_plot() + print(f"Figure updated: {c}.") + + def _update_plot(self): + plt.imshow(self.heatmap, cmap='viridis', interpolation='nearest') + plt.draw() + plt.pause(self.delay) + + +simulator = Visual_Heatmap_Simulator(28, 28, -0.5, 1) +simulator.simulate_visual(10000, 50) + + +class Heatmap_Image: + def __init__(self, heatmap, min_val, max_val): + self.min_val = min_val + self.max_val = max_val + x_size, y_size = heatmap.shape + colormap = np.zeros((y_size, x_size, 3), dtype=np.uint8) + for y in range(y_size): + for x in range(x_size): + colormap[y][x] = self._val_to_color(heatmap[y][x]) + self.image = Image.fromarray(colormap, 'RGB') + + def _val_to_color(self, value): + normalized_value = (value - self.min_val) / (self.max_val - self.min_val) + hsv_color = (0.66 - 0.66 * normalized_value, 1.0, 1.0) # Blue to Red + rgb_color = colorsys.hsv_to_rgb(*hsv_color) + scaled_rgb_color = tuple(int(c * 255) for c in rgb_color) + return scaled_rgb_color + + def show(self): + self.image.show() + + def save(self, file): + self.image.save(file)