main
Jan-Niclas Loosen 9 months ago
parent ec66e7d14c
commit 8e3db2af40

@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4"> <module version="4">
<component name="NewModuleRootManager"> <component name="PyDocumentationSettings">
<content url="file://$MODULE_DIR$"> <option name="format" value="GOOGLE" />
<excludeFolder url="file://$MODULE_DIR$/Virtualenv" /> <option name="myDocStringFormat" value="Google" />
</content>
<orderEntry type="jdk" jdkName="C:\ProgramData\anaconda3" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component> </component>
</module> </module>

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="C:\ProgramData\anaconda3" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="C:\Users\janni\anaconda3" project-jdk-type="Python SDK" />
</project> </project>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/UNI_Python.iml" filepath="$PROJECT_DIR$/.idea/UNI_Python.iml" />
</modules>
</component>
</project>

70
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)

@ -62,7 +62,7 @@ def mysterious_transformation_parallel(data, stripes=16):
i += 1 i += 1
return np.concatenate(data_new_stripes) return np.concatenate(data_new_stripes)
3
img = Image.open("lokomotive.png") img = Image.open("lokomotive.png")
pixels = np.asarray(img, dtype=np.uint8) 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 execution_time_parallel = end_time_parallel - start_time_parallel
print("Execution time for parallel method:", execution_time_parallel, "seconds") 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 = Image.fromarray(data_new_normal, 'RGB')
img_new_normal.save("new_normal_lokomotive.png") img_new_normal.save("new_normal_lokomotive.png")
img_new_parallel = Image.fromarray(data_new_normal, 'RGB') img_new_parallel = Image.fromarray(data_new_normal, 'RGB')
img_new_parallel.save("new_parallel_lokomotive.png") 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)

@ -1,10 +1,9 @@
import requests import colorsys
import plotly.graph_objects as go
from PIL import Image from PIL import Image
import numpy as np import numpy as np
from io import BytesIO
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
import plotly.graph_objects as go import time
def apply_convolution_operator(operator, image): 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)

Loading…
Cancel
Save