diff --git a/bilder/dataset/comparing_datasets.png b/bilder/dataset/comparing_datasets.png
new file mode 100644
index 0000000000000000000000000000000000000000..931d31abc374bf9d222e49ec516042e48bd92a09
Binary files /dev/null and b/bilder/dataset/comparing_datasets.png differ
diff --git a/docs/TO DO LISTE.md b/docs/TO DO LISTE.md
new file mode 100644
index 0000000000000000000000000000000000000000..4916bf243572084c4bc361f82a485bb90770d835
--- /dev/null
+++ b/docs/TO DO LISTE.md	
@@ -0,0 +1,47 @@
+# Auffäligkeiten
+1. Es gibt Datensätze mit allgemeiner schlechter Anomalieerkennung, wobei ein / zwei / drei Modelle sehr gut darauf funktionieren
+2. Bei Stock nach AUC-PR funtkionieren nur LSTMAD und CNN (beides neuronale Netze) und alle anderen Modelle haben werte um 0.1
+3. Allgemein scheint es kein Modell zu geben, was pauschal die Anomalien gut bzw. sicher detektieren kann (insb. nicht auf allen Datensätzen)
+4. Teils große Differenzen zw. AUC-PR und VUS-PR bei bestimmten Datensätzen, v.a. mit Punktanomalien (TAO, Stock, TODS).
+5. Teils große Unterschiede zw. den VUS-PR Werten auf einzelnen Datensätzen zu den Autoren (z.B. TAO), trotz identischen Hyperparametern bzw. besserer Kombination
+6. Unterschiedliches Ranking der Modelle je nach Metrik (Recall, AUC-PR und VUS-PR)
+7. Stark abweichende durchschnittliche Trainingszeiten
+	Evtl. Durch:
+	+ Grid-Suche
+	+ Evaluation direkt mit einberechnet
+	+ Abweichende Hyperparameter
+8. Zwei der vier neuronalen Netze haben bessere Evaluations-metriken auf Sequenzanomalien, statt Punktanoamlien
+9. Probleme in der Reproducibility bei kShape, trotz gleicher Hyperparameter und Datensätze haben wir Fehler debuggen müssen.
+10. Probleme in der Reproducibility beim Testen der num_channels in CNN (stattdessen mit Lernrate getestet)
+
+# TO DO'S
++ Datensätze genauer untersuchen
+	+ Auffälligkeiten (Anomalien erkennbar?, Punkt- oder Sequenzanomalien, Eigenschaften)
+	+ Warum könnten bestimmte Modelle auf einigen Datensätze Vorteile haben?
+	+ Verstehen warum es allgemein eine Steigerung der Performanz gibt, mit entweder der gleichen Parameterkonstellation, wie von den Autoren vorgegeben oder bessere Kombination durch das Tuning pro Zeitserie, aber gleichzeitig eine teils deutlich schlechtere Metrik bei einzelnen Datensätzen (z.B. Tao)
+		+ Evtl. weil beste Hyperparameter anhand AUC-PR getestet wurden und nicht anhand VUS-PR, wie es vermutl. bei den Autoren gemacht wurde 
+			+ Heißt vergleichen der Hyperparameter dieser Datensätze mit den optimalen Hyperparametern der Autoren
+			+ Bei Ungleichheit der Hyperparameter, diese stark abweichenden Zeitserien nochmal einzeln trainieren und Ergebnisse vergleichen
+	+ Kann man anhand des Datensatzes und der Anomalien ableiten, welche Methoden (dichte-,distanz-, neuronal basiert) am besten funktionieren könnte?
+	  ![](../bilder/dataset/comparing_datasets.png)
+	+ [https://thedatumorg.github.io/TSB-AD/](https://thedatumorg.github.io/TSB-AD/ "https://thedatumorg.github.io/TSB-AD/")
+	+ insb.:
+		+ UCR
+		+ TAO
+		+ TODS
+		+ Power
+		+ MGAB
+		+ Stock
+		+ SED
++ VUS-PR besser verstehen
+	+ Woher kommen Unterschiede zu AUC-PR, insb. bei Datensätzen mit Punktanomalien (TODS, TAO und Stock) ?
+	+ Wie funktioniert das?
+	+ Liegt ein Bias der Autoren?
++ Ranking der Modelle nach Anomalietyp
+	+ Statistisch vs. Neuronal
+	+ Dichtebasiert vs. Distanzbasiert
++ Ranking der Modelle allgemein
+	+ nach Recall, AUC-PR und VUS-PR
+	+ Dichtebasiert vs. Distanzbasiert
+	+ Statistisch vs. Neuronal
++ Ausarbeiten der Algorithmen und Vorbereiten für die Hausarbeit
\ No newline at end of file
diff --git a/src/models/ahmad/call_KMeansAD.py b/src/models/ahmad/call_KMeansAD.py
index ca1af2a68d7188c1908f6d45fa58347c807582b9..6111fd00c844b7ff633789a0a712afe6f4a14d95 100644
--- a/src/models/ahmad/call_KMeansAD.py
+++ b/src/models/ahmad/call_KMeansAD.py
@@ -5,6 +5,7 @@ sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.utils.slidingWindows import find_length_rank
 from src.run_model_wrapper import main
 
+#optimal hyperparameters from autors: {'periodicity': 2, 'n_clusters': 10}
 params = {
         'periodicity': [1, 2, 3],
         'n_clusters': [10, 20, 30, 40],
diff --git a/src/models/ahmad/call_LSTMAD.py b/src/models/ahmad/call_LSTMAD.py
index 54249e0a887ca5ad361d28bf53d3121fbc7f9cca..8dc2087bb658b95d867f5b215805fec5fa1d3cb0 100644
--- a/src/models/ahmad/call_LSTMAD.py
+++ b/src/models/ahmad/call_LSTMAD.py
@@ -5,6 +5,7 @@ sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.utils.slidingWindows import find_length_rank
 from src.run_model_wrapper import main
 
+#optimal hyperparameters from autors: {'window_size': 100, 'lr': 0.0008}
 params = {
         'window_size': [50, 100, 150],
         'lr': [0.0004, 0.0008]
diff --git a/src/models/ahmad/call_PCA.py b/src/models/ahmad/call_PCA.py
index 704d8c54bf0f58d747f31c629aa6557b0512403d..3baeff34ba09eba19355f788a0369c81a63034db 100644
--- a/src/models/ahmad/call_PCA.py
+++ b/src/models/ahmad/call_PCA.py
@@ -5,6 +5,7 @@ sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.utils.slidingWindows import find_length_rank
 from src.run_model_wrapper import main
 
+#optimal hyperparameters: {'periodicity': 1, 'n_components': None}
 params = {
         'periodicity': [1, 2, 3],
         'n_components': [0.25, 0.5, 0.75, None]
diff --git a/src/models/desi/call_LOF.py b/src/models/desi/call_LOF.py
index fe3d36f6c9788c592802e974534ee2e84b4aa5d7..01eb4e6123b41b7a5c4682e5bce5ee3c61c6b399 100644
--- a/src/models/desi/call_LOF.py
+++ b/src/models/desi/call_LOF.py
@@ -4,7 +4,7 @@ import pathlib
 sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.run_model_wrapper import main
 
-#optimal hyperparameters from autors: 'POLY': {'periodicity': 1, 'power': 4}
+#optimal hyperparameters from autors: {'periodicity': 1, 'n_neighbors': 50}
 params = {
         'n_neighbors': [10, 20, 30, 40, 50]
 }
diff --git a/src/models/desi/call_OCSVM.py b/src/models/desi/call_OCSVM.py
index 0feb88321be965150f44ac7d64feb3d9218392ab..9e163e2a18e59e2b8fcfb93d6e2719c51281cdfd 100644
--- a/src/models/desi/call_OCSVM.py
+++ b/src/models/desi/call_OCSVM.py
@@ -5,7 +5,7 @@ sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.utils.slidingWindows import find_length_rank
 from src.run_model_wrapper import main
 
-#optimal hyperparameters from autors: 'POLY': {'periodicity': 1, 'power': 4}
+#optimal hyperparameters from autors: {'periodicity': 2, 'kernel': 'rbf'}
 params = {
         'periodicity': [1, 2, 3],
         'kernel': ['linear', 'poly', 'rbf', 'sigmoid']
diff --git a/src/models/desi/call_Sub_LOF.py b/src/models/desi/call_Sub_LOF.py
index e4c3e2fbfc27184ebade9f169dcc910e83e8a660..152eb92cc71ea5672ee4e5e9153f5a29b6985139 100644
--- a/src/models/desi/call_Sub_LOF.py
+++ b/src/models/desi/call_Sub_LOF.py
@@ -5,7 +5,7 @@ sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.run_model_wrapper import main
 from src.utils.slidingWindows import find_length_rank
 
-#optimal hyperparameters from autors: 'POLY': {'periodicity': 1, 'power': 4}
+#optimal hyperparameters from autors: {'periodicity': 2, 'n_neighbors': 30}
 params = {
         'periodicity': [1, 2, 3],
         'n_neighbors': [10, 20, 30, 40, 50]
diff --git a/src/models/desi/call_kShapeAD.py b/src/models/desi/call_kShapeAD.py
index 5b54615696f3123fe6cb8af6d235463d3f84836f..1d7e68e650e1eb9359539213471bba4a746698cd 100644
--- a/src/models/desi/call_kShapeAD.py
+++ b/src/models/desi/call_kShapeAD.py
@@ -11,6 +11,7 @@ import warnings
 warnings.simplefilter(action='ignore', category=FutureWarning)
 warnings.simplefilter(action='ignore', category=UserWarning)
 
+#optimal hyperparameter from autors: {'periodicity': 1}
 params = {
         'periodicity': [1, 2, 3]
 }
diff --git a/src/models/desi/call_omnianomaly.py b/src/models/desi/call_omnianomaly.py
index f8c632f8472bebaf872a0c02a7a1a2008fbf9148..35b007c3ea947d5b5200bf5bf575f03286cea6db 100644
--- a/src/models/desi/call_omnianomaly.py
+++ b/src/models/desi/call_omnianomaly.py
@@ -4,7 +4,7 @@ import pathlib
 sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.run_model_wrapper import main
 
-#optimal hyperparameters from autors: 'POLY': {'periodicity': 1, 'power': 4}
+#optimal hyperparameters from autors: {'win_size': 5, 'lr': 0.002}
 params = {
         'win_size': [5, 50, 100],
         'lr': [0.002, 0.0002]
diff --git a/src/models/desi/call_usad.py b/src/models/desi/call_usad.py
index 7b42ea99d73df73da382514a5796d50502a46217..9ddabcba4aacbdc72ed0eaa21138c6b2e7079ee5 100644
--- a/src/models/desi/call_usad.py
+++ b/src/models/desi/call_usad.py
@@ -4,7 +4,7 @@ import pathlib
 sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.run_model_wrapper import main
 
-#optimal hyperparameters from autors: 'POLY': {'periodicity': 1, 'power': 4}
+#optimal hyperparameters from autors: {'win_size': 100, 'lr': 0.001}
 params = {
         'win_size': [5, 50, 100],
         'lr': [1e-3, 1e-4, 1e-5]
diff --git a/src/models/sofia_modelle/call_cnn.py b/src/models/sofia_modelle/call_cnn.py
index 26e5eee1a999fe889cf169ef641df35f6d6a9e7d..93197c099cd9bde3aa178c468c1986c8acbbc088 100644
--- a/src/models/sofia_modelle/call_cnn.py
+++ b/src/models/sofia_modelle/call_cnn.py
@@ -4,7 +4,7 @@ import pathlib
 sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.run_model_wrapper import main
 
-#optimal hyperparameters from autors: 'POLY': {'periodicity': 1, 'power': 4}
+#optimal hyperparameters from autors: {'window_size': 50, 'num_channel': [32, 32, 40]}
 params = {
         'window_size': [50, 100, 150],
         'lr': [5e-5, 1e-4, 5e-4, 8e-4, 1e-3]
diff --git a/src/models/sofia_modelle/call_iforest.py b/src/models/sofia_modelle/call_iforest.py
index 50631433019223c5b60f3280ca0b6f465777e9b4..31cb220d744f58d560eb7630942d7e833426b0a1 100644
--- a/src/models/sofia_modelle/call_iforest.py
+++ b/src/models/sofia_modelle/call_iforest.py
@@ -5,7 +5,7 @@ sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.utils.slidingWindows import find_length_rank
 from src.run_model_wrapper import main
 
-#optimal hyperparameters from autors: 'POLY': {'periodicity': 1, 'power': 4}
+#optimal hyperparameters from autors: {'n_estimators': 200}
 params = {
         'n_estimators': [25, 50, 100, 150, 200]
     }
diff --git a/src/models/sofia_modelle/call_knn.py b/src/models/sofia_modelle/call_knn.py
index efa40fadcf7cbcecf779bf44b36107bd369549b2..c70dac7cd70651f5a9d0565cf9706f9deeb06733 100644
--- a/src/models/sofia_modelle/call_knn.py
+++ b/src/models/sofia_modelle/call_knn.py
@@ -5,7 +5,7 @@ sys.path.append(str(pathlib.Path.absolute)+ '../../')
 from src.utils.slidingWindows import find_length_rank
 from src.run_model_wrapper import main
 
-#optimal hyperparameters from autors: 'POLY': {'periodicity': 1, 'power': 4}
+#optimal hyperparameters from autors: {'periodicity': 2, 'n_neighbors': 50}
 params = {
         'n_neighbors': [10, 20, 30, 40, 50],
         'method': ['largest', 'mean', 'median']
diff --git a/src/models/sofia_modelle/call_sub_iforestpy b/src/models/sofia_modelle/call_sub_iforestpy
new file mode 100644
index 0000000000000000000000000000000000000000..2b16a3714bbc63f3323cd60fdc0b626b17778135
--- /dev/null
+++ b/src/models/sofia_modelle/call_sub_iforestpy
@@ -0,0 +1,28 @@
+from IForest import IForest
+import sys
+import pathlib
+sys.path.append(str(pathlib.Path.absolute)+ '../../')
+from src.utils.slidingWindows import find_length_rank
+from src.run_model_wrapper import main
+
+#optimal hyperparameters from autors: {'periodicity': 1, 'n_estimators': 150}
+params = {
+        'periodicity': [1, 2, 3],
+        'n_estimators': [25, 50, 100, 150, 200]
+}
+
+def run_Sub_IForest(data, periodicity=1, n_estimators=100, max_features=1, n_jobs=1):
+    slidingWindow = find_length_rank(data, rank=periodicity)
+    clf = IForest(slidingWindow=slidingWindow, n_estimators=n_estimators, max_features=max_features, n_jobs=n_jobs)
+    clf.fit(data)
+    score = clf.decision_scores_
+    return score.ravel()
+
+model = 'Sub_IForest'
+output_path = '../../../docs/evaluation/'
+
+#writes results in .csv
+main(run_Sub_IForest,params,model,data_folders = '../../../data/', model_type='unsupervised',output_dir = output_path)
+
+#pip3 install -r requirements.txt
+# python src/models/desi/call_poly.py
\ No newline at end of file