Repository: mad-lab-fau/tpcp (language: python)

Issue:
Port interal examples
We should port the examples we have internal, however, for that we need a new example algorithm and dataset that can be made public


Discussion / hints:

Fix patch:
diff --git a/.prospector.yml b/.prospector.yml
index 5eece0db..761e0402 100644
--- a/.prospector.yml
+++ b/.prospector.yml
@@ -7,7 +7,7 @@ ignore-paths:
   - _tasks.py
   - examples
 
-pep8:
+pycodestyle:
   options:
     max-line-length: 120
   disable:
@@ -15,7 +15,7 @@ pep8:
     - W391
     - E203 # ignoring white space before colon :
 
-pep257:
+pydocstyle:
   options:
     convention: numpy
   disable:
diff --git a/docs/conf.py b/docs/conf.py
index b4834a2a..ecaf0b29 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -18,6 +18,7 @@
 from pathlib import Path
 
 import toml
+from sphinx_gallery.sorting import ExplicitOrder, FileNameSortKey
 
 HERE = Path(__file__)
 
@@ -129,7 +130,7 @@
 # intersphinx configuration
 intersphinx_module_mapping = {
     "numpy": ("https://numpy.org/doc/stable/", None),
-    "scipy": ("https://docs.scipy.org/doc/scipy/reference/", None),
+    "scipy": ("https://docs.scipy.org/doc/scipy-1.8.0/html-scipyorg/", None),
     "matplotlib": ("https://matplotlib.org/", None),
     "pandas": ("https://pandas.pydata.org/pandas-docs/stable/", None),
     "sklearn": ("https://scikit-learn.org/stable/", None),
@@ -153,6 +154,15 @@
     "filename_pattern": re.escape(os.sep),
     "remove_config_comments": True,
     "show_memory": True,
+    "subsection_order": ExplicitOrder(
+        [
+            "../examples/datasets",
+            "../examples/algorithms",
+            "../examples/parameter_optimization",
+            "../examples/validation"
+        ]
+    ),
+    "within_subsection_order": FileNameSortKey,
 }
 
 
diff --git a/docs/guides/algorithms_pipelines_datasets.rst b/docs/guides/algorithms_pipelines_datasets.rst
index cb86b572..d2435233 100644
--- a/docs/guides/algorithms_pipelines_datasets.rst
+++ b/docs/guides/algorithms_pipelines_datasets.rst
@@ -1,3 +1,5 @@
+.. _datasets_algorithms_pipelines:
+
 The fundamental components: Datasets, Algorithms, and Pipelines
 ===============================================================
 
diff --git a/docs/guides/general_concepts.rst b/docs/guides/general_concepts.rst
index 621caa04..4230079b 100644
--- a/docs/guides/general_concepts.rst
+++ b/docs/guides/general_concepts.rst
@@ -145,6 +145,7 @@ If a parameter is a list or a tuple of other values, we will iterate through the
 
 Mutable Defaults
 ----------------
+.. _mutable_defaults:
 
 .. warning::
     Whenever you use `list`, `dicts`, `np.arrays`, `pd.Dataframe` or other `mutable <https://www.geeksforgeeks.org/mutable-vs-immutable-objects-in-python>`_ container types,
diff --git a/example_data/ecg_mit_bih_arrhythmia/README.md b/example_data/ecg_mit_bih_arrhythmia/README.md
new file mode 100644
index 00000000..9a7053f1
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/README.md
@@ -0,0 +1,14 @@
+# Example data: MIT-BIH Arrhythmia Database
+
+The data in this folder contains a converted subset of ECG recordings from the publicly available
+"MIT-BIH Arrhythmia Database".
+
+The full database can be accessed on [Physionet](https://physionet.org/content/mitdb/1.0.0/) under the 
+[Open Data Commons Attribution License v1.0](https://physionet.org/content/mitdb/view-license/1.0.0/).
+
+The data here was converted from the original files into csv-files or pickle files to make them easier to read without 
+additional tools.
+
+This is example data to show general capabilities of the tcpc library and should not be used as actual test data for any
+ECG related algorithms.
+Use the original database for that!
\ No newline at end of file
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/100.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/100.pk.gz
new file mode 100644
index 00000000..55963eca
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/100.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/100_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/100_all.csv
new file mode 100644
index 00000000..e7eab1c5
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/100_all.csv
@@ -0,0 +1,2241 @@
+,R
+0,77
+1,370
+2,662
+3,946
+4,1231
+5,1515
+6,1809
+7,2402
+8,2706
+9,2998
+10,3282
+11,3560
+12,3862
+13,4170
+14,4466
+15,4764
+16,5060
+17,5346
+18,5633
+19,5918
+20,6214
+21,6527
+22,6823
+23,7106
+24,7391
+25,7670
+26,7953
+27,8245
+28,8539
+29,8837
+30,9141
+31,9431
+32,9710
+33,9998
+34,10282
+35,10591
+36,10894
+37,11191
+38,11480
+39,11781
+40,12066
+41,12350
+42,12645
+43,12949
+44,13266
+45,13562
+46,13842
+47,14131
+48,14423
+49,14710
+50,15011
+51,15310
+52,15607
+53,15899
+54,16183
+55,16464
+56,16755
+57,17058
+58,17358
+59,17657
+60,17947
+61,18227
+62,18514
+63,18795
+64,19080
+65,19388
+66,19693
+67,19989
+68,20271
+69,20554
+70,20837
+71,21131
+72,21423
+73,21729
+74,22029
+75,22321
+76,22603
+77,22881
+78,23164
+79,23453
+80,23756
+81,24053
+82,24345
+83,24625
+84,24913
+85,25197
+86,25485
+87,25779
+88,26088
+89,26387
+90,26670
+91,26952
+92,27237
+93,27536
+94,27833
+95,28132
+96,28431
+97,28727
+98,29014
+99,29294
+100,29580
+101,29873
+102,30182
+103,30487
+104,30779
+105,31065
+106,31348
+107,31635
+108,31927
+109,32224
+110,32529
+111,32836
+112,33127
+113,33403
+114,33691
+115,33980
+116,34274
+117,34575
+118,34870
+119,35168
+120,35455
+121,35736
+122,36016
+123,36309
+124,36605
+125,36916
+126,37215
+127,37499
+128,37782
+129,38071
+130,38356
+131,38651
+132,38950
+133,39252
+134,39547
+135,39825
+136,40096
+137,40382
+138,40677
+139,40970
+140,41271
+141,41567
+142,41849
+143,42117
+144,42416
+145,42697
+146,42996
+147,43307
+148,43603
+149,43892
+150,44172
+151,44455
+152,44743
+153,45030
+154,45323
+155,45628
+156,45925
+157,46204
+158,46478
+159,46759
+160,47037
+161,47334
+162,47632
+163,47919
+164,48202
+165,48486
+166,48766
+167,49040
+168,49323
+169,49618
+170,49923
+171,50214
+172,50491
+173,50771
+174,51056
+175,51339
+176,51626
+177,51921
+178,52216
+179,52506
+180,52784
+181,53063
+182,53341
+183,53631
+184,53923
+185,54219
+186,54507
+187,54784
+188,55064
+189,55343
+190,55625
+191,55908
+192,56207
+193,56502
+194,56784
+195,57055
+196,57333
+197,57615
+198,57900
+199,58192
+200,58490
+201,58788
+202,59077
+203,59354
+204,59631
+205,59919
+206,60214
+207,60515
+208,60817
+209,61105
+210,61391
+211,61680
+212,61963
+213,62247
+214,62547
+215,62852
+216,63154
+217,63438
+218,63711
+219,63998
+220,64288
+221,64581
+222,64876
+223,65174
+224,65464
+225,65750
+226,66030
+227,66307
+228,66604
+229,67130
+230,67434
+231,67728
+232,68007
+233,68302
+234,68594
+235,68886
+236,69191
+237,69503
+238,69796
+239,70073
+240,70357
+241,70643
+242,70941
+243,71240
+244,71539
+245,71845
+246,72138
+247,72417
+248,72703
+249,72998
+250,73301
+251,73611
+252,73911
+253,74196
+254,74483
+255,74767
+256,75332
+257,75632
+258,75934
+259,76233
+260,76515
+261,76785
+262,77074
+263,77366
+264,77663
+265,77954
+266,78251
+267,78539
+268,78824
+269,79100
+270,79386
+271,79689
+272,79991
+273,80290
+274,80583
+275,80868
+276,81152
+277,81439
+278,81730
+279,82030
+280,82335
+281,82636
+282,82927
+283,83209
+284,83492
+285,83794
+286,84103
+287,84407
+288,84709
+289,85010
+290,85303
+291,85580
+292,85870
+293,86171
+294,86478
+295,86780
+296,87079
+297,87364
+298,87652
+299,87941
+300,88232
+301,88530
+302,88834
+303,89135
+304,89421
+305,89703
+306,89988
+307,90286
+308,90590
+309,90885
+310,91190
+311,91481
+312,91761
+313,92046
+314,92338
+315,92633
+316,92944
+317,93246
+318,93534
+319,93824
+320,94102
+321,94395
+322,94693
+323,94996
+324,95298
+325,95606
+326,95893
+327,96171
+328,96450
+329,96746
+330,97050
+331,97348
+332,97644
+333,97936
+334,98228
+335,98508
+336,98789
+337,99084
+338,99382
+339,99930
+340,100218
+341,100496
+342,100781
+343,101071
+344,101361
+345,101653
+346,101941
+347,102234
+348,102516
+349,102793
+350,103074
+351,103371
+352,103669
+353,103964
+354,104261
+355,104545
+356,104830
+357,105118
+358,105407
+359,105707
+360,106015
+361,106314
+362,106600
+363,106882
+364,107159
+365,107453
+366,107750
+367,108045
+368,108342
+369,108643
+370,108926
+371,109199
+372,109486
+373,109772
+374,110076
+375,110374
+376,110673
+377,110963
+378,111244
+379,111524
+380,111810
+381,112108
+382,112405
+383,112710
+384,113000
+385,113281
+386,113562
+387,113850
+388,114142
+389,114428
+390,114716
+391,115000
+392,115280
+393,115547
+394,115815
+395,116084
+396,116369
+397,116654
+398,116939
+399,117213
+400,117494
+401,117766
+402,118044
+403,118323
+404,118607
+405,118911
+406,119215
+407,119509
+408,119791
+409,120077
+410,120376
+411,120676
+412,120990
+413,121300
+414,121604
+415,121889
+416,122170
+417,122460
+418,122750
+419,123050
+420,123360
+421,123664
+422,123936
+423,124221
+424,124507
+425,124775
+426,125060
+427,125355
+428,125648
+429,125926
+430,126203
+431,126476
+432,126746
+433,127025
+434,127313
+435,127603
+436,127892
+437,128423
+438,128698
+439,128958
+440,129230
+441,129519
+442,129798
+443,130057
+444,130318
+445,130568
+446,130818
+447,131073
+448,131326
+449,131584
+450,131851
+451,132122
+452,132381
+453,132629
+454,132883
+455,133132
+456,133390
+457,133662
+458,133933
+459,134197
+460,134463
+461,134737
+462,134990
+463,135243
+464,135504
+465,135780
+466,136061
+467,136350
+468,136630
+469,136899
+470,137170
+471,137449
+472,137729
+473,138008
+474,138304
+475,138598
+476,138888
+477,139164
+478,139440
+479,139719
+480,140009
+481,140302
+482,140599
+483,140881
+484,141152
+485,141423
+486,141684
+487,141943
+488,142207
+489,142479
+490,142747
+491,143010
+492,143265
+493,143515
+494,143766
+495,144025
+496,144286
+497,144557
+498,144832
+499,145111
+500,145381
+501,145647
+502,145902
+503,146170
+504,146445
+505,146737
+506,147013
+507,147290
+508,147565
+509,147832
+510,148099
+511,148363
+512,148637
+513,148916
+514,149204
+515,149488
+516,149768
+517,150030
+518,150303
+519,150575
+520,150849
+521,151122
+522,151407
+523,151700
+524,151974
+525,152237
+526,152510
+527,152781
+528,153067
+529,153362
+530,153644
+531,153922
+532,154193
+533,154470
+534,154741
+535,155009
+536,155291
+537,155588
+538,155865
+539,156132
+540,156395
+541,156648
+542,156906
+543,157168
+544,157430
+545,157695
+546,157960
+547,158233
+548,158489
+549,158730
+550,158974
+551,159225
+552,159479
+553,159738
+554,160001
+555,160260
+556,160507
+557,160755
+558,161005
+559,161254
+560,161499
+561,161764
+562,162035
+563,162308
+564,162573
+565,162835
+566,163093
+567,163362
+568,163629
+569,163899
+570,164182
+571,164461
+572,164731
+573,164991
+574,165246
+575,165499
+576,165756
+577,166032
+578,166301
+579,166570
+580,166841
+581,167111
+582,167371
+583,167641
+584,167912
+585,168191
+586,168484
+587,168784
+588,169074
+589,169349
+590,169629
+591,169907
+592,170201
+593,170495
+594,171074
+595,171371
+596,171652
+597,171921
+598,172199
+599,172481
+600,172776
+601,173067
+602,173351
+603,173629
+604,173907
+605,174176
+606,174451
+607,174737
+608,175023
+609,175323
+610,175608
+611,175877
+612,176145
+613,176427
+614,176698
+615,176975
+616,177248
+617,177523
+618,177797
+619,178059
+620,178316
+621,178578
+622,178841
+623,179117
+624,179388
+625,179662
+626,179927
+627,180182
+628,180443
+629,180705
+630,180964
+631,181236
+632,181523
+633,181811
+634,182084
+635,182353
+636,182624
+637,182896
+638,183181
+639,183475
+640,183778
+641,184071
+642,184361
+643,184649
+644,184933
+645,185213
+646,185510
+647,185828
+648,186137
+649,186428
+650,186717
+651,187005
+652,187291
+653,187577
+654,187872
+655,188179
+656,188481
+657,188763
+658,189043
+659,189330
+660,189624
+661,189929
+662,190228
+663,190529
+664,190820
+665,191112
+666,191395
+667,191674
+668,191977
+669,192281
+670,192575
+671,192862
+672,193146
+673,193423
+674,193703
+675,193994
+676,194281
+677,194574
+678,194868
+679,195156
+680,195426
+681,195701
+682,195978
+683,196268
+684,196560
+685,196847
+686,197132
+687,197414
+688,197685
+689,197950
+690,198224
+691,198504
+692,198791
+693,199075
+694,199353
+695,199619
+696,199894
+697,200161
+698,200434
+699,200714
+700,200993
+701,201271
+702,201545
+703,201806
+704,202067
+705,202339
+706,202614
+707,202896
+708,203182
+709,203468
+710,203741
+711,204021
+712,204299
+713,204574
+714,204854
+715,205158
+716,205459
+717,205737
+718,206016
+719,206288
+720,206567
+721,206844
+722,207130
+723,207421
+724,207724
+725,208004
+726,208277
+727,208548
+728,208822
+729,209100
+730,209392
+731,209683
+732,209973
+733,210256
+734,210534
+735,210809
+736,211085
+737,211364
+738,211654
+739,211951
+740,212228
+741,212502
+742,212777
+743,213058
+744,213326
+745,213606
+746,213894
+747,214181
+748,214465
+749,214738
+750,215005
+751,215280
+752,215563
+753,215850
+754,216141
+755,216431
+756,216710
+757,216990
+758,217268
+759,217547
+760,217824
+761,218122
+762,218416
+763,218703
+764,218972
+765,219246
+766,219529
+767,219813
+768,220098
+769,220391
+770,220691
+771,220977
+772,221252
+773,221527
+774,221804
+775,222081
+776,222375
+777,222666
+778,222951
+779,223227
+780,223507
+781,223783
+782,224047
+783,224328
+784,224621
+785,224915
+786,225195
+787,225472
+788,225743
+789,226024
+790,226296
+791,226573
+792,226863
+793,227144
+794,227427
+795,227702
+796,227975
+797,228238
+798,228516
+799,228808
+800,229094
+801,229376
+802,229660
+803,229936
+804,230214
+805,230485
+806,230761
+807,231058
+808,231357
+809,231638
+810,231913
+811,232190
+812,232459
+813,232732
+814,233016
+815,233301
+816,233588
+817,233875
+818,234151
+819,234415
+820,234684
+821,234959
+822,235249
+823,235547
+824,235828
+825,236108
+826,236390
+827,236664
+828,236927
+829,237205
+830,237495
+831,237783
+832,238070
+833,238343
+834,238610
+835,238884
+836,239157
+837,239433
+838,239717
+839,239996
+840,240266
+841,240541
+842,240809
+843,241065
+844,241318
+845,241588
+846,241855
+847,242114
+848,242373
+849,242632
+850,242879
+851,243132
+852,243388
+853,243643
+854,243908
+855,244191
+856,244461
+857,244729
+858,244984
+859,245246
+860,245515
+861,245791
+862,246065
+863,246352
+864,246647
+865,246935
+866,247201
+867,247469
+868,247742
+869,248017
+870,248300
+871,248586
+872,248878
+873,249158
+874,249433
+875,249706
+876,249988
+877,250273
+878,250558
+879,250858
+880,251160
+881,251441
+882,251710
+883,251994
+884,252285
+885,252584
+886,252868
+887,253159
+888,253456
+889,253741
+890,254010
+891,254282
+892,254585
+893,254891
+894,255170
+895,255453
+896,255738
+897,256027
+898,256295
+899,256572
+900,256860
+901,257157
+902,257439
+903,257710
+904,257966
+905,258226
+906,258478
+907,258737
+908,259005
+909,259280
+910,259541
+911,259811
+912,260076
+913,260334
+914,260585
+915,260852
+916,261132
+917,261417
+918,261690
+919,261968
+920,262241
+921,262516
+922,262789
+923,263062
+924,263350
+925,263641
+926,263931
+927,264217
+928,264499
+929,264772
+930,265062
+931,265354
+932,265651
+933,265947
+934,266238
+935,266528
+936,266815
+937,267099
+938,267375
+939,267679
+940,267978
+941,268260
+942,268544
+943,268823
+944,269102
+945,269384
+946,269669
+947,269960
+948,270257
+949,270550
+950,270821
+951,271094
+952,271370
+953,271656
+954,271952
+955,272244
+956,272533
+957,272839
+958,273123
+959,273394
+960,273675
+961,273967
+962,274264
+963,274560
+964,274852
+965,275131
+966,275403
+967,275671
+968,275949
+969,276235
+970,276516
+971,276804
+972,277102
+973,277388
+974,277649
+975,277923
+976,278211
+977,278518
+978,278814
+979,279098
+980,279382
+981,279918
+982,280209
+983,280511
+984,280814
+985,281110
+986,281402
+987,281682
+988,281955
+989,282232
+990,282513
+991,282801
+992,283096
+993,283389
+994,283672
+995,283944
+996,284216
+997,284491
+998,284778
+999,285073
+1000,285363
+1001,285653
+1002,285936
+1003,286210
+1004,286486
+1005,286763
+1006,287051
+1007,287353
+1008,287655
+1009,287944
+1010,288225
+1011,288506
+1012,288792
+1013,289076
+1014,289373
+1015,289667
+1016,289971
+1017,290257
+1018,290538
+1019,290813
+1020,291109
+1021,291407
+1022,291696
+1023,291990
+1024,292281
+1025,292566
+1026,292844
+1027,293123
+1028,293411
+1029,293712
+1030,294011
+1031,294296
+1032,294581
+1033,294857
+1034,295142
+1035,295421
+1036,295717
+1037,296013
+1038,296319
+1039,296611
+1040,296889
+1041,297169
+1042,297450
+1043,297738
+1044,298032
+1045,298334
+1046,298627
+1047,298920
+1048,299206
+1049,299483
+1050,299756
+1051,300051
+1052,300360
+1053,300662
+1054,300940
+1055,301210
+1056,301494
+1057,301781
+1058,302063
+1059,302347
+1060,302644
+1061,302947
+1062,303240
+1063,303503
+1064,303773
+1065,304065
+1066,304361
+1067,304639
+1068,304923
+1069,305211
+1070,305497
+1071,306035
+1072,306337
+1073,306641
+1074,306943
+1075,307234
+1076,307514
+1077,308062
+1078,308349
+1079,308625
+1080,308912
+1081,309216
+1082,309515
+1083,309780
+1084,310052
+1085,310332
+1086,310626
+1087,310914
+1088,311199
+1089,311488
+1090,311783
+1091,312062
+1092,312327
+1093,312605
+1094,313193
+1095,313508
+1096,313808
+1097,314090
+1098,314373
+1099,314664
+1100,314952
+1101,315245
+1102,315541
+1103,315843
+1104,316136
+1105,316415
+1106,316693
+1107,316980
+1108,317266
+1109,317560
+1110,318145
+1111,318438
+1112,318729
+1113,319011
+1114,319586
+1115,319904
+1116,320205
+1117,320493
+1118,320786
+1119,321072
+1120,321371
+1121,321663
+1122,321968
+1123,322275
+1124,322573
+1125,322856
+1126,323138
+1127,323425
+1128,323730
+1129,324044
+1130,324340
+1131,324641
+1132,324929
+1133,325215
+1134,325495
+1135,325782
+1136,326088
+1137,326395
+1138,326698
+1139,326986
+1140,327276
+1141,327566
+1142,327858
+1143,328149
+1144,328452
+1145,328753
+1146,329056
+1147,329339
+1148,329619
+1149,329912
+1150,330216
+1151,330524
+1152,330819
+1153,331124
+1154,331411
+1155,331704
+1156,331989
+1157,332279
+1158,332588
+1159,332897
+1160,333199
+1161,333479
+1162,333768
+1163,334056
+1164,334348
+1165,334643
+1166,334943
+1167,335248
+1168,335543
+1169,335823
+1170,336100
+1171,336385
+1172,336679
+1173,336979
+1174,337281
+1175,337571
+1176,337862
+1177,338145
+1178,338432
+1179,338720
+1180,339025
+1181,339327
+1182,339634
+1183,339926
+1184,340205
+1185,340492
+1186,340780
+1187,341075
+1188,341379
+1189,341684
+1190,341974
+1191,342266
+1192,342547
+1193,342822
+1194,343115
+1195,343409
+1196,343705
+1197,343995
+1198,344279
+1199,344556
+1200,344843
+1201,345129
+1202,345415
+1203,345722
+1204,346017
+1205,346308
+1206,346596
+1207,347147
+1208,347454
+1209,347759
+1210,348063
+1211,348367
+1212,348658
+1213,348934
+1214,349221
+1215,349502
+1216,349804
+1217,350112
+1218,350410
+1219,350692
+1220,350980
+1221,351265
+1222,351821
+1223,352115
+1224,352416
+1225,352711
+1226,352986
+1227,353257
+1228,353547
+1229,353832
+1230,354128
+1231,354426
+1232,354717
+1233,355015
+1234,355302
+1235,355579
+1236,355858
+1237,356165
+1238,356463
+1239,356758
+1240,357045
+1241,357327
+1242,357610
+1243,357900
+1244,358186
+1245,358482
+1246,358788
+1247,359086
+1248,359365
+1249,359634
+1250,359903
+1251,360182
+1252,360471
+1253,360763
+1254,361051
+1255,361343
+1256,361625
+1257,361894
+1258,362162
+1259,362451
+1260,362732
+1261,363026
+1262,363318
+1263,363606
+1264,363878
+1265,364158
+1266,364446
+1267,364730
+1268,365022
+1269,365330
+1270,365640
+1271,365914
+1272,366191
+1273,366482
+1274,366778
+1275,367063
+1276,367363
+1277,367674
+1278,367960
+1279,368247
+1280,368531
+1281,368824
+1282,369109
+1283,369410
+1284,369714
+1285,370010
+1286,370279
+1287,370557
+1288,370842
+1289,371131
+1290,371406
+1291,371703
+1292,372007
+1293,372299
+1294,372557
+1295,372834
+1296,373123
+1297,373428
+1298,373712
+1299,374000
+1300,374303
+1301,374595
+1302,374855
+1303,375124
+1304,375412
+1305,375715
+1306,375998
+1307,376287
+1308,376576
+1309,376861
+1310,377404
+1311,377700
+1312,378005
+1313,378308
+1314,378608
+1315,378886
+1316,379159
+1317,379439
+1318,379731
+1319,380023
+1320,380312
+1321,380610
+1322,380898
+1323,381173
+1324,381452
+1325,381724
+1326,382014
+1327,382308
+1328,382607
+1329,382895
+1330,383183
+1331,383457
+1332,383743
+1333,384027
+1334,384317
+1335,384614
+1336,384915
+1337,385205
+1338,385487
+1339,385768
+1340,386050
+1341,386349
+1342,386649
+1343,386941
+1344,387241
+1345,387533
+1346,387811
+1347,388084
+1348,388373
+1349,388671
+1350,388979
+1351,389277
+1352,389563
+1353,389860
+1354,390149
+1355,390434
+1356,390730
+1357,391039
+1358,391344
+1359,391641
+1360,391924
+1361,392204
+1362,392493
+1363,392780
+1364,393077
+1365,393377
+1366,393674
+1367,393957
+1368,394243
+1369,394519
+1370,394801
+1371,395096
+1372,395401
+1373,395697
+1374,395989
+1375,396268
+1376,396553
+1377,396845
+1378,397133
+1379,397704
+1380,398007
+1381,398294
+1382,398569
+1383,398853
+1384,399139
+1385,399436
+1386,399730
+1387,400023
+1388,400321
+1389,400599
+1390,400877
+1391,401163
+1392,401453
+1393,401757
+1394,402061
+1395,402361
+1396,402646
+1397,402933
+1398,403215
+1399,403509
+1400,403804
+1401,404100
+1402,404403
+1403,404697
+1404,404980
+1405,405255
+1406,405543
+1407,405836
+1408,406131
+1409,406425
+1410,406715
+1411,407005
+1412,407288
+1413,407559
+1414,407849
+1415,408151
+1416,408452
+1417,408746
+1418,409030
+1419,409314
+1420,409597
+1421,409881
+1422,410177
+1423,410477
+1424,410781
+1425,411071
+1426,411352
+1427,411632
+1428,411915
+1429,412206
+1430,412512
+1431,412816
+1432,413109
+1433,413402
+1434,413692
+1435,413969
+1436,414249
+1437,414541
+1438,414847
+1439,415143
+1440,415430
+1441,415703
+1442,415994
+1443,416275
+1444,416555
+1445,416849
+1446,417152
+1447,417445
+1448,417728
+1449,418006
+1450,418283
+1451,418577
+1452,418866
+1453,419155
+1454,419453
+1455,419745
+1456,420022
+1457,420302
+1458,420583
+1459,420873
+1460,421173
+1461,421474
+1462,421766
+1463,422320
+1464,422603
+1465,423164
+1466,423462
+1467,423767
+1468,424064
+1469,424339
+1470,424616
+1471,424893
+1472,425188
+1473,425491
+1474,425788
+1475,426078
+1476,426380
+1477,426661
+1478,426938
+1479,427225
+1480,427523
+1481,427827
+1482,428129
+1483,428413
+1484,428698
+1485,428992
+1486,429276
+1487,429558
+1488,429867
+1489,430165
+1490,430470
+1491,430754
+1492,431034
+1493,431315
+1494,431615
+1495,431910
+1496,432209
+1497,432509
+1498,432799
+1499,433082
+1500,433364
+1501,433648
+1502,434211
+1503,434513
+1504,434810
+1505,435096
+1506,435370
+1507,435658
+1508,435951
+1509,436512
+1510,436819
+1511,437118
+1512,437400
+1513,437682
+1514,437965
+1515,438268
+1516,438570
+1517,438865
+1518,439158
+1519,439454
+1520,439740
+1521,440022
+1522,440312
+1523,440622
+1524,440934
+1525,441230
+1526,441518
+1527,441814
+1528,442109
+1529,442406
+1530,442992
+1531,443304
+1532,443606
+1533,443888
+1534,444175
+1535,444473
+1536,445060
+1537,445362
+1538,445658
+1539,445948
+1540,446226
+1541,446507
+1542,446800
+1543,447104
+1544,447402
+1545,447695
+1546,447980
+1547,448264
+1548,448548
+1549,448834
+1550,449137
+1551,449441
+1552,449748
+1553,450038
+1554,450325
+1555,450607
+1556,450895
+1557,451193
+1558,451501
+1559,451805
+1560,452101
+1561,452390
+1562,452678
+1563,452959
+1564,453250
+1565,453545
+1566,453852
+1567,454154
+1568,454444
+1569,454997
+1570,455293
+1571,455588
+1572,455888
+1573,456189
+1574,456487
+1575,456771
+1576,457045
+1577,457333
+1578,457634
+1579,457937
+1580,458524
+1581,458816
+1582,459103
+1583,459380
+1584,459664
+1585,459966
+1586,460275
+1587,460571
+1588,460858
+1589,461148
+1590,461433
+1591,461721
+1592,462014
+1593,462314
+1594,462621
+1595,462919
+1596,463197
+1597,463481
+1598,463765
+1599,464049
+1600,464361
+1601,464664
+1602,464960
+1603,465257
+1604,465538
+1605,465820
+1606,466104
+1607,466404
+1608,466707
+1609,467010
+1610,467308
+1611,467589
+1612,467878
+1613,468164
+1614,468459
+1615,468762
+1616,469065
+1617,469363
+1618,469660
+1619,469942
+1620,470230
+1621,470530
+1622,470837
+1623,471139
+1624,471444
+1625,471727
+1626,472019
+1627,472304
+1628,472589
+1629,472887
+1630,473201
+1631,473498
+1632,473792
+1633,474074
+1634,474362
+1635,474652
+1636,474942
+1637,475237
+1638,475547
+1639,475851
+1640,476136
+1641,476417
+1642,476705
+1643,477000
+1644,477307
+1645,477604
+1646,477898
+1647,478195
+1648,478480
+1649,478757
+1650,479040
+1651,479332
+1652,479633
+1653,479931
+1654,480218
+1655,480494
+1656,480779
+1657,481057
+1658,481340
+1659,481641
+1660,481941
+1661,482239
+1662,482525
+1663,482801
+1664,483071
+1665,483350
+1666,483634
+1667,483930
+1668,484220
+1669,484507
+1670,484786
+1671,485073
+1672,485352
+1673,485641
+1674,485939
+1675,486253
+1676,486556
+1677,486844
+1678,487129
+1679,487423
+1680,487719
+1681,488018
+1682,488320
+1683,488635
+1684,488931
+1685,489214
+1686,489497
+1687,489788
+1688,490090
+1689,490393
+1690,490695
+1691,490994
+1692,491287
+1693,491570
+1694,491850
+1695,492145
+1696,492445
+1697,492750
+1698,493046
+1699,493340
+1700,493623
+1701,493914
+1702,494199
+1703,494491
+1704,494789
+1705,495085
+1706,495370
+1707,495649
+1708,495924
+1709,496201
+1710,496499
+1711,497074
+1712,497376
+1713,497664
+1714,497945
+1715,498230
+1716,498517
+1717,498812
+1718,499114
+1719,499417
+1720,499701
+1721,499987
+1722,500268
+1723,500549
+1724,500847
+1725,501145
+1726,501448
+1727,501745
+1728,502039
+1729,502316
+1730,502601
+1731,502888
+1732,503191
+1733,503496
+1734,503794
+1735,504080
+1736,504372
+1737,504654
+1738,504936
+1739,505227
+1740,505528
+1741,505830
+1742,506125
+1743,506398
+1744,506679
+1745,506969
+1746,507256
+1747,507552
+1748,507855
+1749,508159
+1750,508455
+1751,508744
+1752,509019
+1753,509319
+1754,509623
+1755,509923
+1756,510220
+1757,510520
+1758,510804
+1759,511093
+1760,511371
+1761,511660
+1762,511970
+1763,512277
+1764,512567
+1765,512851
+1766,513135
+1767,513424
+1768,513719
+1769,514014
+1770,514318
+1771,514628
+1772,514919
+1773,515194
+1774,515476
+1775,515762
+1776,516065
+1777,516371
+1778,516667
+1779,516970
+1780,517266
+1781,517553
+1782,517832
+1783,518127
+1784,518426
+1785,518734
+1786,519028
+1787,519307
+1788,519594
+1789,519882
+1790,520149
+1791,520463
+1792,520768
+1793,521342
+1794,521627
+1795,521913
+1796,522209
+1797,522511
+1798,522815
+1799,523116
+1800,523416
+1801,523708
+1802,523999
+1803,524279
+1804,524577
+1805,524890
+1806,525198
+1807,525492
+1808,525780
+1809,526064
+1810,526355
+1811,526646
+1812,526941
+1813,527243
+1814,527549
+1815,527838
+1816,528118
+1817,528402
+1818,528689
+1819,528991
+1820,529293
+1821,529599
+1822,529897
+1823,530191
+1824,530471
+1825,530762
+1826,531057
+1827,531358
+1828,531668
+1829,531967
+1830,532257
+1831,532544
+1832,532828
+1833,533121
+1834,533416
+1835,533719
+1836,534012
+1837,534307
+1838,534592
+1839,534873
+1840,535161
+1841,535459
+1842,535768
+1843,536067
+1844,536364
+1845,536644
+1846,536930
+1847,537212
+1848,537505
+1849,537810
+1850,538115
+1851,538421
+1852,538707
+1853,538993
+1854,539278
+1855,539575
+1856,539874
+1857,540172
+1858,540472
+1859,540768
+1860,541052
+1861,541334
+1862,541616
+1863,541916
+1864,542226
+1865,542529
+1866,542825
+1867,543116
+1868,543407
+1869,543689
+1870,543983
+1871,544285
+1872,544590
+1873,544895
+1874,545182
+1875,545455
+1876,545741
+1877,546022
+1878,546306
+1879,546599
+1880,546792
+1881,547199
+1882,547482
+1883,547758
+1884,548032
+1885,548334
+1886,548632
+1887,548926
+1888,549217
+1889,549502
+1890,549784
+1891,550070
+1892,550348
+1893,550639
+1894,550952
+1895,551253
+1896,551532
+1897,551815
+1898,552096
+1899,552385
+1900,552680
+1901,552974
+1902,553282
+1903,553588
+1904,553876
+1905,554154
+1906,554439
+1907,554723
+1908,555026
+1909,555323
+1910,555613
+1911,555914
+1912,556203
+1913,556486
+1914,556765
+1915,557056
+1916,557361
+1917,557667
+1918,557962
+1919,558238
+1920,558527
+1921,558813
+1922,559102
+1923,559395
+1924,559695
+1925,559997
+1926,560295
+1927,560576
+1928,560846
+1929,561141
+1930,561435
+1931,561732
+1932,562019
+1933,562308
+1934,562591
+1935,563141
+1936,563423
+1937,563731
+1938,564030
+1939,564320
+1940,564601
+1941,564883
+1942,565164
+1943,565452
+1944,565741
+1945,566041
+1946,566615
+1947,566899
+1948,567185
+1949,567721
+1950,568027
+1951,568326
+1952,568624
+1953,568919
+1954,569204
+1955,569482
+1956,569762
+1957,570058
+1958,570366
+1959,570668
+1960,570957
+1961,571246
+1962,571538
+1963,571831
+1964,572122
+1965,572428
+1966,572730
+1967,573040
+1968,573328
+1969,573608
+1970,573893
+1971,574193
+1972,574786
+1973,575095
+1974,575387
+1975,575678
+1976,575959
+1977,576248
+1978,576551
+1979,576862
+1980,577162
+1981,577456
+1982,577741
+1983,578025
+1984,578310
+1985,578600
+1986,578901
+1987,579204
+1988,579790
+1989,580074
+1990,580357
+1991,580648
+1992,580947
+1993,581246
+1994,581543
+1995,581834
+1996,582119
+1997,582395
+1998,582668
+1999,582919
+2000,583239
+2001,583539
+2002,583821
+2003,584097
+2004,584363
+2005,584635
+2006,584903
+2007,585175
+2008,585454
+2009,585731
+2010,586011
+2011,586275
+2012,586525
+2013,586771
+2014,587030
+2015,587299
+2016,587572
+2017,587843
+2018,588113
+2019,588377
+2020,588643
+2021,588905
+2022,589177
+2023,589454
+2024,589747
+2025,590040
+2026,590316
+2027,590588
+2028,590863
+2029,591143
+2030,591417
+2031,591706
+2032,591999
+2033,592288
+2034,592571
+2035,592853
+2036,593387
+2037,593683
+2038,593990
+2039,594280
+2040,594563
+2041,594855
+2042,595127
+2043,595402
+2044,595690
+2045,595992
+2046,596278
+2047,596584
+2048,596879
+2049,597136
+2050,597402
+2051,597670
+2052,597925
+2053,598186
+2054,598458
+2055,598713
+2056,598969
+2057,599222
+2058,599468
+2059,599703
+2060,599952
+2061,600214
+2062,600483
+2063,600739
+2064,601011
+2065,601273
+2066,601537
+2067,601799
+2068,602064
+2069,602330
+2070,602610
+2071,602893
+2072,603179
+2073,603455
+2074,603722
+2075,603989
+2076,604277
+2077,604564
+2078,604844
+2079,605148
+2080,605459
+2081,605737
+2082,606008
+2083,606293
+2084,606587
+2085,606880
+2086,607178
+2087,607475
+2088,607766
+2089,608043
+2090,608309
+2091,608576
+2092,608853
+2093,609136
+2094,609425
+2095,609715
+2096,609987
+2097,610262
+2098,610544
+2099,610823
+2100,611108
+2101,611399
+2102,611695
+2103,611986
+2104,612263
+2105,612539
+2106,612819
+2107,613108
+2108,613399
+2109,613693
+2110,613983
+2111,614259
+2112,614539
+2113,614816
+2114,615089
+2115,615370
+2116,615676
+2117,615968
+2118,616250
+2119,616526
+2120,616803
+2121,617086
+2122,617366
+2123,617655
+2124,617949
+2125,618248
+2126,618528
+2127,618804
+2128,619081
+2129,619362
+2130,619653
+2131,619951
+2132,620249
+2133,620541
+2134,620826
+2135,621102
+2136,621379
+2137,621661
+2138,621944
+2139,622247
+2140,622541
+2141,622823
+2142,623089
+2143,623367
+2144,623638
+2145,623917
+2146,624191
+2147,624482
+2148,624765
+2149,625048
+2150,625309
+2151,625579
+2152,625853
+2153,626138
+2154,626427
+2155,626715
+2156,627000
+2157,627281
+2158,627555
+2159,627827
+2160,628103
+2161,628391
+2162,628688
+2163,628981
+2164,629494
+2165,629761
+2166,630027
+2167,630289
+2168,630561
+2169,630836
+2170,631110
+2171,631377
+2172,631636
+2173,631898
+2174,632156
+2175,632414
+2176,632688
+2177,632958
+2178,633229
+2179,633498
+2180,633768
+2181,634028
+2182,634283
+2183,634545
+2184,634826
+2185,635107
+2186,635394
+2187,635684
+2188,635966
+2189,636238
+2190,636520
+2191,636811
+2192,637105
+2193,637399
+2194,637704
+2195,637997
+2196,638282
+2197,638560
+2198,638846
+2199,639140
+2200,639446
+2201,639744
+2202,640039
+2203,640329
+2204,640615
+2205,640900
+2206,641178
+2207,641479
+2208,641777
+2209,642065
+2210,642337
+2211,642614
+2212,642887
+2213,643164
+2214,643439
+2215,643721
+2216,644005
+2217,644286
+2218,644547
+2219,644807
+2220,645063
+2221,645320
+2222,645581
+2223,645863
+2224,646132
+2225,646393
+2226,646658
+2227,646916
+2228,647168
+2229,647414
+2230,647672
+2231,647934
+2232,648203
+2233,648477
+2234,648733
+2235,648978
+2236,649232
+2237,649484
+2238,649734
+2239,649991
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/100_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/100_pvc.csv
new file mode 100644
index 00000000..45af02d9
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/100_pvc.csv
@@ -0,0 +1,2 @@
+,PVC
+0,546792
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/102.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/102.pk.gz
new file mode 100644
index 00000000..9d953739
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/102.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/102_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/102_all.csv
new file mode 100644
index 00000000..c30cba29
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/102_all.csv
@@ -0,0 +1,104 @@
+,R
+0,29276
+1,29582
+2,29880
+3,30161
+4,30440
+5,30716
+6,30999
+7,31289
+8,31586
+9,31882
+10,32180
+11,32466
+12,32734
+13,33010
+14,33297
+15,33595
+16,33883
+17,34058
+18,38824
+19,39116
+20,39401
+21,39683
+22,39977
+23,40280
+24,40589
+25,40880
+26,41157
+27,41732
+28,42014
+29,42616
+30,42916
+31,43203
+32,43481
+33,43767
+34,44056
+35,44351
+36,44650
+37,44945
+38,45244
+39,45521
+40,45799
+41,46088
+42,46380
+43,46679
+44,46978
+45,47268
+46,47561
+47,47841
+48,48116
+49,48405
+50,48709
+51,49004
+52,49293
+53,49579
+54,49858
+55,50143
+56,50419
+57,50701
+58,51013
+59,51313
+60,51597
+61,51882
+62,52161
+63,52441
+64,52724
+65,53012
+66,53318
+67,53615
+68,53893
+69,54174
+70,54451
+71,54733
+72,55019
+73,55315
+74,55618
+75,55911
+76,56192
+77,56469
+78,56743
+79,57035
+80,57329
+81,57621
+82,57922
+83,58215
+84,58491
+85,58766
+86,59044
+87,59336
+88,59638
+89,59933
+90,60224
+91,60515
+92,60791
+93,61062
+94,61349
+95,61647
+96,61947
+97,62242
+98,62531
+99,207743
+100,508163
+101,564059
+102,610218
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/102_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/102_pvc.csv
new file mode 100644
index 00000000..444d5c2e
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/102_pvc.csv
@@ -0,0 +1,5 @@
+,PVC
+0,34058
+1,207743
+2,508163
+3,564059
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/104.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/104.pk.gz
new file mode 100644
index 00000000..6dbad67a
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/104.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/104_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/104_all.csv
new file mode 100644
index 00000000..6ec4ed35
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/104_all.csv
@@ -0,0 +1,166 @@
+,R
+0,27184
+1,32445
+2,32734
+3,35359
+4,37977
+5,40302
+6,43244
+7,46456
+8,49934
+9,54295
+10,54584
+11,54879
+12,58669
+13,58951
+14,62126
+15,65057
+16,65335
+17,69704
+18,69994
+19,76428
+20,76700
+21,76968
+22,77257
+23,77548
+24,77838
+25,78133
+26,78425
+27,78707
+28,78983
+29,79260
+30,79554
+31,79845
+32,80136
+33,80430
+34,80721
+35,80999
+36,81267
+37,81553
+38,81845
+39,82134
+40,82323
+41,92507
+42,100116
+43,100349
+44,100624
+45,100902
+46,101187
+47,101478
+48,101765
+49,102062
+50,102348
+51,102616
+52,102893
+53,103176
+54,103463
+55,103751
+56,104041
+57,104339
+58,104612
+59,104881
+60,105172
+61,105449
+62,105741
+63,106039
+64,106329
+65,107175
+66,108057
+67,129379
+68,129666
+69,129950
+70,130236
+71,130502
+72,130770
+73,131056
+74,131330
+75,131611
+76,131901
+77,132201
+78,132487
+79,132761
+80,133047
+81,133334
+82,133918
+83,134218
+84,151739
+85,151994
+86,158700
+87,158986
+88,164223
+89,170628
+90,170911
+91,178185
+92,178462
+93,184006
+94,184280
+95,190077
+96,195048
+97,195345
+98,199415
+99,204078
+100,204339
+101,208997
+102,209282
+103,213664
+104,213951
+105,217442
+106,217713
+107,224744
+108,228826
+109,229117
+110,233197
+111,233483
+112,244295
+113,247777
+114,251570
+115,261484
+116,271107
+117,275200
+118,290119
+119,293292
+120,296521
+121,312298
+122,333358
+123,354993
+124,357900
+125,360810
+126,375724
+127,378378
+128,381286
+129,383891
+130,401149
+131,404091
+132,421334
+133,424261
+134,426872
+135,443562
+136,446179
+137,451753
+138,466051
+139,468698
+140,471610
+141,474231
+142,490904
+143,493798
+144,496725
+145,514573
+146,517471
+147,535288
+148,537927
+149,540554
+150,540851
+151,543458
+152,557513
+153,560153
+154,563029
+155,565951
+156,581181
+157,584087
+158,586986
+159,589936
+160,590218
+161,605714
+162,625303
+163,631459
+164,634366
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/104_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/104_pvc.csv
new file mode 100644
index 00000000..240e8785
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/104_pvc.csv
@@ -0,0 +1,3 @@
+,PVC
+0,82323
+1,333358
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/105.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/105.pk.gz
new file mode 100644
index 00000000..26e1aecc
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/105.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/105_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/105_all.csv
new file mode 100644
index 00000000..cd18b21d
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/105_all.csv
@@ -0,0 +1,2568 @@
+,R
+0,197
+1,459
+2,708
+3,965
+4,1222
+5,1479
+6,1741
+7,2015
+8,2287
+9,2550
+10,2803
+11,3052
+12,3303
+13,3563
+14,3835
+15,4102
+16,4371
+17,4635
+18,4901
+19,5154
+20,5407
+21,5561
+22,5923
+23,6195
+24,6468
+25,6736
+26,6996
+27,7246
+28,7506
+29,7767
+30,7922
+31,8290
+32,8564
+33,8829
+34,9093
+35,9350
+36,9600
+37,9845
+38,10105
+39,10380
+40,10645
+41,10908
+42,11168
+43,11424
+44,11676
+45,11931
+46,12187
+47,12449
+48,12625
+49,12987
+50,13252
+51,13507
+52,13755
+53,14006
+54,14253
+55,14517
+56,14786
+57,15053
+58,15311
+59,15575
+60,15834
+61,16084
+62,16335
+63,16590
+64,16854
+65,17128
+66,17398
+67,17660
+68,17916
+69,18168
+70,18426
+71,18682
+72,18946
+73,19213
+74,19483
+75,19747
+76,20008
+77,20262
+78,20515
+79,20764
+80,21031
+81,21202
+82,21576
+83,21838
+84,22100
+85,22351
+86,22604
+87,22860
+88,23114
+89,23376
+90,23641
+91,23916
+92,24180
+93,24429
+94,24677
+95,24842
+96,25191
+97,25462
+98,25732
+99,25997
+100,26254
+101,26516
+102,26771
+103,27020
+104,27273
+105,27529
+106,27795
+107,28066
+108,28335
+109,28590
+110,28835
+111,29089
+112,29349
+113,29605
+114,29869
+115,30137
+116,30401
+117,30662
+118,30917
+119,31165
+120,31416
+121,31669
+122,31934
+123,32207
+124,32476
+125,32735
+126,32986
+127,33234
+128,33490
+129,33749
+130,34010
+131,34274
+132,34542
+133,34818
+134,35076
+135,35322
+136,35571
+137,35830
+138,36093
+139,36366
+140,36633
+141,36793
+142,37151
+143,37413
+144,37666
+145,37915
+146,38166
+147,38430
+148,38692
+149,38959
+150,39225
+151,39477
+152,39720
+153,39975
+154,40231
+155,40489
+156,40745
+157,41009
+158,41272
+159,41527
+160,41781
+161,42027
+162,42274
+163,42524
+164,42793
+165,43058
+166,43322
+167,43573
+168,43819
+169,44061
+170,44313
+171,44567
+172,44816
+173,45075
+174,45339
+175,45608
+176,45763
+177,46102
+178,46347
+179,46594
+180,46844
+181,47107
+182,47371
+183,47635
+184,47888
+185,48140
+186,48393
+187,48643
+188,48889
+189,49144
+190,49410
+191,49678
+192,49943
+193,50198
+194,50448
+195,50692
+196,50949
+197,51207
+198,51472
+199,51736
+200,52001
+201,52257
+202,52512
+203,52769
+204,53020
+205,53271
+206,53537
+207,53815
+208,54078
+209,54333
+210,54588
+211,54837
+212,55091
+213,55349
+214,55607
+215,55873
+216,56140
+217,56413
+218,56667
+219,56918
+220,57165
+221,57314
+222,57666
+223,57941
+224,58210
+225,58473
+226,58730
+227,58985
+228,59239
+229,59493
+230,59742
+231,60003
+232,60270
+233,60543
+234,60808
+235,61062
+236,61311
+237,61559
+238,61819
+239,62081
+240,62349
+241,62609
+242,62876
+243,63129
+244,63382
+245,63635
+246,63886
+247,64135
+248,64400
+249,64674
+250,64937
+251,65187
+252,65437
+253,65686
+254,65933
+255,66189
+256,66444
+257,66706
+258,66867
+259,67228
+260,67487
+261,67736
+262,67978
+263,68225
+264,68475
+265,68740
+266,69009
+267,69269
+268,69522
+269,69772
+270,70027
+271,70273
+272,70523
+273,70780
+274,71046
+275,71311
+276,71579
+277,71831
+278,72079
+279,72326
+280,72485
+281,72846
+282,73117
+283,73378
+284,73643
+285,73903
+286,74159
+287,74299
+288,74659
+289,74917
+290,75183
+291,75459
+292,75727
+293,75983
+294,76232
+295,76484
+296,76736
+297,76996
+298,77257
+299,77526
+300,77787
+301,78055
+302,78312
+303,78561
+304,78807
+305,79062
+306,79316
+307,79584
+308,79856
+309,80120
+310,80369
+311,80624
+312,80882
+313,81130
+314,81379
+315,81641
+316,81906
+317,82171
+318,82437
+319,82690
+320,82934
+321,83182
+322,83444
+323,83703
+324,83970
+325,84231
+326,84493
+327,84746
+328,85003
+329,85257
+330,85506
+331,85760
+332,86031
+333,86305
+334,86570
+335,86821
+336,87072
+337,87318
+338,87572
+339,87832
+340,88094
+341,88365
+342,88631
+343,88901
+344,89157
+345,89408
+346,89656
+347,89912
+348,90172
+349,90444
+350,90715
+351,90981
+352,91233
+353,91486
+354,91746
+355,92000
+356,92254
+357,92522
+358,92791
+359,93060
+360,93330
+361,93583
+362,93829
+363,94084
+364,94354
+365,94619
+366,94885
+367,95156
+368,95424
+369,95681
+370,95936
+371,96189
+372,96445
+373,96707
+374,96985
+375,97256
+376,97522
+377,97777
+378,98030
+379,98278
+380,98541
+381,98809
+382,99077
+383,99343
+384,99617
+385,99881
+386,100135
+387,100383
+388,100635
+389,100894
+390,101165
+391,101440
+392,101700
+393,101958
+394,102114
+395,102469
+396,102720
+397,102973
+398,103234
+399,103501
+400,103763
+401,104025
+402,104278
+403,104528
+404,104771
+405,105027
+406,105293
+407,105559
+408,105817
+409,106081
+410,106338
+411,106589
+412,106842
+413,107090
+414,107344
+415,107603
+416,107876
+417,108026
+418,108394
+419,108646
+420,108896
+421,109140
+422,109396
+423,109661
+424,109926
+425,110187
+426,110453
+427,110715
+428,110963
+429,111206
+430,111456
+431,111711
+432,111976
+433,112247
+434,112508
+435,112762
+436,113014
+437,113270
+438,113518
+439,113773
+440,114034
+441,114304
+442,114567
+443,114833
+444,115088
+445,115337
+446,115582
+447,115838
+448,116104
+449,116375
+450,116638
+451,116900
+452,117157
+453,117412
+454,117667
+455,117917
+456,118173
+457,118343
+458,118714
+459,118982
+460,119238
+461,119486
+462,119737
+463,119988
+464,120243
+465,120508
+466,120776
+467,121034
+468,121301
+469,121560
+470,121812
+471,122056
+472,122311
+473,122568
+474,122838
+475,123113
+476,123377
+477,123628
+478,123879
+479,124141
+480,124392
+481,124644
+482,124911
+483,125182
+484,125449
+485,125715
+486,125969
+487,126111
+488,126467
+489,126734
+490,127000
+491,127270
+492,127536
+493,127798
+494,128052
+495,128309
+496,128565
+497,128820
+498,129080
+499,129351
+500,129626
+501,129891
+502,130143
+503,130392
+504,130645
+505,130900
+506,131161
+507,131425
+508,131691
+509,131954
+510,132219
+511,132469
+512,132718
+513,132964
+514,133223
+515,133485
+516,133758
+517,134026
+518,134289
+519,134536
+520,134789
+521,135047
+522,135304
+523,135559
+524,135828
+525,136095
+526,136365
+527,136626
+528,136878
+529,137126
+530,137379
+531,137650
+532,137917
+533,138184
+534,138448
+535,138713
+536,138962
+537,139219
+538,139474
+539,139730
+540,139994
+541,140273
+542,140545
+543,140808
+544,141061
+545,141309
+546,141559
+547,141823
+548,142093
+549,142360
+550,142624
+551,142894
+552,143156
+553,143409
+554,143657
+555,143912
+556,144176
+557,144449
+558,144722
+559,144986
+560,145245
+561,145496
+562,145753
+563,146008
+564,146267
+565,146531
+566,146801
+567,146948
+568,147327
+569,147583
+570,147834
+571,148082
+572,148342
+573,148613
+574,148885
+575,149143
+576,149402
+577,149654
+578,149905
+579,150161
+580,150414
+581,150672
+582,150937
+583,151213
+584,151473
+585,151724
+586,151972
+587,152224
+588,152474
+589,152734
+590,153001
+591,153268
+592,153530
+593,153796
+594,154053
+595,154305
+596,154556
+597,154816
+598,155079
+599,155354
+600,155628
+601,155886
+602,156137
+603,156390
+604,156647
+605,156804
+606,157166
+607,157432
+608,157698
+609,157964
+610,158223
+611,158470
+612,158719
+613,158968
+614,159231
+615,159497
+616,159765
+617,160028
+618,160283
+619,160531
+620,160782
+621,161035
+622,161288
+623,161547
+624,161815
+625,162090
+626,162350
+627,162595
+628,162842
+629,163094
+630,163347
+631,163608
+632,163759
+633,164142
+634,164406
+635,164669
+636,164923
+637,165172
+638,165421
+639,165681
+640,165846
+641,166216
+642,166493
+643,166752
+644,166999
+645,167254
+646,167512
+647,167769
+648,168028
+649,168297
+650,168562
+651,168827
+652,169088
+653,169335
+654,169586
+655,169843
+656,170115
+657,170382
+658,170650
+659,170916
+660,171176
+661,171428
+662,171683
+663,171937
+664,172198
+665,172461
+666,172732
+667,173000
+668,173262
+669,173510
+670,173758
+671,173932
+672,174273
+673,174543
+674,174806
+675,175072
+676,175329
+677,175591
+678,175839
+679,176088
+680,176337
+681,176601
+682,176871
+683,177138
+684,177402
+685,177659
+686,177902
+687,178156
+688,178413
+689,178670
+690,178925
+691,179192
+692,179453
+693,179713
+694,179972
+695,180217
+696,180463
+697,180721
+698,180995
+699,181259
+700,181522
+701,181784
+702,182039
+703,182289
+704,182544
+705,182799
+706,183060
+707,183323
+708,183598
+709,183866
+710,184124
+711,184373
+712,184621
+713,184872
+714,185138
+715,185410
+716,185677
+717,185942
+718,186205
+719,186465
+720,186718
+721,186967
+722,187223
+723,187490
+724,187762
+725,188031
+726,188289
+727,188543
+728,188790
+729,189047
+730,189300
+731,189560
+732,189821
+733,190092
+734,190356
+735,190613
+736,190867
+737,191117
+738,191365
+739,191627
+740,191901
+741,192170
+742,192430
+743,192692
+744,192943
+745,193196
+746,193453
+747,193711
+748,193976
+749,194244
+750,194520
+751,194784
+752,195037
+753,195287
+754,195542
+755,195798
+756,196069
+757,196339
+758,196607
+759,196870
+760,197136
+761,197392
+762,197646
+763,197901
+764,198164
+765,198328
+766,198704
+767,198974
+768,199229
+769,199477
+770,199731
+771,199987
+772,200243
+773,200503
+774,200765
+775,201029
+776,201291
+777,201545
+778,201790
+779,202040
+780,202295
+781,202561
+782,202829
+783,203096
+784,203354
+785,203609
+786,203858
+787,204110
+788,204367
+789,204629
+790,204889
+791,205158
+792,205431
+793,205691
+794,205935
+795,206183
+796,206436
+797,206697
+798,206967
+799,207237
+800,207501
+801,207765
+802,208030
+803,208281
+804,208530
+805,208788
+806,209058
+807,209328
+808,209602
+809,209868
+810,210125
+811,210373
+812,210634
+813,210892
+814,211157
+815,211424
+816,211691
+817,211952
+818,212213
+819,212473
+820,212720
+821,212971
+822,213236
+823,213513
+824,213784
+825,214048
+826,214309
+827,214564
+828,214821
+829,215081
+830,215338
+831,215605
+832,215876
+833,216154
+834,216417
+835,216672
+836,216922
+837,217179
+838,217436
+839,217704
+840,217978
+841,218247
+842,218507
+843,218766
+844,219023
+845,219277
+846,219529
+847,219792
+848,220061
+849,220334
+850,220607
+851,220867
+852,221115
+853,221371
+854,221634
+855,221897
+856,222161
+857,222431
+858,222700
+859,222962
+860,223225
+861,223476
+862,223730
+863,223990
+864,224268
+865,224537
+866,224806
+867,225067
+868,225324
+869,225578
+870,225838
+871,226096
+872,226362
+873,226629
+874,226905
+875,227170
+876,227426
+877,227678
+878,227932
+879,228185
+880,228455
+881,228729
+882,228998
+883,229260
+884,229523
+885,229780
+886,230035
+887,230288
+888,230548
+889,230817
+890,231091
+891,231261
+892,231623
+893,231878
+894,232128
+895,232390
+896,232656
+897,232920
+898,233189
+899,233461
+900,233724
+901,233984
+902,234237
+903,234491
+904,234747
+905,235025
+906,235299
+907,235568
+908,235831
+909,236091
+910,236343
+911,236599
+912,236862
+913,237132
+914,237399
+915,237676
+916,237945
+917,238086
+918,238446
+919,238699
+920,238952
+921,239215
+922,239493
+923,239760
+924,240018
+925,240279
+926,240537
+927,240789
+928,241036
+929,241292
+930,241560
+931,241828
+932,241980
+933,242352
+934,242609
+935,242856
+936,243108
+937,243366
+938,243631
+939,243894
+940,244157
+941,244417
+942,244673
+943,244925
+944,245172
+945,245422
+946,245684
+947,245958
+948,246225
+949,246484
+950,246739
+951,246994
+952,247245
+953,247498
+954,247754
+955,248018
+956,248282
+957,248556
+958,248816
+959,249067
+960,249312
+961,249564
+962,249816
+963,250084
+964,250360
+965,250625
+966,250883
+967,251139
+968,251398
+969,251649
+970,251896
+971,252158
+972,252424
+973,252697
+974,252969
+975,253225
+976,253475
+977,253729
+978,253992
+979,254253
+980,254424
+981,254793
+982,255064
+983,255326
+984,255588
+985,255840
+986,256094
+987,256354
+988,256630
+989,256905
+990,257179
+991,257444
+992,257700
+993,257955
+994,258217
+995,258482
+996,258752
+997,259022
+998,259299
+999,259572
+1000,259831
+1001,260083
+1002,260338
+1003,260599
+1004,260873
+1005,261155
+1006,261430
+1007,261697
+1008,261961
+1009,262226
+1010,262486
+1011,262738
+1012,263006
+1013,263281
+1014,263557
+1015,263832
+1016,264093
+1017,264344
+1018,264601
+1019,264869
+1020,265132
+1021,265400
+1022,265673
+1023,265944
+1024,266208
+1025,266471
+1026,266725
+1027,266979
+1028,267244
+1029,267526
+1030,267796
+1031,268066
+1032,268328
+1033,268584
+1034,268838
+1035,269099
+1036,269362
+1037,269524
+1038,269898
+1039,270176
+1040,270439
+1041,270698
+1042,270947
+1043,271199
+1044,271456
+1045,271728
+1046,272001
+1047,272267
+1048,272528
+1049,272789
+1050,273048
+1051,273304
+1052,273558
+1053,273821
+1054,274092
+1055,274369
+1056,274638
+1057,274894
+1058,275145
+1059,275397
+1060,275661
+1061,275922
+1062,276186
+1063,276453
+1064,276721
+1065,276980
+1066,277232
+1067,277485
+1068,277741
+1069,277995
+1070,278270
+1071,278543
+1072,278813
+1073,279072
+1074,279327
+1075,279576
+1076,279832
+1077,280099
+1078,280363
+1079,280624
+1080,280895
+1081,281166
+1082,281419
+1083,281662
+1084,281913
+1085,282166
+1086,282430
+1087,282703
+1088,282967
+1089,283230
+1090,283487
+1091,283746
+1092,283993
+1093,284243
+1094,284500
+1095,284766
+1096,285030
+1097,285297
+1098,285556
+1099,285807
+1100,286053
+1101,286306
+1102,286561
+1103,286826
+1104,287088
+1105,287351
+1106,287611
+1107,287869
+1108,288122
+1109,288368
+1110,288619
+1111,288874
+1112,289146
+1113,289415
+1114,289678
+1115,289928
+1116,290180
+1117,290428
+1118,290682
+1119,290943
+1120,291208
+1121,291470
+1122,291741
+1123,292008
+1124,292262
+1125,292505
+1126,292755
+1127,293010
+1128,293273
+1129,293546
+1130,293811
+1131,294069
+1132,294324
+1133,294583
+1134,294830
+1135,295079
+1136,295337
+1137,295603
+1138,295865
+1139,296132
+1140,296391
+1141,296540
+1142,296884
+1143,297141
+1144,297399
+1145,297662
+1146,297923
+1147,298184
+1148,298441
+1149,298698
+1150,298951
+1151,299197
+1152,299445
+1153,299704
+1154,299977
+1155,300242
+1156,300504
+1157,300755
+1158,301006
+1159,301255
+1160,301511
+1161,301767
+1162,302032
+1163,302295
+1164,302560
+1165,302821
+1166,303073
+1167,303314
+1168,303561
+1169,303812
+1170,304076
+1171,304344
+1172,304606
+1173,304863
+1174,305113
+1175,305365
+1176,305610
+1177,305855
+1178,306104
+1179,306367
+1180,306626
+1181,306887
+1182,307144
+1183,307391
+1184,307628
+1185,307875
+1186,308132
+1187,308391
+1188,308647
+1189,308905
+1190,309165
+1191,309415
+1192,309664
+1193,309909
+1194,310151
+1195,310400
+1196,310667
+1197,310931
+1198,311191
+1199,311441
+1200,311582
+1201,311927
+1202,312177
+1203,312430
+1204,312680
+1205,312936
+1206,313195
+1207,313458
+1208,313702
+1209,313943
+1210,314180
+1211,314406
+1212,314659
+1213,314911
+1214,315173
+1215,315417
+1216,315665
+1217,315907
+1218,316146
+1219,316385
+1220,316625
+1221,316868
+1222,317120
+1223,317375
+1224,317634
+1225,317891
+1226,318134
+1227,318375
+1228,318616
+1229,318869
+1230,319121
+1231,319376
+1232,319630
+1233,319891
+1234,320143
+1235,320388
+1236,320633
+1237,320880
+1238,321125
+1239,321384
+1240,321652
+1241,321913
+1242,322162
+1243,322411
+1244,322658
+1245,322904
+1246,323154
+1247,323406
+1248,323668
+1249,323929
+1250,324194
+1251,324453
+1252,324702
+1253,324945
+1254,325196
+1255,325444
+1256,325708
+1257,325981
+1258,326241
+1259,326496
+1260,326751
+1261,327009
+1262,327257
+1263,327509
+1264,327766
+1265,328035
+1266,328303
+1267,328571
+1268,328829
+1269,329079
+1270,329330
+1271,329589
+1272,329852
+1273,330120
+1274,330387
+1275,330652
+1276,330912
+1277,331169
+1278,331422
+1279,331673
+1280,331928
+1281,332194
+1282,332470
+1283,332740
+1284,332998
+1285,333249
+1286,333501
+1287,333757
+1288,334013
+1289,334274
+1290,334542
+1291,334807
+1292,335079
+1293,335338
+1294,335588
+1295,335836
+1296,336092
+1297,336350
+1298,336621
+1299,336895
+1300,337162
+1301,337417
+1302,337675
+1303,337931
+1304,338184
+1305,338437
+1306,338703
+1307,338969
+1308,339240
+1309,339510
+1310,339763
+1311,340009
+1312,340266
+1313,340530
+1314,340793
+1315,341059
+1316,341331
+1317,341594
+1318,341855
+1319,342114
+1320,342363
+1321,342617
+1322,342879
+1323,343155
+1324,343419
+1325,343688
+1326,343947
+1327,344201
+1328,344454
+1329,344715
+1330,344979
+1331,345246
+1332,345516
+1333,345792
+1334,346059
+1335,346319
+1336,346568
+1337,346825
+1338,347086
+1339,347363
+1340,347638
+1341,347911
+1342,348173
+1343,348437
+1344,348698
+1345,348956
+1346,349211
+1347,349477
+1348,349749
+1349,350019
+1350,350286
+1351,350542
+1352,350792
+1353,351048
+1354,351315
+1355,351583
+1356,351847
+1357,352119
+1358,352387
+1359,352649
+1360,352911
+1361,353166
+1362,353423
+1363,353688
+1364,353970
+1365,354237
+1366,354501
+1367,354763
+1368,355019
+1369,355277
+1370,355543
+1371,355812
+1372,356084
+1373,356359
+1374,356644
+1375,356908
+1376,357167
+1377,357423
+1378,357684
+1379,357951
+1380,358226
+1381,358494
+1382,358763
+1383,359023
+1384,359284
+1385,359537
+1386,359794
+1387,360055
+1388,360324
+1389,360595
+1390,360867
+1391,361132
+1392,361387
+1393,361634
+1394,361892
+1395,362154
+1396,362424
+1397,362689
+1398,362956
+1399,363220
+1400,363479
+1401,363734
+1402,363984
+1403,364238
+1404,364497
+1405,364777
+1406,365046
+1407,365308
+1408,365563
+1409,365817
+1410,366067
+1411,366321
+1412,366580
+1413,366843
+1414,367105
+1415,367375
+1416,367638
+1417,367888
+1418,368132
+1419,368382
+1420,368631
+1421,368895
+1422,369166
+1423,369426
+1424,369680
+1425,369933
+1426,370186
+1427,370429
+1428,370673
+1429,370927
+1430,371189
+1431,371374
+1432,371709
+1433,371964
+1434,372207
+1435,372444
+1436,372690
+1437,372941
+1438,373196
+1439,373449
+1440,373706
+1441,373959
+1442,374211
+1443,374458
+1444,374699
+1445,374944
+1446,375193
+1447,375455
+1448,375718
+1449,375979
+1450,376226
+1451,376469
+1452,376709
+1453,376956
+1454,377203
+1455,377452
+1456,377709
+1457,377965
+1458,378227
+1459,378476
+1460,378718
+1461,378955
+1462,379198
+1463,379443
+1464,379700
+1465,379964
+1466,380220
+1467,380469
+1468,380714
+1469,380963
+1470,381203
+1471,381441
+1472,381689
+1473,381947
+1474,382200
+1475,382458
+1476,382711
+1477,382954
+1478,383186
+1479,383428
+1480,383679
+1481,383929
+1482,384178
+1483,384430
+1484,384684
+1485,384927
+1486,385169
+1487,385408
+1488,385643
+1489,385878
+1490,386132
+1491,386395
+1492,386647
+1493,386892
+1494,387136
+1495,387378
+1496,387615
+1497,387859
+1498,388103
+1499,388355
+1500,388607
+1501,388864
+1502,389120
+1503,389365
+1504,389599
+1505,389838
+1506,390081
+1507,390331
+1508,390589
+1509,390845
+1510,391103
+1511,391350
+1512,391594
+1513,391841
+1514,392085
+1515,392324
+1516,392570
+1517,392830
+1518,393092
+1519,393349
+1520,393594
+1521,393839
+1522,394077
+1523,394324
+1524,394574
+1525,394831
+1526,395082
+1527,395338
+1528,395590
+1529,395839
+1530,396085
+1531,396325
+1532,396567
+1533,396817
+1534,397083
+1535,397342
+1536,397597
+1537,397848
+1538,398094
+1539,398333
+1540,398581
+1541,398834
+1542,399087
+1543,399341
+1544,399604
+1545,399870
+1546,400119
+1547,400361
+1548,400606
+1549,400854
+1550,401106
+1551,401371
+1552,401635
+1553,401894
+1554,402145
+1555,402399
+1556,402648
+1557,402897
+1558,403143
+1559,403399
+1560,403663
+1561,403932
+1562,404200
+1563,404448
+1564,404692
+1565,404938
+1566,405195
+1567,405447
+1568,405708
+1569,405967
+1570,406229
+1571,406481
+1572,406731
+1573,406979
+1574,407225
+1575,407472
+1576,407731
+1577,408002
+1578,408266
+1579,408515
+1580,408763
+1581,409008
+1582,409250
+1583,409497
+1584,409743
+1585,410001
+1586,410256
+1587,410517
+1588,410780
+1589,411026
+1590,411263
+1591,411506
+1592,411751
+1593,412009
+1594,412275
+1595,412532
+1596,412785
+1597,413034
+1598,413282
+1599,413524
+1600,413767
+1601,414014
+1602,414272
+1603,414531
+1604,414796
+1605,415058
+1606,415306
+1607,415547
+1608,415799
+1609,416056
+1610,416309
+1611,416568
+1612,416834
+1613,417094
+1614,417352
+1615,417603
+1616,417850
+1617,418097
+1618,418350
+1619,418616
+1620,418879
+1621,419143
+1622,419396
+1623,419642
+1624,419882
+1625,420132
+1626,420383
+1627,420633
+1628,420889
+1629,421151
+1630,421417
+1631,421669
+1632,421913
+1633,422156
+1634,422403
+1635,422654
+1636,422914
+1637,423176
+1638,423435
+1639,423688
+1640,423939
+1641,424189
+1642,424435
+1643,424673
+1644,424924
+1645,425182
+1646,425444
+1647,425703
+1648,425951
+1649,426195
+1650,426432
+1651,426679
+1652,426927
+1653,427075
+1654,427429
+1655,427689
+1656,427938
+1657,428183
+1658,428428
+1659,428666
+1660,428903
+1661,429144
+1662,429403
+1663,429656
+1664,429909
+1665,430157
+1666,430396
+1667,430628
+1668,430866
+1669,431110
+1670,431348
+1671,431594
+1672,431843
+1673,432098
+1674,432341
+1675,432577
+1676,432803
+1677,433031
+1678,433262
+1679,433506
+1680,434000
+1681,434247
+1682,434389
+1683,434712
+1684,434961
+1685,435189
+1686,435414
+1687,435671
+1688,435895
+1689,436140
+1690,436387
+1691,436631
+1692,436864
+1693,437093
+1694,437328
+1695,437547
+1696,437803
+1697,438047
+1698,438289
+1699,438537
+1700,438778
+1701,439032
+1702,439248
+1703,439474
+1704,439703
+1705,439929
+1706,440174
+1707,440418
+1708,440662
+1709,440893
+1710,441123
+1711,441344
+1712,441583
+1713,441811
+1714,442046
+1715,442280
+1716,442520
+1717,442766
+1718,443016
+1719,443253
+1720,443480
+1721,443710
+1722,443941
+1723,444412
+1724,444663
+1725,444906
+1726,445146
+1727,445624
+1728,445853
+1729,446083
+1730,446314
+1731,446554
+1732,446794
+1733,447043
+1734,447293
+1735,447528
+1736,447759
+1737,448218
+1738,448455
+1739,448693
+1740,448931
+1741,449173
+1742,449413
+1743,449651
+1744,449886
+1745,450112
+1746,450337
+1747,450564
+1748,450801
+1749,451046
+1750,451291
+1751,451533
+1752,451766
+1753,451997
+1754,452224
+1755,452454
+1756,452687
+1757,452919
+1758,453162
+1759,453404
+1760,453654
+1761,453897
+1762,454134
+1763,454358
+1764,454585
+1765,454815
+1766,455055
+1767,455299
+1768,455544
+1769,455790
+1770,456025
+1771,456262
+1772,456498
+1773,456672
+1774,456951
+1775,457186
+1776,457427
+1777,457668
+1778,457913
+1779,458159
+1780,458392
+1781,458616
+1782,458840
+1783,459076
+1784,459307
+1785,459542
+1786,459780
+1787,460020
+1788,460255
+1789,460491
+1790,460722
+1791,460945
+1792,461166
+1793,461388
+1794,461626
+1795,461872
+1796,462109
+1797,462342
+1798,462577
+1799,462806
+1800,463028
+1801,463254
+1802,463486
+1803,463635
+1804,463950
+1805,464194
+1806,464440
+1807,464673
+1808,464906
+1809,465128
+1810,465350
+1811,465573
+1812,465807
+1813,466046
+1814,466285
+1815,466528
+1816,466762
+1817,466998
+1818,467230
+1819,467456
+1820,467679
+1821,467905
+1822,468138
+1823,468377
+1824,468622
+1825,468866
+1826,469101
+1827,469327
+1828,469553
+1829,469781
+1830,470013
+1831,470248
+1832,470481
+1833,470721
+1834,470963
+1835,471204
+1836,471437
+1837,471665
+1838,472116
+1839,472351
+1840,472866
+1841,473079
+1842,473319
+1843,473556
+1844,473781
+1845,474005
+1846,474242
+1847,474474
+1848,474711
+1849,474956
+1850,475205
+1851,475447
+1852,475683
+1853,475907
+1854,476122
+1855,476360
+1856,476592
+1857,476834
+1858,477075
+1859,477316
+1860,477550
+1861,477791
+1862,478007
+1863,478252
+1864,478477
+1865,478948
+1866,479189
+1867,479437
+1868,479686
+1869,479918
+1870,480147
+1871,480379
+1872,480617
+1873,480848
+1874,481091
+1875,481334
+1876,481578
+1877,481822
+1878,482066
+1879,482302
+1880,482530
+1881,482762
+1882,482993
+1883,483237
+1884,483486
+1885,483737
+1886,483979
+1887,484216
+1888,484451
+1889,484684
+1890,484916
+1891,485148
+1892,485390
+1893,485627
+1894,485874
+1895,486123
+1896,486364
+1897,486589
+1898,486816
+1899,487046
+1900,487274
+1901,487509
+1902,487755
+1903,487997
+1904,488141
+1905,488470
+1906,488713
+1907,488940
+1908,489166
+1909,489389
+1910,489621
+1911,489859
+1912,490104
+1913,490254
+1914,490592
+1915,490827
+1916,491051
+1917,491284
+1918,491514
+1919,491744
+1920,491977
+1921,492220
+1922,492462
+1923,492701
+1924,492938
+1925,493168
+1926,493393
+1927,493616
+1928,493850
+1929,494093
+1930,494333
+1931,494576
+1932,494817
+1933,495052
+1934,495278
+1935,495510
+1936,495743
+1937,495972
+1938,496209
+1939,496451
+1940,496701
+1941,496946
+1942,497186
+1943,497413
+1944,497637
+1945,497865
+1946,498099
+1947,498339
+1948,498580
+1949,498823
+1950,499061
+1951,499304
+1952,499541
+1953,499771
+1954,499994
+1955,500221
+1956,500458
+1957,500698
+1958,500943
+1959,501187
+1960,501424
+1961,501654
+1962,501881
+1963,502115
+1964,502344
+1965,502578
+1966,502814
+1967,503057
+1968,503299
+1969,503539
+1970,503777
+1971,504004
+1972,504231
+1973,504454
+1974,504689
+1975,504933
+1976,505177
+1977,505411
+1978,505650
+1979,505887
+1980,506112
+1981,506340
+1982,506573
+1983,506802
+1984,507032
+1985,507275
+1986,507525
+1987,507762
+1988,507996
+1989,508222
+1990,508448
+1991,508671
+1992,508903
+1993,509141
+1994,509378
+1995,509617
+1996,509856
+1997,510097
+1998,510329
+1999,510556
+2000,510776
+2001,511004
+2002,511237
+2003,511474
+2004,511718
+2005,511961
+2006,512196
+2007,512424
+2008,512651
+2009,512882
+2010,513107
+2011,513339
+2012,513572
+2013,513812
+2014,514051
+2015,514294
+2016,514531
+2017,514756
+2018,514982
+2019,515205
+2020,515435
+2021,515677
+2022,515917
+2023,516150
+2024,516386
+2025,516622
+2026,516847
+2027,517077
+2028,517308
+2029,517534
+2030,517767
+2031,518008
+2032,518261
+2033,518506
+2034,518745
+2035,518972
+2036,519199
+2037,519427
+2038,519659
+2039,519898
+2040,520137
+2041,520379
+2042,520617
+2043,520860
+2044,521097
+2045,521324
+2046,521543
+2047,521773
+2048,522009
+2049,522246
+2050,522490
+2051,522741
+2052,522980
+2053,523209
+2054,523441
+2055,523678
+2056,523907
+2057,524141
+2058,524385
+2059,524632
+2060,524874
+2061,525122
+2062,525367
+2063,525597
+2064,525826
+2065,525964
+2066,526304
+2067,526552
+2068,526802
+2069,527048
+2070,527291
+2071,527529
+2072,527768
+2073,528009
+2074,528243
+2075,528481
+2076,528728
+2077,528986
+2078,529236
+2079,529485
+2080,529722
+2081,529958
+2082,530192
+2083,530434
+2084,530682
+2085,530929
+2086,531180
+2087,531430
+2088,531682
+2089,531923
+2090,532162
+2091,532394
+2092,532633
+2093,532874
+2094,533128
+2095,533386
+2096,533636
+2097,533881
+2098,534118
+2099,534361
+2100,534599
+2101,534839
+2102,535080
+2103,535331
+2104,535581
+2105,535834
+2106,536085
+2107,536323
+2108,536556
+2109,536791
+2110,537041
+2111,537288
+2112,537539
+2113,537789
+2114,538040
+2115,538281
+2116,538520
+2117,538762
+2118,538995
+2119,539231
+2120,539478
+2121,539739
+2122,539988
+2123,540234
+2124,540475
+2125,540710
+2126,540939
+2127,541176
+2128,541422
+2129,541664
+2130,541912
+2131,542161
+2132,542415
+2133,542654
+2134,542893
+2135,543125
+2136,543356
+2137,543594
+2138,543845
+2139,544102
+2140,544348
+2141,544595
+2142,544834
+2143,545073
+2144,545310
+2145,545549
+2146,545787
+2147,546033
+2148,546285
+2149,546541
+2150,546791
+2151,547026
+2152,547262
+2153,547495
+2154,547735
+2155,547979
+2156,548230
+2157,548475
+2158,548723
+2159,548967
+2160,549209
+2161,549447
+2162,549680
+2163,549917
+2164,550159
+2165,550413
+2166,550670
+2167,550922
+2168,551163
+2169,551402
+2170,551638
+2171,551877
+2172,552120
+2173,552366
+2174,552616
+2175,552864
+2176,553120
+2177,553369
+2178,553608
+2179,553838
+2180,554076
+2181,554315
+2182,554564
+2183,554822
+2184,555073
+2185,555320
+2186,555561
+2187,555806
+2188,556045
+2189,556281
+2190,556517
+2191,556762
+2192,557012
+2193,557266
+2194,557518
+2195,557757
+2196,557991
+2197,558224
+2198,558467
+2199,558710
+2200,558958
+2201,559205
+2202,559454
+2203,559699
+2204,559943
+2205,560182
+2206,560412
+2207,560648
+2208,560886
+2209,561136
+2210,561392
+2211,561645
+2212,561888
+2213,562125
+2214,562360
+2215,562597
+2216,562837
+2217,563077
+2218,563324
+2219,563572
+2220,563822
+2221,564073
+2222,564313
+2223,564540
+2224,564770
+2225,565009
+2226,565257
+2227,565509
+2228,565762
+2229,566018
+2230,566261
+2231,566508
+2232,566751
+2233,566990
+2234,567225
+2235,567473
+2236,567728
+2237,567986
+2238,568243
+2239,568490
+2240,568645
+2241,568965
+2242,569215
+2243,569462
+2244,569714
+2245,569969
+2246,570227
+2247,570478
+2248,570728
+2249,570974
+2250,571213
+2251,571449
+2252,571690
+2253,571951
+2254,572206
+2255,572460
+2256,572707
+2257,572951
+2258,573185
+2259,573428
+2260,573676
+2261,573919
+2262,574169
+2263,574428
+2264,574692
+2265,574940
+2266,575180
+2267,575421
+2268,575662
+2269,575905
+2270,576161
+2271,576421
+2272,576678
+2273,576929
+2274,577182
+2275,577429
+2276,577670
+2277,577906
+2278,578151
+2279,578406
+2280,578666
+2281,578925
+2282,579176
+2283,579425
+2284,579661
+2285,579799
+2286,580150
+2287,580403
+2288,580655
+2289,580910
+2290,581167
+2291,581421
+2292,581668
+2293,581909
+2294,582150
+2295,582390
+2296,582646
+2297,582906
+2298,583162
+2299,583413
+2300,583659
+2301,583899
+2302,584139
+2303,584384
+2304,584626
+2305,584874
+2306,585128
+2307,585392
+2308,585641
+2309,585882
+2310,586118
+2311,586358
+2312,586594
+2313,586841
+2314,587101
+2315,587355
+2316,587604
+2317,587853
+2318,588103
+2319,588340
+2320,588577
+2321,588818
+2322,589067
+2323,589317
+2324,589578
+2325,589836
+2326,590082
+2327,590320
+2328,590562
+2329,590810
+2330,591054
+2331,591303
+2332,591559
+2333,591815
+2334,592065
+2335,592316
+2336,592556
+2337,592792
+2338,593028
+2339,593277
+2340,593533
+2341,593784
+2342,594032
+2343,594278
+2344,594524
+2345,594760
+2346,594999
+2347,595730
+2348,595988
+2349,596246
+2350,596496
+2351,596730
+2352,596964
+2353,597205
+2354,597446
+2355,597693
+2356,597948
+2357,598204
+2358,598450
+2359,598700
+2360,598946
+2361,599184
+2362,599416
+2363,599655
+2364,599902
+2365,600157
+2366,600410
+2367,600663
+2368,600909
+2369,601141
+2370,601383
+2371,601627
+2372,601870
+2373,602112
+2374,602363
+2375,602616
+2376,602867
+2377,603113
+2378,603349
+2379,603584
+2380,603816
+2381,604064
+2382,604318
+2383,604571
+2384,604818
+2385,605068
+2386,605308
+2387,605548
+2388,605791
+2389,606025
+2390,606265
+2391,606514
+2392,606769
+2393,607020
+2394,607271
+2395,607504
+2396,607738
+2397,607967
+2398,608206
+2399,608448
+2400,608692
+2401,608858
+2402,609187
+2403,609438
+2404,609680
+2405,609915
+2406,610144
+2407,610377
+2408,610617
+2409,610863
+2410,611116
+2411,611361
+2412,611603
+2413,611834
+2414,612067
+2415,612305
+2416,612541
+2417,612772
+2418,613016
+2419,613266
+2420,613513
+2421,613757
+2422,613994
+2423,614226
+2424,614455
+2425,614691
+2426,614939
+2427,615184
+2428,615429
+2429,615672
+2430,615916
+2431,616148
+2432,616379
+2433,616612
+2434,616844
+2435,617079
+2436,617320
+2437,617522
+2438,617821
+2439,618060
+2440,618290
+2441,618520
+2442,618742
+2443,618976
+2444,619135
+2445,619463
+2446,619711
+2447,619955
+2448,620207
+2449,620449
+2450,620684
+2451,620915
+2452,621153
+2453,621394
+2454,621648
+2455,621909
+2456,622159
+2457,622404
+2458,622645
+2459,622890
+2460,623127
+2461,623368
+2462,623613
+2463,623867
+2464,624120
+2465,624379
+2466,624633
+2467,624870
+2468,625107
+2469,625347
+2470,625596
+2471,625845
+2472,626103
+2473,626356
+2474,626607
+2475,626853
+2476,627098
+2477,627342
+2478,627581
+2479,627824
+2480,628078
+2481,628345
+2482,628602
+2483,628854
+2484,629097
+2485,629340
+2486,629581
+2487,629824
+2488,630075
+2489,630330
+2490,630582
+2491,630838
+2492,631098
+2493,631339
+2494,631573
+2495,631813
+2496,632060
+2497,632314
+2498,632573
+2499,632833
+2500,633089
+2501,633335
+2502,633584
+2503,633831
+2504,634074
+2505,634317
+2506,634571
+2507,634832
+2508,635091
+2509,635351
+2510,635596
+2511,635837
+2512,636079
+2513,636332
+2514,636586
+2515,636845
+2516,637104
+2517,637363
+2518,637611
+2519,637859
+2520,638108
+2521,638350
+2522,638593
+2523,638851
+2524,639118
+2525,639374
+2526,639625
+2527,639873
+2528,640117
+2529,640358
+2530,640606
+2531,640856
+2532,641112
+2533,641370
+2534,641635
+2535,641889
+2536,642137
+2537,642376
+2538,642617
+2539,642862
+2540,643121
+2541,643388
+2542,643644
+2543,643899
+2544,644151
+2545,644403
+2546,644648
+2547,644894
+2548,645144
+2549,645406
+2550,645668
+2551,645935
+2552,646193
+2553,646445
+2554,646687
+2555,646936
+2556,647192
+2557,647450
+2558,647705
+2559,647968
+2560,648226
+2561,648483
+2562,648733
+2563,648977
+2564,649221
+2565,649471
+2566,649740
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/105_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/105_pvc.csv
new file mode 100644
index 00000000..ec030f45
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/105_pvc.csv
@@ -0,0 +1,42 @@
+,PVC
+0,5561
+1,7922
+2,12625
+3,21202
+4,24842
+5,36793
+6,45763
+7,57314
+8,66867
+9,72485
+10,74299
+11,102114
+12,108026
+13,118343
+14,126111
+15,146948
+16,156804
+17,163759
+18,165846
+19,173932
+20,198328
+21,231261
+22,238086
+23,241980
+24,254424
+25,269524
+26,296540
+27,311582
+28,371374
+29,427075
+30,434389
+31,456672
+32,463635
+33,488141
+34,490254
+35,525964
+36,568645
+37,579799
+38,608858
+39,617522
+40,619135
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/106.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/106.pk.gz
new file mode 100644
index 00000000..2d427479
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/106.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/106_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/106_all.csv
new file mode 100644
index 00000000..3e0c52f5
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/106_all.csv
@@ -0,0 +1,2028 @@
+,R
+0,351
+1,724
+2,1086
+3,1448
+4,1829
+5,2197
+6,2571
+7,2918
+8,3234
+9,3571
+10,3931
+11,4281
+12,4612
+13,4947
+14,5255
+15,5558
+16,5863
+17,6174
+18,6472
+19,6757
+20,7045
+21,7336
+22,7615
+23,7897
+24,8183
+25,8475
+26,8758
+27,9025
+28,9271
+29,9517
+30,9769
+31,10038
+32,10315
+33,10583
+34,10885
+35,11244
+36,11588
+37,11935
+38,12287
+39,12649
+40,13001
+41,13319
+42,13617
+43,13918
+44,14227
+45,14564
+46,14903
+47,15231
+48,15561
+49,15900
+50,16245
+51,16605
+52,16998
+53,17354
+54,17701
+55,18026
+56,18333
+57,18644
+58,18964
+59,19275
+60,19579
+61,19869
+62,20136
+63,20406
+64,20690
+65,20989
+66,21300
+67,21637
+68,22008
+69,22364
+70,22689
+71,23016
+72,23364
+73,23719
+74,24048
+75,24362
+76,24683
+77,25010
+78,25338
+79,25697
+80,26068
+81,26434
+82,26787
+83,27138
+84,27471
+85,27810
+86,28161
+87,28500
+88,28801
+89,29105
+90,29408
+91,29712
+92,30024
+93,30334
+94,30630
+95,30920
+96,31190
+97,31462
+98,31726
+99,32014
+100,32336
+101,32667
+102,32867
+103,33045
+104,33476
+105,33653
+106,33820
+107,34305
+108,34666
+109,34858
+110,35280
+111,35468
+112,35638
+113,36101
+114,36290
+115,36757
+116,36951
+117,37123
+118,37581
+119,37913
+120,38092
+121,38267
+122,38755
+123,38939
+124,39118
+125,39590
+126,39903
+127,40085
+128,40255
+129,40714
+130,41033
+131,41222
+132,41395
+133,41837
+134,42003
+135,42439
+136,42625
+137,42798
+138,43275
+139,43460
+140,43906
+141,44084
+142,44507
+143,44692
+144,44867
+145,45350
+146,45547
+147,45976
+148,46156
+149,46323
+150,46777
+151,46956
+152,47413
+153,47606
+154,47780
+155,48225
+156,48413
+157,48568
+158,49009
+159,49191
+160,49374
+161,49835
+162,50022
+163,50424
+164,50607
+165,50773
+166,51212
+167,51400
+168,51850
+169,52037
+170,52211
+171,52661
+172,52836
+173,53275
+174,53578
+175,53873
+176,54074
+177,54253
+178,54716
+179,54888
+180,55063
+181,55559
+182,55747
+183,56227
+184,56548
+185,56842
+186,57174
+187,57495
+188,57684
+189,57875
+190,58345
+191,58534
+192,58992
+193,59170
+194,59332
+195,59769
+196,59954
+197,60432
+198,60636
+199,61082
+200,61277
+201,61729
+202,62099
+203,62488
+204,62823
+205,63128
+206,63499
+207,63691
+208,63864
+209,64035
+210,64568
+211,64766
+212,65287
+213,65705
+214,66104
+215,66485
+216,66886
+217,67302
+218,67702
+219,68094
+220,68464
+221,68869
+222,69270
+223,69635
+224,69964
+225,70280
+226,70618
+227,70998
+228,71407
+229,71815
+230,72193
+231,72559
+232,72945
+233,73336
+234,73730
+235,74087
+236,74408
+237,74742
+238,75138
+239,75514
+240,75907
+241,76287
+242,76670
+243,77024
+244,77400
+245,77771
+246,78156
+247,78500
+248,78856
+249,79261
+250,79650
+251,80033
+252,80374
+253,80686
+254,81019
+255,81390
+256,81804
+257,82213
+258,82585
+259,82944
+260,83307
+261,83663
+262,84034
+263,84435
+264,84836
+265,85213
+266,85600
+267,86011
+268,86380
+269,86755
+270,87132
+271,87507
+272,87888
+273,88298
+274,88711
+275,89096
+276,89430
+277,89742
+278,90057
+279,90398
+280,90777
+281,91133
+282,91454
+283,91753
+284,92046
+285,92345
+286,92658
+287,93015
+288,93393
+289,93713
+290,94034
+291,94375
+292,94716
+293,95041
+294,95380
+295,95716
+296,95905
+297,96335
+298,96662
+299,97008
+300,97330
+301,97620
+302,97909
+303,98217
+304,98513
+305,98819
+306,99134
+307,99471
+308,99807
+309,100118
+310,100442
+311,100788
+312,101148
+313,101518
+314,101883
+315,102229
+316,102559
+317,102909
+318,103301
+319,103667
+320,104041
+321,104409
+322,104778
+323,105123
+324,105503
+325,105898
+326,106288
+327,106631
+328,106977
+329,107366
+330,107775
+331,108153
+332,108537
+333,108920
+334,109289
+335,109668
+336,110064
+337,110432
+338,110787
+339,111136
+340,111470
+341,111833
+342,112226
+343,112616
+344,112955
+345,113305
+346,113672
+347,114059
+348,114403
+349,114738
+350,115082
+351,115428
+352,115764
+353,116121
+354,116532
+355,116909
+356,117279
+357,117652
+358,117990
+359,118363
+360,118759
+361,119140
+362,119485
+363,119850
+364,120223
+365,120603
+366,121005
+367,121402
+368,121770
+369,122119
+370,122470
+371,122810
+372,123138
+373,123484
+374,123883
+375,124248
+376,124645
+377,125032
+378,125416
+379,125788
+380,126116
+381,126452
+382,126812
+383,127168
+384,127564
+385,127955
+386,128310
+387,128677
+388,129049
+389,129448
+390,129819
+391,130184
+392,130539
+393,130871
+394,131233
+395,131632
+396,132012
+397,132382
+398,132722
+399,133078
+400,133465
+401,133835
+402,134207
+403,134569
+404,134904
+405,135251
+406,135616
+407,135978
+408,136354
+409,136724
+410,137058
+411,137406
+412,137757
+413,138100
+414,138461
+415,138818
+416,139173
+417,139530
+418,139875
+419,140237
+420,140573
+421,140921
+422,141278
+423,141639
+424,141974
+425,142336
+426,142713
+427,143070
+428,143397
+429,143708
+430,144035
+431,144355
+432,144680
+433,144989
+434,145315
+435,145687
+436,146066
+437,146453
+438,146824
+439,147192
+440,147539
+441,147873
+442,148192
+443,148520
+444,148888
+445,149302
+446,149687
+447,150032
+448,150386
+449,150780
+450,151179
+451,151573
+452,151932
+453,152288
+454,152665
+455,153053
+456,153431
+457,153786
+458,154088
+459,154381
+460,154683
+461,155006
+462,155320
+463,155634
+464,155941
+465,156227
+466,156499
+467,156773
+468,157052
+469,157340
+470,157616
+471,157896
+472,158171
+473,158433
+474,158691
+475,158938
+476,159202
+477,159484
+478,159785
+479,160122
+480,160482
+481,160654
+482,161075
+483,161416
+484,161750
+485,162076
+486,162425
+487,162779
+488,162955
+489,163369
+490,163708
+491,164068
+492,164415
+493,164736
+494,165061
+495,165402
+496,165753
+497,166100
+498,166419
+499,166725
+500,167029
+501,167361
+502,167696
+503,168040
+504,168401
+505,168770
+506,169111
+507,169437
+508,169757
+509,170091
+510,170466
+511,170824
+512,171158
+513,171484
+514,171830
+515,172200
+516,172563
+517,172909
+518,173258
+519,173599
+520,173919
+521,174234
+522,174557
+523,174888
+524,175187
+525,175490
+526,175783
+527,176070
+528,176383
+529,176700
+530,177016
+531,177330
+532,177617
+533,177888
+534,178186
+535,178495
+536,178832
+537,179177
+538,179502
+539,179810
+540,180122
+541,180442
+542,180781
+543,181141
+544,181501
+545,181831
+546,182146
+547,182464
+548,182784
+549,183104
+550,183435
+551,183777
+552,184117
+553,184431
+554,184751
+555,185091
+556,185453
+557,185806
+558,186148
+559,186495
+560,186821
+561,187148
+562,187508
+563,187851
+564,188209
+565,188549
+566,188871
+567,189197
+568,189514
+569,189834
+570,190151
+571,190481
+572,190787
+573,191105
+574,191451
+575,191814
+576,192181
+577,192549
+578,192904
+579,193232
+580,193566
+581,193912
+582,194255
+583,194606
+584,194956
+585,195281
+586,195604
+587,195962
+588,196323
+589,196685
+590,197050
+591,197399
+592,197735
+593,198069
+594,198412
+595,198763
+596,199135
+597,199484
+598,199803
+599,200137
+600,200495
+601,200856
+602,201216
+603,201548
+604,201858
+605,202167
+606,202479
+607,202778
+608,203083
+609,203388
+610,203682
+611,203971
+612,204264
+613,204577
+614,204917
+615,205294
+616,205666
+617,206010
+618,206359
+619,206703
+620,207067
+621,207461
+622,207831
+623,208182
+624,208530
+625,208889
+626,209250
+627,209614
+628,209970
+629,210305
+630,210642
+631,210989
+632,211353
+633,211714
+634,212080
+635,212421
+636,212755
+637,213115
+638,213473
+639,213828
+640,214184
+641,214524
+642,214817
+643,215131
+644,215477
+645,215842
+646,216204
+647,216534
+648,216849
+649,217159
+650,217486
+651,217812
+652,218136
+653,218463
+654,218793
+655,219122
+656,219450
+657,219789
+658,220142
+659,220517
+660,220877
+661,221225
+662,221597
+663,221990
+664,222392
+665,222773
+666,223138
+667,223497
+668,223843
+669,224204
+670,224563
+671,224898
+672,225229
+673,225549
+674,225857
+675,226176
+676,226496
+677,226821
+678,227130
+679,227420
+680,227719
+681,228014
+682,228338
+683,228677
+684,229005
+685,229332
+686,229669
+687,229987
+688,230288
+689,230594
+690,230926
+691,231266
+692,231610
+693,231944
+694,232246
+695,232565
+696,232910
+697,233259
+698,233596
+699,233921
+700,234243
+701,234569
+702,234891
+703,235228
+704,235577
+705,235934
+706,236268
+707,236594
+708,236909
+709,237236
+710,237582
+711,237933
+712,238245
+713,238565
+714,238896
+715,239256
+716,239617
+717,239960
+718,240279
+719,240574
+720,240863
+721,241171
+722,241514
+723,241866
+724,242232
+725,242598
+726,242961
+727,243304
+728,243662
+729,244021
+730,244356
+731,244698
+732,245030
+733,245367
+734,245723
+735,246073
+736,246414
+737,246748
+738,247045
+739,247339
+740,247637
+741,247951
+742,248257
+743,248563
+744,248862
+745,249161
+746,249457
+747,249743
+748,250043
+749,250353
+750,250653
+751,250959
+752,251236
+753,251519
+754,251813
+755,252118
+756,252475
+757,252829
+758,253162
+759,253472
+760,253762
+761,254064
+762,254357
+763,254669
+764,254996
+765,255307
+766,255614
+767,255919
+768,256105
+769,256508
+770,256810
+771,257112
+772,257403
+773,257583
+774,257959
+775,258138
+776,258533
+777,258715
+778,259127
+779,259418
+780,259601
+781,259991
+782,260167
+783,260596
+784,260888
+785,261167
+786,261479
+787,261667
+788,262044
+789,262314
+790,262577
+791,262749
+792,262918
+793,263355
+794,263646
+795,263825
+796,264211
+797,264385
+798,264759
+799,265041
+800,265336
+801,265523
+802,265932
+803,266211
+804,266387
+805,266557
+806,266939
+807,267120
+808,267492
+809,267761
+810,267946
+811,268130
+812,268507
+813,268678
+814,269003
+815,269191
+816,269526
+817,269719
+818,270043
+819,270225
+820,270547
+821,270721
+822,271027
+823,271192
+824,271515
+825,271687
+826,272046
+827,272220
+828,272579
+829,272749
+830,273080
+831,273242
+832,273592
+833,273767
+834,274133
+835,274313
+836,274683
+837,274849
+838,275191
+839,275361
+840,275687
+841,275876
+842,276204
+843,276380
+844,276719
+845,276897
+846,277226
+847,277390
+848,277719
+849,277883
+850,278233
+851,278414
+852,278770
+853,278942
+854,279270
+855,279430
+856,279740
+857,279900
+858,280228
+859,280401
+860,280728
+861,280901
+862,281224
+863,281389
+864,281707
+865,281866
+866,282203
+867,282362
+868,282714
+869,282884
+870,283228
+871,283401
+872,283714
+873,283872
+874,284183
+875,284353
+876,284690
+877,284862
+878,285200
+879,285364
+880,285694
+881,285848
+882,286168
+883,286331
+884,286663
+885,286830
+886,287182
+887,287355
+888,287720
+889,287882
+890,288230
+891,288389
+892,288744
+893,288916
+894,289296
+895,289477
+896,289830
+897,289996
+898,290318
+899,290487
+900,290817
+901,290993
+902,291330
+903,291509
+904,291843
+905,292014
+906,292336
+907,292503
+908,292835
+909,293002
+910,293365
+911,293539
+912,293921
+913,294108
+914,294443
+915,294622
+916,294948
+917,295133
+918,295466
+919,295665
+920,296005
+921,296184
+922,296534
+923,296701
+924,297054
+925,297223
+926,297611
+927,297789
+928,298206
+929,298385
+930,298793
+931,298961
+932,299365
+933,299539
+934,299996
+935,300180
+936,300609
+937,300786
+938,301211
+939,301387
+940,301826
+941,302009
+942,302442
+943,302631
+944,303032
+945,303209
+946,303575
+947,303753
+948,304158
+949,304343
+950,304782
+951,304967
+952,305378
+953,305550
+954,305972
+955,306162
+956,306598
+957,306790
+958,307187
+959,307378
+960,307750
+961,307931
+962,308343
+963,308531
+964,308961
+965,309157
+966,309569
+967,309742
+968,310134
+969,310326
+970,310721
+971,310919
+972,311314
+973,311497
+974,311872
+975,312048
+976,312215
+977,312638
+978,312815
+979,313216
+980,313398
+981,313583
+982,313994
+983,314152
+984,314546
+985,314722
+986,315115
+987,315317
+988,315692
+989,315880
+990,316221
+991,316392
+992,316749
+993,316933
+994,317315
+995,317493
+996,317873
+997,318049
+998,318436
+999,318609
+1000,318997
+1001,319176
+1002,319583
+1003,319781
+1004,320165
+1005,320343
+1006,320689
+1007,320949
+1008,321140
+1009,321324
+1010,321758
+1011,321945
+1012,322330
+1013,322512
+1014,322885
+1015,323064
+1016,323472
+1017,323673
+1018,324066
+1019,324349
+1020,324616
+1021,324877
+1022,325060
+1023,325229
+1024,325622
+1025,325910
+1026,326191
+1027,326463
+1028,326644
+1029,327026
+1030,327201
+1031,327578
+1032,327798
+1033,328157
+1034,328438
+1035,328621
+1036,328790
+1037,329208
+1038,329390
+1039,329766
+1040,329977
+1041,330368
+1042,330650
+1043,330946
+1044,331240
+1045,331550
+1046,331727
+1047,332173
+1048,332514
+1049,332837
+1050,333164
+1051,333515
+1052,333836
+1053,334166
+1054,334515
+1055,334854
+1056,335177
+1057,335496
+1058,335796
+1059,336107
+1060,336422
+1061,336750
+1062,337067
+1063,337361
+1064,337655
+1065,337947
+1066,338235
+1067,338551
+1068,338874
+1069,339186
+1070,339505
+1071,339819
+1072,340122
+1073,340437
+1074,340780
+1075,341115
+1076,341456
+1077,341799
+1078,342110
+1079,342430
+1080,342773
+1081,343110
+1082,343449
+1083,343772
+1084,344088
+1085,344406
+1086,344704
+1087,345022
+1088,345357
+1089,345683
+1090,346011
+1091,346322
+1092,346615
+1093,346899
+1094,347169
+1095,347457
+1096,347753
+1097,347955
+1098,348121
+1099,348514
+1100,348695
+1101,349047
+1102,349247
+1103,349589
+1104,349772
+1105,350124
+1106,350322
+1107,350657
+1108,350904
+1109,351083
+1110,351245
+1111,351652
+1112,351850
+1113,352243
+1114,352514
+1115,352780
+1116,352956
+1117,353107
+1118,353546
+1119,353743
+1120,354156
+1121,354350
+1122,354748
+1123,355013
+1124,355273
+1125,355537
+1126,355810
+1127,356114
+1128,356424
+1129,356611
+1130,357013
+1131,357301
+1132,357572
+1133,357875
+1134,358213
+1135,358410
+1136,358830
+1137,359135
+1138,359417
+1139,359603
+1140,359769
+1141,360202
+1142,360397
+1143,360817
+1144,361113
+1145,361386
+1146,361564
+1147,361721
+1148,362144
+1149,362335
+1150,362777
+1151,363076
+1152,363365
+1153,363646
+1154,363922
+1155,364198
+1156,364482
+1157,364788
+1158,365084
+1159,365375
+1160,365676
+1161,365969
+1162,366246
+1163,366521
+1164,366816
+1165,367131
+1166,367442
+1167,367732
+1168,368015
+1169,368302
+1170,368594
+1171,368896
+1172,369202
+1173,369504
+1174,369794
+1175,370090
+1176,370399
+1177,370704
+1178,371019
+1179,371348
+1180,371665
+1181,371991
+1182,372305
+1183,372594
+1184,372922
+1185,373279
+1186,373628
+1187,373941
+1188,374246
+1189,374526
+1190,374816
+1191,375130
+1192,375473
+1193,375803
+1194,376161
+1195,376517
+1196,376842
+1197,377189
+1198,377550
+1199,377769
+1200,378246
+1201,378447
+1202,378856
+1203,379154
+1204,379454
+1205,379791
+1206,379989
+1207,380163
+1208,380625
+1209,380802
+1210,381244
+1211,381422
+1212,381587
+1213,382055
+1214,382255
+1215,382722
+1216,382901
+1217,383325
+1218,383507
+1219,383962
+1220,384153
+1221,384651
+1222,384834
+1223,385283
+1224,385466
+1225,385927
+1226,386109
+1227,386609
+1228,386797
+1229,387278
+1230,387456
+1231,387908
+1232,388105
+1233,388592
+1234,388792
+1235,389252
+1236,389598
+1237,389919
+1238,390108
+1239,390289
+1240,390780
+1241,390977
+1242,391457
+1243,391653
+1244,391821
+1245,392256
+1246,392450
+1247,392911
+1248,393111
+1249,393573
+1250,393902
+1251,394083
+1252,394525
+1253,394868
+1254,395075
+1255,395262
+1256,395715
+1257,395911
+1258,396343
+1259,396528
+1260,396977
+1261,397172
+1262,397648
+1263,397996
+1264,398180
+1265,398358
+1266,398815
+1267,399000
+1268,399493
+1269,399869
+1270,400210
+1271,400565
+1272,400759
+1273,401234
+1274,401621
+1275,401980
+1276,402358
+1277,402552
+1278,403003
+1279,403354
+1280,403563
+1281,403755
+1282,404238
+1283,404438
+1284,404874
+1285,405059
+1286,405507
+1287,405730
+1288,406196
+1289,406537
+1290,406733
+1291,406911
+1292,407349
+1293,407531
+1294,407994
+1295,408326
+1296,408524
+1297,408707
+1298,409137
+1299,409310
+1300,409759
+1301,409952
+1302,410410
+1303,410603
+1304,411048
+1305,411228
+1306,411647
+1307,411830
+1308,412275
+1309,412468
+1310,412937
+1311,413117
+1312,413545
+1313,413724
+1314,414181
+1315,414375
+1316,414854
+1317,415043
+1318,415490
+1319,415669
+1320,416125
+1321,416321
+1322,416783
+1323,416978
+1324,417433
+1325,417616
+1326,418055
+1327,418235
+1328,418700
+1329,418900
+1330,419368
+1331,419551
+1332,419996
+1333,420172
+1334,420622
+1335,420819
+1336,421291
+1337,421475
+1338,421926
+1339,422109
+1340,422540
+1341,422720
+1342,423197
+1343,423385
+1344,423846
+1345,424031
+1346,424473
+1347,424653
+1348,425135
+1349,425330
+1350,425800
+1351,425984
+1352,426415
+1353,426598
+1354,427040
+1355,427235
+1356,427682
+1357,428029
+1358,428376
+1359,428567
+1360,428996
+1361,429334
+1362,429690
+1363,430034
+1364,430234
+1365,430676
+1366,431023
+1367,431370
+1368,431729
+1369,432092
+1370,432449
+1371,432794
+1372,433157
+1373,433354
+1374,433827
+1375,434228
+1376,434601
+1377,434967
+1378,435333
+1379,435527
+1380,436007
+1381,436394
+1382,436598
+1383,437054
+1384,437425
+1385,437617
+1386,438091
+1387,438296
+1388,438754
+1389,438974
+1390,439408
+1391,439596
+1392,439780
+1393,440248
+1394,440447
+1395,440928
+1396,441116
+1397,441568
+1398,441749
+1399,442204
+1400,442402
+1401,442881
+1402,443072
+1403,443535
+1404,443716
+1405,444163
+1406,444354
+1407,444823
+1408,445186
+1409,445386
+1410,445817
+1411,446000
+1412,446447
+1413,446651
+1414,447085
+1415,447286
+1416,447679
+1417,447867
+1418,448294
+1419,448625
+1420,448824
+1421,449288
+1422,449497
+1423,449961
+1424,450140
+1425,450571
+1426,450762
+1427,451233
+1428,451593
+1429,451792
+1430,452236
+1431,452585
+1432,452777
+1433,453263
+1434,453460
+1435,453954
+1436,454149
+1437,454605
+1438,454794
+1439,455269
+1440,455470
+1441,455958
+1442,456156
+1443,456607
+1444,456789
+1445,457256
+1446,457462
+1447,457939
+1448,458137
+1449,458600
+1450,458785
+1451,459217
+1452,459543
+1453,459895
+1454,460098
+1455,460583
+1456,460935
+1457,461270
+1458,461646
+1459,462055
+1460,462436
+1461,462826
+1462,463210
+1463,463594
+1464,463964
+1465,464358
+1466,464753
+1467,465135
+1468,465504
+1469,465879
+1470,466295
+1471,466701
+1472,467086
+1473,467452
+1474,467844
+1475,468248
+1476,468625
+1477,469011
+1478,469379
+1479,469758
+1480,470139
+1481,470523
+1482,470923
+1483,471280
+1484,471630
+1485,472017
+1486,472405
+1487,472777
+1488,473161
+1489,473528
+1490,473893
+1491,474239
+1492,474595
+1493,474987
+1494,475404
+1495,475811
+1496,476210
+1497,476609
+1498,477011
+1499,477417
+1500,477810
+1501,478186
+1502,478548
+1503,478946
+1504,479350
+1505,479741
+1506,480157
+1507,480525
+1508,480891
+1509,481278
+1510,481684
+1511,482100
+1512,482465
+1513,482856
+1514,483247
+1515,483657
+1516,484024
+1517,484387
+1518,484754
+1519,485114
+1520,485451
+1521,485814
+1522,486203
+1523,486575
+1524,486920
+1525,487281
+1526,487632
+1527,488036
+1528,488404
+1529,488777
+1530,489159
+1531,489515
+1532,489903
+1533,490297
+1534,490658
+1535,491007
+1536,491365
+1537,491725
+1538,492105
+1539,492498
+1540,492881
+1541,493242
+1542,493581
+1543,493930
+1544,494290
+1545,494664
+1546,495055
+1547,495412
+1548,495772
+1549,496151
+1550,496537
+1551,496929
+1552,497312
+1553,497671
+1554,498015
+1555,498354
+1556,498710
+1557,499063
+1558,499430
+1559,499793
+1560,500132
+1561,500498
+1562,500893
+1563,501269
+1564,501647
+1565,502007
+1566,502351
+1567,502721
+1568,503121
+1569,503523
+1570,503919
+1571,504293
+1572,504701
+1573,505109
+1574,505518
+1575,505915
+1576,506283
+1577,506658
+1578,507039
+1579,507438
+1580,507860
+1581,508242
+1582,508633
+1583,509017
+1584,509414
+1585,509828
+1586,510218
+1587,510603
+1588,510953
+1589,511348
+1590,511749
+1591,512125
+1592,512474
+1593,512787
+1594,513098
+1595,513402
+1596,513721
+1597,514036
+1598,514337
+1599,514636
+1600,514928
+1601,515230
+1602,515532
+1603,515843
+1604,516145
+1605,516453
+1606,516779
+1607,516966
+1608,517393
+1609,517707
+1610,517903
+1611,518363
+1612,518712
+1613,518900
+1614,519327
+1615,519526
+1616,519948
+1617,520159
+1618,520592
+1619,520784
+1620,520961
+1621,521410
+1622,521581
+1623,522038
+1624,522222
+1625,522692
+1626,522886
+1627,523339
+1628,523512
+1629,523932
+1630,524111
+1631,524593
+1632,524792
+1633,525253
+1634,525436
+1635,525885
+1636,526060
+1637,526517
+1638,526709
+1639,527179
+1640,527372
+1641,527798
+1642,527974
+1643,528381
+1644,528564
+1645,529019
+1646,529210
+1647,529671
+1648,529847
+1649,530284
+1650,530461
+1651,530923
+1652,531116
+1653,531590
+1654,531779
+1655,532223
+1656,532398
+1657,532810
+1658,532997
+1659,533447
+1660,533637
+1661,534071
+1662,534246
+1663,534634
+1664,534815
+1665,535257
+1666,535442
+1667,535903
+1668,536087
+1669,536518
+1670,536698
+1671,537159
+1672,537357
+1673,537823
+1674,538016
+1675,538457
+1676,538638
+1677,539065
+1678,539257
+1679,539703
+1680,540036
+1681,540229
+1682,540420
+1683,540870
+1684,541055
+1685,541489
+1686,541810
+1687,542006
+1688,542194
+1689,542661
+1690,542836
+1691,543274
+1692,543449
+1693,543906
+1694,544110
+1695,544571
+1696,544770
+1697,545195
+1698,545374
+1699,545788
+1700,545986
+1701,546165
+1702,546631
+1703,546813
+1704,547268
+1705,547444
+1706,547863
+1707,548044
+1708,548506
+1709,548697
+1710,549133
+1711,549313
+1712,549737
+1713,549915
+1714,550357
+1715,550551
+1716,550993
+1717,551181
+1718,551597
+1719,551774
+1720,552196
+1721,552382
+1722,552839
+1723,553033
+1724,553492
+1725,553677
+1726,554115
+1727,554299
+1728,554758
+1729,554954
+1730,555425
+1731,555613
+1732,556035
+1733,556218
+1734,556678
+1735,556879
+1736,557337
+1737,557527
+1738,557973
+1739,558173
+1740,558593
+1741,558775
+1742,559248
+1743,559451
+1744,559923
+1745,560105
+1746,560287
+1747,560730
+1748,560919
+1749,561382
+1750,561582
+1751,561759
+1752,562230
+1753,562410
+1754,562879
+1755,563065
+1756,563243
+1757,563759
+1758,564145
+1759,564497
+1760,564687
+1761,564853
+1762,565339
+1763,565756
+1764,565959
+1765,566139
+1766,566620
+1767,566798
+1768,566969
+1769,567457
+1770,567850
+1771,568197
+1772,568562
+1773,568757
+1774,568930
+1775,569392
+1776,569787
+1777,570197
+1778,570594
+1779,570977
+1780,571390
+1781,571770
+1782,572127
+1783,572496
+1784,572898
+1785,573260
+1786,573649
+1787,574070
+1788,574479
+1789,574893
+1790,575311
+1791,575737
+1792,576185
+1793,576618
+1794,577058
+1795,577458
+1796,577858
+1797,578240
+1798,578656
+1799,579103
+1800,579528
+1801,579873
+1802,580227
+1803,580604
+1804,580952
+1805,581292
+1806,581505
+1807,581686
+1808,582134
+1809,582480
+1810,582836
+1811,583183
+1812,583391
+1813,583578
+1814,584064
+1815,584460
+1816,584865
+1817,585074
+1818,585266
+1819,585778
+1820,586184
+1821,586376
+1822,586550
+1823,587071
+1824,587510
+1825,587713
+1826,587897
+1827,588394
+1828,588831
+1829,589023
+1830,589216
+1831,589757
+1832,589948
+1833,590128
+1834,590618
+1835,591021
+1836,591216
+1837,591396
+1838,591926
+1839,592352
+1840,592541
+1841,592712
+1842,593213
+1843,593646
+1844,593850
+1845,594033
+1846,594550
+1847,594966
+1848,595155
+1849,595323
+1850,595846
+1851,596305
+1852,596500
+1853,596681
+1854,597174
+1855,597364
+1856,597537
+1857,598061
+1858,598523
+1859,598719
+1860,598900
+1861,599388
+1862,599565
+1863,599737
+1864,600277
+1865,600707
+1866,600906
+1867,601078
+1868,601572
+1869,601984
+1870,602185
+1871,602372
+1872,602902
+1873,603298
+1874,603487
+1875,603658
+1876,604146
+1877,604570
+1878,604773
+1879,604958
+1880,605452
+1881,605834
+1882,606024
+1883,606203
+1884,606699
+1885,607133
+1886,607330
+1887,607521
+1888,607993
+1889,608179
+1890,608353
+1891,608853
+1892,609042
+1893,609229
+1894,609708
+1895,609895
+1896,610319
+1897,610510
+1898,610682
+1899,611163
+1900,611355
+1901,611528
+1902,611988
+1903,612166
+1904,612630
+1905,612822
+1906,613029
+1907,613516
+1908,613704
+1909,614170
+1910,614511
+1911,614694
+1912,615159
+1913,615527
+1914,615730
+1915,616211
+1916,616564
+1917,616750
+1918,616931
+1919,617447
+1920,617876
+1921,618074
+1922,618560
+1923,618757
+1924,618940
+1925,619451
+1926,619877
+1927,620082
+1928,620275
+1929,620775
+1930,621146
+1931,621340
+1932,621523
+1933,622062
+1934,622475
+1935,622845
+1936,623040
+1937,623224
+1938,623724
+1939,624132
+1940,624339
+1941,624521
+1942,625017
+1943,625370
+1944,625559
+1945,626017
+1946,626238
+1947,626675
+1948,626983
+1949,627318
+1950,627629
+1951,627831
+1952,628008
+1953,628493
+1954,628697
+1955,629117
+1956,629405
+1957,629680
+1958,629971
+1959,630258
+1960,630568
+1961,630774
+1962,630950
+1963,631401
+1964,631585
+1965,631982
+1966,632305
+1967,632510
+1968,632695
+1969,633131
+1970,633326
+1971,633703
+1972,633883
+1973,634048
+1974,634470
+1975,634660
+1976,635076
+1977,635269
+1978,635655
+1979,635836
+1980,636227
+1981,636406
+1982,636840
+1983,637038
+1984,637473
+1985,637662
+1986,638078
+1987,638257
+1988,638661
+1989,638856
+1990,639301
+1991,639491
+1992,639899
+1993,640085
+1994,640262
+1995,640692
+1996,640877
+1997,641308
+1998,641617
+1999,641807
+2000,641989
+2001,642400
+2002,642572
+2003,642969
+2004,643157
+2005,643560
+2006,643761
+2007,644140
+2008,644413
+2009,644600
+2010,644768
+2011,645187
+2012,645388
+2013,645801
+2014,645996
+2015,646177
+2016,646616
+2017,646915
+2018,647223
+2019,647570
+2020,647778
+2021,648265
+2022,648622
+2023,648968
+2024,649162
+2025,649340
+2026,649791
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/106_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/106_pvc.csv
new file mode 100644
index 00000000..1acc8c85
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/106_pvc.csv
@@ -0,0 +1,521 @@
+,PVC
+0,32867
+1,33045
+2,33653
+3,33820
+4,34858
+5,35468
+6,35638
+7,36290
+8,36951
+9,37123
+10,38092
+11,38267
+12,38939
+13,39118
+14,40085
+15,40255
+16,41222
+17,41395
+18,42003
+19,42625
+20,42798
+21,43460
+22,44084
+23,44692
+24,44867
+25,45547
+26,46156
+27,46323
+28,46956
+29,47606
+30,47780
+31,48413
+32,48568
+33,49191
+34,49374
+35,50022
+36,50607
+37,50773
+38,51400
+39,52037
+40,52211
+41,52836
+42,54074
+43,54253
+44,54888
+45,55063
+46,55747
+47,57684
+48,57875
+49,58534
+50,59170
+51,59332
+52,59954
+53,60636
+54,61277
+55,63691
+56,63864
+57,64035
+58,64766
+59,95905
+60,160654
+61,162955
+62,256105
+63,257583
+64,258138
+65,258715
+66,259601
+67,260167
+68,261667
+69,262749
+70,262918
+71,263825
+72,264385
+73,265523
+74,266387
+75,266557
+76,267120
+77,267946
+78,268130
+79,268678
+80,269191
+81,269719
+82,270225
+83,270721
+84,271192
+85,271687
+86,272220
+87,272749
+88,273242
+89,273767
+90,274313
+91,274849
+92,275361
+93,275876
+94,276380
+95,276897
+96,277390
+97,277883
+98,278414
+99,278942
+100,279430
+101,279900
+102,280401
+103,280901
+104,281389
+105,281866
+106,282362
+107,282884
+108,283401
+109,283872
+110,284353
+111,284862
+112,285364
+113,285848
+114,286331
+115,286830
+116,287355
+117,287882
+118,288389
+119,288916
+120,289477
+121,289996
+122,290487
+123,290993
+124,291509
+125,292014
+126,292503
+127,293002
+128,293539
+129,294108
+130,294622
+131,295133
+132,295665
+133,296184
+134,296701
+135,297223
+136,297789
+137,298385
+138,298961
+139,299539
+140,300180
+141,300786
+142,301387
+143,302009
+144,302631
+145,303209
+146,303753
+147,304343
+148,304967
+149,305550
+150,306162
+151,306790
+152,307378
+153,307931
+154,308531
+155,309157
+156,309742
+157,310326
+158,310919
+159,311497
+160,312048
+161,312215
+162,312815
+163,313398
+164,313583
+165,314152
+166,314722
+167,315317
+168,315880
+169,316392
+170,316933
+171,317493
+172,318049
+173,318609
+174,319176
+175,319781
+176,320343
+177,321140
+178,321324
+179,321945
+180,322512
+181,323064
+182,323673
+183,325060
+184,325229
+185,326644
+186,327201
+187,327798
+188,328621
+189,328790
+190,329390
+191,329977
+192,331727
+193,347955
+194,348121
+195,348695
+196,349247
+197,349772
+198,350322
+199,351083
+200,351245
+201,351850
+202,352956
+203,353107
+204,353743
+205,354350
+206,356611
+207,358410
+208,359603
+209,359769
+210,360397
+211,361564
+212,361721
+213,362335
+214,377769
+215,378447
+216,379989
+217,380163
+218,380802
+219,381422
+220,381587
+221,382255
+222,382901
+223,383507
+224,384153
+225,384834
+226,385466
+227,386109
+228,386797
+229,387456
+230,388105
+231,388792
+232,390108
+233,390289
+234,390977
+235,391653
+236,391821
+237,392450
+238,393111
+239,394083
+240,395075
+241,395262
+242,395911
+243,396528
+244,397172
+245,398180
+246,398358
+247,399000
+248,400759
+249,402552
+250,403563
+251,403755
+252,404438
+253,405059
+254,405730
+255,406733
+256,406911
+257,407531
+258,408524
+259,408707
+260,409310
+261,409952
+262,410603
+263,411228
+264,411830
+265,412468
+266,413117
+267,413724
+268,414375
+269,415043
+270,415669
+271,416321
+272,416978
+273,417616
+274,418235
+275,418900
+276,419551
+277,420172
+278,420819
+279,421475
+280,422109
+281,422720
+282,423385
+283,424031
+284,424653
+285,425330
+286,425984
+287,426598
+288,427235
+289,428567
+290,430234
+291,433354
+292,435527
+293,436598
+294,437617
+295,438296
+296,438974
+297,439596
+298,439780
+299,440447
+300,441116
+301,441749
+302,442402
+303,443072
+304,443716
+305,444354
+306,445386
+307,446000
+308,446651
+309,447286
+310,447867
+311,448824
+312,449497
+313,450140
+314,450762
+315,451792
+316,452777
+317,453460
+318,454149
+319,454794
+320,455470
+321,456156
+322,456789
+323,457462
+324,458137
+325,458785
+326,460098
+327,516966
+328,517903
+329,518900
+330,519526
+331,520159
+332,520784
+333,520961
+334,521581
+335,522222
+336,522886
+337,523512
+338,524111
+339,524792
+340,525436
+341,526060
+342,526709
+343,527372
+344,527974
+345,528564
+346,529210
+347,529847
+348,530461
+349,531116
+350,531779
+351,532398
+352,532997
+353,533637
+354,534246
+355,534815
+356,535442
+357,536087
+358,536698
+359,537357
+360,538016
+361,538638
+362,539257
+363,540229
+364,540420
+365,541055
+366,542006
+367,542194
+368,542836
+369,543449
+370,544110
+371,544770
+372,545374
+373,545986
+374,546165
+375,546813
+376,547444
+377,548044
+378,548697
+379,549313
+380,549915
+381,550551
+382,551181
+383,551774
+384,552382
+385,553033
+386,553677
+387,554299
+388,554954
+389,555613
+390,556218
+391,556879
+392,557527
+393,558173
+394,558775
+395,559451
+396,560105
+397,560287
+398,560919
+399,561582
+400,561759
+401,562410
+402,563065
+403,563243
+404,564687
+405,564853
+406,565959
+407,566139
+408,566798
+409,566969
+410,568757
+411,568930
+412,581505
+413,581686
+414,583391
+415,583578
+416,585074
+417,585266
+418,586376
+419,586550
+420,587713
+421,587897
+422,589023
+423,589216
+424,589948
+425,590128
+426,591216
+427,591396
+428,592541
+429,592712
+430,593850
+431,594033
+432,595155
+433,595323
+434,596500
+435,596681
+436,597364
+437,597537
+438,598719
+439,598900
+440,599565
+441,599737
+442,600906
+443,601078
+444,602185
+445,602372
+446,603487
+447,603658
+448,604773
+449,604958
+450,606024
+451,606203
+452,607330
+453,607521
+454,608179
+455,608353
+456,609042
+457,609229
+458,609895
+459,610510
+460,610682
+461,611355
+462,611528
+463,612166
+464,612822
+465,613029
+466,613704
+467,614694
+468,615730
+469,616750
+470,616931
+471,618074
+472,618757
+473,618940
+474,620082
+475,620275
+476,621340
+477,621523
+478,623040
+479,623224
+480,624339
+481,624521
+482,625559
+483,626238
+484,627831
+485,628008
+486,628697
+487,630774
+488,630950
+489,631585
+490,632510
+491,632695
+492,633326
+493,633883
+494,634048
+495,634660
+496,635269
+497,635836
+498,636406
+499,637038
+500,637662
+501,638257
+502,638856
+503,639491
+504,640085
+505,640262
+506,640877
+507,641807
+508,641989
+509,642572
+510,643157
+511,643761
+512,644600
+513,644768
+514,645388
+515,645996
+516,646177
+517,647778
+518,649162
+519,649340
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/108.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/108.pk.gz
new file mode 100644
index 00000000..4102540e
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/108.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/108_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/108_all.csv
new file mode 100644
index 00000000..fc99882e
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/108_all.csv
@@ -0,0 +1,1757 @@
+,R
+0,88
+1,442
+2,789
+3,1155
+4,1493
+5,1821
+6,2157
+7,2517
+8,2889
+9,3238
+10,3593
+11,3924
+12,4105
+13,4602
+14,4971
+15,5350
+16,5715
+17,6115
+18,6479
+19,6886
+20,7287
+21,7687
+22,8056
+23,8432
+24,8804
+25,9196
+26,9586
+27,9963
+28,10325
+29,10696
+30,10876
+31,11453
+32,11819
+33,12174
+34,12509
+35,12856
+36,13236
+37,13644
+38,14073
+39,14467
+40,14847
+41,15222
+42,15620
+43,16018
+44,16403
+45,16788
+46,17161
+47,17534
+48,17932
+49,18327
+50,18685
+51,19045
+52,19416
+53,19802
+54,20193
+55,20586
+56,20942
+57,21308
+58,21676
+59,22054
+60,22427
+61,22794
+62,23189
+63,23610
+64,24037
+65,24454
+66,24850
+67,25232
+68,25617
+69,25991
+70,26386
+71,26787
+72,27181
+73,27545
+74,27926
+75,28313
+76,28717
+77,29100
+78,29455
+79,29796
+80,30150
+81,30545
+82,30976
+83,31420
+84,31855
+85,32262
+86,32698
+87,33121
+88,33513
+89,33889
+90,34259
+91,34625
+92,35018
+93,35414
+94,35764
+95,36115
+96,36473
+97,36849
+98,37297
+99,37781
+100,38198
+101,38590
+102,38991
+103,39388
+104,39780
+105,40170
+106,40538
+107,40915
+108,41308
+109,41701
+110,42092
+111,42468
+112,42839
+113,43221
+114,43618
+115,44008
+116,44391
+117,44777
+118,45147
+119,45518
+120,45906
+121,46305
+122,46660
+123,47006
+124,47352
+125,47727
+126,48194
+127,48638
+128,49009
+129,49393
+130,49781
+131,50177
+132,50545
+133,50914
+134,51267
+135,51623
+136,52009
+137,52396
+138,52775
+139,53149
+140,53501
+141,53865
+142,54260
+143,54662
+144,55039
+145,55411
+146,55782
+147,56173
+148,56565
+149,56968
+150,57329
+151,57712
+152,58080
+153,58484
+154,58867
+155,59289
+156,59649
+157,60002
+158,60370
+159,60787
+160,61180
+161,61581
+162,61953
+163,62322
+164,62698
+165,63108
+166,63491
+167,63872
+168,64247
+169,64615
+170,64995
+171,65393
+172,65792
+173,66159
+174,66541
+175,66912
+176,67296
+177,67685
+178,68075
+179,68451
+180,68799
+181,69173
+182,69528
+183,69921
+184,70276
+185,70727
+186,71158
+187,71628
+188,72057
+189,72458
+190,72839
+191,73220
+192,73604
+193,74004
+194,74393
+195,74779
+196,75132
+197,75511
+198,75893
+199,76309
+200,76703
+201,77062
+202,77435
+203,77829
+204,78197
+205,78592
+206,78977
+207,79338
+208,79724
+209,80112
+210,80492
+211,80860
+212,81217
+213,81557
+214,81901
+215,82281
+216,82675
+217,83134
+218,83545
+219,83824
+220,84360
+221,84809
+222,85225
+223,85583
+224,85966
+225,86317
+226,86710
+227,87078
+228,87466
+229,87837
+230,88216
+231,88598
+232,88987
+233,89411
+234,89812
+235,90197
+236,90563
+237,90960
+238,91358
+239,91751
+240,92122
+241,92493
+242,92866
+243,93264
+244,93626
+245,94006
+246,94366
+247,94731
+248,95073
+249,95449
+250,95873
+251,96330
+252,96765
+253,97144
+254,97562
+255,97981
+256,98352
+257,98705
+258,99067
+259,99443
+260,99837
+261,100213
+262,100582
+263,100944
+264,101307
+265,101669
+266,102038
+267,102402
+268,102775
+269,103219
+270,103622
+271,104043
+272,104459
+273,104843
+274,105227
+275,105602
+276,105983
+277,106382
+278,106797
+279,107176
+280,107330
+281,107593
+282,107948
+283,108340
+284,108737
+285,109143
+286,109534
+287,109890
+288,110301
+289,110713
+290,111101
+291,111501
+292,111863
+293,112247
+294,112653
+295,113049
+296,113436
+297,113820
+298,114200
+299,114572
+300,114991
+301,115379
+302,115770
+303,116143
+304,116524
+305,116894
+306,117314
+307,117713
+308,118096
+309,118478
+310,118872
+311,119262
+312,119678
+313,120058
+314,120427
+315,120815
+316,121217
+317,121617
+318,122010
+319,122401
+320,122743
+321,123110
+322,123491
+323,123889
+324,124265
+325,124640
+326,124999
+327,125381
+328,125766
+329,126170
+330,126542
+331,126926
+332,127308
+333,127684
+334,128085
+335,128499
+336,128859
+337,129253
+338,129627
+339,130018
+340,130421
+341,130809
+342,131189
+343,131556
+344,131950
+345,132342
+346,132736
+347,133099
+348,133456
+349,133796
+350,134161
+351,134542
+352,134927
+353,135408
+354,135847
+355,136258
+356,136659
+357,137075
+358,137448
+359,137830
+360,138216
+361,138599
+362,139014
+363,139400
+364,139773
+365,140149
+366,140538
+367,140940
+368,141329
+369,141718
+370,142094
+371,142469
+372,142884
+373,143288
+374,143692
+375,144080
+376,144465
+377,144847
+378,145268
+379,145670
+380,146060
+381,146459
+382,146841
+383,147252
+384,147663
+385,148070
+386,148451
+387,148842
+388,149237
+389,149641
+390,150057
+391,150445
+392,150825
+393,151220
+394,151612
+395,152019
+396,152405
+397,152788
+398,153143
+399,153537
+400,153921
+401,154306
+402,154673
+403,155043
+404,155415
+405,155798
+406,156213
+407,156583
+408,156945
+409,157319
+410,157701
+411,158079
+412,158473
+413,158842
+414,159200
+415,159558
+416,159958
+417,160448
+418,160892
+419,161290
+420,161684
+421,162064
+422,162463
+423,162838
+424,163229
+425,163582
+426,163942
+427,164329
+428,164722
+429,165111
+430,165493
+431,165870
+432,166247
+433,166630
+434,167033
+435,167420
+436,167784
+437,168145
+438,168523
+439,168905
+440,169304
+441,169686
+442,170047
+443,170425
+444,170801
+445,171188
+446,171581
+447,171955
+448,172326
+449,172683
+450,173070
+451,173452
+452,173824
+453,174185
+454,174536
+455,174874
+456,175254
+457,175679
+458,176132
+459,176528
+460,176909
+461,177286
+462,177682
+463,178074
+464,178437
+465,178786
+466,179155
+467,179500
+468,179844
+469,180041
+470,181027
+471,181400
+472,181790
+473,182158
+474,182556
+475,182920
+476,183273
+477,183648
+478,184038
+479,184418
+480,184796
+481,185164
+482,185508
+483,185873
+484,186356
+485,186808
+486,187213
+487,187601
+488,187978
+489,188368
+490,188775
+491,189148
+492,189502
+493,189876
+494,190235
+495,190619
+496,191003
+497,191362
+498,191697
+499,192059
+500,192429
+501,192881
+502,193342
+503,193553
+504,194133
+505,194553
+506,194944
+507,195319
+508,195696
+509,196072
+510,196433
+511,196803
+512,197180
+513,197550
+514,197906
+515,198371
+516,198826
+517,199241
+518,199660
+519,200045
+520,200415
+521,200792
+522,201187
+523,201574
+524,201971
+525,202342
+526,202704
+527,203074
+528,203467
+529,203835
+530,204214
+531,204608
+532,205063
+533,205495
+534,205731
+535,206305
+536,206704
+537,207065
+538,207434
+539,207811
+540,208205
+541,208574
+542,208929
+543,209293
+544,209649
+545,210016
+546,210460
+547,210887
+548,211265
+549,211640
+550,212015
+551,212404
+552,212809
+553,213190
+554,213547
+555,213941
+556,214332
+557,214710
+558,215094
+559,215469
+560,215837
+561,216215
+562,216619
+563,216994
+564,217354
+565,217728
+566,218073
+567,218440
+568,218906
+569,219385
+570,219806
+571,220207
+572,220597
+573,220989
+574,221206
+575,221738
+576,222085
+577,222447
+578,222805
+579,223215
+580,223664
+581,224051
+582,224436
+583,224821
+584,225226
+585,225611
+586,225999
+587,226369
+588,226742
+589,227128
+590,227530
+591,227899
+592,228274
+593,228634
+594,229005
+595,229380
+596,229755
+597,230134
+598,230481
+599,230948
+600,231371
+601,231783
+602,232181
+603,232586
+604,232964
+605,233372
+606,233748
+607,234137
+608,234516
+609,234868
+610,235230
+611,235593
+612,236000
+613,236380
+614,236750
+615,237124
+616,237487
+617,237839
+618,238302
+619,238802
+620,239205
+621,239640
+622,240024
+623,240446
+624,240857
+625,241220
+626,241587
+627,241986
+628,242385
+629,242786
+630,243162
+631,243519
+632,243881
+633,244254
+634,244655
+635,245037
+636,245427
+637,245782
+638,246151
+639,246542
+640,246948
+641,247341
+642,247732
+643,248114
+644,248503
+645,248908
+646,249312
+647,249688
+648,250054
+649,250435
+650,250822
+651,251220
+652,251606
+653,251973
+654,252321
+655,252678
+656,253029
+657,253419
+658,253873
+659,254259
+660,254623
+661,255022
+662,255412
+663,255797
+664,256157
+665,256506
+666,256842
+667,257187
+668,257615
+669,257956
+670,258301
+671,258629
+672,259090
+673,259490
+674,259930
+675,260310
+676,260665
+677,261018
+678,261386
+679,261745
+680,262114
+681,262474
+682,262958
+683,263670
+684,264186
+685,264555
+686,264949
+687,265315
+688,265681
+689,266082
+690,266473
+691,266848
+692,267211
+693,267557
+694,267931
+695,268510
+696,268697
+697,268976
+698,269368
+699,269782
+700,270176
+701,270574
+702,270988
+703,271373
+704,271749
+705,272129
+706,272520
+707,272906
+708,273277
+709,273633
+710,273989
+711,274451
+712,274894
+713,275301
+714,275687
+715,276052
+716,276430
+717,276816
+718,277186
+719,277565
+720,277905
+721,278289
+722,278657
+723,279048
+724,279432
+725,279793
+726,280145
+727,280500
+728,280944
+729,281419
+730,281865
+731,282251
+732,282633
+733,283030
+734,283437
+735,283831
+736,284221
+737,284593
+738,284955
+739,285350
+740,285740
+741,286128
+742,286496
+743,286861
+744,287229
+745,287614
+746,287995
+747,288349
+748,288741
+749,289160
+750,289564
+751,289944
+752,290324
+753,290678
+754,291025
+755,291381
+756,291731
+757,292106
+758,292485
+759,292846
+760,293198
+761,293555
+762,293939
+763,294300
+764,294671
+765,295039
+766,295391
+767,295739
+768,296125
+769,296514
+770,296901
+771,297264
+772,297628
+773,297982
+774,298355
+775,298742
+776,299164
+777,299591
+778,299992
+779,300380
+780,300782
+781,301187
+782,301551
+783,301897
+784,302305
+785,302716
+786,303115
+787,303510
+788,303886
+789,304251
+790,304631
+791,305012
+792,305372
+793,305751
+794,306122
+795,306677
+796,306962
+797,307380
+798,307779
+799,308180
+800,308549
+801,308930
+802,309325
+803,309713
+804,310078
+805,310445
+806,310806
+807,311164
+808,311535
+809,311987
+810,312423
+811,312838
+812,313238
+813,313650
+814,314055
+815,314443
+816,314817
+817,315182
+818,315605
+819,315997
+820,316385
+821,316774
+822,317138
+823,317530
+824,317931
+825,318323
+826,318688
+827,319095
+828,319467
+829,319864
+830,320262
+831,320664
+832,321043
+833,321411
+834,321790
+835,322177
+836,322578
+837,322953
+838,323326
+839,323695
+840,324077
+841,324454
+842,324874
+843,325255
+844,325603
+845,326005
+846,326392
+847,326580
+848,327161
+849,327543
+850,327900
+851,328267
+852,328648
+853,329035
+854,329401
+855,329755
+856,330116
+857,330489
+858,331001
+859,331464
+860,331868
+861,332264
+862,332642
+863,333040
+864,333441
+865,333831
+866,334190
+867,334573
+868,334953
+869,335334
+870,335722
+871,336094
+872,336431
+873,336780
+874,337156
+875,337630
+876,338069
+877,338488
+878,338890
+879,339290
+880,339706
+881,340099
+882,340481
+883,340850
+884,341234
+885,341610
+886,342015
+887,342382
+888,342755
+889,343112
+890,343489
+891,343871
+892,344251
+893,344641
+894,345179
+895,345623
+896,346052
+897,346447
+898,346853
+899,347216
+900,347585
+901,347976
+902,348367
+903,348752
+904,349129
+905,349491
+906,349855
+907,350240
+908,350636
+909,351009
+910,351399
+911,351764
+912,352138
+913,352531
+914,352921
+915,353295
+916,353659
+917,354039
+918,354426
+919,354821
+920,355230
+921,355604
+922,355977
+923,356363
+924,356757
+925,357152
+926,357525
+927,357899
+928,358288
+929,358684
+930,359087
+931,359501
+932,359875
+933,360260
+934,360660
+935,361050
+936,361452
+937,361854
+938,362235
+939,362628
+940,363000
+941,363407
+942,363808
+943,364183
+944,364555
+945,364931
+946,365314
+947,365698
+948,366090
+949,366453
+950,366810
+951,367185
+952,367562
+953,367908
+954,368299
+955,368645
+956,369003
+957,369466
+958,369906
+959,370311
+960,370665
+961,371059
+962,371429
+963,371823
+964,372227
+965,372616
+966,372977
+967,373352
+968,373714
+969,374101
+970,374484
+971,374852
+972,375199
+973,375554
+974,375937
+975,376355
+976,376741
+977,377108
+978,377449
+979,377789
+980,378143
+981,378494
+982,378844
+983,379185
+984,379526
+985,379858
+986,380203
+987,380554
+988,380896
+989,381233
+990,381562
+991,381886
+992,382209
+993,382550
+994,382911
+995,383257
+996,383599
+997,383933
+998,384275
+999,384616
+1000,384968
+1001,385318
+1002,385646
+1003,385971
+1004,386291
+1005,386630
+1006,386965
+1007,387305
+1008,387644
+1009,387948
+1010,388268
+1011,388580
+1012,388908
+1013,389232
+1014,389553
+1015,389883
+1016,390201
+1017,390502
+1018,390845
+1019,391194
+1020,391554
+1021,391892
+1022,392230
+1023,392555
+1024,393056
+1025,393521
+1026,393850
+1027,394158
+1028,394440
+1029,394752
+1030,395065
+1031,395368
+1032,395687
+1033,396004
+1034,396313
+1035,396618
+1036,396918
+1037,397234
+1038,397559
+1039,397913
+1040,398258
+1041,398590
+1042,398917
+1043,399231
+1044,399581
+1045,399924
+1046,400246
+1047,400584
+1048,400933
+1049,401253
+1050,401605
+1051,401982
+1052,402349
+1053,402678
+1054,403021
+1055,403355
+1056,403700
+1057,404062
+1058,404432
+1059,404796
+1060,405111
+1061,405436
+1062,405787
+1063,406105
+1064,406572
+1065,406941
+1066,407289
+1067,407629
+1068,408138
+1069,408548
+1070,408923
+1071,409297
+1072,409616
+1073,409942
+1074,410285
+1075,410690
+1076,411060
+1077,411504
+1078,411844
+1079,412190
+1080,412560
+1081,412957
+1082,413512
+1083,413957
+1084,414373
+1085,414758
+1086,415150
+1087,415535
+1088,415870
+1089,416228
+1090,416678
+1091,417024
+1092,417409
+1093,417846
+1094,418198
+1095,418579
+1096,418964
+1097,419358
+1098,419761
+1099,420144
+1100,420515
+1101,420845
+1102,421252
+1103,421669
+1104,422157
+1105,422524
+1106,422921
+1107,423315
+1108,423726
+1109,424115
+1110,424505
+1111,424861
+1112,425244
+1113,425627
+1114,426020
+1115,426448
+1116,427064
+1117,427428
+1118,427840
+1119,428240
+1120,428661
+1121,429039
+1122,429396
+1123,429767
+1124,430176
+1125,430563
+1126,430952
+1127,431494
+1128,431978
+1129,432421
+1130,432815
+1131,433193
+1132,433562
+1133,433922
+1134,434313
+1135,434700
+1136,435093
+1137,436069
+1138,436469
+1139,436887
+1140,437295
+1141,437665
+1142,438029
+1143,438399
+1144,438760
+1145,439133
+1146,439548
+1147,439987
+1148,440424
+1149,440857
+1150,441261
+1151,441645
+1152,442028
+1153,442396
+1154,442751
+1155,443135
+1156,443510
+1157,443873
+1158,444227
+1159,444599
+1160,444956
+1161,445358
+1162,445747
+1163,446121
+1164,446477
+1165,446837
+1166,447193
+1167,447588
+1168,448058
+1169,448401
+1170,448753
+1171,449123
+1172,449488
+1173,449861
+1174,450223
+1175,450567
+1176,450908
+1177,451250
+1178,451613
+1179,451970
+1180,452321
+1181,452648
+1182,452977
+1183,453327
+1184,453665
+1185,454026
+1186,454362
+1187,454712
+1188,455049
+1189,455366
+1190,455716
+1191,456062
+1192,456422
+1193,456760
+1194,457078
+1195,457258
+1196,457752
+1197,458096
+1198,458454
+1199,458806
+1200,459137
+1201,459451
+1202,459785
+1203,460136
+1204,460497
+1205,460856
+1206,461216
+1207,461555
+1208,461899
+1209,462239
+1210,462602
+1211,462939
+1212,463287
+1213,463624
+1214,463931
+1215,464259
+1216,464607
+1217,464962
+1218,465310
+1219,465651
+1220,465994
+1221,466317
+1222,466653
+1223,467012
+1224,467346
+1225,467668
+1226,467985
+1227,468302
+1228,468617
+1229,468959
+1230,469316
+1231,469639
+1232,469978
+1233,470321
+1234,470643
+1235,470982
+1236,471316
+1237,471655
+1238,471985
+1239,472305
+1240,472602
+1241,472919
+1242,473247
+1243,473577
+1244,473890
+1245,474218
+1246,474534
+1247,474844
+1248,475171
+1249,475510
+1250,475848
+1251,476163
+1252,476494
+1253,476813
+1254,477112
+1255,477446
+1256,477790
+1257,478143
+1258,478464
+1259,478794
+1260,479123
+1261,479446
+1262,479794
+1263,480157
+1264,480504
+1265,480835
+1266,481163
+1267,481505
+1268,481837
+1269,482191
+1270,482547
+1271,482885
+1272,483198
+1273,483523
+1274,483851
+1275,484196
+1276,484536
+1277,484857
+1278,485193
+1279,485517
+1280,485840
+1281,486183
+1282,486531
+1283,486869
+1284,487193
+1285,487526
+1286,487849
+1287,488180
+1288,488539
+1289,488880
+1290,489211
+1291,489576
+1292,489912
+1293,490263
+1294,490593
+1295,490797
+1296,491338
+1297,491647
+1298,491967
+1299,492302
+1300,492626
+1301,492946
+1302,493292
+1303,493611
+1304,493901
+1305,494200
+1306,494523
+1307,494853
+1308,495198
+1309,495532
+1310,495869
+1311,496171
+1312,496478
+1313,496797
+1314,497137
+1315,497479
+1316,497813
+1317,498150
+1318,498470
+1319,498791
+1320,499119
+1321,499452
+1322,499785
+1323,500105
+1324,500414
+1325,500737
+1326,501064
+1327,501403
+1328,501751
+1329,502080
+1330,502418
+1331,502727
+1332,503077
+1333,503428
+1334,503764
+1335,504126
+1336,504476
+1337,504812
+1338,505135
+1339,505491
+1340,505835
+1341,506185
+1342,506546
+1343,506863
+1344,507200
+1345,507561
+1346,507933
+1347,508266
+1348,508626
+1349,508968
+1350,509292
+1351,509631
+1352,509803
+1353,510333
+1354,510679
+1355,510991
+1356,511324
+1357,511676
+1358,512001
+1359,512352
+1360,512727
+1361,513055
+1362,513396
+1363,513728
+1364,514108
+1365,514463
+1366,514835
+1367,515187
+1368,515523
+1369,515873
+1370,516218
+1371,516603
+1372,516974
+1373,517322
+1374,517664
+1375,518023
+1376,518366
+1377,518747
+1378,519098
+1379,519439
+1380,519775
+1381,520138
+1382,520456
+1383,520800
+1384,521184
+1385,521516
+1386,521877
+1387,522231
+1388,522562
+1389,522979
+1390,523357
+1391,523728
+1392,524098
+1393,524460
+1394,524803
+1395,525182
+1396,525529
+1397,525899
+1398,526230
+1399,526417
+1400,526953
+1401,527326
+1402,527651
+1403,528026
+1404,528756
+1405,529389
+1406,529762
+1407,530114
+1408,530468
+1409,530823
+1410,531143
+1411,531533
+1412,531896
+1413,532241
+1414,532611
+1415,532972
+1416,533340
+1417,533697
+1418,534071
+1419,534441
+1420,534807
+1421,535166
+1422,535512
+1423,535879
+1424,536232
+1425,536601
+1426,536964
+1427,537294
+1428,537648
+1429,538021
+1430,538380
+1431,538765
+1432,539114
+1433,539457
+1434,539790
+1435,540147
+1436,540510
+1437,540890
+1438,541222
+1439,541571
+1440,541916
+1441,542276
+1442,542626
+1443,543000
+1444,543367
+1445,543711
+1446,544088
+1447,544465
+1448,544832
+1449,545213
+1450,545549
+1451,545915
+1452,546280
+1453,546682
+1454,547029
+1455,547409
+1456,547749
+1457,548115
+1458,548462
+1459,548885
+1460,549273
+1461,549655
+1462,550042
+1463,550402
+1464,550751
+1465,551170
+1466,551539
+1467,551902
+1468,552291
+1469,552634
+1470,553104
+1471,553575
+1472,553977
+1473,554330
+1474,554714
+1475,555088
+1476,555466
+1477,555864
+1478,556210
+1479,556575
+1480,557011
+1481,557470
+1482,557884
+1483,558302
+1484,558669
+1485,559052
+1486,559414
+1487,559847
+1488,560237
+1489,560625
+1490,560993
+1491,561362
+1492,561739
+1493,562157
+1494,562558
+1495,562950
+1496,563317
+1497,563706
+1498,564086
+1499,564468
+1500,564846
+1501,565212
+1502,565572
+1503,565952
+1504,566307
+1505,566674
+1506,567036
+1507,567385
+1508,567752
+1509,568109
+1510,568546
+1511,568978
+1512,569337
+1513,569722
+1514,570095
+1515,570447
+1516,570835
+1517,571175
+1518,571508
+1519,571906
+1520,572235
+1521,572662
+1522,573037
+1523,573369
+1524,573730
+1525,574067
+1526,574405
+1527,574779
+1528,575185
+1529,575525
+1530,575908
+1531,576278
+1532,576620
+1533,577020
+1534,577394
+1535,577783
+1536,578104
+1537,578473
+1538,578850
+1539,579194
+1540,579592
+1541,579935
+1542,580289
+1543,580619
+1544,580794
+1545,581312
+1546,581645
+1547,581964
+1548,582337
+1549,582659
+1550,582995
+1551,583336
+1552,583741
+1553,584064
+1554,584408
+1555,584785
+1556,585105
+1557,585447
+1558,585838
+1559,586214
+1560,586538
+1561,586937
+1562,587285
+1563,587629
+1564,588029
+1565,588384
+1566,588750
+1567,589061
+1568,589419
+1569,589759
+1570,590143
+1571,590491
+1572,590834
+1573,591185
+1574,591506
+1575,591847
+1576,592235
+1577,592575
+1578,592937
+1579,593280
+1580,593635
+1581,593996
+1582,594339
+1583,594727
+1584,595069
+1585,595416
+1586,595738
+1587,596080
+1588,596451
+1589,596808
+1590,597158
+1591,597492
+1592,597824
+1593,598188
+1594,598546
+1595,598898
+1596,599288
+1597,599637
+1598,599997
+1599,600358
+1600,600745
+1601,601109
+1602,601485
+1603,601827
+1604,602172
+1605,602530
+1606,602910
+1607,603275
+1608,603629
+1609,603976
+1610,604307
+1611,604655
+1612,605019
+1613,605387
+1614,605745
+1615,606080
+1616,606422
+1617,606753
+1618,607101
+1619,607453
+1620,607799
+1621,608121
+1622,608439
+1623,608757
+1624,609074
+1625,609401
+1626,609738
+1627,610069
+1628,610380
+1629,610683
+1630,611005
+1631,611323
+1632,611647
+1633,611968
+1634,612283
+1635,612590
+1636,612888
+1637,613186
+1638,613500
+1639,613811
+1640,614116
+1641,614419
+1642,614720
+1643,615018
+1644,615317
+1645,615630
+1646,615960
+1647,616278
+1648,616601
+1649,616909
+1650,617224
+1651,617531
+1652,617841
+1653,618169
+1654,618482
+1655,618779
+1656,619062
+1657,619235
+1658,619643
+1659,619930
+1660,620228
+1661,620536
+1662,620829
+1663,621112
+1664,621389
+1665,621668
+1666,621962
+1667,622255
+1668,622550
+1669,622863
+1670,623156
+1671,623439
+1672,623726
+1673,624015
+1674,624322
+1675,624633
+1676,624933
+1677,625241
+1678,625534
+1679,625814
+1680,626105
+1681,626397
+1682,626715
+1683,627019
+1684,627320
+1685,627624
+1686,627914
+1687,628196
+1688,628492
+1689,628795
+1690,629108
+1691,629414
+1692,629711
+1693,630011
+1694,630306
+1695,630605
+1696,630910
+1697,631218
+1698,631840
+1699,632124
+1700,632428
+1701,632729
+1702,633033
+1703,633343
+1704,633654
+1705,633966
+1706,634259
+1707,634546
+1708,634851
+1709,635157
+1710,635470
+1711,635783
+1712,636091
+1713,636397
+1714,636694
+1715,636996
+1716,637317
+1717,637637
+1718,637953
+1719,638272
+1720,638573
+1721,638884
+1722,639185
+1723,639501
+1724,639836
+1725,640165
+1726,640467
+1727,640770
+1728,641080
+1729,641406
+1730,641744
+1731,642096
+1732,642449
+1733,642770
+1734,643089
+1735,643416
+1736,643743
+1737,644072
+1738,644411
+1739,644733
+1740,645034
+1741,645328
+1742,645618
+1743,645952
+1744,646271
+1745,646593
+1746,646924
+1747,647241
+1748,647549
+1749,647864
+1750,648199
+1751,648531
+1752,648853
+1753,649170
+1754,649471
+1755,649769
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/108_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/108_pvc.csv
new file mode 100644
index 00000000..6311b681
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/108_pvc.csv
@@ -0,0 +1,18 @@
+,PVC
+0,4105
+1,10876
+2,83824
+3,107330
+4,180041
+5,193553
+6,205731
+7,221206
+8,268697
+9,326580
+10,393056
+11,457258
+12,490797
+13,509803
+14,526417
+15,580794
+16,619235
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/114.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/114.pk.gz
new file mode 100644
index 00000000..178bd296
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/114.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/114_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/114_all.csv
new file mode 100644
index 00000000..c8608e52
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/114_all.csv
@@ -0,0 +1,1864 @@
+,R
+0,310
+1,726
+2,1143
+3,1553
+4,1965
+5,2358
+6,2742
+7,3166
+8,3568
+9,3961
+10,4352
+11,4728
+12,5140
+13,5547
+14,5938
+15,6327
+16,6710
+17,7091
+18,7506
+19,7905
+20,8296
+21,8677
+22,9061
+23,9474
+24,9897
+25,10296
+26,10697
+27,11109
+28,11515
+29,11946
+30,12362
+31,12755
+32,13156
+33,13549
+34,13956
+35,14378
+36,14767
+37,15156
+38,15539
+39,15957
+40,16362
+41,16767
+42,17150
+43,17532
+44,17929
+45,18324
+46,18724
+47,19115
+48,19478
+49,19843
+50,20244
+51,20632
+52,21024
+53,21399
+54,21770
+55,22140
+56,22545
+57,22937
+58,23331
+59,23704
+60,24076
+61,24470
+62,24870
+63,25257
+64,25647
+65,26019
+66,26377
+67,26781
+68,27169
+69,27550
+70,27933
+71,28296
+72,28666
+73,29065
+74,29455
+75,29835
+76,30211
+77,30569
+78,30765
+79,31349
+80,31731
+81,32123
+82,32494
+83,32854
+84,33248
+85,33649
+86,34021
+87,34404
+88,34782
+89,35148
+90,35551
+91,35951
+92,36334
+93,36721
+94,37090
+95,37490
+96,37893
+97,38287
+98,38676
+99,39066
+100,39443
+101,39851
+102,40254
+103,40649
+104,41027
+105,41414
+106,41823
+107,42228
+108,42629
+109,43019
+110,43414
+111,43813
+112,44221
+113,44630
+114,45030
+115,45411
+116,45606
+117,46201
+118,46615
+119,47010
+120,47404
+121,47786
+122,48188
+123,48589
+124,48985
+125,49379
+126,49760
+127,50133
+128,50544
+129,50939
+130,51327
+131,51723
+132,52097
+133,52497
+134,52900
+135,53305
+136,53697
+137,54088
+138,54459
+139,54872
+140,55278
+141,55661
+142,56055
+143,56433
+144,56811
+145,57223
+146,57611
+147,57990
+148,58377
+149,58736
+150,59143
+151,59545
+152,59927
+153,60311
+154,60695
+155,61077
+156,61488
+157,61889
+158,62277
+159,62667
+160,63046
+161,63450
+162,63865
+163,64257
+164,64642
+165,65043
+166,65428
+167,65843
+168,66252
+169,66633
+170,67027
+171,67402
+172,67809
+173,68223
+174,68607
+175,68994
+176,69378
+177,69598
+178,70156
+179,70555
+180,70935
+181,71311
+182,71666
+183,72072
+184,72457
+185,72853
+186,73229
+187,73609
+188,73986
+189,74395
+190,74795
+191,75199
+192,75589
+193,75963
+194,76389
+195,76795
+196,77197
+197,77597
+198,77977
+199,78367
+200,78779
+201,79176
+202,79576
+203,79950
+204,80322
+205,80510
+206,81113
+207,81494
+208,81878
+209,82243
+210,82608
+211,83001
+212,83389
+213,83756
+214,84131
+215,84494
+216,84866
+217,85266
+218,85654
+219,86032
+220,86416
+221,86782
+222,87131
+223,87598
+224,87990
+225,88388
+226,88768
+227,88951
+228,89909
+229,90299
+230,90698
+231,90920
+232,91464
+233,91875
+234,92272
+235,92660
+236,92961
+237,93430
+238,93842
+239,94260
+240,94648
+241,94869
+242,95418
+243,95825
+244,96235
+245,96629
+246,97013
+247,97406
+248,97780
+249,98190
+250,98591
+251,98983
+252,99363
+253,99739
+254,100144
+255,100525
+256,100946
+257,101335
+258,101721
+259,102111
+260,102522
+261,102926
+262,103328
+263,103668
+264,104061
+265,104522
+266,104925
+267,105321
+268,105514
+269,106075
+270,106483
+271,106893
+272,107283
+273,107503
+274,108047
+275,108417
+276,108831
+277,109220
+278,109405
+279,109957
+280,110334
+281,110691
+282,111089
+283,111470
+284,111837
+285,112204
+286,112562
+287,112919
+288,113312
+289,113684
+290,114059
+291,114434
+292,114800
+293,115180
+294,115584
+295,115955
+296,116335
+297,116704
+298,117067
+299,117456
+300,117854
+301,118234
+302,118613
+303,119001
+304,119374
+305,119786
+306,120191
+307,120569
+308,120949
+309,121319
+310,121706
+311,122093
+312,122248
+313,122818
+314,123190
+315,123540
+316,123919
+317,124309
+318,124668
+319,125035
+320,125395
+321,125756
+322,126138
+323,126529
+324,126903
+325,127269
+326,127640
+327,128017
+328,128402
+329,128796
+330,129172
+331,129531
+332,129903
+333,130288
+334,130682
+335,131012
+336,131454
+337,131827
+338,132186
+339,132586
+340,133355
+341,133730
+342,133961
+343,134476
+344,134880
+345,135264
+346,135649
+347,136026
+348,136380
+349,136774
+350,137175
+351,137552
+352,137951
+353,138326
+354,138701
+355,139105
+356,139509
+357,139892
+358,140282
+359,140604
+360,141046
+361,141456
+362,141848
+363,142229
+364,142611
+365,142976
+366,143376
+367,143784
+368,144168
+369,144556
+370,144946
+371,145324
+372,145555
+373,146136
+374,146528
+375,146925
+376,147292
+377,147519
+378,148102
+379,148496
+380,148878
+381,149259
+382,149533
+383,150041
+384,150454
+385,150830
+386,151208
+387,151577
+388,151964
+389,152357
+390,152743
+391,153113
+392,153494
+393,153866
+394,154258
+395,154658
+396,154996
+397,155412
+398,155789
+399,156160
+400,156558
+401,156946
+402,157328
+403,157701
+404,158079
+405,158479
+406,158886
+407,159270
+408,159666
+409,160048
+410,160254
+411,160847
+412,161261
+413,161669
+414,162059
+415,162454
+416,162878
+417,163299
+418,163705
+419,164106
+420,164345
+421,164923
+422,165348
+423,165749
+424,166152
+425,166542
+426,166935
+427,167364
+428,167761
+429,168157
+430,168559
+431,169361
+432,169770
+433,170161
+434,170551
+435,170929
+436,171218
+437,171737
+438,172124
+439,172516
+440,172893
+441,173270
+442,173670
+443,174082
+444,174465
+445,174846
+446,175240
+447,175635
+448,176048
+449,176454
+450,176851
+451,177072
+452,177633
+453,178060
+454,178483
+455,178871
+456,179092
+457,179637
+458,180054
+459,180461
+460,180835
+461,181230
+462,181604
+463,181992
+464,182387
+465,182792
+466,183170
+467,183463
+468,183904
+469,184305
+470,184702
+471,185091
+472,185323
+473,185841
+474,186025
+475,186594
+476,186990
+477,187367
+478,187734
+479,188098
+480,188463
+481,188860
+482,189250
+483,189638
+484,190016
+485,190379
+486,190785
+487,191190
+488,191579
+489,191973
+490,192351
+491,192718
+492,193133
+493,193369
+494,193916
+495,194303
+496,194667
+497,195057
+498,195463
+499,195825
+500,196242
+501,196628
+502,196998
+503,197415
+504,197826
+505,198214
+506,198614
+507,198993
+508,199389
+509,199802
+510,200582
+511,200973
+512,201344
+513,201753
+514,202152
+515,202538
+516,202915
+517,203123
+518,203671
+519,204085
+520,204481
+521,204866
+522,205036
+523,205596
+524,205998
+525,206385
+526,206762
+527,207120
+528,207482
+529,207842
+530,208207
+531,208584
+532,208946
+533,209305
+534,209656
+535,210003
+536,210371
+537,210723
+538,211088
+539,211436
+540,211779
+541,212126
+542,212496
+543,212867
+544,213220
+545,213571
+546,213906
+547,214256
+548,214615
+549,214974
+550,215327
+551,215682
+552,216019
+553,216353
+554,216697
+555,217059
+556,217404
+557,217735
+558,218071
+559,218394
+560,218736
+561,219084
+562,219422
+563,219752
+564,220089
+565,220415
+566,220729
+567,221089
+568,221435
+569,221769
+570,222110
+571,222439
+572,222758
+573,223105
+574,223462
+575,223803
+576,224129
+577,224461
+578,224792
+579,225105
+580,225467
+581,225806
+582,226130
+583,226460
+584,226754
+585,227088
+586,227415
+587,227765
+588,228104
+589,228421
+590,228744
+591,229072
+592,229385
+593,229722
+594,230074
+595,230401
+596,230731
+597,231056
+598,231385
+599,231723
+600,232068
+601,232422
+602,232755
+603,233083
+604,233415
+605,233751
+606,234098
+607,234457
+608,234797
+609,235141
+610,235472
+611,235804
+612,236174
+613,236541
+614,236910
+615,237261
+616,237615
+617,237949
+618,238338
+619,238704
+620,239068
+621,239428
+622,239769
+623,240107
+624,240479
+625,240843
+626,241191
+627,241545
+628,241882
+629,242210
+630,242586
+631,242948
+632,243306
+633,243661
+634,244010
+635,244351
+636,244720
+637,245106
+638,245471
+639,245845
+640,246201
+641,246548
+642,246937
+643,247325
+644,247684
+645,248067
+646,248426
+647,248776
+648,249158
+649,249541
+650,249899
+651,250269
+652,250621
+653,250965
+654,251340
+655,251716
+656,252944
+657,253746
+658,254124
+659,254485
+660,254848
+661,255189
+662,255558
+663,255938
+664,256307
+665,256671
+666,257035
+667,257379
+668,257770
+669,258151
+670,258519
+671,258878
+672,259242
+673,259591
+674,259968
+675,260351
+676,260722
+677,261082
+678,261451
+679,261812
+680,262198
+681,262587
+682,262966
+683,263333
+684,263603
+685,264093
+686,264484
+687,264870
+688,265244
+689,265965
+690,266355
+691,266737
+692,267105
+693,267483
+694,267844
+695,268211
+696,268524
+697,268999
+698,269383
+699,269764
+700,270133
+701,270517
+702,270916
+703,271145
+704,271681
+705,272055
+706,272412
+707,272803
+708,273187
+709,273565
+710,273932
+711,274293
+712,274624
+713,275002
+714,275373
+715,275732
+716,276083
+717,276423
+718,276747
+719,277112
+720,277479
+721,277814
+722,278153
+723,278493
+724,278823
+725,279155
+726,279519
+727,279873
+728,280219
+729,280555
+730,280894
+731,281219
+732,281589
+733,281949
+734,282286
+735,282634
+736,282982
+737,283314
+738,283682
+739,284061
+740,284418
+741,284773
+742,285127
+743,285465
+744,285829
+745,286209
+746,286557
+747,286914
+748,287260
+749,287598
+750,287961
+751,288337
+752,288688
+753,289032
+754,289372
+755,289707
+756,290061
+757,290425
+758,290780
+759,291130
+760,291470
+761,291815
+762,292172
+763,292531
+764,292909
+765,293258
+766,293601
+767,293953
+768,294309
+769,294676
+770,295044
+771,295403
+772,295749
+773,296093
+774,296374
+775,296833
+776,297213
+777,297582
+778,297936
+779,298295
+780,298650
+781,299043
+782,299411
+783,299778
+784,300130
+785,300482
+786,300854
+787,301244
+788,301538
+789,301990
+790,302347
+791,302699
+792,303078
+793,303467
+794,303828
+795,304207
+796,304560
+797,304908
+798,305146
+799,305669
+800,306030
+801,306399
+802,306751
+803,307091
+804,307471
+805,307850
+806,308204
+807,308571
+808,308918
+809,309248
+810,309610
+811,309982
+812,310328
+813,310689
+814,311042
+815,311367
+816,311739
+817,312117
+818,312466
+819,312824
+820,313174
+821,313513
+822,313879
+823,314260
+824,314626
+825,314985
+826,315338
+827,315673
+828,316051
+829,316421
+830,316783
+831,317139
+832,317494
+833,317835
+834,318193
+835,318562
+836,318919
+837,319261
+838,319605
+839,319936
+840,320290
+841,320660
+842,321017
+843,321358
+844,321697
+845,322038
+846,322375
+847,322737
+848,323095
+849,323443
+850,323781
+851,324111
+852,324461
+853,324815
+854,325175
+855,325512
+856,325856
+857,326195
+858,326526
+859,326896
+860,327248
+861,327587
+862,327941
+863,328272
+864,328601
+865,328981
+866,329348
+867,329702
+868,330055
+869,330404
+870,330739
+871,331120
+872,331493
+873,331846
+874,332189
+875,332531
+876,332862
+877,333209
+878,333580
+879,333932
+880,334275
+881,334623
+882,334965
+883,335301
+884,335677
+885,336031
+886,336376
+887,336719
+888,337058
+889,337390
+890,337771
+891,338130
+892,338474
+893,338821
+894,339168
+895,339500
+896,339869
+897,340237
+898,340566
+899,340910
+900,341244
+901,341563
+902,341910
+903,342270
+904,342618
+905,342947
+906,343282
+907,343626
+908,343965
+909,344338
+910,344700
+911,345037
+912,345379
+913,345721
+914,346064
+915,346420
+916,346789
+917,347129
+918,347473
+919,347815
+920,348139
+921,348502
+922,348877
+923,349227
+924,349574
+925,349915
+926,350256
+927,350627
+928,350985
+929,351341
+930,351682
+931,352023
+932,352345
+933,352702
+934,353062
+935,353414
+936,353760
+937,354086
+938,354272
+939,354756
+940,355441
+941,355778
+942,355971
+943,356430
+944,356743
+945,357102
+946,357441
+947,357767
+948,358105
+949,358421
+950,358739
+951,359070
+952,359429
+953,359773
+954,360100
+955,360435
+956,360760
+957,361079
+958,361431
+959,361782
+960,362114
+961,362459
+962,362793
+963,363114
+964,363463
+965,363834
+966,364191
+967,364529
+968,364878
+969,365212
+970,365552
+971,365912
+972,366267
+973,366603
+974,366946
+975,367284
+976,367606
+977,367967
+978,368338
+979,368674
+980,369019
+981,369364
+982,369685
+983,370046
+984,370403
+985,370746
+986,371079
+987,371416
+988,371737
+989,372064
+990,372412
+991,372760
+992,373083
+993,373411
+994,373740
+995,374049
+996,374398
+997,374735
+998,375068
+999,375395
+1000,375722
+1001,376050
+1002,376385
+1003,376738
+1004,377093
+1005,377432
+1006,377768
+1007,378106
+1008,378433
+1009,378783
+1010,379129
+1011,379482
+1012,379814
+1013,380137
+1014,380467
+1015,380813
+1016,381162
+1017,381508
+1018,381845
+1019,382173
+1020,382506
+1021,382853
+1022,383201
+1023,383549
+1024,383891
+1025,384220
+1026,384551
+1027,384887
+1028,385239
+1029,385589
+1030,385915
+1031,386265
+1032,386595
+1033,386910
+1034,387279
+1035,387631
+1036,387980
+1037,388320
+1038,388658
+1039,388983
+1040,389327
+1041,389700
+1042,390046
+1043,390381
+1044,390722
+1045,391054
+1046,391378
+1047,391749
+1048,392094
+1049,392421
+1050,392751
+1051,393091
+1052,393406
+1053,393759
+1054,394126
+1055,394463
+1056,394801
+1057,395139
+1058,395476
+1059,395824
+1060,396202
+1061,396556
+1062,396888
+1063,397226
+1064,397562
+1065,397886
+1066,398237
+1067,398592
+1068,398916
+1069,399249
+1070,399574
+1071,399890
+1072,400236
+1073,400592
+1074,400934
+1075,401255
+1076,401579
+1077,401910
+1078,402233
+1079,402569
+1080,402919
+1081,403244
+1082,403573
+1083,403899
+1084,404225
+1085,404570
+1086,404926
+1087,405278
+1088,405610
+1089,405942
+1090,406271
+1091,406604
+1092,406949
+1093,407298
+1094,407624
+1095,407946
+1096,408270
+1097,408593
+1098,408943
+1099,409284
+1100,409624
+1101,409956
+1102,410282
+1103,410602
+1104,410945
+1105,411288
+1106,411627
+1107,411956
+1108,412275
+1109,412596
+1110,412912
+1111,413264
+1112,413611
+1113,413952
+1114,414294
+1115,414624
+1116,414943
+1117,415303
+1118,415666
+1119,416004
+1120,416350
+1121,416677
+1122,417000
+1123,417325
+1124,417690
+1125,418029
+1126,418358
+1127,418697
+1128,419023
+1129,419336
+1130,419689
+1131,420046
+1132,420376
+1133,420710
+1134,421042
+1135,421360
+1136,421695
+1137,422040
+1138,422389
+1139,422710
+1140,423050
+1141,423372
+1142,423683
+1143,424030
+1144,424379
+1145,424716
+1146,425047
+1147,425383
+1148,425709
+1149,426045
+1150,426405
+1151,426766
+1152,427100
+1153,427440
+1154,427775
+1155,428101
+1156,428453
+1157,428801
+1158,429139
+1159,429468
+1160,429805
+1161,430123
+1162,430465
+1163,430818
+1164,431163
+1165,431493
+1166,431821
+1167,432148
+1168,432478
+1169,432828
+1170,433170
+1171,433509
+1172,433834
+1173,434168
+1174,434493
+1175,434832
+1176,435182
+1177,435523
+1178,435849
+1179,436165
+1180,436489
+1181,436810
+1182,437148
+1183,437488
+1184,437815
+1185,438134
+1186,438452
+1187,438767
+1188,439109
+1189,439456
+1190,439790
+1191,440129
+1192,440452
+1193,440786
+1194,441127
+1195,441474
+1196,441828
+1197,442165
+1198,442508
+1199,442844
+1200,443182
+1201,443544
+1202,443907
+1203,444245
+1204,444589
+1205,444920
+1206,445232
+1207,445582
+1208,445922
+1209,446263
+1210,446585
+1211,446909
+1212,447228
+1213,447540
+1214,447891
+1215,448223
+1216,448543
+1217,448862
+1218,449175
+1219,449471
+1220,449789
+1221,450124
+1222,450440
+1223,450745
+1224,451045
+1225,451349
+1226,451632
+1227,451930
+1228,452272
+1229,452587
+1230,452886
+1231,453194
+1232,453497
+1233,453798
+1234,454110
+1235,454451
+1236,454785
+1237,455089
+1238,455400
+1239,455713
+1240,456008
+1241,456337
+1242,456676
+1243,457006
+1244,457316
+1245,457624
+1246,457938
+1247,458248
+1248,458574
+1249,458916
+1250,459246
+1251,459552
+1252,459861
+1253,460175
+1254,460486
+1255,460822
+1256,461159
+1257,461477
+1258,461794
+1259,462102
+1260,462413
+1261,462731
+1262,463054
+1263,463400
+1264,463715
+1265,464029
+1266,464343
+1267,464648
+1268,464978
+1269,465297
+1270,465627
+1271,465937
+1272,466237
+1273,466535
+1274,466839
+1275,467161
+1276,467476
+1277,467813
+1278,468117
+1279,468417
+1280,468723
+1281,469014
+1282,469346
+1283,469662
+1284,469990
+1285,470299
+1286,470594
+1287,470901
+1288,471196
+1289,471524
+1290,471855
+1291,472179
+1292,472491
+1293,472800
+1294,473110
+1295,473421
+1296,473761
+1297,474091
+1298,474421
+1299,474755
+1300,475061
+1301,475377
+1302,475710
+1303,476052
+1304,476391
+1305,476720
+1306,477039
+1307,477355
+1308,477658
+1309,477995
+1310,478336
+1311,478661
+1312,478981
+1313,479300
+1314,479607
+1315,479913
+1316,480254
+1317,480587
+1318,480900
+1319,481222
+1320,481541
+1321,481840
+1322,482149
+1323,482478
+1324,482809
+1325,483125
+1326,483439
+1327,483753
+1328,484052
+1329,484378
+1330,484707
+1331,485032
+1332,485338
+1333,485647
+1334,485959
+1335,486251
+1336,486574
+1337,486905
+1338,487237
+1339,487541
+1340,487845
+1341,488155
+1342,488452
+1343,488783
+1344,489111
+1345,489441
+1346,489752
+1347,490055
+1348,490369
+1349,490668
+1350,490997
+1351,491314
+1352,491645
+1353,491952
+1354,492255
+1355,492569
+1356,492870
+1357,493201
+1358,493528
+1359,493840
+1360,494159
+1361,494457
+1362,494765
+1363,495068
+1364,495395
+1365,495712
+1366,496035
+1367,496345
+1368,496638
+1369,496960
+1370,497271
+1371,497603
+1372,497928
+1373,498249
+1374,498559
+1375,498855
+1376,499163
+1377,499484
+1378,499800
+1379,500119
+1380,500424
+1381,500727
+1382,501028
+1383,501326
+1384,501647
+1385,501962
+1386,502274
+1387,502581
+1388,502892
+1389,503188
+1390,503483
+1391,503813
+1392,504132
+1393,504457
+1394,504762
+1395,505070
+1396,505375
+1397,505676
+1398,506004
+1399,506337
+1400,506661
+1401,506968
+1402,507285
+1403,507584
+1404,507879
+1405,508216
+1406,508535
+1407,508854
+1408,509162
+1409,509480
+1410,509780
+1411,510075
+1412,510430
+1413,510766
+1414,511090
+1415,511418
+1416,511738
+1417,512053
+1418,512364
+1419,512722
+1420,513060
+1421,513380
+1422,513708
+1423,514039
+1424,514342
+1425,514679
+1426,515034
+1427,515348
+1428,515662
+1429,515966
+1430,516277
+1431,516569
+1432,516886
+1433,517226
+1434,517534
+1435,517835
+1436,518136
+1437,518437
+1438,518733
+1439,519051
+1440,519384
+1441,519702
+1442,520004
+1443,520303
+1444,520616
+1445,520920
+1446,521242
+1447,521579
+1448,521898
+1449,522204
+1450,522507
+1451,522820
+1452,523121
+1453,523445
+1454,523779
+1455,524087
+1456,524398
+1457,524705
+1458,525012
+1459,525323
+1460,525648
+1461,525979
+1462,526292
+1463,526601
+1464,526911
+1465,527213
+1466,527545
+1467,527880
+1468,528223
+1469,528541
+1470,528849
+1471,529160
+1472,529459
+1473,529788
+1474,530101
+1475,530431
+1476,530740
+1477,531037
+1478,531342
+1479,531638
+1480,531965
+1481,532291
+1482,532613
+1483,532929
+1484,533225
+1485,533534
+1486,533828
+1487,534159
+1488,534492
+1489,534808
+1490,535128
+1491,535440
+1492,535745
+1493,536055
+1494,536401
+1495,536724
+1496,537049
+1497,537382
+1498,537685
+1499,537996
+1500,538320
+1501,538659
+1502,538988
+1503,539310
+1504,539638
+1505,539955
+1506,540260
+1507,540603
+1508,540947
+1509,541278
+1510,541607
+1511,541925
+1512,542241
+1513,542553
+1514,542886
+1515,543228
+1516,543544
+1517,543867
+1518,544188
+1519,544493
+1520,544817
+1521,545158
+1522,545497
+1523,545801
+1524,546124
+1525,546435
+1526,546722
+1527,547051
+1528,547379
+1529,547696
+1530,547994
+1531,548291
+1532,548597
+1533,548880
+1534,549197
+1535,549523
+1536,549845
+1537,550144
+1538,550447
+1539,550756
+1540,551053
+1541,551369
+1542,551698
+1543,552027
+1544,552338
+1545,552645
+1546,552966
+1547,553272
+1548,553600
+1549,553931
+1550,554259
+1551,554568
+1552,554869
+1553,555186
+1554,555481
+1555,555799
+1556,556124
+1557,556439
+1558,556745
+1559,557048
+1560,557354
+1561,557652
+1562,557972
+1563,558288
+1564,558600
+1565,558910
+1566,559198
+1567,559508
+1568,559804
+1569,560110
+1570,560426
+1571,560728
+1572,561037
+1573,561323
+1574,561622
+1575,561914
+1576,562217
+1577,562531
+1578,562832
+1579,563124
+1580,563415
+1581,563700
+1582,563985
+1583,564290
+1584,564586
+1585,564890
+1586,565186
+1587,565479
+1588,565769
+1589,566059
+1590,566360
+1591,566673
+1592,566986
+1593,567284
+1594,567591
+1595,567879
+1596,568168
+1597,568470
+1598,568792
+1599,569104
+1600,569413
+1601,569735
+1602,570037
+1603,570338
+1604,570652
+1605,570980
+1606,571293
+1607,571589
+1608,571890
+1609,572191
+1610,572476
+1611,572769
+1612,573103
+1613,573417
+1614,573716
+1615,574029
+1616,574333
+1617,574629
+1618,574928
+1619,575268
+1620,575888
+1621,576218
+1622,576526
+1623,576829
+1624,577119
+1625,577453
+1626,578064
+1627,578375
+1628,578666
+1629,578960
+1630,579242
+1631,579549
+1632,579868
+1633,580161
+1634,580704
+1635,580997
+1636,581264
+1637,581563
+1638,581870
+1639,582167
+1640,582447
+1641,582736
+1642,583017
+1643,583306
+1644,583593
+1645,583896
+1646,584211
+1647,584505
+1648,584795
+1649,585086
+1650,585374
+1651,585664
+1652,585973
+1653,586282
+1654,586598
+1655,586886
+1656,587179
+1657,587473
+1658,587764
+1659,588066
+1660,588384
+1661,588700
+1662,588996
+1663,589299
+1664,589603
+1665,589905
+1666,590237
+1667,590565
+1668,590907
+1669,591227
+1670,591533
+1671,591851
+1672,592166
+1673,592496
+1674,592824
+1675,593148
+1676,593461
+1677,593768
+1678,594066
+1679,594379
+1680,594701
+1681,595013
+1682,595329
+1683,595635
+1684,595935
+1685,596244
+1686,596551
+1687,596882
+1688,597210
+1689,597529
+1690,597845
+1691,598138
+1692,598436
+1693,598747
+1694,599059
+1695,599369
+1696,599674
+1697,599967
+1698,600256
+1699,600545
+1700,600825
+1701,601147
+1702,601451
+1703,601758
+1704,602055
+1705,602355
+1706,602653
+1707,602938
+1708,603274
+1709,603606
+1710,603917
+1711,604242
+1712,604555
+1713,604856
+1714,605160
+1715,605514
+1716,605844
+1717,606148
+1718,606470
+1719,606779
+1720,607081
+1721,607391
+1722,607725
+1723,608062
+1724,608372
+1725,608695
+1726,609009
+1727,609299
+1728,609625
+1729,609958
+1730,610278
+1731,610582
+1732,610897
+1733,611195
+1734,611491
+1735,611813
+1736,612131
+1737,612459
+1738,612757
+1739,613062
+1740,613368
+1741,613658
+1742,613978
+1743,614303
+1744,614626
+1745,614920
+1746,615228
+1747,615533
+1748,615819
+1749,616130
+1750,616451
+1751,616781
+1752,617082
+1753,617389
+1754,617700
+1755,617980
+1756,618296
+1757,618619
+1758,618931
+1759,619231
+1760,619520
+1761,619821
+1762,620104
+1763,620398
+1764,620705
+1765,621022
+1766,621315
+1767,621605
+1768,621896
+1769,622190
+1770,622483
+1771,622805
+1772,623114
+1773,623422
+1774,623722
+1775,624014
+1776,624314
+1777,624602
+1778,624909
+1779,625218
+1780,625522
+1781,625821
+1782,626115
+1783,626409
+1784,626700
+1785,627010
+1786,627313
+1787,627624
+1788,627923
+1789,628209
+1790,628506
+1791,628788
+1792,629088
+1793,629404
+1794,629705
+1795,630000
+1796,630290
+1797,630571
+1798,630854
+1799,631152
+1800,631454
+1801,631759
+1802,632039
+1803,632340
+1804,632626
+1805,632904
+1806,633208
+1807,633513
+1808,633820
+1809,634127
+1810,634420
+1811,634718
+1812,635009
+1813,635287
+1814,635604
+1815,635915
+1816,636219
+1817,636514
+1818,636816
+1819,637113
+1820,637395
+1821,638043
+1822,638375
+1823,638686
+1824,639006
+1825,639313
+1826,639606
+1827,639942
+1828,640261
+1829,640567
+1830,640854
+1831,641152
+1832,641438
+1833,641705
+1834,642004
+1835,642309
+1836,642605
+1837,642879
+1838,643158
+1839,643437
+1840,643713
+1841,643971
+1842,644273
+1843,644567
+1844,644852
+1845,645124
+1846,645395
+1847,645669
+1848,645942
+1849,646208
+1850,646504
+1851,646801
+1852,647079
+1853,647352
+1854,647624
+1855,647893
+1856,648146
+1857,648421
+1858,648709
+1859,648993
+1860,649261
+1861,649523
+1862,649783
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/114_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/114_pvc.csv
new file mode 100644
index 00000000..f580dbb7
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/114_pvc.csv
@@ -0,0 +1,44 @@
+,PVC
+0,30765
+1,45606
+2,69598
+3,80510
+4,87131
+5,88951
+6,90920
+7,92961
+8,94869
+9,100525
+10,103668
+11,105514
+12,107503
+13,109405
+14,122093
+15,122248
+16,131012
+17,133961
+18,140604
+19,145555
+20,147519
+21,149533
+22,154996
+23,160254
+24,164345
+25,171218
+26,177072
+27,179092
+28,183463
+29,185323
+30,186025
+31,193369
+32,203123
+33,205036
+34,252944
+35,263603
+36,268524
+37,271145
+38,296374
+39,301538
+40,305146
+41,354272
+42,355971
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/116.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/116.pk.gz
new file mode 100644
index 00000000..3f7faf2a
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/116.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/116_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/116_all.csv
new file mode 100644
index 00000000..c468f961
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/116_all.csv
@@ -0,0 +1,2412 @@
+,R
+0,282
+1,561
+2,837
+3,1104
+4,1369
+5,1639
+6,1909
+7,2180
+8,2447
+9,2718
+10,2987
+11,3255
+12,3529
+13,3796
+14,4067
+15,4344
+16,4614
+17,4886
+18,5164
+19,5434
+20,5706
+21,5977
+22,6254
+23,6532
+24,6802
+25,7085
+26,7360
+27,7633
+28,7910
+29,8183
+30,8457
+31,8738
+32,9010
+33,9283
+34,9561
+35,9831
+36,10101
+37,10372
+38,10643
+39,10918
+40,11188
+41,11460
+42,11734
+43,12012
+44,12283
+45,12551
+46,12825
+47,13112
+48,13387
+49,13666
+50,13950
+51,14221
+52,14497
+53,14772
+54,15045
+55,15319
+56,15590
+57,15863
+58,16137
+59,16415
+60,16686
+61,16953
+62,17229
+63,17512
+64,17789
+65,18069
+66,18351
+67,18632
+68,18913
+69,19188
+70,19469
+71,19753
+72,20026
+73,20305
+74,20588
+75,20865
+76,21145
+77,21421
+78,21699
+79,21984
+80,22263
+81,22549
+82,22825
+83,23097
+84,23379
+85,23654
+86,23930
+87,24207
+88,24481
+89,24762
+90,25043
+91,25311
+92,25591
+93,25867
+94,26150
+95,26423
+96,26697
+97,26981
+98,27254
+99,27527
+100,27802
+101,28075
+102,28355
+103,28625
+104,28895
+105,29174
+106,29446
+107,29714
+108,29987
+109,30258
+110,30538
+111,30813
+112,31084
+113,31365
+114,31643
+115,31912
+116,32186
+117,32458
+118,32738
+119,33008
+120,33281
+121,33566
+122,33843
+123,34119
+124,34397
+125,34676
+126,34958
+127,35132
+128,35516
+129,35793
+130,35967
+131,36343
+132,36617
+133,36888
+134,37168
+135,37440
+136,37719
+137,37994
+138,38265
+139,38540
+140,38813
+141,39089
+142,39368
+143,39644
+144,39925
+145,40202
+146,40481
+147,40758
+148,41032
+149,41312
+150,41593
+151,41868
+152,42145
+153,42422
+154,42693
+155,42967
+156,43241
+157,43518
+158,43802
+159,44078
+160,44359
+161,44637
+162,44910
+163,45187
+164,45461
+165,45739
+166,46019
+167,46294
+168,46579
+169,46858
+170,47134
+171,47413
+172,47690
+173,47970
+174,48251
+175,48527
+176,48802
+177,49080
+178,49352
+179,49624
+180,49898
+181,50171
+182,50444
+183,50714
+184,50997
+185,51268
+186,51535
+187,51816
+188,52083
+189,52364
+190,52643
+191,52914
+192,53197
+193,53474
+194,53644
+195,54014
+196,54288
+197,54559
+198,54831
+199,55102
+200,55378
+201,55648
+202,55916
+203,56183
+204,56463
+205,56740
+206,56930
+207,57281
+208,57559
+209,57831
+210,58094
+211,58361
+212,58629
+213,58897
+214,59162
+215,59432
+216,59707
+217,59972
+218,60239
+219,60514
+220,60780
+221,61057
+222,61331
+223,61597
+224,61875
+225,62143
+226,62408
+227,62679
+228,62948
+229,63214
+230,63485
+231,63756
+232,64031
+233,64302
+234,64567
+235,64842
+236,65111
+237,65388
+238,65660
+239,65930
+240,66210
+241,66480
+242,66748
+243,67018
+244,67288
+245,67560
+246,67833
+247,68103
+248,68381
+249,68651
+250,68916
+251,69193
+252,69461
+253,69737
+254,70010
+255,70279
+256,70558
+257,70829
+258,71098
+259,71369
+260,71637
+261,71907
+262,72181
+263,72449
+264,72718
+265,72989
+266,73258
+267,73528
+268,73791
+269,74064
+270,74339
+271,74602
+272,74774
+273,75145
+274,75417
+275,75682
+276,75950
+277,76214
+278,76487
+279,76754
+280,77017
+281,77293
+282,77560
+283,77824
+284,78090
+285,78360
+286,78630
+287,78897
+288,79163
+289,79438
+290,79704
+291,79966
+292,80238
+293,80503
+294,80768
+295,81039
+296,81304
+297,81574
+298,81844
+299,82110
+300,82377
+301,82646
+302,82913
+303,83183
+304,83448
+305,83720
+306,83989
+307,84256
+308,84523
+309,84784
+310,85052
+311,85326
+312,85592
+313,85859
+314,86133
+315,86403
+316,86669
+317,86940
+318,87209
+319,87485
+320,87753
+321,88026
+322,88301
+323,88574
+324,88845
+325,89110
+326,89384
+327,89661
+328,89932
+329,90205
+330,90482
+331,90757
+332,91031
+333,91305
+334,91579
+335,91857
+336,92129
+337,92405
+338,92679
+339,92946
+340,93220
+341,93483
+342,93750
+343,94025
+344,94290
+345,94566
+346,94753
+347,95105
+348,95381
+349,95553
+350,95920
+351,96109
+352,96469
+353,96737
+354,97009
+355,97272
+356,97542
+357,97802
+358,98070
+359,98344
+360,98610
+361,98878
+362,99151
+363,99423
+364,99699
+365,99973
+366,100251
+367,100535
+368,100815
+369,101092
+370,101376
+371,101656
+372,101932
+373,102204
+374,102483
+375,102765
+376,103037
+377,103317
+378,103596
+379,103873
+380,104152
+381,104329
+382,104693
+383,104970
+384,105238
+385,105407
+386,105773
+387,106040
+388,106300
+389,106563
+390,106822
+391,107093
+392,107356
+393,107624
+394,107905
+395,108184
+396,108462
+397,108743
+398,109023
+399,109312
+400,109589
+401,109866
+402,110153
+403,110431
+404,110699
+405,110976
+406,111249
+407,111530
+408,111805
+409,112079
+410,112361
+411,112639
+412,112913
+413,113185
+414,113457
+415,113735
+416,114003
+417,114273
+418,114547
+419,114820
+420,115084
+421,115355
+422,115632
+423,115910
+424,116183
+425,116458
+426,116737
+427,117008
+428,117283
+429,117550
+430,117816
+431,118093
+432,118357
+433,118620
+434,118894
+435,119161
+436,119423
+437,119689
+438,119954
+439,120227
+440,120494
+441,120758
+442,121030
+443,121302
+444,121570
+445,121836
+446,122105
+447,122381
+448,122645
+449,122911
+450,123185
+451,123453
+452,123714
+453,123981
+454,124249
+455,124520
+456,124787
+457,125052
+458,125328
+459,125598
+460,125781
+461,126132
+462,126399
+463,126672
+464,126935
+465,127199
+466,127472
+467,127739
+468,128002
+469,128276
+470,128546
+471,128819
+472,129093
+473,129363
+474,129639
+475,129911
+476,130180
+477,130453
+478,130721
+479,130997
+480,131273
+481,131543
+482,131820
+483,132021
+484,132355
+485,132629
+486,132898
+487,133170
+488,133441
+489,133708
+490,133985
+491,134257
+492,134525
+493,134698
+494,135063
+495,135336
+496,135609
+497,135877
+498,136148
+499,136420
+500,136688
+501,136962
+502,137226
+503,137493
+504,137771
+505,138035
+506,138303
+507,138577
+508,138849
+509,139108
+510,139375
+511,139641
+512,139912
+513,140177
+514,140442
+515,140715
+516,140895
+517,141247
+518,141517
+519,141786
+520,142061
+521,142329
+522,142598
+523,142880
+524,143153
+525,143420
+526,143693
+527,143963
+528,144238
+529,144509
+530,144776
+531,145053
+532,145317
+533,145578
+534,145845
+535,146109
+536,146377
+537,146644
+538,146907
+539,147178
+540,147447
+541,147706
+542,147979
+543,148244
+544,148514
+545,148791
+546,148981
+547,149333
+548,149604
+549,149874
+550,150063
+551,150407
+552,150680
+553,150950
+554,151217
+555,151493
+556,151766
+557,152031
+558,152303
+559,152569
+560,152748
+561,153107
+562,153374
+563,153643
+564,153822
+565,154166
+566,154433
+567,154693
+568,154955
+569,155226
+570,155488
+571,155762
+572,156041
+573,156312
+574,156504
+575,156854
+576,157120
+577,157394
+578,157660
+579,157922
+580,158189
+581,158455
+582,158715
+583,158976
+584,159239
+585,159509
+586,159766
+587,160031
+588,160304
+589,160568
+590,160828
+591,161093
+592,161353
+593,161617
+594,161883
+595,162140
+596,162409
+597,162672
+598,162932
+599,163198
+600,163464
+601,163734
+602,164002
+603,164269
+604,164541
+605,164810
+606,164994
+607,165338
+608,165600
+609,165859
+610,166127
+611,166383
+612,166640
+613,166907
+614,167169
+615,167425
+616,167689
+617,167950
+618,168133
+619,168479
+620,168744
+621,169014
+622,169276
+623,169534
+624,169740
+625,170058
+626,170319
+627,170588
+628,170840
+629,171100
+630,171366
+631,171625
+632,171883
+633,172145
+634,172408
+635,172674
+636,172939
+637,173204
+638,173392
+639,173742
+640,174004
+641,174268
+642,174528
+643,174797
+644,175060
+645,175320
+646,175588
+647,175853
+648,176113
+649,176381
+650,176559
+651,176907
+652,177179
+653,177442
+654,177711
+655,177977
+656,178243
+657,178507
+658,178702
+659,179034
+660,179306
+661,179565
+662,179827
+663,180097
+664,180357
+665,180622
+666,180886
+667,181147
+668,181336
+669,181686
+670,181952
+671,182224
+672,182496
+673,182760
+674,183029
+675,183302
+676,183485
+677,183852
+678,184124
+679,184408
+680,184593
+681,184950
+682,185223
+683,185493
+684,185768
+685,186040
+686,186312
+687,186585
+688,186859
+689,187122
+690,187388
+691,187658
+692,187931
+693,188193
+694,188456
+695,188730
+696,188996
+697,189260
+698,189527
+699,189791
+700,190064
+701,190332
+702,190510
+703,190870
+704,191139
+705,191398
+706,191662
+707,191923
+708,192195
+709,192456
+710,192717
+711,192990
+712,193255
+713,193513
+714,193783
+715,194048
+716,194311
+717,194585
+718,194850
+719,195118
+720,195388
+721,195655
+722,195847
+723,196182
+724,196454
+725,196718
+726,196982
+727,197245
+728,197513
+729,197779
+730,198043
+731,198307
+732,198569
+733,198842
+734,199108
+735,199374
+736,199557
+737,199914
+738,200175
+739,200443
+740,200707
+741,200972
+742,201235
+743,201498
+744,201768
+745,202032
+746,202298
+747,202570
+748,202836
+749,203109
+750,203384
+751,203655
+752,203836
+753,204207
+754,204480
+755,204757
+756,205030
+757,205303
+758,205485
+759,205853
+760,206137
+761,206349
+762,206688
+763,206965
+764,207237
+765,207513
+766,207791
+767,208065
+768,208350
+769,208526
+770,208898
+771,209179
+772,209456
+773,209636
+774,210004
+775,210278
+776,210555
+777,210744
+778,211094
+779,211364
+780,211633
+781,211909
+782,212175
+783,212439
+784,212716
+785,212977
+786,213236
+787,213418
+788,213764
+789,214029
+790,214293
+791,214553
+792,214822
+793,215086
+794,215344
+795,215526
+796,215870
+797,216140
+798,216407
+799,216672
+800,216942
+801,217212
+802,217479
+803,217660
+804,218031
+805,218313
+806,218527
+807,218661
+808,219051
+809,219340
+810,219623
+811,219806
+812,220176
+813,220465
+814,220751
+815,220932
+816,221315
+817,221594
+818,221865
+819,222042
+820,222413
+821,222687
+822,222962
+823,223236
+824,223521
+825,223801
+826,224080
+827,224370
+828,224653
+829,224947
+830,225232
+831,225517
+832,225809
+833,226089
+834,226365
+835,226646
+836,226913
+837,227192
+838,227460
+839,227723
+840,228000
+841,228269
+842,228532
+843,228802
+844,229074
+845,229265
+846,229621
+847,229890
+848,230167
+849,230437
+850,230699
+851,230970
+852,231235
+853,231514
+854,231789
+855,232060
+856,232347
+857,232525
+858,232901
+859,233182
+860,233465
+861,233651
+862,234026
+863,234307
+864,234592
+865,234873
+866,235146
+867,235427
+868,235707
+869,236000
+870,236278
+871,236564
+872,236857
+873,237140
+874,237420
+875,237700
+876,237976
+877,238260
+878,238538
+879,238814
+880,239090
+881,239272
+882,239638
+883,239910
+884,240186
+885,240461
+886,240731
+887,241013
+888,241285
+889,241557
+890,241835
+891,242111
+892,242391
+893,242670
+894,242850
+895,243223
+896,243497
+897,243768
+898,244043
+899,244309
+900,244490
+901,244850
+902,245117
+903,245391
+904,245659
+905,245921
+906,246192
+907,246462
+908,246736
+909,247013
+910,247287
+911,247563
+912,247842
+913,248113
+914,248387
+915,248662
+916,248841
+917,249208
+918,249482
+919,249765
+920,250035
+921,250303
+922,250580
+923,250853
+924,251137
+925,251412
+926,251589
+927,251959
+928,252235
+929,252499
+930,252771
+931,253040
+932,253313
+933,253586
+934,253857
+935,254141
+936,254419
+937,254693
+938,254975
+939,255257
+940,255549
+941,255828
+942,256110
+943,256400
+944,256683
+945,256964
+946,257243
+947,257524
+948,257809
+949,258088
+950,258372
+951,258652
+952,258933
+953,259212
+954,259487
+955,259664
+956,260049
+957,260324
+958,260601
+959,260882
+960,261156
+961,261334
+962,261705
+963,261978
+964,262260
+965,262534
+966,262812
+967,262990
+968,263364
+969,263645
+970,263920
+971,264106
+972,264479
+973,264756
+974,265041
+975,265318
+976,265592
+977,265875
+978,266159
+979,266445
+980,266737
+981,267028
+982,267321
+983,267612
+984,267904
+985,268188
+986,268477
+987,268771
+988,269050
+989,269334
+990,269623
+991,269899
+992,270182
+993,270463
+994,270745
+995,271029
+996,271311
+997,271600
+998,271883
+999,272166
+1000,272451
+1001,272739
+1002,273033
+1003,273240
+1004,273593
+1005,273885
+1006,274166
+1007,274441
+1008,274719
+1009,274999
+1010,275283
+1011,275564
+1012,275852
+1013,276134
+1014,276413
+1015,276702
+1016,276983
+1017,277274
+1018,277556
+1019,277831
+1020,278124
+1021,278407
+1022,278680
+1023,278961
+1024,279241
+1025,279527
+1026,279804
+1027,280084
+1028,280364
+1029,280643
+1030,280920
+1031,281190
+1032,281471
+1033,281753
+1034,282022
+1035,282192
+1036,282573
+1037,282842
+1038,283118
+1039,283388
+1040,283655
+1041,283930
+1042,284204
+1043,284473
+1044,284748
+1045,285022
+1046,285297
+1047,285570
+1048,285851
+1049,286132
+1050,286406
+1051,286691
+1052,286969
+1053,287145
+1054,287522
+1055,287796
+1056,288069
+1057,288351
+1058,288629
+1059,288905
+1060,289190
+1061,289470
+1062,289748
+1063,290032
+1064,290317
+1065,290599
+1066,290878
+1067,291167
+1068,291449
+1069,291724
+1070,292009
+1071,292287
+1072,292567
+1073,292850
+1074,293131
+1075,293420
+1076,293703
+1077,293982
+1078,294268
+1079,294552
+1080,294840
+1081,295120
+1082,295400
+1083,295687
+1084,295970
+1085,296244
+1086,296520
+1087,296797
+1088,297082
+1089,297357
+1090,297636
+1091,297918
+1092,298199
+1093,298480
+1094,298760
+1095,299280
+1096,299568
+1097,299754
+1098,300132
+1099,300409
+1100,300689
+1101,300963
+1102,301242
+1103,301525
+1104,301802
+1105,302092
+1106,302281
+1107,302646
+1108,302933
+1109,303212
+1110,303497
+1111,303775
+1112,304054
+1113,304338
+1114,304621
+1115,304899
+1116,305175
+1117,305457
+1118,305742
+1119,306021
+1120,306308
+1121,306596
+1122,306874
+1123,307162
+1124,307449
+1125,307733
+1126,308017
+1127,308300
+1128,308585
+1129,308868
+1130,309143
+1131,309418
+1132,309695
+1133,309979
+1134,310253
+1135,310525
+1136,310810
+1137,311084
+1138,311355
+1139,311633
+1140,311905
+1141,312184
+1142,312455
+1143,312728
+1144,313003
+1145,313276
+1146,313546
+1147,313812
+1148,314082
+1149,314359
+1150,314628
+1151,314894
+1152,315174
+1153,315448
+1154,315716
+1155,315994
+1156,316272
+1157,316554
+1158,316830
+1159,317107
+1160,317389
+1161,317668
+1162,317945
+1163,318219
+1164,318497
+1165,318784
+1166,319059
+1167,319339
+1168,319624
+1169,319904
+1170,320183
+1171,320463
+1172,320743
+1173,321027
+1174,321306
+1175,321587
+1176,321871
+1177,322147
+1178,322425
+1179,322698
+1180,322977
+1181,323255
+1182,323526
+1183,323804
+1184,324078
+1185,324352
+1186,324630
+1187,324903
+1188,325181
+1189,325458
+1190,325731
+1191,326010
+1192,326288
+1193,326558
+1194,326829
+1195,327104
+1196,327381
+1197,327658
+1198,327932
+1199,328216
+1200,328493
+1201,328766
+1202,329051
+1203,329326
+1204,329606
+1205,329886
+1206,330158
+1207,330448
+1208,330728
+1209,331004
+1210,331283
+1211,331563
+1212,331846
+1213,332121
+1214,332402
+1215,332685
+1216,332966
+1217,333249
+1218,333522
+1219,333802
+1220,334080
+1221,334352
+1222,334629
+1223,334906
+1224,335176
+1225,335449
+1226,335725
+1227,336000
+1228,336278
+1229,336554
+1230,336841
+1231,337123
+1232,337398
+1233,337689
+1234,337968
+1235,338254
+1236,338535
+1237,338810
+1238,339096
+1239,339377
+1240,339648
+1241,339923
+1242,340202
+1243,340482
+1244,340755
+1245,341035
+1246,341312
+1247,341588
+1248,341763
+1249,342130
+1250,342407
+1251,342684
+1252,342952
+1253,343221
+1254,343496
+1255,343764
+1256,343942
+1257,344291
+1258,344558
+1259,344830
+1260,345094
+1261,345361
+1262,345630
+1263,345902
+1264,346172
+1265,346441
+1266,346712
+1267,346992
+1268,347264
+1269,347534
+1270,347817
+1271,348086
+1272,348352
+1273,348626
+1274,348901
+1275,349180
+1276,349454
+1277,349729
+1278,350010
+1279,350288
+1280,350562
+1281,350836
+1282,351109
+1283,351386
+1284,351656
+1285,351924
+1286,352204
+1287,352470
+1288,352646
+1289,353001
+1290,353268
+1291,353539
+1292,353805
+1293,354071
+1294,354347
+1295,354618
+1296,354885
+1297,355154
+1298,355424
+1299,355696
+1300,355965
+1301,356229
+1302,356507
+1303,356774
+1304,357035
+1305,357309
+1306,357488
+1307,357846
+1308,358121
+1309,358390
+1310,358666
+1311,358937
+1312,359205
+1313,359476
+1314,359743
+1315,360015
+1316,360251
+1317,360550
+1318,360826
+1319,361094
+1320,361356
+1321,361630
+1322,361897
+1323,362171
+1324,362443
+1325,362712
+1326,362990
+1327,363265
+1328,363530
+1329,363803
+1330,364075
+1331,364350
+1332,364619
+1333,364886
+1334,365163
+1335,365429
+1336,365690
+1337,365964
+1338,366225
+1339,366498
+1340,366770
+1341,367038
+1342,367318
+1343,367589
+1344,367857
+1345,368131
+1346,368402
+1347,368676
+1348,368942
+1349,369211
+1350,369489
+1351,369760
+1352,370019
+1353,370293
+1354,370562
+1355,370839
+1356,371107
+1357,371373
+1358,371652
+1359,371926
+1360,372191
+1361,372467
+1362,372737
+1363,373011
+1364,373282
+1365,373549
+1366,373830
+1367,374098
+1368,374269
+1369,374636
+1370,374905
+1371,375176
+1372,375444
+1373,375710
+1374,375987
+1375,376259
+1376,376523
+1377,376797
+1378,377071
+1379,377343
+1380,377526
+1381,377885
+1382,378164
+1383,378428
+1384,378690
+1385,378964
+1386,379228
+1387,379498
+1388,379771
+1389,380038
+1390,380310
+1391,380583
+1392,380853
+1393,381122
+1394,381304
+1395,381661
+1396,381935
+1397,382201
+1398,382470
+1399,382737
+1400,383003
+1401,383274
+1402,383533
+1403,383802
+1404,384078
+1405,384344
+1406,384614
+1407,384895
+1408,385074
+1409,385439
+1410,385714
+1411,385984
+1412,386261
+1413,386528
+1414,386797
+1415,387070
+1416,387336
+1417,387601
+1418,387864
+1419,388134
+1420,388410
+1421,388677
+1422,388853
+1423,389222
+1424,389497
+1425,389762
+1426,390032
+1427,390298
+1428,390567
+1429,390835
+1430,391100
+1431,391374
+1432,391643
+1433,391910
+1434,392180
+1435,392449
+1436,392633
+1437,392994
+1438,393264
+1439,393540
+1440,393813
+1441,394079
+1442,394346
+1443,394617
+1444,394894
+1445,395163
+1446,395434
+1447,395712
+1448,395985
+1449,396254
+1450,396525
+1451,396796
+1452,397075
+1453,397339
+1454,397609
+1455,397887
+1456,398161
+1457,398431
+1458,398611
+1459,398966
+1460,399244
+1461,399513
+1462,399780
+1463,400048
+1464,400313
+1465,400580
+1466,400842
+1467,401107
+1468,401378
+1469,401639
+1470,401905
+1471,402176
+1472,402445
+1473,402708
+1474,402975
+1475,403241
+1476,403517
+1477,403788
+1478,404059
+1479,404336
+1480,404610
+1481,404884
+1482,405056
+1483,405429
+1484,405709
+1485,405977
+1486,406250
+1487,406529
+1488,406806
+1489,407077
+1490,407254
+1491,407614
+1492,407895
+1493,408166
+1494,408431
+1495,408706
+1496,408977
+1497,409238
+1498,409504
+1499,409775
+1500,409955
+1501,410313
+1502,410581
+1503,410858
+1504,411128
+1505,411395
+1506,411669
+1507,411937
+1508,412117
+1509,412482
+1510,412749
+1511,413025
+1512,413295
+1513,413559
+1514,413827
+1515,414093
+1516,414363
+1517,414633
+1518,414902
+1519,415178
+1520,415449
+1521,415716
+1522,415992
+1523,416262
+1524,416538
+1525,416815
+1526,417084
+1527,417364
+1528,417635
+1529,417901
+1530,418173
+1531,418442
+1532,418715
+1533,418987
+1534,419257
+1535,419533
+1536,419711
+1537,420067
+1538,420341
+1539,420607
+1540,420881
+1541,421153
+1542,421415
+1543,421688
+1544,421956
+1545,422215
+1546,422484
+1547,422751
+1548,423020
+1549,423286
+1550,423551
+1551,423828
+1552,424096
+1553,424361
+1554,424635
+1555,424901
+1556,425081
+1557,425443
+1558,425708
+1559,425978
+1560,426243
+1561,426503
+1562,426770
+1563,427038
+1564,427308
+1565,427580
+1566,427850
+1567,428130
+1568,428403
+1569,428673
+1570,428952
+1571,429222
+1572,429506
+1573,429783
+1574,429955
+1575,430331
+1576,430606
+1577,430873
+1578,431147
+1579,431415
+1580,431691
+1581,431958
+1582,432226
+1583,432502
+1584,432775
+1585,433042
+1586,433314
+1587,433585
+1588,433763
+1589,434130
+1590,434397
+1591,434676
+1592,434946
+1593,435205
+1594,435474
+1595,435740
+1596,436011
+1597,436277
+1598,436546
+1599,436822
+1600,437002
+1601,437357
+1602,437627
+1603,437892
+1604,438166
+1605,438435
+1606,438697
+1607,438974
+1608,439240
+1609,439504
+1610,439775
+1611,440043
+1612,440311
+1613,440583
+1614,440849
+1615,441119
+1616,441388
+1617,441656
+1618,441924
+1619,442184
+1620,442452
+1621,442725
+1622,442986
+1623,443251
+1624,443520
+1625,443785
+1626,444048
+1627,444314
+1628,444576
+1629,444846
+1630,445110
+1631,445376
+1632,445650
+1633,445921
+1634,446184
+1635,446447
+1636,446713
+1637,446981
+1638,447244
+1639,447505
+1640,447778
+1641,448040
+1642,448297
+1643,448566
+1644,448827
+1645,449094
+1646,449361
+1647,449627
+1648,449898
+1649,450165
+1650,450426
+1651,450692
+1652,450955
+1653,451218
+1654,451484
+1655,451743
+1656,452010
+1657,452270
+1658,452531
+1659,452795
+1660,453053
+1661,453315
+1662,453584
+1663,453848
+1664,454021
+1665,454379
+1666,454648
+1667,454910
+1668,455170
+1669,455434
+1670,455700
+1671,455959
+1672,456220
+1673,456484
+1674,456746
+1675,457005
+1676,457269
+1677,457528
+1678,457706
+1679,458058
+1680,458322
+1681,458592
+1682,458858
+1683,459118
+1684,459380
+1685,459642
+1686,459910
+1687,460172
+1688,460432
+1689,460706
+1690,460882
+1691,461227
+1692,461498
+1693,461761
+1694,462028
+1695,462292
+1696,462557
+1697,462829
+1698,463006
+1699,463352
+1700,463620
+1701,463882
+1702,464145
+1703,464409
+1704,464668
+1705,464935
+1706,465195
+1707,465457
+1708,465630
+1709,465982
+1710,466247
+1711,466513
+1712,466777
+1713,467039
+1714,467309
+1715,467577
+1716,467838
+1717,468099
+1718,468363
+1719,468631
+1720,468891
+1721,469149
+1722,469417
+1723,469679
+1724,469937
+1725,470206
+1726,470468
+1727,470736
+1728,471006
+1729,471269
+1730,471541
+1731,471809
+1732,472071
+1733,472334
+1734,472508
+1735,472860
+1736,473133
+1737,473392
+1738,473659
+1739,473924
+1740,474190
+1741,474460
+1742,474722
+1743,474990
+1744,475260
+1745,475526
+1746,475791
+1747,476067
+1748,476336
+1749,476597
+1750,476865
+1751,477134
+1752,477406
+1753,477673
+1754,477940
+1755,478211
+1756,478386
+1757,478744
+1758,479010
+1759,479277
+1760,479547
+1761,479812
+1762,480077
+1763,480355
+1764,480623
+1765,480884
+1766,481154
+1767,481424
+1768,481697
+1769,481963
+1770,482144
+1771,482498
+1772,482769
+1773,483030
+1774,483299
+1775,483565
+1776,483839
+1777,484108
+1778,484371
+1779,484650
+1780,484918
+1781,485179
+1782,485450
+1783,485722
+1784,485904
+1785,486260
+1786,486526
+1787,486797
+1788,487065
+1789,487328
+1790,487592
+1791,487855
+1792,488126
+1793,488388
+1794,488586
+1795,488923
+1796,489191
+1797,489452
+1798,489720
+1799,489988
+1800,490260
+1801,490524
+1802,490787
+1803,491057
+1804,491321
+1805,491580
+1806,491850
+1807,492109
+1808,492377
+1809,492644
+1810,492908
+1811,493185
+1812,493452
+1813,493714
+1814,493985
+1815,494251
+1816,494430
+1817,494786
+1818,495054
+1819,495325
+1820,495586
+1821,495846
+1822,496118
+1823,496377
+1824,496646
+1825,496918
+1826,497181
+1827,497451
+1828,497630
+1829,497985
+1830,498252
+1831,498519
+1832,498779
+1833,499052
+1834,499311
+1835,499573
+1836,499838
+1837,500101
+1838,500365
+1839,500625
+1840,500886
+1841,501156
+1842,501421
+1843,501686
+1844,501967
+1845,502231
+1846,502494
+1847,502770
+1848,503034
+1849,503304
+1850,503573
+1851,503841
+1852,504112
+1853,504382
+1854,504649
+1855,504918
+1856,505187
+1857,505459
+1858,505723
+1859,505996
+1860,506274
+1861,506540
+1862,506802
+1863,507073
+1864,507338
+1865,507603
+1866,507870
+1867,508133
+1868,508396
+1869,508660
+1870,508921
+1871,509183
+1872,509441
+1873,509704
+1874,509974
+1875,510239
+1876,510513
+1877,510788
+1878,511063
+1879,511337
+1880,511512
+1881,511878
+1882,512156
+1883,512419
+1884,512682
+1885,512954
+1886,513221
+1887,513488
+1888,513750
+1889,514020
+1890,514292
+1891,514556
+1892,514826
+1893,515097
+1894,515365
+1895,515633
+1896,515899
+1897,516167
+1898,516441
+1899,516706
+1900,516876
+1901,517241
+1902,517513
+1903,517781
+1904,518045
+1905,518314
+1906,518587
+1907,518854
+1908,519129
+1909,519401
+1910,519666
+1911,519935
+1912,520198
+1913,520460
+1914,520725
+1915,520980
+1916,521235
+1917,521498
+1918,521762
+1919,522020
+1920,522194
+1921,522538
+1922,522807
+1923,523067
+1924,523326
+1925,523596
+1926,523854
+1927,524104
+1928,524362
+1929,524616
+1930,524874
+1931,525130
+1932,525386
+1933,525646
+1934,525903
+1935,526161
+1936,526424
+1937,526678
+1938,526943
+1939,527209
+1940,527469
+1941,527737
+1942,527927
+1943,528263
+1944,528524
+1945,528781
+1946,529039
+1947,529301
+1948,529557
+1949,529813
+1950,530077
+1951,530337
+1952,530593
+1953,530854
+1954,531114
+1955,531380
+1956,531641
+1957,531905
+1958,532173
+1959,532436
+1960,532701
+1961,532965
+1962,533223
+1963,533483
+1964,533753
+1965,534011
+1966,534267
+1967,534534
+1968,534797
+1969,535055
+1970,535313
+1971,535575
+1972,535839
+1973,536097
+1974,536357
+1975,536626
+1976,536885
+1977,537142
+1978,537407
+1979,537667
+1980,537931
+1981,538189
+1982,538446
+1983,538706
+1984,538964
+1985,539222
+1986,539481
+1987,539739
+1988,540004
+1989,540273
+1990,540539
+1991,540812
+1992,541086
+1993,541361
+1994,541629
+1995,541895
+1996,542088
+1997,542435
+1998,542692
+1999,542948
+2000,543216
+2001,543481
+2002,543740
+2003,544000
+2004,544264
+2005,544531
+2006,544794
+2007,545057
+2008,545324
+2009,545590
+2010,545849
+2011,546115
+2012,546379
+2013,546649
+2014,546911
+2015,547170
+2016,547444
+2017,547709
+2018,547965
+2019,548226
+2020,548490
+2021,548755
+2022,549022
+2023,549285
+2024,549558
+2025,549824
+2026,550082
+2027,550349
+2028,550535
+2029,550879
+2030,551146
+2031,551405
+2032,551676
+2033,551946
+2034,552205
+2035,552475
+2036,552648
+2037,553025
+2038,553298
+2039,553569
+2040,553849
+2041,554118
+2042,554384
+2043,554658
+2044,554925
+2045,555197
+2046,555459
+2047,555721
+2048,555989
+2049,556252
+2050,556506
+2051,556770
+2052,557031
+2053,557295
+2054,557557
+2055,557819
+2056,558082
+2057,558340
+2058,558527
+2059,558671
+2060,559042
+2061,559304
+2062,559572
+2063,559828
+2064,560084
+2065,560350
+2066,560609
+2067,560864
+2068,561128
+2069,561391
+2070,561655
+2071,561925
+2072,562192
+2073,562464
+2074,562727
+2075,562994
+2076,563259
+2077,563518
+2078,563782
+2079,563967
+2080,564309
+2081,564571
+2082,564840
+2083,565103
+2084,565364
+2085,565627
+2086,565888
+2087,566149
+2088,566412
+2089,566607
+2090,566934
+2091,567197
+2092,567448
+2093,567710
+2094,567969
+2095,568234
+2096,568495
+2097,568756
+2098,569024
+2099,569294
+2100,569557
+2101,569826
+2102,570096
+2103,570361
+2104,570635
+2105,570903
+2106,571172
+2107,571440
+2108,571702
+2109,571967
+2110,572227
+2111,572494
+2112,572758
+2113,573017
+2114,573281
+2115,573548
+2116,573808
+2117,574070
+2118,574333
+2119,574508
+2120,574863
+2121,575124
+2122,575384
+2123,575651
+2124,575913
+2125,576170
+2126,576427
+2127,576686
+2128,576952
+2129,577206
+2130,577463
+2131,577733
+2132,577993
+2133,578249
+2134,578514
+2135,578778
+2136,579041
+2137,579307
+2138,579572
+2139,579847
+2140,580115
+2141,580375
+2142,580641
+2143,580903
+2144,581174
+2145,581430
+2146,581684
+2147,581952
+2148,582213
+2149,582466
+2150,582731
+2151,582993
+2152,583255
+2153,583521
+2154,583696
+2155,584049
+2156,584311
+2157,584563
+2158,584820
+2159,585073
+2160,585331
+2161,585594
+2162,585845
+2163,586100
+2164,586365
+2165,586623
+2166,586875
+2167,587134
+2168,587395
+2169,587657
+2170,587919
+2171,588177
+2172,588443
+2173,588703
+2174,588955
+2175,589212
+2176,589470
+2177,589728
+2178,589989
+2179,590241
+2180,590495
+2181,590754
+2182,591005
+2183,591257
+2184,591508
+2185,591757
+2186,592012
+2187,592268
+2188,592515
+2189,592773
+2190,593025
+2191,593276
+2192,593528
+2193,593779
+2194,594035
+2195,594294
+2196,594543
+2197,594796
+2198,595059
+2199,595313
+2200,595567
+2201,595824
+2202,596080
+2203,596339
+2204,596600
+2205,596858
+2206,597120
+2207,597381
+2208,597639
+2209,597899
+2210,598156
+2211,598418
+2212,598681
+2213,598935
+2214,599188
+2215,599454
+2216,599709
+2217,599962
+2218,600217
+2219,600471
+2220,600733
+2221,600990
+2222,601245
+2223,601510
+2224,601764
+2225,602015
+2226,602272
+2227,602523
+2228,602779
+2229,603034
+2230,603285
+2231,603540
+2232,603800
+2233,604054
+2234,604307
+2235,604564
+2236,604820
+2237,605088
+2238,605350
+2239,605606
+2240,605871
+2241,606134
+2242,606388
+2243,606649
+2244,606908
+2245,607169
+2246,607422
+2247,607675
+2248,607942
+2249,608196
+2250,608444
+2251,608704
+2252,608960
+2253,609214
+2254,609475
+2255,609734
+2256,609996
+2257,610260
+2258,610519
+2259,610779
+2260,611036
+2261,611301
+2262,611567
+2263,611823
+2264,612082
+2265,612348
+2266,612607
+2267,612866
+2268,613124
+2269,613383
+2270,613646
+2271,613904
+2272,614161
+2273,614425
+2274,614687
+2275,614939
+2276,615197
+2277,615453
+2278,615713
+2279,615968
+2280,616224
+2281,616486
+2282,616744
+2283,616998
+2284,617259
+2285,617515
+2286,617765
+2287,618027
+2288,618282
+2289,618536
+2290,618795
+2291,619055
+2292,619302
+2293,619557
+2294,619814
+2295,620080
+2296,620334
+2297,620590
+2298,620850
+2299,621108
+2300,621360
+2301,621617
+2302,621870
+2303,622127
+2304,622389
+2305,622646
+2306,622903
+2307,623169
+2308,623436
+2309,623692
+2310,623956
+2311,624219
+2312,624486
+2313,624746
+2314,624920
+2315,625271
+2316,625531
+2317,625785
+2318,626047
+2319,626303
+2320,626561
+2321,626826
+2322,627085
+2323,627349
+2324,627613
+2325,627873
+2326,628133
+2327,628392
+2328,628655
+2329,628918
+2330,629173
+2331,629430
+2332,629693
+2333,629950
+2334,630207
+2335,630466
+2336,630722
+2337,630986
+2338,631245
+2339,631504
+2340,631773
+2341,632033
+2342,632285
+2343,632547
+2344,632802
+2345,633058
+2346,633312
+2347,633569
+2348,633831
+2349,634091
+2350,634349
+2351,634609
+2352,634866
+2353,635127
+2354,635396
+2355,635653
+2356,635917
+2357,636188
+2358,636454
+2359,636714
+2360,636976
+2361,637239
+2362,637503
+2363,637760
+2364,638020
+2365,638280
+2366,638536
+2367,638792
+2368,639048
+2369,639303
+2370,639567
+2371,639830
+2372,640088
+2373,640355
+2374,640621
+2375,640875
+2376,641137
+2377,641394
+2378,641658
+2379,641917
+2380,642177
+2381,642447
+2382,642706
+2383,642963
+2384,643228
+2385,643488
+2386,643748
+2387,644013
+2388,644272
+2389,644537
+2390,644801
+2391,645055
+2392,645311
+2393,645567
+2394,645826
+2395,646090
+2396,646338
+2397,646594
+2398,646856
+2399,647113
+2400,647367
+2401,647623
+2402,647879
+2403,648143
+2404,648404
+2405,648662
+2406,648932
+2407,649191
+2408,649442
+2409,649701
+2410,649957
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/116_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/116_pvc.csv
new file mode 100644
index 00000000..1a02a4a5
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/116_pvc.csv
@@ -0,0 +1,110 @@
+,PVC
+0,35132
+1,35967
+2,53644
+3,56183
+4,56930
+5,74774
+6,94753
+7,95553
+8,96109
+9,104329
+10,105407
+11,125781
+12,132021
+13,134698
+14,140895
+15,148981
+16,150063
+17,152748
+18,153822
+19,156504
+20,164994
+21,168133
+22,169740
+23,173392
+24,176559
+25,178702
+26,181336
+27,183485
+28,184593
+29,190510
+30,195847
+31,199557
+32,203836
+33,205485
+34,206349
+35,208526
+36,209636
+37,210744
+38,213418
+39,215526
+40,217660
+41,218527
+42,218661
+43,219806
+44,220932
+45,222042
+46,229265
+47,232525
+48,233651
+49,239272
+50,242850
+51,244490
+52,248841
+53,251589
+54,259664
+55,261334
+56,262990
+57,264106
+58,273240
+59,282192
+60,287145
+61,299754
+62,302281
+63,341763
+64,343942
+65,352646
+66,357488
+67,374269
+68,377526
+69,381304
+70,385074
+71,388853
+72,392633
+73,398611
+74,405056
+75,407254
+76,409955
+77,412117
+78,419711
+79,425081
+80,429955
+81,433763
+82,437002
+83,454021
+84,457706
+85,460882
+86,463006
+87,465630
+88,472508
+89,478386
+90,482144
+91,485904
+92,488586
+93,494430
+94,497630
+95,511512
+96,516876
+97,522194
+98,527927
+99,542088
+100,550535
+101,552648
+102,558527
+103,558671
+104,563967
+105,566607
+106,574508
+107,583696
+108,624920
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/119.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/119.pk.gz
new file mode 100644
index 00000000..f51661d0
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/119.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/119_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/119_all.csv
new file mode 100644
index 00000000..56ffc9d6
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/119_all.csv
@@ -0,0 +1,1988 @@
+,R
+0,309
+1,503
+2,977
+3,1315
+4,1651
+5,1971
+6,2294
+7,2488
+8,2956
+9,3296
+10,3613
+11,3923
+12,4257
+13,4448
+14,4906
+15,5239
+16,5552
+17,5882
+18,6210
+19,6521
+20,6864
+21,7200
+22,7512
+23,7709
+24,8178
+25,8377
+26,8860
+27,9052
+28,9531
+29,9736
+30,10194
+31,10421
+32,10867
+33,11065
+34,11545
+35,11863
+36,12186
+37,12502
+38,12804
+39,12999
+40,13462
+41,13657
+42,14120
+43,14325
+44,14788
+45,14981
+46,15451
+47,15768
+48,16080
+49,16405
+50,16720
+51,16908
+52,17391
+53,17722
+54,17913
+55,18388
+56,18726
+57,18921
+58,19403
+59,19616
+60,20104
+61,20437
+62,20628
+63,21102
+64,21296
+65,21763
+66,21970
+67,22411
+68,22744
+69,23062
+70,23381
+71,23722
+72,24054
+73,24406
+74,24747
+75,25070
+76,25263
+77,25756
+78,26072
+79,26402
+80,26729
+81,27047
+82,27366
+83,27695
+84,27883
+85,28371
+86,28718
+87,29055
+88,29376
+89,29704
+90,29910
+91,30386
+92,30575
+93,31066
+94,31262
+95,31727
+96,32063
+97,32375
+98,32697
+99,33025
+100,33344
+101,33667
+102,34001
+103,34329
+104,34657
+105,34995
+106,35338
+107,35666
+108,36015
+109,36354
+110,36684
+111,37028
+112,37356
+113,37681
+114,38027
+115,38353
+116,38675
+117,39015
+118,39340
+119,39658
+120,39984
+121,40300
+122,40627
+123,40952
+124,41278
+125,41608
+126,41936
+127,42126
+128,42595
+129,42927
+130,43249
+131,43562
+132,43881
+133,44206
+134,44517
+135,44834
+136,45029
+137,45492
+138,45832
+139,46160
+140,46481
+141,46814
+142,47132
+143,47325
+144,47795
+145,47991
+146,48463
+147,48699
+148,49148
+149,49490
+150,49807
+151,50003
+152,50468
+153,50795
+154,50985
+155,51460
+156,51788
+157,52115
+158,52434
+159,52747
+160,52941
+161,53407
+162,53752
+163,54079
+164,54395
+165,54726
+166,55047
+167,55366
+168,55698
+169,56019
+170,56337
+171,56672
+172,56986
+173,57173
+174,57652
+175,57971
+176,58156
+177,58624
+178,58943
+179,59136
+180,59591
+181,59790
+182,60257
+183,60570
+184,60753
+185,61208
+186,61517
+187,61845
+188,62173
+189,62492
+190,62688
+191,63194
+192,63519
+193,63716
+194,64213
+195,64568
+196,64761
+197,65249
+198,65586
+199,65776
+200,66252
+201,66586
+202,66782
+203,67262
+204,67458
+205,67935
+206,68265
+207,68455
+208,68915
+209,69119
+210,69583
+211,69787
+212,70250
+213,70478
+214,70931
+215,71122
+216,71598
+217,71799
+218,72267
+219,72605
+220,72928
+221,73250
+222,73594
+223,73923
+224,74110
+225,74595
+226,74799
+227,75281
+228,75613
+229,75932
+230,76131
+231,76612
+232,76807
+233,77287
+234,77484
+235,77956
+236,78292
+237,78606
+238,78941
+239,79275
+240,79590
+241,79924
+242,80263
+243,80601
+244,80940
+245,81286
+246,81634
+247,81823
+248,82298
+249,82641
+250,82960
+251,83153
+252,83630
+253,83825
+254,84305
+255,84634
+256,84939
+257,85137
+258,85603
+259,85798
+260,86272
+261,86587
+262,86783
+263,87253
+264,87572
+265,87769
+266,88238
+267,88573
+268,88767
+269,89240
+270,89502
+271,89948
+272,90265
+273,90458
+274,90936
+275,91284
+276,91606
+277,91918
+278,92260
+279,92450
+280,92919
+281,93263
+282,93592
+283,93919
+284,94240
+285,94430
+286,94908
+287,95245
+288,95566
+289,95881
+290,96205
+291,96400
+292,96878
+293,97214
+294,97551
+295,97872
+296,98063
+297,98533
+298,98724
+299,99201
+300,99531
+301,99846
+302,100037
+303,100511
+304,100832
+305,101151
+306,101343
+307,101812
+308,102010
+309,102471
+310,102684
+311,103150
+312,103468
+313,103659
+314,104112
+315,104426
+316,104621
+317,105068
+318,105383
+319,105595
+320,106033
+321,106221
+322,106700
+323,106894
+324,107363
+325,107575
+326,108027
+327,108362
+328,108554
+329,109016
+330,109340
+331,109531
+332,109997
+333,110317
+334,110506
+335,110974
+336,111300
+337,111488
+338,111954
+339,112279
+340,112471
+341,112937
+342,113127
+343,113599
+344,113908
+345,114210
+346,114525
+347,114829
+348,115148
+349,115477
+350,115788
+351,115976
+352,116458
+353,116654
+354,117116
+355,117441
+356,117751
+357,117946
+358,118412
+359,118729
+360,118930
+361,119391
+362,119706
+363,119899
+364,120354
+365,120674
+366,120867
+367,121310
+368,121637
+369,121825
+370,122267
+371,122584
+372,122773
+373,123230
+374,123557
+375,123876
+376,124190
+377,124382
+378,124837
+379,125033
+380,125484
+381,125804
+382,126112
+383,126422
+384,126739
+385,127047
+386,127363
+387,127683
+388,127991
+389,128309
+390,128644
+391,128957
+392,129275
+393,129608
+394,129921
+395,130106
+396,130570
+397,130763
+398,131232
+399,131558
+400,131865
+401,132068
+402,132529
+403,132722
+404,133185
+405,133499
+406,133688
+407,134147
+408,134462
+409,134647
+410,135108
+411,135423
+412,135610
+413,136068
+414,136387
+415,136583
+416,137045
+417,137362
+418,137560
+419,138026
+420,138334
+421,138521
+422,138974
+423,139294
+424,139609
+425,139930
+426,140264
+427,140587
+428,140915
+429,141240
+430,141563
+431,141898
+432,142095
+433,142564
+434,142910
+435,143230
+436,143536
+437,143864
+438,144176
+439,144495
+440,144823
+441,145135
+442,145458
+443,145791
+444,146108
+445,146424
+446,146753
+447,147075
+448,147402
+449,147724
+450,148041
+451,148366
+452,148687
+453,148997
+454,149317
+455,149645
+456,149966
+457,150279
+458,150604
+459,150932
+460,151234
+461,151547
+462,151738
+463,152195
+464,152532
+465,152858
+466,153166
+467,153491
+468,153689
+469,154154
+470,154490
+471,154802
+472,155124
+473,155456
+474,155768
+475,156099
+476,156439
+477,156760
+478,156944
+479,157424
+480,157751
+481,157948
+482,158425
+483,158748
+484,158948
+485,159427
+486,159744
+487,159936
+488,160393
+489,160715
+490,160904
+491,161355
+492,161556
+493,162016
+494,162334
+495,162638
+496,162828
+497,163305
+498,163624
+499,163950
+500,164291
+501,164610
+502,164930
+503,165265
+504,165584
+505,165774
+506,166257
+507,166450
+508,166928
+509,167267
+510,167577
+511,167774
+512,168243
+513,168441
+514,168914
+515,169111
+516,169582
+517,169916
+518,170222
+519,170539
+520,170861
+521,171052
+522,171526
+523,171864
+524,172200
+525,172517
+526,172838
+527,173035
+528,173503
+529,173853
+530,174181
+531,174496
+532,174834
+533,175151
+534,175468
+535,175805
+536,176120
+537,176442
+538,176781
+539,177107
+540,177430
+541,177764
+542,178087
+543,178403
+544,178727
+545,179052
+546,179376
+547,179696
+548,180014
+549,180335
+550,180659
+551,180975
+552,181287
+553,181612
+554,181936
+555,182251
+556,182576
+557,182899
+558,183223
+559,183551
+560,183873
+561,184191
+562,184526
+563,184847
+564,185171
+565,185504
+566,185822
+567,186145
+568,186469
+569,186784
+570,187103
+571,187437
+572,187764
+573,188077
+574,188418
+575,188753
+576,189064
+577,189393
+578,189716
+579,190035
+580,190362
+581,190680
+582,191004
+583,191333
+584,191650
+585,191968
+586,192292
+587,192616
+588,192941
+589,193266
+590,193591
+591,193907
+592,194219
+593,194530
+594,194839
+595,195154
+596,195475
+597,195783
+598,196109
+599,196309
+600,196774
+601,197114
+602,197441
+603,197756
+604,198092
+605,198278
+606,198753
+607,199102
+608,199434
+609,199757
+610,200084
+611,200273
+612,200759
+613,201102
+614,201431
+615,201755
+616,202082
+617,202268
+618,202744
+619,203087
+620,203414
+621,203723
+622,204050
+623,204367
+624,204559
+625,205038
+626,205360
+627,205551
+628,206045
+629,206373
+630,206562
+631,207049
+632,207383
+633,207571
+634,208043
+635,208378
+636,208572
+637,209044
+638,209378
+639,209570
+640,210043
+641,210242
+642,210719
+643,211039
+644,211236
+645,211695
+646,212027
+647,212224
+648,212686
+649,213004
+650,213190
+651,213650
+652,213845
+653,214312
+654,214621
+655,214821
+656,215270
+657,215580
+658,215773
+659,216253
+660,216592
+661,216780
+662,217260
+663,217593
+664,217923
+665,218244
+666,218565
+667,218889
+668,219219
+669,219536
+670,219734
+671,220210
+672,220534
+673,220726
+674,221194
+675,221387
+676,221864
+677,222184
+678,222490
+679,222811
+680,223130
+681,223443
+682,223771
+683,223959
+684,224430
+685,224779
+686,225094
+687,225405
+688,225741
+689,225930
+690,226403
+691,226754
+692,227082
+693,227408
+694,227740
+695,227927
+696,228418
+697,228763
+698,229084
+699,229395
+700,229723
+701,230053
+702,230365
+703,230696
+704,231027
+705,231340
+706,231666
+707,231991
+708,232310
+709,232646
+710,232965
+711,233282
+712,233623
+713,233936
+714,234120
+715,234596
+716,234919
+717,235110
+718,235583
+719,235908
+720,236233
+721,236556
+722,236864
+723,237181
+724,237510
+725,237837
+726,238150
+727,238484
+728,238811
+729,239137
+730,239466
+731,239791
+732,240116
+733,240457
+734,240777
+735,240969
+736,241458
+737,241788
+738,241981
+739,242450
+740,242776
+741,242968
+742,243446
+743,243764
+744,244095
+745,244414
+746,244720
+747,244915
+748,245391
+749,245717
+750,245912
+751,246385
+752,246707
+753,247029
+754,247347
+755,247665
+756,247853
+757,248320
+758,248649
+759,248842
+760,249308
+761,249647
+762,249975
+763,250283
+764,250599
+765,250923
+766,251240
+767,251556
+768,251880
+769,252204
+770,252527
+771,252842
+772,253164
+773,253478
+774,253808
+775,254135
+776,254443
+777,254775
+778,254965
+779,255432
+780,255773
+781,256090
+782,256415
+783,256747
+784,256934
+785,257411
+786,257754
+787,258069
+788,258384
+789,258697
+790,258889
+791,259358
+792,259689
+793,260010
+794,260329
+795,260658
+796,260842
+797,261322
+798,261669
+799,262001
+800,262326
+801,262664
+802,262987
+803,263177
+804,263657
+805,263983
+806,264172
+807,264658
+808,264984
+809,265173
+810,265654
+811,265852
+812,266343
+813,266668
+814,267001
+815,267339
+816,267655
+817,267843
+818,268324
+819,268520
+820,268992
+821,269324
+822,269638
+823,269831
+824,270302
+825,270497
+826,270976
+827,271315
+828,271626
+829,271951
+830,272282
+831,272603
+832,272792
+833,273266
+834,273597
+835,273789
+836,274261
+837,274584
+838,274774
+839,275249
+840,275579
+841,275765
+842,276240
+843,276441
+844,276916
+845,277111
+846,277574
+847,277908
+848,278217
+849,278407
+850,278882
+851,279213
+852,279398
+853,279877
+854,280202
+855,280396
+856,280875
+857,281199
+858,281395
+859,281862
+860,282187
+861,282377
+862,282839
+863,283035
+864,283498
+865,283696
+866,284164
+867,284403
+868,284847
+869,285191
+870,285515
+871,285839
+872,286165
+873,286350
+874,286834
+875,287179
+876,287502
+877,287823
+878,288157
+879,288487
+880,288801
+881,289128
+882,289457
+883,289784
+884,290108
+885,290427
+886,290744
+887,291077
+888,291387
+889,291700
+890,292034
+891,292349
+892,292661
+893,292991
+894,293302
+895,293625
+896,293955
+897,294140
+898,294610
+899,294953
+900,295272
+901,295597
+902,295921
+903,296239
+904,296433
+905,296919
+906,297112
+907,297594
+908,297934
+909,298251
+910,298437
+911,298924
+912,299123
+913,299596
+914,299932
+915,300255
+916,300445
+917,300923
+918,301263
+919,301452
+920,301938
+921,302131
+922,302611
+923,302938
+924,303254
+925,303572
+926,303886
+927,304198
+928,304532
+929,304857
+930,305178
+931,305525
+932,305859
+933,306180
+934,306518
+935,306844
+936,307174
+937,307502
+938,307818
+939,308013
+940,308499
+941,308822
+942,309152
+943,309483
+944,309807
+945,310124
+946,310443
+947,310768
+948,311079
+949,311391
+950,311706
+951,312019
+952,312349
+953,312664
+954,312852
+955,313328
+956,313655
+957,313846
+958,314319
+959,314639
+960,314971
+961,315299
+962,315609
+963,315936
+964,316266
+965,316574
+966,316902
+967,317231
+968,317559
+969,317881
+970,318211
+971,318401
+972,318883
+973,319221
+974,319558
+975,319876
+976,320208
+977,320401
+978,320871
+979,321220
+980,321545
+981,321863
+982,322200
+983,322520
+984,322843
+985,323181
+986,323496
+987,323683
+988,324177
+989,324372
+990,324847
+991,325178
+992,325496
+993,325692
+994,326162
+995,326491
+996,326816
+997,327016
+998,327478
+999,327810
+1000,328138
+1001,328458
+1002,328655
+1003,329130
+1004,329456
+1005,329786
+1006,330113
+1007,330443
+1008,330761
+1009,331095
+1010,331423
+1011,331735
+1012,331940
+1013,332412
+1014,332730
+1015,333045
+1016,333362
+1017,333682
+1018,333990
+1019,334311
+1020,334501
+1021,334976
+1022,335316
+1023,335652
+1024,335967
+1025,336305
+1026,336639
+1027,336957
+1028,337294
+1029,337621
+1030,337940
+1031,338280
+1032,338612
+1033,338941
+1034,339286
+1035,339612
+1036,339948
+1037,340280
+1038,340593
+1039,340786
+1040,341262
+1041,341594
+1042,341794
+1043,342259
+1044,342594
+1045,342784
+1046,343245
+1047,343576
+1048,343766
+1049,344236
+1050,344571
+1051,344762
+1052,345236
+1053,345562
+1054,345753
+1055,346210
+1056,346526
+1057,346716
+1058,347186
+1059,347499
+1060,347687
+1061,348153
+1062,348354
+1063,348820
+1064,349012
+1065,349472
+1066,349805
+1067,350116
+1068,350424
+1069,350743
+1070,350938
+1071,351397
+1072,351729
+1073,352049
+1074,352366
+1075,352558
+1076,353031
+1077,353236
+1078,353705
+1079,354041
+1080,354355
+1081,354544
+1082,355015
+1083,355209
+1084,355672
+1085,356002
+1086,356314
+1087,356638
+1088,356962
+1089,357277
+1090,357613
+1091,357930
+1092,358119
+1093,358611
+1094,358817
+1095,359288
+1096,359625
+1097,359940
+1098,360266
+1099,360588
+1100,360906
+1101,361229
+1102,361561
+1103,361874
+1104,362191
+1105,362517
+1106,362835
+1107,363154
+1108,363475
+1109,363797
+1110,364121
+1111,364446
+1112,364766
+1113,365081
+1114,365409
+1115,365736
+1116,366051
+1117,366384
+1118,366576
+1119,367046
+1120,367382
+1121,367700
+1122,368009
+1123,368200
+1124,368663
+1125,368862
+1126,369332
+1127,369672
+1128,369989
+1129,370306
+1130,370641
+1131,370972
+1132,371295
+1133,371620
+1134,371950
+1135,372271
+1136,372593
+1137,372915
+1138,373231
+1139,373570
+1140,373895
+1141,374212
+1142,374561
+1143,374898
+1144,375216
+1145,375558
+1146,375889
+1147,376077
+1148,376563
+1149,376752
+1150,377236
+1151,377585
+1152,377894
+1153,378209
+1154,378527
+1155,378845
+1156,379158
+1157,379478
+1158,379803
+1159,380119
+1160,380441
+1161,380760
+1162,381079
+1163,381411
+1164,381736
+1165,382061
+1166,382403
+1167,382729
+1168,382920
+1169,383410
+1170,383608
+1171,384108
+1172,384310
+1173,384806
+1174,385165
+1175,385504
+1176,385842
+1177,386179
+1178,386514
+1179,386859
+1180,387200
+1181,387543
+1182,387743
+1183,388238
+1184,388591
+1185,388778
+1186,389274
+1187,389476
+1188,389963
+1189,390156
+1190,390648
+1191,390990
+1192,391319
+1193,391507
+1194,392000
+1195,392344
+1196,392674
+1197,393017
+1198,393355
+1199,393686
+1200,393879
+1201,394365
+1202,394560
+1203,395056
+1204,395251
+1205,395734
+1206,396094
+1207,396424
+1208,396744
+1209,397068
+1210,397409
+1211,397734
+1212,398053
+1213,398247
+1214,398732
+1215,398919
+1216,399393
+1217,399592
+1218,400071
+1219,400406
+1220,400599
+1221,401071
+1222,401385
+1223,401675
+1224,401966
+1225,402159
+1226,402513
+1227,402709
+1228,403036
+1229,403229
+1230,403538
+1231,403802
+1232,404047
+1233,404236
+1234,404678
+1235,404978
+1236,405283
+1237,405595
+1238,405899
+1239,406083
+1240,406561
+1241,406872
+1242,407181
+1243,407504
+1244,407692
+1245,408172
+1246,408360
+1247,408829
+1248,409038
+1249,409503
+1250,409692
+1251,410160
+1252,410350
+1253,410811
+1254,411119
+1255,411407
+1256,411716
+1257,412020
+1258,412215
+1259,412666
+1260,412856
+1261,413313
+1262,413514
+1263,413952
+1264,414262
+1265,414558
+1266,414851
+1267,415042
+1268,415457
+1269,415645
+1270,416067
+1271,416283
+1272,416667
+1273,416860
+1274,417277
+1275,417487
+1276,417862
+1277,418133
+1278,418404
+1279,418685
+1280,418976
+1281,419163
+1282,419609
+1283,419935
+1284,420245
+1285,420564
+1286,420876
+1287,421066
+1288,421523
+1289,421844
+1290,422031
+1291,422481
+1292,422795
+1293,422978
+1294,423419
+1295,423728
+1296,423917
+1297,424345
+1298,424648
+1299,424842
+1300,425272
+1301,425470
+1302,425896
+1303,426098
+1304,426527
+1305,426721
+1306,427142
+1307,427330
+1308,427753
+1309,428050
+1310,428339
+1311,428626
+1312,428817
+1313,429248
+1314,429444
+1315,429863
+1316,430165
+1317,430460
+1318,430761
+1319,430949
+1320,431380
+1321,431676
+1322,431976
+1323,432271
+1324,432457
+1325,432877
+1326,433065
+1327,433474
+1328,433763
+1329,433950
+1330,434334
+1331,434620
+1332,434890
+1333,435079
+1334,435458
+1335,435735
+1336,436011
+1337,436205
+1338,436553
+1339,436821
+1340,437019
+1341,437375
+1342,437597
+1343,437853
+1344,438133
+1345,438400
+1346,438586
+1347,438990
+1348,439286
+1349,439472
+1350,439933
+1351,440256
+1352,440442
+1353,440952
+1354,441306
+1355,441485
+1356,442007
+1357,442355
+1358,442700
+1359,443033
+1360,443367
+1361,443564
+1362,444062
+1363,444256
+1364,444743
+1365,444937
+1366,445424
+1367,445617
+1368,446086
+1369,446409
+1370,446734
+1371,447053
+1372,447365
+1373,447561
+1374,448033
+1375,448367
+1376,448552
+1377,449028
+1378,449221
+1379,449691
+1380,450007
+1381,450193
+1382,450667
+1383,450987
+1384,451304
+1385,451501
+1386,451970
+1387,452153
+1388,452622
+1389,452814
+1390,453301
+1391,453628
+1392,453963
+1393,454160
+1394,454643
+1395,454976
+1396,455306
+1397,455498
+1398,455987
+1399,456180
+1400,456659
+1401,456994
+1402,457186
+1403,457665
+1404,457857
+1405,458342
+1406,458682
+1407,458867
+1408,459354
+1409,459695
+1410,459886
+1411,460353
+1412,460687
+1413,460878
+1414,461346
+1415,461683
+1416,461872
+1417,462341
+1418,462540
+1419,462981
+1420,463169
+1421,463625
+1422,463937
+1423,464248
+1424,464573
+1425,464914
+1426,465103
+1427,465625
+1428,465823
+1429,466353
+1430,466573
+1431,467065
+1432,467261
+1433,467780
+1434,467963
+1435,468443
+1436,468638
+1437,469112
+1438,469309
+1439,469781
+1440,470108
+1441,470439
+1442,470626
+1443,471105
+1444,471296
+1445,471806
+1446,472138
+1447,472472
+1448,472803
+1449,473136
+1450,473324
+1451,473816
+1452,474159
+1453,474354
+1454,474846
+1455,475187
+1456,475533
+1457,475723
+1458,476197
+1459,476389
+1460,476876
+1461,477075
+1462,477558
+1463,477902
+1464,478239
+1465,478432
+1466,478913
+1467,479106
+1468,479598
+1469,479797
+1470,480273
+1471,480467
+1472,480957
+1473,481152
+1474,481627
+1475,481818
+1476,482291
+1477,482492
+1478,482948
+1479,483142
+1480,483588
+1481,483887
+1482,484185
+1483,484464
+1484,484752
+1485,485054
+1486,485349
+1487,485643
+1488,485965
+1489,486287
+1490,486601
+1491,486937
+1492,487279
+1493,487613
+1494,487958
+1495,488310
+1496,488661
+1497,489006
+1498,489197
+1499,489709
+1500,489907
+1501,490398
+1502,490588
+1503,491055
+1504,491266
+1505,491722
+1506,492037
+1507,492226
+1508,492663
+1509,492979
+1510,493169
+1511,493599
+1512,493795
+1513,494243
+1514,494539
+1515,494848
+1516,495163
+1517,495484
+1518,495815
+1519,496008
+1520,496481
+1521,496675
+1522,497154
+1523,497349
+1524,497823
+1525,498016
+1526,498497
+1527,498692
+1528,499161
+1529,499488
+1530,499677
+1531,500118
+1532,500317
+1533,500748
+1534,501052
+1535,501348
+1536,501534
+1537,501967
+1538,502162
+1539,502583
+1540,502894
+1541,503082
+1542,503538
+1543,503860
+1544,504050
+1545,504522
+1546,504716
+1547,505188
+1548,505383
+1549,505894
+1550,506090
+1551,506594
+1552,506949
+1553,507146
+1554,507637
+1555,507992
+1556,508181
+1557,508676
+1558,508879
+1559,509370
+1560,509713
+1561,509904
+1562,510390
+1563,510732
+1564,511062
+1565,511251
+1566,511736
+1567,511933
+1568,512422
+1569,512760
+1570,513087
+1571,513286
+1572,513766
+1573,513965
+1574,514461
+1575,514792
+1576,514987
+1577,515476
+1578,515819
+1579,516152
+1580,516476
+1581,516668
+1582,517167
+1583,517506
+1584,517859
+1585,518192
+1586,518520
+1587,518722
+1588,519203
+1589,519407
+1590,519893
+1591,520225
+1592,520423
+1593,520892
+1594,521215
+1595,521532
+1596,521725
+1597,522188
+1598,522380
+1599,522816
+1600,523134
+1601,523326
+1602,523758
+1603,523958
+1604,524405
+1605,524726
+1606,525047
+1607,525237
+1608,525734
+1609,525931
+1610,526410
+1611,526615
+1612,527081
+1613,527416
+1614,527606
+1615,528057
+1616,528383
+1617,528570
+1618,529016
+1619,529338
+1620,529526
+1621,529995
+1622,530321
+1623,530512
+1624,530978
+1625,531298
+1626,531492
+1627,531938
+1628,532129
+1629,532590
+1630,532789
+1631,533236
+1632,533549
+1633,533863
+1634,534185
+1635,534516
+1636,534706
+1637,535197
+1638,535400
+1639,535896
+1640,536087
+1641,536572
+1642,536781
+1643,537245
+1644,537464
+1645,537912
+1646,538109
+1647,538565
+1648,538766
+1649,539224
+1650,539536
+1651,539849
+1652,540157
+1653,540476
+1654,540800
+1655,541127
+1656,541471
+1657,541814
+1658,542151
+1659,542503
+1660,542851
+1661,543202
+1662,543559
+1663,543897
+1664,544252
+1665,544600
+1666,544933
+1667,545274
+1668,545620
+1669,545971
+1670,546159
+1671,546667
+1672,546869
+1673,547358
+1674,547564
+1675,548044
+1676,548251
+1677,548723
+1678,548927
+1679,549383
+1680,549711
+1681,549902
+1682,550357
+1683,550677
+1684,550994
+1685,551191
+1686,551632
+1687,551830
+1688,552254
+1689,552445
+1690,552828
+1691,553104
+1692,553291
+1693,553637
+1694,553907
+1695,554167
+1696,554423
+1697,554683
+1698,554946
+1699,555142
+1700,555483
+1701,555762
+1702,555951
+1703,556321
+1704,556520
+1705,556892
+1706,557165
+1707,557435
+1708,557635
+1709,558017
+1710,558231
+1711,558608
+1712,558897
+1713,559204
+1714,559400
+1715,559826
+1716,560142
+1717,560465
+1718,560661
+1719,561141
+1720,561494
+1721,561835
+1722,562171
+1723,562361
+1724,562885
+1725,563228
+1726,563563
+1727,563753
+1728,564251
+1729,564586
+1730,564925
+1731,565251
+1732,565586
+1733,565923
+1734,566229
+1735,566536
+1736,566726
+1737,567132
+1738,567327
+1739,567775
+1740,568084
+1741,568387
+1742,568599
+1743,569032
+1744,569225
+1745,569685
+1746,569997
+1747,570314
+1748,570507
+1749,570958
+1750,571153
+1751,571569
+1752,571856
+1753,572143
+1754,572333
+1755,572745
+1756,573031
+1757,573318
+1758,573600
+1759,573790
+1760,574184
+1761,574388
+1762,574783
+1763,575080
+1764,575370
+1765,575566
+1766,575966
+1767,576262
+1768,576560
+1769,576872
+1770,577176
+1771,577364
+1772,577856
+1773,578045
+1774,578546
+1775,578872
+1776,579062
+1777,579541
+1778,579876
+1779,580061
+1780,580569
+1781,580936
+1782,581130
+1783,581646
+1784,581847
+1785,582354
+1786,582716
+1787,582911
+1788,583427
+1789,583617
+1790,584146
+1791,584490
+1792,584822
+1793,585162
+1794,585494
+1795,585823
+1796,586014
+1797,586522
+1798,586717
+1799,587190
+1800,587539
+1801,587861
+1802,588171
+1803,588365
+1804,588818
+1805,589011
+1806,589469
+1807,589789
+1808,590090
+1809,590388
+1810,590710
+1811,590905
+1812,591379
+1813,591721
+1814,592049
+1815,592369
+1816,592691
+1817,593017
+1818,593337
+1819,593681
+1820,594022
+1821,594352
+1822,594696
+1823,595057
+1824,595404
+1825,595732
+1826,595936
+1827,596430
+1828,596763
+1829,596951
+1830,597438
+1831,597763
+1832,598081
+1833,598410
+1834,598741
+1835,599087
+1836,599286
+1837,599792
+1838,600142
+1839,600499
+1840,600841
+1841,601194
+1842,601384
+1843,601911
+1844,602113
+1845,602640
+1846,602981
+1847,603163
+1848,603677
+1849,604018
+1850,604360
+1851,604684
+1852,605007
+1853,605214
+1854,605696
+1855,606023
+1856,606211
+1857,606690
+1858,607020
+1859,607345
+1860,607663
+1861,607975
+1862,608291
+1863,608617
+1864,608937
+1865,609255
+1866,609604
+1867,609933
+1868,610248
+1869,610445
+1870,610925
+1871,611113
+1872,611591
+1873,611932
+1874,612261
+1875,612574
+1876,612760
+1877,613233
+1878,613432
+1879,613890
+1880,614098
+1881,614561
+1882,614896
+1883,615224
+1884,615427
+1885,615924
+1886,616273
+1887,616468
+1888,616978
+1889,617322
+1890,617516
+1891,618019
+1892,618368
+1893,618707
+1894,619052
+1895,619388
+1896,619723
+1897,620087
+1898,620432
+1899,620776
+1900,621137
+1901,621489
+1902,621828
+1903,622170
+1904,622522
+1905,622866
+1906,623195
+1907,623546
+1908,623892
+1909,624216
+1910,624547
+1911,624885
+1912,625226
+1913,625566
+1914,625907
+1915,626250
+1916,626576
+1917,626919
+1918,627261
+1919,627586
+1920,627927
+1921,628268
+1922,628600
+1923,628937
+1924,629278
+1925,629605
+1926,629936
+1927,630275
+1928,630618
+1929,630947
+1930,631279
+1931,631611
+1932,631938
+1933,632272
+1934,632606
+1935,632932
+1936,633123
+1937,633606
+1938,633803
+1939,634289
+1940,634636
+1941,634955
+1942,635269
+1943,635589
+1944,635904
+1945,636213
+1946,636521
+1947,636842
+1948,637159
+1949,637467
+1950,637794
+1951,638114
+1952,638430
+1953,638625
+1954,639100
+1955,639432
+1956,639759
+1957,640094
+1958,640428
+1959,640755
+1960,640952
+1961,641450
+1962,641792
+1963,642128
+1964,642479
+1965,642818
+1966,643158
+1967,643502
+1968,643855
+1969,644194
+1970,644525
+1971,644879
+1972,645228
+1973,645557
+1974,645749
+1975,646226
+1976,646557
+1977,646880
+1978,647197
+1979,647520
+1980,647836
+1981,648153
+1982,648479
+1983,648792
+1984,649129
+1985,649468
+1986,649788
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/119_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/119_pvc.csv
new file mode 100644
index 00000000..64774183
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/119_pvc.csv
@@ -0,0 +1,445 @@
+,PVC
+0,503
+1,2488
+2,4448
+3,7709
+4,8377
+5,9052
+6,9736
+7,10421
+8,11065
+9,12999
+10,13657
+11,14325
+12,14981
+13,16908
+14,17913
+15,18921
+16,19616
+17,20628
+18,21296
+19,21970
+20,25263
+21,27883
+22,29910
+23,30575
+24,31262
+25,42126
+26,45029
+27,47325
+28,47991
+29,48699
+30,50003
+31,50985
+32,52941
+33,57173
+34,58156
+35,59136
+36,59790
+37,60753
+38,62688
+39,63716
+40,64761
+41,65776
+42,66782
+43,67458
+44,68455
+45,69119
+46,69787
+47,70478
+48,71122
+49,71799
+50,74110
+51,74799
+52,76131
+53,76807
+54,77484
+55,81823
+56,83153
+57,83825
+58,85137
+59,85798
+60,86783
+61,87769
+62,88767
+63,89502
+64,90458
+65,92450
+66,94430
+67,96400
+68,98063
+69,98724
+70,100037
+71,101343
+72,102010
+73,102684
+74,103659
+75,104621
+76,105595
+77,106221
+78,106894
+79,107575
+80,108554
+81,109531
+82,110506
+83,111488
+84,112471
+85,113127
+86,115976
+87,116654
+88,117946
+89,118930
+90,119899
+91,120867
+92,121825
+93,122773
+94,124382
+95,125033
+96,130106
+97,130763
+98,132068
+99,132722
+100,133688
+101,134647
+102,135610
+103,136583
+104,137560
+105,138521
+106,142095
+107,151738
+108,153689
+109,156944
+110,157948
+111,158948
+112,159936
+113,160904
+114,161556
+115,162828
+116,165774
+117,166450
+118,167774
+119,168441
+120,169111
+121,171052
+122,173035
+123,196309
+124,198278
+125,200273
+126,202268
+127,204559
+128,205551
+129,206562
+130,207571
+131,208572
+132,209570
+133,210242
+134,211236
+135,212224
+136,213190
+137,213845
+138,214821
+139,215773
+140,216780
+141,219734
+142,220726
+143,221387
+144,223959
+145,225930
+146,227927
+147,234120
+148,235110
+149,240969
+150,241981
+151,242968
+152,244915
+153,245912
+154,247853
+155,248842
+156,254965
+157,256934
+158,258889
+159,260842
+160,263177
+161,264172
+162,265173
+163,265852
+164,267843
+165,268520
+166,269831
+167,270497
+168,272792
+169,273789
+170,274774
+171,275765
+172,276441
+173,277111
+174,278407
+175,279398
+176,280396
+177,281395
+178,282377
+179,283035
+180,283696
+181,284403
+182,286350
+183,294140
+184,296433
+185,297112
+186,298437
+187,299123
+188,300445
+189,301452
+190,302131
+191,308013
+192,312852
+193,313846
+194,318401
+195,320401
+196,323683
+197,324372
+198,325692
+199,327016
+200,328655
+201,331940
+202,334501
+203,340786
+204,341794
+205,342784
+206,343766
+207,344762
+208,345753
+209,346716
+210,347687
+211,348354
+212,349012
+213,350938
+214,352558
+215,353236
+216,354544
+217,355209
+218,358119
+219,358817
+220,366576
+221,368200
+222,368862
+223,376077
+224,376752
+225,382920
+226,383608
+227,384310
+228,387743
+229,388778
+230,389476
+231,390156
+232,391507
+233,393879
+234,394560
+235,395251
+236,398247
+237,398919
+238,399592
+239,400599
+240,402159
+241,402709
+242,403229
+243,404236
+244,406083
+245,407692
+246,408360
+247,409038
+248,409692
+249,410350
+250,412215
+251,412856
+252,413514
+253,415042
+254,415645
+255,416283
+256,416860
+257,417487
+258,419163
+259,421066
+260,422031
+261,422978
+262,423917
+263,424842
+264,425470
+265,426098
+266,426721
+267,427330
+268,428817
+269,429444
+270,430949
+271,432457
+272,433065
+273,433950
+274,435079
+275,436205
+276,437019
+277,437597
+278,438586
+279,439472
+280,440442
+281,441485
+282,443564
+283,444256
+284,444937
+285,445617
+286,447561
+287,448552
+288,449221
+289,450193
+290,451501
+291,452153
+292,452814
+293,454160
+294,455498
+295,456180
+296,457186
+297,457857
+298,458867
+299,459886
+300,460878
+301,461872
+302,462540
+303,463169
+304,465103
+305,465823
+306,466573
+307,467261
+308,467963
+309,468638
+310,469309
+311,470626
+312,471296
+313,473324
+314,474354
+315,475723
+316,476389
+317,477075
+318,478432
+319,479106
+320,479797
+321,480467
+322,481152
+323,481818
+324,482492
+325,483142
+326,489197
+327,489907
+328,490588
+329,491266
+330,492226
+331,493169
+332,493795
+333,496008
+334,496675
+335,497349
+336,498016
+337,498692
+338,499677
+339,500317
+340,501534
+341,502162
+342,503082
+343,504050
+344,504716
+345,505383
+346,506090
+347,507146
+348,508181
+349,508879
+350,509904
+351,511251
+352,511933
+353,513286
+354,513965
+355,514987
+356,516668
+357,518722
+358,519407
+359,520423
+360,521725
+361,522380
+362,523326
+363,523958
+364,525237
+365,525931
+366,526615
+367,527606
+368,528570
+369,529526
+370,530512
+371,531492
+372,532129
+373,532789
+374,534706
+375,535400
+376,536087
+377,536781
+378,537464
+379,538109
+380,538766
+381,546159
+382,546869
+383,547564
+384,548251
+385,548927
+386,549902
+387,551191
+388,551830
+389,552445
+390,553291
+391,555142
+392,555951
+393,556520
+394,557635
+395,558231
+396,559400
+397,560661
+398,562361
+399,563753
+400,566726
+401,567327
+402,568599
+403,569225
+404,570507
+405,571153
+406,572333
+407,573790
+408,574388
+409,575566
+410,577364
+411,578045
+412,579062
+413,580061
+414,581130
+415,581847
+416,582911
+417,583617
+418,586014
+419,586717
+420,588365
+421,589011
+422,590905
+423,595936
+424,596951
+425,599286
+426,601384
+427,602113
+428,603163
+429,605214
+430,606211
+431,610445
+432,611113
+433,612760
+434,613432
+435,614098
+436,615427
+437,616468
+438,617516
+439,633123
+440,633803
+441,638625
+442,640952
+443,645749
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/121.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/121.pk.gz
new file mode 100644
index 00000000..0a01fe23
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/121.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/121_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/121_all.csv
new file mode 100644
index 00000000..3f377c17
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/121_all.csv
@@ -0,0 +1,1863 @@
+,R
+0,163
+1,513
+2,874
+3,1217
+4,1569
+5,1924
+6,2283
+7,2642
+8,3012
+9,3380
+10,3740
+11,4112
+12,4463
+13,4820
+14,5188
+15,5544
+16,5901
+17,6265
+18,6625
+19,6985
+20,7343
+21,7698
+22,8048
+23,8398
+24,8748
+25,9101
+26,9451
+27,9798
+28,10160
+29,10511
+30,10858
+31,11222
+32,11577
+33,11933
+34,12295
+35,12655
+36,13022
+37,13396
+38,13765
+39,14141
+40,14515
+41,14889
+42,15267
+43,15637
+44,16007
+45,16385
+46,16746
+47,17113
+48,17480
+49,17839
+50,18189
+51,18539
+52,18886
+53,19245
+54,19599
+55,19952
+56,20320
+57,20682
+58,21049
+59,21420
+60,21779
+61,22151
+62,22519
+63,22876
+64,23240
+65,23603
+66,23960
+67,24313
+68,24659
+69,25004
+70,25362
+71,25716
+72,26068
+73,26434
+74,26791
+75,27145
+76,27511
+77,27874
+78,28239
+79,28608
+80,28970
+81,29341
+82,29715
+83,30088
+84,30457
+85,30830
+86,31199
+87,31579
+88,31948
+89,32315
+90,32688
+91,33060
+92,33421
+93,33781
+94,34149
+95,34519
+96,34886
+97,35251
+98,35623
+99,35992
+100,36356
+101,36724
+102,37091
+103,37463
+104,37840
+105,38209
+106,38584
+107,38955
+108,39314
+109,39675
+110,40029
+111,40385
+112,40743
+113,41091
+114,41439
+115,41804
+116,42160
+117,42509
+118,42865
+119,43213
+120,43568
+121,43924
+122,44280
+123,44641
+124,45006
+125,45368
+126,45716
+127,46072
+128,46425
+129,46780
+130,47127
+131,47473
+132,47818
+133,48159
+134,48493
+135,48833
+136,49175
+137,49518
+138,49871
+139,50217
+140,50567
+141,50920
+142,51257
+143,51599
+144,51941
+145,52276
+146,52603
+147,52940
+148,53278
+149,53622
+150,53982
+151,54340
+152,54699
+153,55066
+154,55424
+155,55779
+156,56142
+157,56492
+158,56842
+159,57194
+160,57542
+161,57886
+162,58230
+163,58578
+164,58927
+165,59281
+166,59625
+167,59974
+168,60324
+169,60666
+170,61007
+171,61349
+172,61692
+173,62039
+174,62383
+175,62722
+176,63060
+177,63392
+178,63731
+179,64057
+180,64387
+181,64716
+182,65049
+183,65390
+184,65730
+185,66075
+186,66421
+187,66768
+188,67112
+189,67453
+190,67795
+191,68142
+192,68478
+193,68815
+194,69167
+195,69517
+196,69856
+197,70203
+198,70552
+199,70911
+200,71279
+201,71623
+202,71979
+203,72350
+204,72715
+205,73077
+206,73452
+207,73824
+208,74200
+209,74568
+210,74927
+211,75300
+212,75668
+213,76024
+214,76390
+215,76751
+216,77110
+217,77472
+218,77821
+219,78171
+220,78526
+221,78875
+222,79220
+223,79569
+224,79915
+225,80263
+226,80614
+227,80961
+228,81311
+229,81653
+230,82000
+231,82342
+232,82689
+233,83038
+234,83390
+235,83740
+236,84084
+237,84439
+238,84785
+239,85138
+240,85488
+241,85833
+242,86170
+243,86513
+244,86852
+245,87192
+246,87538
+247,87875
+248,88217
+249,88564
+250,88911
+251,89267
+252,89625
+253,89979
+254,90341
+255,90708
+256,91067
+257,91415
+258,91770
+259,92121
+260,92465
+261,92813
+262,93160
+263,93510
+264,93869
+265,94219
+266,94569
+267,94921
+268,95280
+269,95645
+270,96007
+271,96362
+272,96729
+273,97099
+274,97464
+275,97837
+276,98200
+277,98567
+278,98939
+279,99299
+280,99664
+281,100030
+282,100394
+283,100756
+284,101121
+285,101487
+286,101860
+287,102229
+288,102601
+289,102983
+290,103358
+291,103729
+292,104102
+293,104473
+294,104842
+295,105201
+296,105564
+297,105934
+298,106292
+299,106648
+300,107009
+301,107367
+302,107724
+303,108085
+304,108441
+305,108794
+306,109152
+307,109511
+308,109864
+309,110226
+310,110588
+311,110958
+312,111323
+313,111683
+314,112056
+315,112422
+316,112787
+317,113154
+318,113522
+319,113894
+320,114262
+321,114624
+322,114995
+323,115359
+324,115712
+325,116076
+326,116426
+327,116774
+328,117134
+329,117478
+330,117824
+331,118177
+332,118521
+333,118873
+334,119233
+335,119602
+336,119977
+337,120343
+338,120712
+339,121088
+340,121461
+341,121829
+342,122196
+343,122561
+344,122923
+345,123287
+346,123645
+347,124009
+348,124382
+349,124744
+350,125093
+351,125451
+352,125802
+353,126161
+354,126521
+355,126879
+356,127253
+357,127623
+358,127992
+359,128366
+360,128726
+361,129098
+362,129479
+363,129855
+364,130221
+365,130598
+366,130971
+367,131334
+368,131694
+369,132058
+370,132428
+371,132783
+372,133138
+373,133507
+374,133867
+375,134226
+376,134592
+377,134951
+378,135313
+379,135678
+380,136039
+381,136402
+382,136762
+383,137120
+384,137473
+385,137827
+386,138175
+387,138540
+388,138897
+389,139249
+390,139612
+391,139961
+392,140306
+393,140655
+394,141003
+395,141349
+396,141697
+397,142028
+398,142356
+399,142695
+400,143023
+401,143339
+402,143662
+403,143972
+404,144279
+405,144592
+406,144899
+407,145211
+408,145529
+409,145852
+410,146179
+411,146501
+412,146827
+413,147147
+414,147468
+415,147790
+416,148105
+417,148416
+418,148736
+419,149049
+420,149358
+421,149672
+422,149990
+423,150312
+424,150638
+425,150967
+426,151304
+427,151649
+428,151989
+429,152320
+430,152659
+431,152993
+432,153337
+433,153685
+434,154031
+435,154375
+436,154723
+437,155070
+438,155412
+439,155754
+440,156092
+441,156426
+442,156768
+443,157105
+444,157442
+445,157793
+446,158137
+447,158483
+448,158833
+449,159188
+450,159547
+451,159915
+452,160270
+453,160615
+454,160970
+455,161318
+456,161657
+457,162007
+458,162356
+459,162711
+460,163064
+461,163408
+462,163746
+463,164096
+464,164439
+465,164770
+466,165114
+467,165450
+468,165791
+469,166140
+470,166485
+471,166838
+472,167199
+473,167558
+474,167905
+475,168262
+476,168616
+477,168966
+478,169318
+479,169665
+480,170023
+481,170382
+482,170737
+483,171084
+484,171438
+485,171795
+486,172153
+487,172495
+488,172839
+489,173188
+490,173525
+491,173855
+492,174189
+493,174516
+494,174854
+495,175207
+496,175552
+497,175900
+498,176261
+499,176612
+500,176953
+501,177305
+502,177647
+503,177983
+504,178322
+505,178660
+506,179008
+507,179370
+508,179728
+509,180092
+510,180457
+511,180825
+512,181183
+513,181552
+514,181914
+515,182279
+516,182639
+517,182991
+518,183342
+519,183687
+520,184034
+521,184385
+522,184730
+523,185070
+524,185420
+525,185767
+526,186111
+527,186461
+528,186813
+529,187165
+530,187528
+531,187887
+532,188241
+533,188612
+534,188974
+535,189314
+536,189664
+537,190018
+538,190376
+539,190733
+540,191083
+541,191441
+542,191798
+543,192153
+544,192504
+545,192861
+546,193222
+547,193590
+548,193944
+549,194299
+550,194665
+551,195020
+552,195368
+553,195723
+554,196076
+555,196440
+556,196802
+557,197167
+558,197537
+559,197908
+560,198271
+561,198636
+562,199001
+563,199365
+564,199732
+565,200093
+566,200456
+567,200825
+568,201192
+569,201551
+570,201916
+571,202268
+572,202623
+573,202979
+574,203339
+575,203706
+576,204074
+577,204436
+578,204808
+579,205176
+580,205540
+581,205903
+582,206264
+583,206631
+584,207000
+585,207368
+586,207725
+587,208086
+588,208447
+589,208817
+590,209180
+591,209546
+592,209924
+593,210299
+594,210674
+595,211058
+596,211434
+597,211822
+598,212205
+599,212582
+600,212970
+601,213347
+602,213719
+603,214094
+604,214475
+605,214859
+606,215234
+607,215604
+608,215978
+609,216339
+610,216699
+611,217064
+612,217423
+613,217783
+614,218158
+615,218528
+616,218901
+617,219284
+618,219660
+619,220031
+620,220409
+621,220789
+622,221173
+623,221543
+624,221918
+625,222301
+626,222680
+627,223054
+628,223431
+629,223814
+630,224197
+631,224564
+632,224929
+633,225306
+634,225668
+635,226029
+636,226398
+637,226758
+638,227128
+639,227500
+640,227865
+641,228243
+642,228619
+643,228985
+644,229361
+645,229726
+646,230094
+647,230471
+648,230838
+649,231209
+650,231583
+651,231951
+652,232321
+653,232687
+654,233045
+655,233414
+656,233769
+657,234134
+658,234506
+659,234872
+660,235233
+661,235593
+662,235951
+663,236318
+664,236682
+665,237043
+666,237407
+667,237769
+668,238128
+669,238493
+670,238858
+671,239231
+672,239605
+673,239977
+674,240356
+675,240731
+676,241107
+677,241476
+678,241849
+679,242225
+680,242589
+681,242963
+682,243339
+683,243707
+684,244084
+685,244452
+686,244817
+687,245192
+688,245564
+689,245927
+690,246281
+691,246652
+692,247013
+693,247360
+694,247722
+695,248084
+696,248442
+697,248805
+698,249156
+699,249520
+700,249884
+701,250238
+702,250598
+703,250964
+704,251327
+705,251699
+706,252053
+707,252415
+708,252782
+709,253143
+710,253496
+711,253855
+712,254212
+713,254573
+714,254933
+715,255291
+716,255652
+717,256008
+718,256366
+719,256731
+720,257091
+721,257448
+722,257809
+723,258170
+724,258538
+725,258919
+726,259292
+727,259646
+728,260014
+729,260381
+730,260751
+731,261122
+732,261475
+733,261843
+734,262210
+735,262570
+736,262942
+737,263310
+738,263685
+739,264069
+740,264444
+741,264806
+742,265182
+743,265555
+744,265917
+745,266279
+746,266647
+747,267026
+748,267398
+749,267766
+750,268152
+751,268523
+752,268891
+753,269265
+754,269640
+755,270021
+756,270395
+757,270765
+758,271132
+759,271494
+760,271846
+761,272203
+762,272562
+763,272931
+764,273298
+765,273660
+766,274033
+767,274397
+768,274767
+769,275133
+770,275493
+771,275852
+772,276221
+773,276577
+774,276932
+775,277288
+776,277628
+777,277966
+778,278320
+779,278668
+780,279023
+781,279383
+782,279738
+783,280098
+784,280455
+785,280811
+786,281161
+787,281508
+788,281860
+789,282216
+790,282567
+791,282905
+792,283251
+793,283602
+794,283959
+795,284324
+796,284688
+797,285053
+798,285420
+799,285774
+800,286136
+801,286500
+802,286864
+803,287214
+804,287571
+805,287924
+806,288286
+807,288637
+808,288986
+809,289347
+810,289700
+811,290054
+812,290413
+813,290760
+814,291125
+815,291497
+816,291863
+817,292231
+818,292600
+819,292972
+820,293329
+821,293697
+822,294059
+823,294426
+824,294787
+825,295146
+826,295516
+827,295882
+828,296235
+829,296599
+830,296957
+831,297323
+832,297689
+833,298051
+834,298415
+835,298784
+836,299152
+837,299509
+838,299881
+839,300244
+840,300614
+841,300977
+842,301338
+843,301711
+844,302072
+845,302426
+846,302785
+847,303137
+848,303488
+849,303838
+850,304187
+851,304535
+852,304890
+853,305242
+854,305592
+855,305943
+856,306295
+857,306654
+858,307007
+859,307367
+860,307727
+861,308079
+862,308432
+863,308800
+864,309167
+865,309531
+866,309901
+867,310266
+868,310630
+869,311005
+870,311376
+871,311740
+872,312106
+873,312467
+874,312834
+875,313202
+876,313572
+877,313950
+878,314320
+879,314683
+880,315048
+881,315405
+882,315771
+883,316141
+884,316504
+885,316874
+886,317240
+887,317601
+888,317967
+889,318325
+890,318694
+891,319075
+892,319448
+893,319822
+894,320201
+895,320574
+896,320940
+897,321310
+898,321675
+899,322043
+900,322396
+901,322745
+902,323116
+903,323474
+904,323824
+905,324187
+906,324546
+907,324900
+908,325257
+909,325613
+910,325970
+911,326332
+912,326693
+913,327057
+914,327414
+915,327776
+916,328143
+917,328499
+918,328849
+919,329210
+920,329560
+921,329912
+922,330267
+923,330615
+924,330970
+925,331324
+926,331682
+927,332040
+928,332405
+929,332764
+930,333119
+931,333470
+932,333831
+933,334201
+934,334562
+935,334918
+936,335286
+937,335653
+938,336004
+939,336365
+940,336723
+941,337076
+942,337438
+943,337792
+944,338146
+945,338497
+946,338850
+947,339196
+948,339548
+949,339895
+950,340239
+951,340578
+952,340928
+953,341286
+954,341637
+955,341993
+956,342347
+957,342693
+958,343046
+959,343406
+960,343767
+961,344128
+962,344502
+963,344865
+964,345209
+965,345561
+966,345905
+967,346246
+968,346592
+969,346926
+970,347257
+971,347589
+972,347939
+973,348278
+974,348621
+975,348964
+976,349318
+977,349679
+978,350047
+979,350418
+980,350799
+981,351171
+982,351550
+983,351928
+984,352312
+985,352703
+986,353087
+987,353479
+988,353865
+989,354250
+990,354623
+991,354995
+992,355371
+993,355756
+994,356121
+995,356487
+996,356870
+997,357249
+998,357623
+999,357998
+1000,358367
+1001,358744
+1002,359121
+1003,359487
+1004,359871
+1005,360253
+1006,360619
+1007,360994
+1008,361370
+1009,361758
+1010,362133
+1011,362508
+1012,362885
+1013,363263
+1014,363634
+1015,364008
+1016,364716
+1017,364922
+1018,365447
+1019,365827
+1020,366195
+1021,366551
+1022,366926
+1023,367295
+1024,367670
+1025,368047
+1026,368414
+1027,368789
+1028,369149
+1029,369513
+1030,369880
+1031,370236
+1032,370601
+1033,370966
+1034,371324
+1035,371684
+1036,372056
+1037,372416
+1038,372771
+1039,373130
+1040,373486
+1041,373847
+1042,374202
+1043,374555
+1044,374922
+1045,375283
+1046,375640
+1047,376000
+1048,376352
+1049,376709
+1050,377072
+1051,377428
+1052,377789
+1053,378153
+1054,378514
+1055,378872
+1056,379236
+1057,379593
+1058,379954
+1059,380310
+1060,380664
+1061,381025
+1062,381381
+1063,381737
+1064,382098
+1065,382457
+1066,382816
+1067,383187
+1068,383553
+1069,383917
+1070,384284
+1071,384644
+1072,384989
+1073,385331
+1074,385676
+1075,386030
+1076,386389
+1077,386737
+1078,387102
+1079,387475
+1080,387851
+1081,388224
+1082,388586
+1083,388957
+1084,389335
+1085,389696
+1086,390050
+1087,390420
+1088,390777
+1089,391131
+1090,391488
+1091,391844
+1092,392202
+1093,392559
+1094,392915
+1095,393275
+1096,393637
+1097,393995
+1098,394355
+1099,394718
+1100,395083
+1101,395453
+1102,395818
+1103,396187
+1104,396559
+1105,396932
+1106,397297
+1107,397657
+1108,398024
+1109,398390
+1110,398744
+1111,399104
+1112,399477
+1113,399839
+1114,400202
+1115,400573
+1116,400937
+1117,401302
+1118,401664
+1119,402025
+1120,402397
+1121,402766
+1122,403125
+1123,403480
+1124,403836
+1125,404197
+1126,404566
+1127,404933
+1128,405300
+1129,405670
+1130,406037
+1131,406396
+1132,406754
+1133,407113
+1134,407478
+1135,407843
+1136,408201
+1137,408578
+1138,408947
+1139,409313
+1140,409690
+1141,410059
+1142,410425
+1143,410799
+1144,411171
+1145,411543
+1146,411913
+1147,412286
+1148,412662
+1149,413032
+1150,413404
+1151,413782
+1152,414154
+1153,414531
+1154,414908
+1155,415277
+1156,415650
+1157,416022
+1158,416398
+1159,416783
+1160,417157
+1161,417538
+1162,417920
+1163,418300
+1164,418676
+1165,419040
+1166,419412
+1167,419786
+1168,420152
+1169,420516
+1170,420887
+1171,421259
+1172,421621
+1173,421990
+1174,422362
+1175,422735
+1176,423110
+1177,423484
+1178,423864
+1179,424237
+1180,424607
+1181,424979
+1182,425353
+1183,425733
+1184,426106
+1185,426481
+1186,426859
+1187,427234
+1188,427607
+1189,427980
+1190,428357
+1191,428733
+1192,429111
+1193,429485
+1194,429866
+1195,430239
+1196,430613
+1197,430989
+1198,431358
+1199,431737
+1200,432114
+1201,432484
+1202,432857
+1203,433236
+1204,433611
+1205,433981
+1206,434347
+1207,434719
+1208,435103
+1209,435481
+1210,435862
+1211,436248
+1212,436631
+1213,437011
+1214,437384
+1215,437761
+1216,438147
+1217,438526
+1218,438905
+1219,439291
+1220,439675
+1221,440054
+1222,440435
+1223,440805
+1224,441185
+1225,441554
+1226,441921
+1227,442297
+1228,442665
+1229,443024
+1230,443392
+1231,443758
+1232,444121
+1233,444483
+1234,444840
+1235,445209
+1236,445574
+1237,445930
+1238,446289
+1239,446638
+1240,446998
+1241,447365
+1242,447723
+1243,448086
+1244,448454
+1245,448814
+1246,449168
+1247,449529
+1248,449890
+1249,450250
+1250,450601
+1251,450952
+1252,451314
+1253,451665
+1254,452019
+1255,452387
+1256,452753
+1257,453120
+1258,453493
+1259,453866
+1260,454246
+1261,454619
+1262,454987
+1263,455359
+1264,455734
+1265,456110
+1266,456491
+1267,456865
+1268,457242
+1269,457616
+1270,457983
+1271,458351
+1272,458728
+1273,459100
+1274,459478
+1275,459852
+1276,460231
+1277,460610
+1278,460989
+1279,461363
+1280,461730
+1281,462102
+1282,462479
+1283,462849
+1284,463212
+1285,463583
+1286,463941
+1287,464302
+1288,464661
+1289,465023
+1290,465389
+1291,465762
+1292,466124
+1293,466493
+1294,466865
+1295,467231
+1296,467604
+1297,467967
+1298,468332
+1299,468705
+1300,469070
+1301,469432
+1302,469800
+1303,470165
+1304,470522
+1305,470881
+1306,471246
+1307,471614
+1308,471972
+1309,472327
+1310,472692
+1311,473042
+1312,473381
+1313,473740
+1314,474091
+1315,474458
+1316,474827
+1317,475192
+1318,475570
+1319,475955
+1320,476333
+1321,476714
+1322,477096
+1323,477482
+1324,477873
+1325,478253
+1326,478645
+1327,479041
+1328,479424
+1329,479805
+1330,480186
+1331,480567
+1332,480952
+1333,481318
+1334,481701
+1335,482083
+1336,482466
+1337,482837
+1338,483208
+1339,483587
+1340,483964
+1341,484335
+1342,484711
+1343,485098
+1344,485479
+1345,485852
+1346,486233
+1347,486615
+1348,487003
+1349,487369
+1350,487745
+1351,488123
+1352,488499
+1353,488870
+1354,489236
+1355,489591
+1356,489963
+1357,490326
+1358,490684
+1359,491058
+1360,491429
+1361,491800
+1362,492181
+1363,492559
+1364,492932
+1365,493304
+1366,493674
+1367,494054
+1368,494421
+1369,494793
+1370,495173
+1371,495544
+1372,495917
+1373,496295
+1374,496666
+1375,497038
+1376,497406
+1377,497762
+1378,498125
+1379,498484
+1380,498853
+1381,499225
+1382,499597
+1383,499974
+1384,500349
+1385,500713
+1386,501093
+1387,501476
+1388,501855
+1389,502241
+1390,502616
+1391,502996
+1392,503383
+1393,503766
+1394,504149
+1395,504533
+1396,504920
+1397,505303
+1398,505678
+1399,506059
+1400,506438
+1401,506819
+1402,507203
+1403,507580
+1404,507961
+1405,508337
+1406,508709
+1407,509087
+1408,509472
+1409,509855
+1410,510243
+1411,510624
+1412,511002
+1413,511377
+1414,511749
+1415,512126
+1416,512507
+1417,512885
+1418,513259
+1419,513639
+1420,514024
+1421,514403
+1422,514775
+1423,515145
+1424,515518
+1425,515877
+1426,516240
+1427,516605
+1428,516972
+1429,517341
+1430,517710
+1431,518062
+1432,518431
+1433,518799
+1434,519168
+1435,519545
+1436,519921
+1437,520299
+1438,520673
+1439,521042
+1440,521389
+1441,521741
+1442,522111
+1443,522478
+1444,522844
+1445,523214
+1446,523594
+1447,523971
+1448,524352
+1449,524731
+1450,525113
+1451,525492
+1452,525871
+1453,526249
+1454,526625
+1455,526992
+1456,527361
+1457,527736
+1458,528100
+1459,528454
+1460,528815
+1461,529183
+1462,529552
+1463,529918
+1464,530282
+1465,530652
+1466,531015
+1467,531345
+1468,531681
+1469,532011
+1470,532336
+1471,532667
+1472,532991
+1473,533310
+1474,533644
+1475,533973
+1476,534306
+1477,534644
+1478,534976
+1479,535304
+1480,535641
+1481,535975
+1482,536307
+1483,536651
+1484,536983
+1485,537319
+1486,537657
+1487,537992
+1488,538340
+1489,538695
+1490,539039
+1491,539379
+1492,539733
+1493,540077
+1494,540415
+1495,540764
+1496,541113
+1497,541465
+1498,541816
+1499,542168
+1500,542517
+1501,542879
+1502,543238
+1503,543593
+1504,543952
+1505,544308
+1506,544676
+1507,545034
+1508,545385
+1509,545741
+1510,546089
+1511,546441
+1512,546791
+1513,547140
+1514,547493
+1515,547846
+1516,548191
+1517,548537
+1518,548894
+1519,549243
+1520,549578
+1521,549919
+1522,550255
+1523,550584
+1524,550923
+1525,551250
+1526,551575
+1527,551906
+1528,552232
+1529,552550
+1530,552873
+1531,553194
+1532,553511
+1533,553833
+1534,554148
+1535,554456
+1536,554769
+1537,555088
+1538,555393
+1539,555695
+1540,556006
+1541,556311
+1542,556613
+1543,556917
+1544,557214
+1545,557506
+1546,557796
+1547,558091
+1548,558374
+1549,558651
+1550,558932
+1551,559209
+1552,559483
+1553,559758
+1554,560036
+1555,560307
+1556,560582
+1557,560858
+1558,561137
+1559,561411
+1560,561687
+1561,561957
+1562,562236
+1563,562511
+1564,562789
+1565,563072
+1566,563349
+1567,563629
+1568,563905
+1569,564189
+1570,564466
+1571,564744
+1572,565016
+1573,565291
+1574,565562
+1575,565829
+1576,566100
+1577,566368
+1578,566632
+1579,566894
+1580,567167
+1581,567431
+1582,567701
+1583,567965
+1584,568239
+1585,568510
+1586,568785
+1587,569063
+1588,569345
+1589,569620
+1590,569895
+1591,570177
+1592,570460
+1593,570744
+1594,571022
+1595,571313
+1596,571599
+1597,571884
+1598,572177
+1599,572466
+1600,572749
+1601,573034
+1602,573326
+1603,573604
+1604,573886
+1605,574163
+1606,574437
+1607,574714
+1608,574990
+1609,575268
+1610,575540
+1611,575815
+1612,576087
+1613,576369
+1614,576649
+1615,576925
+1616,577205
+1617,577484
+1618,577764
+1619,578045
+1620,578331
+1621,578609
+1622,578888
+1623,579171
+1624,579453
+1625,579735
+1626,580012
+1627,580291
+1628,580570
+1629,580847
+1630,581123
+1631,581405
+1632,581676
+1633,581949
+1634,582222
+1635,582497
+1636,582766
+1637,583028
+1638,583293
+1639,583557
+1640,583819
+1641,584081
+1642,584344
+1643,584605
+1644,584868
+1645,585124
+1646,585395
+1647,585652
+1648,585918
+1649,586176
+1650,586448
+1651,586715
+1652,586984
+1653,587256
+1654,587534
+1655,587809
+1656,588078
+1657,588360
+1658,588638
+1659,588916
+1660,589190
+1661,589479
+1662,589763
+1663,590051
+1664,590342
+1665,590632
+1666,590919
+1667,591204
+1668,591499
+1669,591778
+1670,592063
+1671,592340
+1672,592626
+1673,592913
+1674,593198
+1675,593495
+1676,593779
+1677,594072
+1678,594366
+1679,594667
+1680,594965
+1681,595252
+1682,595542
+1683,595840
+1684,596129
+1685,596429
+1686,596728
+1687,597028
+1688,597328
+1689,597638
+1690,597941
+1691,598240
+1692,598537
+1693,598838
+1694,599139
+1695,599448
+1696,599759
+1697,600057
+1698,600361
+1699,600679
+1700,600988
+1701,601293
+1702,601599
+1703,601905
+1704,602209
+1705,602522
+1706,602830
+1707,603138
+1708,603442
+1709,603764
+1710,604078
+1711,604384
+1712,604692
+1713,605004
+1714,605319
+1715,605639
+1716,605948
+1717,606260
+1718,606572
+1719,606888
+1720,607200
+1721,607507
+1722,607821
+1723,608122
+1724,608431
+1725,608740
+1726,609048
+1727,609360
+1728,609673
+1729,609989
+1730,610292
+1731,610590
+1732,610898
+1733,611197
+1734,611496
+1735,611802
+1736,612104
+1737,612405
+1738,612711
+1739,613015
+1740,613316
+1741,613609
+1742,613908
+1743,614203
+1744,614501
+1745,614801
+1746,615099
+1747,615392
+1748,615689
+1749,615997
+1750,616299
+1751,616596
+1752,616906
+1753,617207
+1754,617511
+1755,617820
+1756,618126
+1757,618432
+1758,618733
+1759,619045
+1760,619354
+1761,619657
+1762,619971
+1763,620276
+1764,620586
+1765,620900
+1766,621215
+1767,621525
+1768,621845
+1769,622162
+1770,622476
+1771,622781
+1772,623091
+1773,623396
+1774,623701
+1775,624005
+1776,624305
+1777,624608
+1778,624917
+1779,625225
+1780,625536
+1781,625842
+1782,626159
+1783,626471
+1784,626789
+1785,627103
+1786,627413
+1787,627714
+1788,628031
+1789,628342
+1790,628651
+1791,628963
+1792,629271
+1793,629582
+1794,629901
+1795,630212
+1796,630522
+1797,630828
+1798,631141
+1799,631449
+1800,631749
+1801,632051
+1802,632353
+1803,632658
+1804,632962
+1805,633271
+1806,633571
+1807,633871
+1808,634184
+1809,634485
+1810,634771
+1811,635052
+1812,635348
+1813,635637
+1814,635926
+1815,636217
+1816,636503
+1817,636791
+1818,637084
+1819,637377
+1820,637671
+1821,637956
+1822,638252
+1823,638543
+1824,638836
+1825,639136
+1826,639431
+1827,639729
+1828,640029
+1829,640332
+1830,640633
+1831,640929
+1832,641233
+1833,641535
+1834,641840
+1835,642150
+1836,642457
+1837,642763
+1838,643069
+1839,643381
+1840,643685
+1841,643979
+1842,644285
+1843,644583
+1844,644873
+1845,645172
+1846,645469
+1847,645756
+1848,646047
+1849,646348
+1850,646634
+1851,646932
+1852,647226
+1853,647518
+1854,647817
+1855,648112
+1856,648405
+1857,648705
+1858,648996
+1859,649287
+1860,649587
+1861,649878
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/121_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/121_pvc.csv
new file mode 100644
index 00000000..117951cc
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/121_pvc.csv
@@ -0,0 +1,2 @@
+,PVC
+0,364922
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/123.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/123.pk.gz
new file mode 100644
index 00000000..39137518
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/123.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/123_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/123_all.csv
new file mode 100644
index 00000000..ba47a290
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/123_all.csv
@@ -0,0 +1,1519 @@
+,R
+0,70
+1,550
+2,1021
+3,1498
+4,1925
+5,2340
+6,2821
+7,3259
+8,3667
+9,4154
+10,4630
+11,5071
+12,5594
+13,6073
+14,6510
+15,6991
+16,7474
+17,7920
+18,8409
+19,8892
+20,9326
+21,9793
+22,10273
+23,10713
+24,11198
+25,11681
+26,12145
+27,12635
+28,13114
+29,13530
+30,13992
+31,14438
+32,14848
+33,15276
+34,15721
+35,16111
+36,16512
+37,16948
+38,17352
+39,17739
+40,18194
+41,18620
+42,19026
+43,19492
+44,19915
+45,20318
+46,20754
+47,21165
+48,21554
+49,22001
+50,22456
+51,22873
+52,23322
+53,23759
+54,24174
+55,24617
+56,25061
+57,25465
+58,25914
+59,26350
+60,26746
+61,27120
+62,27476
+63,27840
+64,28200
+65,28541
+66,28909
+67,29289
+68,29659
+69,30066
+70,30544
+71,31001
+72,31471
+73,31933
+74,32365
+75,32799
+76,33257
+77,33674
+78,34101
+79,34546
+80,34953
+81,35373
+82,35877
+83,36304
+84,36712
+85,37217
+86,37643
+87,38031
+88,38394
+89,38743
+90,39103
+91,39480
+92,39843
+93,40226
+94,40625
+95,41017
+96,41512
+97,42010
+98,42492
+99,42985
+100,43420
+101,43864
+102,44331
+103,44751
+104,45142
+105,45560
+106,46008
+107,46429
+108,46874
+109,47332
+110,47700
+111,48066
+112,48433
+113,48813
+114,49339
+115,49807
+116,50288
+117,50766
+118,51212
+119,51683
+120,52162
+121,52587
+122,53077
+123,53545
+124,53959
+125,54398
+126,54867
+127,55297
+128,55715
+129,56185
+130,56566
+131,56947
+132,57343
+133,57762
+134,58304
+135,58809
+136,59267
+137,59747
+138,60202
+139,60639
+140,61109
+141,61538
+142,61934
+143,62358
+144,62773
+145,63168
+146,63566
+147,64063
+148,64537
+149,64939
+150,65416
+151,65872
+152,66256
+153,66621
+154,66990
+155,67346
+156,67717
+157,68228
+158,68704
+159,69206
+160,69679
+161,70151
+162,70650
+163,71094
+164,71529
+165,72010
+166,72463
+167,72885
+168,73328
+169,73741
+170,74135
+171,74599
+172,75008
+173,75378
+174,75759
+175,76128
+176,76633
+177,77109
+178,77576
+179,78072
+180,78529
+181,78983
+182,79430
+183,79838
+184,80298
+185,80728
+186,81137
+187,81557
+188,82010
+189,82405
+190,82803
+191,83171
+192,83526
+193,83903
+194,84267
+195,84654
+196,85145
+197,85614
+198,86105
+199,86590
+200,87025
+201,87455
+202,87920
+203,88346
+204,88779
+205,89228
+206,89653
+207,90069
+208,90543
+209,90975
+210,91383
+211,91828
+212,92286
+213,92700
+214,93193
+215,93628
+216,94038
+217,94490
+218,94939
+219,95347
+220,95799
+221,96244
+222,96652
+223,97105
+224,97505
+225,97882
+226,98251
+227,98606
+228,98970
+229,99325
+230,99686
+231,100046
+232,100410
+233,100915
+234,101373
+235,101842
+236,102338
+237,102792
+238,103270
+239,103768
+240,104211
+241,104662
+242,105119
+243,105541
+244,105988
+245,106467
+246,106907
+247,107361
+248,107841
+249,108286
+250,108742
+251,109231
+252,109660
+253,110130
+254,110592
+255,111014
+256,111463
+257,111888
+258,112252
+259,112611
+260,112979
+261,113336
+262,113752
+263,114278
+264,114760
+265,115241
+266,115698
+267,116156
+268,116635
+269,117078
+270,117519
+271,117975
+272,118392
+273,118851
+274,119321
+275,119745
+276,120206
+277,120663
+278,121084
+279,121557
+280,122019
+281,122439
+282,122871
+283,123261
+284,123617
+285,123987
+286,124355
+287,124743
+288,125284
+289,125775
+290,126258
+291,126751
+292,127192
+293,127677
+294,128147
+295,128575
+296,129025
+297,129483
+298,129906
+299,130310
+300,130758
+301,131187
+302,131587
+303,132014
+304,132404
+305,132828
+306,133281
+307,133708
+308,134162
+309,134615
+310,135030
+311,135469
+312,135874
+313,136300
+314,136752
+315,137170
+316,137588
+317,138011
+318,138374
+319,138729
+320,139095
+321,139455
+322,139837
+323,140317
+324,140794
+325,141233
+326,141736
+327,142189
+328,142655
+329,143113
+330,143527
+331,143973
+332,144416
+333,144823
+334,145275
+335,145720
+336,146103
+337,146532
+338,146972
+339,147373
+340,147759
+341,148158
+342,148509
+343,148866
+344,149231
+345,149594
+346,149992
+347,150457
+348,150908
+349,151367
+350,151850
+351,152283
+352,152471
+353,152737
+354,153138
+355,153555
+356,153965
+357,154396
+358,154792
+359,155193
+360,155623
+361,156034
+362,156442
+363,156870
+364,157233
+365,157598
+366,157963
+367,158317
+368,158693
+369,159137
+370,159589
+371,160009
+372,160447
+373,160866
+374,161296
+375,161666
+376,162030
+377,162396
+378,162740
+379,163073
+380,163424
+381,163815
+382,164194
+383,164563
+384,164964
+385,165391
+386,165878
+387,166333
+388,166814
+389,167277
+390,167719
+391,168191
+392,168630
+393,169051
+394,169498
+395,169907
+396,170278
+397,170641
+398,170986
+399,171336
+400,171705
+401,172120
+402,172536
+403,172985
+404,173435
+405,173852
+406,174283
+407,174697
+408,175073
+409,175445
+410,175800
+411,176148
+412,176497
+413,176841
+414,177187
+415,177562
+416,178035
+417,178513
+418,179014
+419,179487
+420,179928
+421,180401
+422,180906
+423,181337
+424,181812
+425,182299
+426,182719
+427,183169
+428,183627
+429,184039
+430,184446
+431,184821
+432,185194
+433,185564
+434,185937
+435,186348
+436,186842
+437,187324
+438,187809
+439,188264
+440,188712
+441,189183
+442,189641
+443,190074
+444,190538
+445,190956
+446,191378
+447,191820
+448,192226
+449,192651
+450,193091
+451,193499
+452,193893
+453,194254
+454,194611
+455,194973
+456,195319
+457,195683
+458,196085
+459,196506
+460,197032
+461,197510
+462,197947
+463,198339
+464,198715
+465,199081
+466,199432
+467,199775
+468,200107
+469,200457
+470,200800
+471,201139
+472,201493
+473,201866
+474,202247
+475,202644
+476,203020
+477,203409
+478,203829
+479,204287
+480,204753
+481,205255
+482,205709
+483,206174
+484,206669
+485,207111
+486,207531
+487,207967
+488,208348
+489,208716
+490,209092
+491,209466
+492,209927
+493,210472
+494,210990
+495,211507
+496,211980
+497,212455
+498,212953
+499,213397
+500,213854
+501,214282
+502,214701
+503,215152
+504,215566
+505,215933
+506,216307
+507,216697
+508,217138
+509,217658
+510,218128
+511,218626
+512,219079
+513,219522
+514,219998
+515,220449
+516,220852
+517,221241
+518,221606
+519,221972
+520,222358
+521,222859
+522,223319
+523,223801
+524,224284
+525,224733
+526,225180
+527,225596
+528,226050
+529,226511
+530,226939
+531,227396
+532,227847
+533,228273
+534,228708
+535,229137
+536,229556
+537,230008
+538,230424
+539,230837
+540,231312
+541,231720
+542,232148
+543,232614
+544,233029
+545,233456
+546,233904
+547,234337
+548,234752
+549,235214
+550,235653
+551,236059
+552,236504
+553,236952
+554,237357
+555,237812
+556,238261
+557,238668
+558,239100
+559,239545
+560,239956
+561,240377
+562,240762
+563,241138
+564,241494
+565,241848
+566,242195
+567,242556
+568,242936
+569,243430
+570,243919
+571,244408
+572,244845
+573,245286
+574,245764
+575,246198
+576,246636
+577,247106
+578,247529
+579,247996
+580,248485
+581,248894
+582,249356
+583,249824
+584,250243
+585,250700
+586,251190
+587,251614
+588,252075
+589,252515
+590,252936
+591,253381
+592,253815
+593,254221
+594,254666
+595,255107
+596,255516
+597,255979
+598,256430
+599,256840
+600,257272
+601,257737
+602,258155
+603,258619
+604,259060
+605,259468
+606,259921
+607,260338
+608,260738
+609,261168
+610,261570
+611,261958
+612,262382
+613,262795
+614,263203
+615,263641
+616,264076
+617,264482
+618,264947
+619,265398
+620,265822
+621,266296
+622,266756
+623,267167
+624,267617
+625,268047
+626,268452
+627,268891
+628,269323
+629,269725
+630,270166
+631,270651
+632,271067
+633,271508
+634,271962
+635,272392
+636,272792
+637,273249
+638,273674
+639,274027
+640,274394
+641,274737
+642,275076
+643,275427
+644,275785
+645,276263
+646,276648
+647,277034
+648,277431
+649,277879
+650,278336
+651,278764
+652,279217
+653,279655
+654,280080
+655,280521
+656,280983
+657,281401
+658,281890
+659,282385
+660,282839
+661,283328
+662,283801
+663,284263
+664,284738
+665,285201
+666,285662
+667,286101
+668,286573
+669,287011
+670,287482
+671,287949
+672,288381
+673,288813
+674,289274
+675,289682
+676,290083
+677,290473
+678,290822
+679,291178
+680,291529
+681,291872
+682,292249
+683,292781
+684,293283
+685,293795
+686,294273
+687,294718
+688,295183
+689,295632
+690,296070
+691,296526
+692,296955
+693,297382
+694,297867
+695,298299
+696,298779
+697,299257
+698,299709
+699,300156
+700,300625
+701,301050
+702,301522
+703,301974
+704,302386
+705,302827
+706,303275
+707,303675
+708,304112
+709,304551
+710,304965
+711,305432
+712,305894
+713,306331
+714,306785
+715,307255
+716,307676
+717,308113
+718,308545
+719,308955
+720,309354
+721,309804
+722,310266
+723,310684
+724,311059
+725,311413
+726,311772
+727,312149
+728,312592
+729,313002
+730,313471
+731,313945
+732,314339
+733,314756
+734,315174
+735,315564
+736,315976
+737,316400
+738,316801
+739,317252
+740,317691
+741,318093
+742,318558
+743,319014
+744,319431
+745,319881
+746,320332
+747,320743
+748,321208
+749,321648
+750,322077
+751,322530
+752,322974
+753,323398
+754,323893
+755,324343
+756,324813
+757,325283
+758,325722
+759,326150
+760,326645
+761,327095
+762,327507
+763,327984
+764,328447
+765,328867
+766,329320
+767,329756
+768,330146
+769,330578
+770,331005
+771,331413
+772,331869
+773,332312
+774,332734
+775,333201
+776,333623
+777,334026
+778,334469
+779,334896
+780,335301
+781,335759
+782,336212
+783,336625
+784,337096
+785,337568
+786,338001
+787,338463
+788,338929
+789,339351
+790,339822
+791,340275
+792,340679
+793,341115
+794,341587
+795,342005
+796,342415
+797,342857
+798,343278
+799,343684
+800,344142
+801,344591
+802,344993
+803,345450
+804,345886
+805,346285
+806,346694
+807,347115
+808,347500
+809,347883
+810,348304
+811,348727
+812,349119
+813,349566
+814,350024
+815,350439
+816,350898
+817,351365
+818,351784
+819,352246
+820,352717
+821,353126
+822,353581
+823,354038
+824,354434
+825,354855
+826,355302
+827,355708
+828,356152
+829,356624
+830,357037
+831,357467
+832,357909
+833,358351
+834,358769
+835,359228
+836,359678
+837,360095
+838,360553
+839,361011
+840,361414
+841,361836
+842,362264
+843,362665
+844,363075
+845,363509
+846,363928
+847,364319
+848,364728
+849,365146
+850,365540
+851,365986
+852,366463
+853,366908
+854,367358
+855,367808
+856,368215
+857,368655
+858,369095
+859,369508
+860,369914
+861,370339
+862,370766
+863,371169
+864,371617
+865,372050
+866,372464
+867,372925
+868,373363
+869,373766
+870,374194
+871,374627
+872,375046
+873,375506
+874,375973
+875,376396
+876,376824
+877,377237
+878,377586
+879,377950
+880,378297
+881,378621
+882,378960
+883,379297
+884,379686
+885,380085
+886,380601
+887,381094
+888,381558
+889,382052
+890,382538
+891,383007
+892,383496
+893,383941
+894,384386
+895,384830
+896,385227
+897,385646
+898,386074
+899,386474
+900,386897
+901,387319
+902,387718
+903,388187
+904,388615
+905,389028
+906,389487
+907,389965
+908,390389
+909,390885
+910,391359
+911,391797
+912,392255
+913,392708
+914,393115
+915,393598
+916,394064
+917,394482
+918,394948
+919,395376
+920,395779
+921,396229
+922,396663
+923,397051
+924,397509
+925,397954
+926,398328
+927,398688
+928,399045
+929,399396
+930,399748
+931,400147
+932,400561
+933,401098
+934,401591
+935,402079
+936,402572
+937,403037
+938,403512
+939,403967
+940,404384
+941,404827
+942,405259
+943,405664
+944,406129
+945,406554
+946,406936
+947,407339
+948,407793
+949,408202
+950,408661
+951,409172
+952,409621
+953,410054
+954,410521
+955,410944
+956,411371
+957,411799
+958,412180
+959,412592
+960,413082
+961,413542
+962,413977
+963,414443
+964,414877
+965,415283
+966,415715
+967,416169
+968,416575
+969,417049
+970,417472
+971,417905
+972,418371
+973,418798
+974,419233
+975,419678
+976,420095
+977,420482
+978,420905
+979,421358
+980,421776
+981,422218
+982,422670
+983,423081
+984,423495
+985,423919
+986,424329
+987,424718
+988,425138
+989,425557
+990,425939
+991,426372
+992,426809
+993,427209
+994,427638
+995,428093
+996,428490
+997,428911
+998,429296
+999,429645
+1000,429998
+1001,430352
+1002,430696
+1003,431122
+1004,431643
+1005,432129
+1006,432625
+1007,433102
+1008,433544
+1009,434023
+1010,434446
+1011,434861
+1012,435297
+1013,435762
+1014,436167
+1015,436629
+1016,437080
+1017,437486
+1018,437924
+1019,438371
+1020,438763
+1021,439175
+1022,439606
+1023,440014
+1024,440423
+1025,440901
+1026,441398
+1027,441835
+1028,442312
+1029,442777
+1030,443204
+1031,443661
+1032,444135
+1033,444536
+1034,444993
+1035,445443
+1036,445846
+1037,446290
+1038,446734
+1039,447137
+1040,447527
+1041,447981
+1042,448447
+1043,448859
+1044,449320
+1045,449781
+1046,450183
+1047,450643
+1048,451097
+1049,451497
+1050,451955
+1051,452399
+1052,452803
+1053,453220
+1054,453694
+1055,454129
+1056,454557
+1057,455005
+1058,455437
+1059,455829
+1060,456262
+1061,456687
+1062,457072
+1063,457488
+1064,457907
+1065,458293
+1066,458690
+1067,459135
+1068,459557
+1069,459968
+1070,460403
+1071,460857
+1072,461262
+1073,461746
+1074,462213
+1075,462627
+1076,463081
+1077,463560
+1078,463994
+1079,464451
+1080,464926
+1081,465361
+1082,465777
+1083,466239
+1084,466694
+1085,467104
+1086,467553
+1087,468001
+1088,468402
+1089,468835
+1090,469269
+1091,469663
+1092,470108
+1093,470561
+1094,470989
+1095,471382
+1096,471822
+1097,472247
+1098,472645
+1099,473084
+1100,473534
+1101,473940
+1102,474365
+1103,474807
+1104,475213
+1105,475622
+1106,476058
+1107,476437
+1108,476800
+1109,477154
+1110,477496
+1111,477844
+1112,478192
+1113,478544
+1114,478890
+1115,479239
+1116,479617
+1117,480143
+1118,480608
+1119,481066
+1120,481569
+1121,482028
+1122,482485
+1123,482990
+1124,483463
+1125,483869
+1126,484251
+1127,484623
+1128,484960
+1129,485307
+1130,485648
+1131,485992
+1132,486354
+1133,486735
+1134,487144
+1135,487673
+1136,488174
+1137,488645
+1138,489154
+1139,489628
+1140,490085
+1141,490560
+1142,491021
+1143,491506
+1144,491983
+1145,492411
+1146,492891
+1147,493355
+1148,493780
+1149,494255
+1150,494686
+1151,495077
+1152,495509
+1153,495947
+1154,496357
+1155,496819
+1156,497280
+1157,497696
+1158,498150
+1159,498581
+1160,498987
+1161,499457
+1162,499927
+1163,500341
+1164,500812
+1165,501262
+1166,501664
+1167,502095
+1168,502494
+1169,502880
+1170,503313
+1171,503794
+1172,504198
+1173,504657
+1174,505119
+1175,505535
+1176,505937
+1177,506315
+1178,506662
+1179,507003
+1180,507343
+1181,507685
+1182,508049
+1183,508556
+1184,509074
+1185,509538
+1186,510046
+1187,510545
+1188,511010
+1189,511480
+1190,511964
+1191,512411
+1192,512866
+1193,513311
+1194,513743
+1195,514154
+1196,514603
+1197,515045
+1198,515450
+1199,515913
+1200,516360
+1201,516778
+1202,517185
+1203,517576
+1204,517952
+1205,518360
+1206,518746
+1207,519175
+1208,519611
+1209,520014
+1210,520408
+1211,520802
+1212,521168
+1213,521535
+1214,521904
+1215,522295
+1216,522663
+1217,523023
+1218,523415
+1219,523794
+1220,524161
+1221,524523
+1222,524901
+1223,525272
+1224,525613
+1225,525977
+1226,526331
+1227,526665
+1228,527019
+1229,527367
+1230,527727
+1231,528087
+1232,528454
+1233,528846
+1234,529223
+1235,529598
+1236,530038
+1237,530505
+1238,530958
+1239,531448
+1240,531915
+1241,532313
+1242,532749
+1243,533184
+1244,533599
+1245,534075
+1246,534530
+1247,534992
+1248,535425
+1249,535828
+1250,536267
+1251,536739
+1252,537231
+1253,537708
+1254,538196
+1255,538580
+1256,538965
+1257,539350
+1258,539722
+1259,540116
+1260,540594
+1261,541089
+1262,541612
+1263,542120
+1264,542591
+1265,543085
+1266,543547
+1267,543965
+1268,544423
+1269,544865
+1270,545272
+1271,545684
+1272,545876
+1273,546120
+1274,546482
+1275,546863
+1276,547249
+1277,547606
+1278,547961
+1279,548332
+1280,548700
+1281,549080
+1282,549529
+1283,549999
+1284,550476
+1285,550946
+1286,551387
+1287,551818
+1288,552306
+1289,552774
+1290,553193
+1291,553651
+1292,554075
+1293,554474
+1294,554914
+1295,555353
+1296,555767
+1297,556225
+1298,556707
+1299,557096
+1300,557457
+1301,557819
+1302,558176
+1303,558551
+1304,558949
+1305,559442
+1306,559942
+1307,560447
+1308,560927
+1309,561429
+1310,561901
+1311,562340
+1312,562786
+1313,563246
+1314,563654
+1315,564089
+1316,564538
+1317,564960
+1318,565345
+1319,565716
+1320,566087
+1321,566441
+1322,566818
+1323,567238
+1324,567664
+1325,568196
+1326,568668
+1327,569129
+1328,569616
+1329,570068
+1330,570497
+1331,570955
+1332,571373
+1333,571779
+1334,572238
+1335,572726
+1336,573155
+1337,573636
+1338,574074
+1339,574534
+1340,574999
+1341,575427
+1342,575928
+1343,576416
+1344,576838
+1345,577295
+1346,577737
+1347,578111
+1348,578473
+1349,578841
+1350,579200
+1351,579586
+1352,580104
+1353,580573
+1354,581070
+1355,581535
+1356,581979
+1357,582461
+1358,582890
+1359,583301
+1360,583764
+1361,584215
+1362,584649
+1363,585119
+1364,585577
+1365,585993
+1366,586452
+1367,586880
+1368,587294
+1369,587736
+1370,588156
+1371,588561
+1372,589012
+1373,589433
+1374,589844
+1375,590311
+1376,590756
+1377,591182
+1378,591643
+1379,592101
+1380,592508
+1381,592961
+1382,593373
+1383,593765
+1384,594194
+1385,594620
+1386,595022
+1387,595488
+1388,595968
+1389,596380
+1390,596837
+1391,597315
+1392,597741
+1393,598165
+1394,598635
+1395,599060
+1396,599444
+1397,599851
+1398,600047
+1399,600265
+1400,600572
+1401,600923
+1402,601286
+1403,601682
+1404,602230
+1405,602724
+1406,603231
+1407,603736
+1408,604203
+1409,604699
+1410,605178
+1411,605616
+1412,606057
+1413,606503
+1414,606931
+1415,607346
+1416,607789
+1417,608242
+1418,608660
+1419,609129
+1420,609586
+1421,609999
+1422,610430
+1423,610850
+1424,611243
+1425,611671
+1426,612084
+1427,612492
+1428,612945
+1429,613386
+1430,613807
+1431,614262
+1432,614691
+1433,615082
+1434,615518
+1435,615924
+1436,616322
+1437,616747
+1438,617152
+1439,617521
+1440,617884
+1441,618247
+1442,618598
+1443,618976
+1444,619464
+1445,619938
+1446,620439
+1447,620928
+1448,621357
+1449,621827
+1450,622290
+1451,622715
+1452,623149
+1453,623618
+1454,624044
+1455,624446
+1456,624892
+1457,625326
+1458,625727
+1459,626164
+1460,626574
+1461,626974
+1462,627409
+1463,627839
+1464,628255
+1465,628721
+1466,629216
+1467,629658
+1468,630088
+1469,630523
+1470,630939
+1471,631365
+1472,631852
+1473,632309
+1474,632750
+1475,633206
+1476,633647
+1477,634055
+1478,634502
+1479,634949
+1480,635359
+1481,635790
+1482,636225
+1483,636624
+1484,637056
+1485,637517
+1486,637934
+1487,638322
+1488,638744
+1489,639156
+1490,639560
+1491,639973
+1492,640376
+1493,640741
+1494,641078
+1495,641424
+1496,641757
+1497,642098
+1498,642453
+1499,642815
+1500,643218
+1501,643627
+1502,644007
+1503,644401
+1504,644786
+1505,645149
+1506,645504
+1507,645952
+1508,646355
+1509,646736
+1510,647117
+1511,647505
+1512,647876
+1513,648247
+1514,648626
+1515,648997
+1516,649342
+1517,649689
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/123_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/123_pvc.csv
new file mode 100644
index 00000000..8defef22
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/123_pvc.csv
@@ -0,0 +1,4 @@
+,PVC
+0,152471
+1,545876
+2,600047
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/200.pk.gz b/example_data/ecg_mit_bih_arrhythmia/data/200.pk.gz
new file mode 100644
index 00000000..ca5e745c
Binary files /dev/null and b/example_data/ecg_mit_bih_arrhythmia/data/200.pk.gz differ
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/200_all.csv b/example_data/ecg_mit_bih_arrhythmia/data/200_all.csv
new file mode 100644
index 00000000..bd9e7a4d
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/200_all.csv
@@ -0,0 +1,2570 @@
+,R
+0,225
+1,487
+2,689
+3,964
+4,1147
+5,1433
+6,1610
+7,1882
+8,2072
+9,2331
+10,2506
+11,2784
+12,2989
+13,3300
+14,3484
+15,3738
+16,3975
+17,4201
+18,4416
+19,4646
+20,4880
+21,5134
+22,5381
+23,5605
+24,5821
+25,6087
+26,6285
+27,6547
+28,6718
+29,7076
+30,7260
+31,7455
+32,7899
+33,8074
+34,8394
+35,8577
+36,8726
+37,9170
+38,9384
+39,9710
+40,9963
+41,10197
+42,10436
+43,10673
+44,10901
+45,11132
+46,11361
+47,11617
+48,11857
+49,12159
+50,12364
+51,12721
+52,12900
+53,13052
+54,13522
+55,13733
+56,14101
+57,14360
+58,14538
+59,14903
+60,15085
+61,15410
+62,15595
+63,15928
+64,16195
+65,16385
+66,16695
+67,16880
+68,17164
+69,17338
+70,17666
+71,17860
+72,18199
+73,18383
+74,18697
+75,18939
+76,19128
+77,19432
+78,19606
+79,19915
+80,20099
+81,20430
+82,20641
+83,20953
+84,21120
+85,21390
+86,21574
+87,21873
+88,22057
+89,22388
+90,22646
+91,22880
+92,23122
+93,23347
+94,23602
+95,23857
+96,24098
+97,24341
+98,24595
+99,24824
+100,25102
+101,25313
+102,25627
+103,25795
+104,25993
+105,26387
+106,26595
+107,26918
+108,27109
+109,27474
+110,27652
+111,28018
+112,28203
+113,28559
+114,28747
+115,29108
+116,29311
+117,29662
+118,29896
+119,30123
+120,30286
+121,30597
+122,30788
+123,31128
+124,31323
+125,31615
+126,31793
+127,32095
+128,32286
+129,32599
+130,32770
+131,33099
+132,33367
+133,33637
+134,33908
+135,34159
+136,34408
+137,34660
+138,34945
+139,35234
+140,35531
+141,35884
+142,36087
+143,36445
+144,36629
+145,36994
+146,37184
+147,37556
+148,37789
+149,38127
+150,38319
+151,38635
+152,38810
+153,39129
+154,39319
+155,39484
+156,39791
+157,40200
+158,40377
+159,40688
+160,40889
+161,41164
+162,41355
+163,41732
+164,41928
+165,42277
+166,42542
+167,42730
+168,43032
+169,43212
+170,43516
+171,43722
+172,44063
+173,44261
+174,44569
+175,44756
+176,45060
+177,45245
+178,45569
+179,45759
+180,46085
+181,46270
+182,46608
+183,46835
+184,47027
+185,47352
+186,47544
+187,47857
+188,48043
+189,48374
+190,48710
+191,49016
+192,49273
+193,49553
+194,49834
+195,50112
+196,50385
+197,50660
+198,50927
+199,51197
+200,51461
+201,51707
+202,51954
+203,52200
+204,52486
+205,52784
+206,53063
+207,53300
+208,53541
+209,53789
+210,54037
+211,54289
+212,54555
+213,54823
+214,55070
+215,55329
+216,55604
+217,55845
+218,56080
+219,56321
+220,56571
+221,56820
+222,57096
+223,57375
+224,57618
+225,57857
+226,58096
+227,58352
+228,58608
+229,58878
+230,59140
+231,59399
+232,59649
+233,59905
+234,60162
+235,60402
+236,60646
+237,60883
+238,61148
+239,61436
+240,61706
+241,61947
+242,62182
+243,62424
+244,62671
+245,62920
+246,63181
+247,63444
+248,63633
+249,63859
+250,64209
+251,64395
+252,64628
+253,64936
+254,65114
+255,65441
+256,65638
+257,65988
+258,66173
+259,66478
+260,66647
+261,66953
+262,67155
+263,67471
+264,67668
+265,67997
+266,68191
+267,68514
+268,68701
+269,69036
+270,69212
+271,69532
+272,69754
+273,70100
+274,70307
+275,70618
+276,70798
+277,71086
+278,71261
+279,71576
+280,71819
+281,72110
+282,72320
+283,72612
+284,72805
+285,73125
+286,73309
+287,73599
+288,73788
+289,74094
+290,74282
+291,74596
+292,74853
+293,75084
+294,75318
+295,75785
+296,76059
+297,76333
+298,76583
+299,76841
+300,77100
+301,77346
+302,77564
+303,77856
+304,78043
+305,78374
+306,78565
+307,78948
+308,79133
+309,79451
+310,79657
+311,79935
+312,80174
+313,80438
+314,80686
+315,80972
+316,81170
+317,81459
+318,81653
+319,81962
+320,82144
+321,82428
+322,82613
+323,82764
+324,83181
+325,83371
+326,83667
+327,83909
+328,84125
+329,84351
+330,84595
+331,84845
+332,85098
+333,85321
+334,85547
+335,85791
+336,86230
+337,86473
+338,86694
+339,86927
+340,87160
+341,87340
+342,87666
+343,87848
+344,88135
+345,88356
+346,88572
+347,88801
+348,89037
+349,89285
+350,89549
+351,89784
+352,90008
+353,90228
+354,90463
+355,90704
+356,90940
+357,91173
+358,91408
+359,91663
+360,91898
+361,92140
+362,92383
+363,92581
+364,92834
+365,93032
+366,93287
+367,93511
+368,93818
+369,94047
+370,94292
+371,94517
+372,94736
+373,94965
+374,95196
+375,95405
+376,95676
+377,95913
+378,96152
+379,96354
+380,96637
+381,96819
+382,97073
+383,97290
+384,97511
+385,97734
+386,97983
+387,98234
+388,98471
+389,98661
+390,98907
+391,99123
+392,99361
+393,99592
+394,99832
+395,99998
+396,100289
+397,100529
+398,100748
+399,100949
+400,101213
+401,101386
+402,101648
+403,101859
+404,102083
+405,102352
+406,102593
+407,102825
+408,103032
+409,103238
+410,103452
+411,103658
+412,103878
+413,104095
+414,104336
+415,104533
+416,104786
+417,105015
+418,105251
+419,105466
+420,105681
+421,105863
+422,106085
+423,106262
+424,106528
+425,106771
+426,107015
+427,107236
+428,107453
+429,107656
+430,107867
+431,108094
+432,108321
+433,108533
+434,108779
+435,109014
+436,109245
+437,109457
+438,109682
+439,109879
+440,110122
+441,110335
+442,110542
+443,110725
+444,111000
+445,111223
+446,111479
+447,111700
+448,111902
+449,112101
+450,112306
+451,112509
+452,112736
+453,112970
+454,113206
+455,113404
+456,113637
+457,113834
+458,114093
+459,114287
+460,114521
+461,114719
+462,114932
+463,115144
+464,115376
+465,115613
+466,115839
+467,116039
+468,116262
+469,116436
+470,116662
+471,116861
+472,117121
+473,117313
+474,117579
+475,117805
+476,118017
+477,118211
+478,118444
+479,118623
+480,118881
+481,119096
+482,119325
+483,119538
+484,119785
+485,120016
+486,120253
+487,120442
+488,120673
+489,120878
+490,121097
+491,121288
+492,121547
+493,121759
+494,122042
+495,122268
+496,122484
+497,122696
+498,122942
+499,123128
+500,123390
+501,123612
+502,123838
+503,124077
+504,124322
+505,124540
+506,124787
+507,124976
+508,125222
+509,125441
+510,125684
+511,125923
+512,126168
+513,126411
+514,126641
+515,126860
+516,127078
+517,127277
+518,127542
+519,127733
+520,128008
+521,128203
+522,128489
+523,128740
+524,128982
+525,129215
+526,129418
+527,129636
+528,129870
+529,130087
+530,130339
+531,130584
+532,130842
+533,131042
+534,131284
+535,131466
+536,131754
+537,131989
+538,132235
+539,132468
+540,132704
+541,132929
+542,133096
+543,133419
+544,133618
+545,133877
+546,134111
+547,134336
+548,134598
+549,134883
+550,135131
+551,135362
+552,135583
+553,135819
+554,136034
+555,136272
+556,136520
+557,136761
+558,137014
+559,137244
+560,137479
+561,137725
+562,137949
+563,138173
+564,138393
+565,138625
+566,138868
+567,139123
+568,139382
+569,139638
+570,139878
+571,140105
+572,140332
+573,140584
+574,140802
+575,141083
+576,141242
+577,141570
+578,141772
+579,142044
+580,142226
+581,142533
+582,142740
+583,142968
+584,143161
+585,143635
+586,143828
+587,143988
+588,144408
+589,144592
+590,144926
+591,145203
+592,145484
+593,145759
+594,146010
+595,146268
+596,146441
+597,146757
+598,146939
+599,147215
+600,147402
+601,147711
+602,147918
+603,148218
+604,148475
+605,148710
+606,148928
+607,149157
+608,149407
+609,149647
+610,149900
+611,150127
+612,150372
+613,150612
+614,150849
+615,151096
+616,151344
+617,151594
+618,151845
+619,152116
+620,152399
+621,152662
+622,152921
+623,153150
+624,153613
+625,153826
+626,154260
+627,154459
+628,154799
+629,155010
+630,155313
+631,155505
+632,155822
+633,155997
+634,156316
+635,156519
+636,156838
+637,157023
+638,157322
+639,157512
+640,157777
+641,157959
+642,158293
+643,158494
+644,158812
+645,158991
+646,159270
+647,159455
+648,159753
+649,159922
+650,160251
+651,160514
+652,160919
+653,161381
+654,161560
+655,161902
+656,162159
+657,162417
+658,162690
+659,162970
+660,163235
+661,163487
+662,163720
+663,163922
+664,164221
+665,164411
+666,164731
+667,164916
+668,165245
+669,165435
+670,165751
+671,165936
+672,166243
+673,166488
+674,166729
+675,167002
+676,167285
+677,167555
+678,167745
+679,168030
+680,168223
+681,168499
+682,168687
+683,169008
+684,169197
+685,169386
+686,169729
+687,169910
+688,170275
+689,170527
+690,170755
+691,171000
+692,171266
+693,171532
+694,171814
+695,172054
+696,172342
+697,172523
+698,172857
+699,173061
+700,173434
+701,173646
+702,174029
+703,174227
+704,174598
+705,174788
+706,175150
+707,175357
+708,175698
+709,175916
+710,176300
+711,176573
+712,176799
+713,177033
+714,177272
+715,177513
+716,177774
+717,178045
+718,178259
+719,178525
+720,178762
+721,178967
+722,179258
+723,179496
+724,179740
+725,179958
+726,180257
+727,180449
+728,180767
+729,180969
+730,181259
+731,181429
+732,181721
+733,181927
+734,182272
+735,182480
+736,182786
+737,183034
+738,183208
+739,183507
+740,183703
+741,184004
+742,184208
+743,184523
+744,184730
+745,185050
+746,185236
+747,185500
+748,185739
+749,185975
+750,186212
+751,186480
+752,186770
+753,187277
+754,187438
+755,187827
+756,188018
+757,188366
+758,188553
+759,188879
+760,189230
+761,189521
+762,189811
+763,190080
+764,190337
+765,190620
+766,190941
+767,191236
+768,191505
+769,191772
+770,192037
+771,192299
+772,192568
+773,192852
+774,193125
+775,193381
+776,193644
+777,193920
+778,194169
+779,194418
+780,194661
+781,194918
+782,195179
+783,195468
+784,195753
+785,196001
+786,196245
+787,196485
+788,196756
+789,197026
+790,197300
+791,197544
+792,197794
+793,198044
+794,198288
+795,198537
+796,198793
+797,199039
+798,199288
+799,199566
+800,199868
+801,200130
+802,200382
+803,200624
+804,200864
+805,201097
+806,201359
+807,201651
+808,201918
+809,202181
+810,202437
+811,202649
+812,202959
+813,203152
+814,203461
+815,203662
+816,203980
+817,204189
+818,204516
+819,204740
+820,205010
+821,205185
+822,205477
+823,205688
+824,206014
+825,206225
+826,206513
+827,206697
+828,206977
+829,207163
+830,207457
+831,207653
+832,207887
+833,208194
+834,208413
+835,208730
+836,208920
+837,209212
+838,209389
+839,209652
+840,209841
+841,210162
+842,210370
+843,210703
+844,210889
+845,211174
+846,211360
+847,211666
+848,211855
+849,212176
+850,212400
+851,212660
+852,212870
+853,213203
+854,213389
+855,213716
+856,213905
+857,214195
+858,214403
+859,214780
+860,215025
+861,215324
+862,215513
+863,215806
+864,215979
+865,216300
+866,216565
+867,216810
+868,217121
+869,217288
+870,217465
+871,217895
+872,218093
+873,218379
+874,218629
+875,219157
+876,219376
+877,219683
+878,219865
+879,220135
+880,220311
+881,220638
+882,220847
+883,221176
+884,221367
+885,221665
+886,221859
+887,222150
+888,222393
+889,222637
+890,222869
+891,223129
+892,223379
+893,223651
+894,223910
+895,224155
+896,224379
+897,224615
+898,224850
+899,225104
+900,225382
+901,225660
+902,226161
+903,226356
+904,226680
+905,226859
+906,227018
+907,227195
+908,227616
+909,227842
+910,228234
+911,228427
+912,228744
+913,228976
+914,229207
+915,229464
+916,229739
+917,230010
+918,230244
+919,230480
+920,230718
+921,230906
+922,231170
+923,231363
+924,231665
+925,231889
+926,232155
+927,232377
+928,232654
+929,232889
+930,233122
+931,233316
+932,233553
+933,233752
+934,234032
+935,234243
+936,234431
+937,234778
+938,234980
+939,235218
+940,235448
+941,235696
+942,235911
+943,236194
+944,236384
+945,236661
+946,236892
+947,237121
+948,237321
+949,237584
+950,237777
+951,238021
+952,238255
+953,238514
+954,238731
+955,238899
+956,239231
+957,239454
+958,239670
+959,239854
+960,240119
+961,240320
+962,240611
+963,240856
+964,241077
+965,241267
+966,241537
+967,241771
+968,241981
+969,242167
+970,242435
+971,242684
+972,242918
+973,243128
+974,243400
+975,243583
+976,243850
+977,244056
+978,244277
+979,244486
+980,244778
+981,244984
+982,245261
+983,245489
+984,245719
+985,245897
+986,246132
+987,246320
+988,246605
+989,246853
+990,247080
+991,247300
+992,247585
+993,247780
+994,248043
+995,248247
+996,248453
+997,248652
+998,248903
+999,249106
+1000,249413
+1001,249647
+1002,249871
+1003,250083
+1004,250305
+1005,250542
+1006,250764
+1007,250978
+1008,251221
+1009,251426
+1010,251705
+1011,251885
+1012,252147
+1013,252387
+1014,252606
+1015,252829
+1016,253035
+1017,253265
+1018,253504
+1019,253787
+1020,254030
+1021,254250
+1022,254467
+1023,254686
+1024,255127
+1025,255358
+1026,255629
+1027,255834
+1028,256093
+1029,256297
+1030,256574
+1031,256815
+1032,257051
+1033,257239
+1034,257493
+1035,257684
+1036,257974
+1037,258204
+1038,258490
+1039,258718
+1040,258943
+1041,259119
+1042,259387
+1043,259588
+1044,259907
+1045,260179
+1046,260413
+1047,260878
+1048,261069
+1049,261345
+1050,261539
+1051,261830
+1052,262071
+1053,262323
+1054,262568
+1055,262842
+1056,263041
+1057,263300
+1058,263473
+1059,263762
+1060,264002
+1061,264262
+1062,264534
+1063,264777
+1064,265013
+1065,265237
+1066,265481
+1067,265730
+1068,265975
+1069,266206
+1070,266460
+1071,266720
+1072,266893
+1073,267212
+1074,267417
+1075,267704
+1076,267910
+1077,268168
+1078,268704
+1079,268917
+1080,269237
+1081,269418
+1082,269713
+1083,269887
+1084,270187
+1085,270391
+1086,270733
+1087,270995
+1088,271242
+1089,271505
+1090,271759
+1091,271977
+1092,272206
+1093,272438
+1094,272685
+1095,272924
+1096,273187
+1097,273456
+1098,273690
+1099,273923
+1100,274140
+1101,274379
+1102,274641
+1103,274903
+1104,275167
+1105,275422
+1106,275671
+1107,275900
+1108,276143
+1109,276394
+1110,276633
+1111,276877
+1112,277386
+1113,277678
+1114,277925
+1115,278189
+1116,278425
+1117,278640
+1118,278891
+1119,279158
+1120,279431
+1121,279713
+1122,279970
+1123,280214
+1124,280472
+1125,280680
+1126,280988
+1127,281196
+1128,281482
+1129,281717
+1130,281984
+1131,282254
+1132,282508
+1133,282737
+1134,282958
+1135,283433
+1136,283687
+1137,283965
+1138,284159
+1139,284437
+1140,284620
+1141,284895
+1142,285084
+1143,285387
+1144,285574
+1145,285898
+1146,286152
+1147,286414
+1148,286638
+1149,286913
+1150,287095
+1151,287359
+1152,287541
+1153,287835
+1154,288045
+1155,288379
+1156,288606
+1157,288867
+1158,289043
+1159,289316
+1160,289512
+1161,289669
+1162,290071
+1163,290260
+1164,290561
+1165,290801
+1166,291036
+1167,291270
+1168,291504
+1169,291724
+1170,291953
+1171,292173
+1172,292441
+1173,292676
+1174,292959
+1175,293143
+1176,293397
+1177,293621
+1178,293834
+1179,294034
+1180,294307
+1181,294523
+1182,294808
+1183,295033
+1184,295255
+1185,295491
+1186,295727
+1187,295949
+1188,296171
+1189,296395
+1190,296630
+1191,296873
+1192,297119
+1193,297339
+1194,297597
+1195,297790
+1196,298023
+1197,298232
+1198,298464
+1199,298701
+1200,298979
+1201,299227
+1202,299442
+1203,299656
+1204,299873
+1205,300087
+1206,300306
+1207,300542
+1208,300756
+1209,300986
+1210,301209
+1211,301415
+1212,301691
+1213,301912
+1214,302135
+1215,302312
+1216,302537
+1217,302753
+1218,302965
+1219,303186
+1220,303440
+1221,303666
+1222,303882
+1223,304069
+1224,304278
+1225,304495
+1226,304725
+1227,304924
+1228,305161
+1229,305376
+1230,305593
+1231,305806
+1232,306018
+1233,306230
+1234,306449
+1235,306650
+1236,306855
+1237,307051
+1238,307262
+1239,307497
+1240,307741
+1241,307960
+1242,308179
+1243,308374
+1244,308564
+1245,308765
+1246,308956
+1247,309168
+1248,309396
+1249,309625
+1250,309855
+1251,310066
+1252,310270
+1253,310488
+1254,310715
+1255,310919
+1256,311132
+1257,311324
+1258,311532
+1259,311760
+1260,311974
+1261,312207
+1262,312436
+1263,312646
+1264,312852
+1265,313046
+1266,313240
+1267,313455
+1268,313693
+1269,313921
+1270,314163
+1271,314371
+1272,314580
+1273,314802
+1274,314995
+1275,315209
+1276,315425
+1277,315628
+1278,315856
+1279,316074
+1280,316297
+1281,316538
+1282,316778
+1283,316991
+1284,317208
+1285,317405
+1286,317601
+1287,317818
+1288,318031
+1289,318270
+1290,318523
+1291,318757
+1292,318982
+1293,319182
+1294,319386
+1295,319608
+1296,319830
+1297,320052
+1298,320279
+1299,320502
+1300,320718
+1301,320940
+1302,321164
+1303,321379
+1304,321602
+1305,321806
+1306,322018
+1307,322217
+1308,322447
+1309,322680
+1310,322956
+1311,323178
+1312,323392
+1313,323603
+1314,323812
+1315,323987
+1316,324232
+1317,324467
+1318,324702
+1319,324933
+1320,325154
+1321,325380
+1322,325612
+1323,325840
+1324,326054
+1325,326263
+1326,326473
+1327,326690
+1328,326913
+1329,327155
+1330,327388
+1331,327633
+1332,327845
+1333,328063
+1334,328264
+1335,328485
+1336,328734
+1337,328944
+1338,329208
+1339,329400
+1340,329660
+1341,329887
+1342,330100
+1343,330322
+1344,330561
+1345,330754
+1346,331021
+1347,331248
+1348,331501
+1349,331726
+1350,332001
+1351,332210
+1352,332422
+1353,332601
+1354,332871
+1355,333092
+1356,333336
+1357,333600
+1358,333836
+1359,334045
+1360,334267
+1361,334457
+1362,334735
+1363,334957
+1364,335194
+1365,335424
+1366,335670
+1367,335921
+1368,336145
+1369,336390
+1370,336627
+1371,336835
+1372,337073
+1373,337263
+1374,337529
+1375,337753
+1376,338071
+1377,338281
+1378,338553
+1379,338777
+1380,339008
+1381,339228
+1382,339471
+1383,339738
+1384,339989
+1385,340242
+1386,340435
+1387,340610
+1388,340959
+1389,341142
+1390,341426
+1391,341648
+1392,341877
+1393,342122
+1394,342308
+1395,342621
+1396,342834
+1397,343082
+1398,343295
+1399,343512
+1400,343761
+1401,344018
+1402,344273
+1403,344521
+1404,344745
+1405,344995
+1406,345189
+1407,345451
+1408,345642
+1409,345927
+1410,346118
+1411,346403
+1412,346609
+1413,346933
+1414,347121
+1415,347407
+1416,347846
+1417,348038
+1418,348329
+1419,348534
+1420,348841
+1421,349032
+1422,349318
+1423,349495
+1424,349771
+1425,349970
+1426,350255
+1427,350724
+1428,350933
+1429,351206
+1430,351406
+1431,351691
+1432,351884
+1433,352155
+1434,352331
+1435,352624
+1436,352906
+1437,353180
+1438,353441
+1439,353659
+1440,353883
+1441,354110
+1442,354285
+1443,354583
+1444,354801
+1445,355092
+1446,355295
+1447,355601
+1448,355800
+1449,356116
+1450,356366
+1451,356550
+1452,356827
+1453,357052
+1454,357364
+1455,357572
+1456,357946
+1457,358124
+1458,358419
+1459,358600
+1460,358909
+1461,359185
+1462,359466
+1463,359713
+1464,359947
+1465,360163
+1466,360399
+1467,360605
+1468,360887
+1469,361074
+1470,361226
+1471,361610
+1472,361822
+1473,362142
+1474,362339
+1475,362594
+1476,362761
+1477,363043
+1478,363232
+1479,363530
+1480,363738
+1481,364070
+1482,364258
+1483,364527
+1484,364704
+1485,365003
+1486,365204
+1487,365501
+1488,365686
+1489,365987
+1490,366195
+1491,366477
+1492,366666
+1493,366962
+1494,367142
+1495,367404
+1496,367578
+1497,367906
+1498,368134
+1499,368450
+1500,368639
+1501,368919
+1502,369103
+1503,369367
+1504,369557
+1505,369876
+1506,370081
+1507,370401
+1508,370586
+1509,370896
+1510,371102
+1511,371400
+1512,371587
+1513,371883
+1514,372074
+1515,372404
+1516,372612
+1517,372928
+1518,373132
+1519,373273
+1520,373706
+1521,373898
+1522,374353
+1523,374584
+1524,374916
+1525,375168
+1526,375412
+1527,375662
+1528,376160
+1529,376430
+1530,376680
+1531,376952
+1532,377244
+1533,377494
+1534,377742
+1535,377980
+1536,378234
+1537,378493
+1538,378788
+1539,379038
+1540,379322
+1541,379702
+1542,379898
+1543,380295
+1544,380487
+1545,380915
+1546,381119
+1547,381525
+1548,381717
+1549,382088
+1550,382304
+1551,382620
+1552,382803
+1553,383168
+1554,383451
+1555,383761
+1556,383952
+1557,384244
+1558,384439
+1559,384748
+1560,384946
+1561,385313
+1562,385515
+1563,385684
+1564,386082
+1565,386288
+1566,386608
+1567,386805
+1568,387113
+1569,387307
+1570,387636
+1571,387844
+1572,388175
+1573,388365
+1574,388660
+1575,388834
+1576,389161
+1577,389384
+1578,389741
+1579,389941
+1580,390259
+1581,390455
+1582,390762
+1583,390947
+1584,391285
+1585,391483
+1586,391829
+1587,392027
+1588,392398
+1589,392599
+1590,392924
+1591,393102
+1592,393433
+1593,393656
+1594,393996
+1595,394234
+1596,394571
+1597,394763
+1598,394913
+1599,395352
+1600,395557
+1601,395930
+1602,396126
+1603,396325
+1604,396468
+1605,396585
+1606,396904
+1607,397091
+1608,397521
+1609,397718
+1610,398082
+1611,398314
+1612,398647
+1613,399037
+1614,399221
+1615,399576
+1616,399754
+1617,400143
+1618,400371
+1619,400771
+1620,400987
+1621,401310
+1622,401553
+1623,401839
+1624,402030
+1625,402348
+1626,402556
+1627,402724
+1628,403149
+1629,403357
+1630,403659
+1631,403844
+1632,404125
+1633,404331
+1634,404685
+1635,404899
+1636,405215
+1637,405460
+1638,405648
+1639,405929
+1640,406130
+1641,406428
+1642,406620
+1643,406896
+1644,407075
+1645,407450
+1646,407653
+1647,407973
+1648,408148
+1649,408325
+1650,408537
+1651,408951
+1652,409157
+1653,409507
+1654,409703
+1655,409996
+1656,410177
+1657,410500
+1658,410689
+1659,411030
+1660,411227
+1661,411548
+1662,411739
+1663,412042
+1664,412237
+1665,412539
+1666,412726
+1667,413027
+1668,413236
+1669,413609
+1670,413807
+1671,413979
+1672,414362
+1673,414539
+1674,414843
+1675,415105
+1676,415384
+1677,415655
+1678,415894
+1679,416153
+1680,416412
+1681,416680
+1682,416868
+1683,417132
+1684,417346
+1685,417497
+1686,417973
+1687,418178
+1688,418568
+1689,418782
+1690,419057
+1691,419280
+1692,419608
+1693,419895
+1694,420113
+1695,420416
+1696,420614
+1697,420898
+1698,421085
+1699,421391
+1700,421602
+1701,421932
+1702,422128
+1703,422462
+1704,422677
+1705,422877
+1706,423246
+1707,423427
+1708,423744
+1709,423946
+1710,424280
+1711,424496
+1712,424825
+1713,425022
+1714,425300
+1715,425487
+1716,425829
+1717,426037
+1718,426214
+1719,426624
+1720,426822
+1721,427124
+1722,427328
+1723,427632
+1724,427809
+1725,428095
+1726,428291
+1727,428620
+1728,428850
+1729,429169
+1730,429359
+1731,429610
+1732,429791
+1733,430116
+1734,430325
+1735,430684
+1736,430881
+1737,431196
+1738,431386
+1739,431555
+1740,431943
+1741,432138
+1742,432419
+1743,432619
+1744,432913
+1745,433113
+1746,433450
+1747,433656
+1748,433950
+1749,434142
+1750,434426
+1751,434634
+1752,434991
+1753,435219
+1754,435524
+1755,435713
+1756,436004
+1757,436189
+1758,436480
+1759,436696
+1760,436996
+1761,437194
+1762,437497
+1763,437710
+1764,438002
+1765,438200
+1766,438462
+1767,438649
+1768,438938
+1769,439135
+1770,439456
+1771,439679
+1772,439985
+1773,440179
+1774,440450
+1775,440643
+1776,440942
+1777,441146
+1778,441477
+1779,441678
+1780,442006
+1781,442199
+1782,442471
+1783,442675
+1784,442991
+1785,443183
+1786,443465
+1787,443684
+1788,444039
+1789,444241
+1790,444525
+1791,444715
+1792,444987
+1793,445164
+1794,445473
+1795,445692
+1796,446006
+1797,446215
+1798,446498
+1799,446688
+1800,446985
+1801,447177
+1802,447475
+1803,447669
+1804,447968
+1805,448165
+1806,448464
+1807,448666
+1808,448953
+1809,449142
+1810,449400
+1811,449589
+1812,449918
+1813,450140
+1814,450456
+1815,450639
+1816,450899
+1817,451104
+1818,451389
+1819,451577
+1820,451885
+1821,452076
+1822,452383
+1823,452578
+1824,452891
+1825,453097
+1826,453379
+1827,453545
+1828,453826
+1829,454032
+1830,454300
+1831,454510
+1832,454877
+1833,455064
+1834,455366
+1835,455547
+1836,455867
+1837,456072
+1838,456405
+1839,456605
+1840,456925
+1841,457129
+1842,457424
+1843,457616
+1844,457935
+1845,458125
+1846,458406
+1847,458605
+1848,458994
+1849,459210
+1850,459548
+1851,459722
+1852,459990
+1853,460188
+1854,460342
+1855,460793
+1856,461003
+1857,461357
+1858,461623
+1859,461878
+1860,462148
+1861,462392
+1862,462593
+1863,462881
+1864,463090
+1865,463396
+1866,463603
+1867,463797
+1868,464136
+1869,464323
+1870,464588
+1871,464784
+1872,465100
+1873,465312
+1874,465628
+1875,465816
+1876,466080
+1877,466278
+1878,466532
+1879,466727
+1880,467029
+1881,467229
+1882,467528
+1883,467724
+1884,468020
+1885,468230
+1886,468516
+1887,468708
+1888,468970
+1889,469162
+1890,469452
+1891,469678
+1892,470008
+1893,470201
+1894,470485
+1895,470660
+1896,470924
+1897,471133
+1898,471456
+1899,471678
+1900,471974
+1901,472164
+1902,472454
+1903,472649
+1904,472930
+1905,473125
+1906,473411
+1907,473604
+1908,473906
+1909,474128
+1910,474420
+1911,474625
+1912,474934
+1913,475110
+1914,475434
+1915,475707
+1916,475987
+1917,476276
+1918,476540
+1919,477005
+1920,477245
+1921,477549
+1922,477757
+1923,478068
+1924,478273
+1925,478555
+1926,478764
+1927,479117
+1928,479305
+1929,479612
+1930,479803
+1931,479987
+1932,480410
+1933,480641
+1934,480985
+1935,481204
+1936,481475
+1937,481655
+1938,481975
+1939,482191
+1940,482484
+1941,482699
+1942,483086
+1943,483288
+1944,483631
+1945,483830
+1946,484111
+1947,484300
+1948,484605
+1949,484823
+1950,485147
+1951,485347
+1952,485627
+1953,485800
+1954,486098
+1955,486302
+1956,486628
+1957,486844
+1958,487122
+1959,487316
+1960,487629
+1961,487817
+1962,488120
+1963,488363
+1964,488844
+1965,489100
+1966,489379
+1967,489639
+1968,489891
+1969,490078
+1970,490335
+1971,490551
+1972,490842
+1973,491051
+1974,491363
+1975,491562
+1976,491875
+1977,492060
+1978,492381
+1979,492579
+1980,492872
+1981,493060
+1982,493363
+1983,493573
+1984,493848
+1985,494046
+1986,494346
+1987,494528
+1988,494777
+1989,494964
+1990,495285
+1991,495505
+1992,495813
+1993,496007
+1994,496274
+1995,496456
+1996,496723
+1997,496926
+1998,497219
+1999,497424
+2000,497738
+2001,497940
+2002,498086
+2003,498473
+2004,498660
+2005,498950
+2006,499131
+2007,499399
+2008,499604
+2009,499920
+2010,500137
+2011,500445
+2012,500629
+2013,500903
+2014,501086
+2015,501343
+2016,501570
+2017,501931
+2018,502143
+2019,502433
+2020,502634
+2021,502890
+2022,503086
+2023,503383
+2024,503575
+2025,503880
+2026,504073
+2027,504374
+2028,504603
+2029,504901
+2030,505096
+2031,505334
+2032,505520
+2033,505824
+2034,506025
+2035,506351
+2036,506580
+2037,506855
+2038,507040
+2039,507306
+2040,507505
+2041,507685
+2042,508040
+2043,508239
+2044,508535
+2045,508749
+2046,509009
+2047,509199
+2048,509493
+2049,509717
+2050,509948
+2051,510163
+2052,510407
+2053,510686
+2054,510948
+2055,511200
+2056,511414
+2057,511629
+2058,511858
+2059,512050
+2060,512220
+2061,512573
+2062,512771
+2063,513066
+2064,513253
+2065,513524
+2066,513735
+2067,514022
+2068,514214
+2069,514481
+2070,514676
+2071,514969
+2072,515172
+2073,515473
+2074,515682
+2075,515935
+2076,516110
+2077,516368
+2078,516578
+2079,516894
+2080,517103
+2081,517404
+2082,517610
+2083,517887
+2084,518060
+2085,518342
+2086,518547
+2087,518839
+2088,519047
+2089,519341
+2090,519555
+2091,519868
+2092,520063
+2093,520347
+2094,520527
+2095,520786
+2096,520988
+2097,521299
+2098,521515
+2099,521848
+2100,522036
+2101,522311
+2102,522494
+2103,522792
+2104,522995
+2105,523310
+2106,523515
+2107,523816
+2108,524020
+2109,524289
+2110,524487
+2111,524795
+2112,524976
+2113,525264
+2114,525455
+2115,525766
+2116,525996
+2117,526298
+2118,526487
+2119,526740
+2120,526924
+2121,527194
+2122,527396
+2123,527694
+2124,527918
+2125,528215
+2126,528398
+2127,528677
+2128,528887
+2129,529157
+2130,529353
+2131,529618
+2132,529824
+2133,530110
+2134,530298
+2135,530595
+2136,530806
+2137,531067
+2138,531250
+2139,531497
+2140,531693
+2141,532004
+2142,532212
+2143,532524
+2144,532710
+2145,532905
+2146,533195
+2147,533426
+2148,533623
+2149,533912
+2150,534156
+2151,534389
+2152,534625
+2153,534894
+2154,535149
+2155,535385
+2156,535600
+2157,535831
+2158,536076
+2159,536316
+2160,536584
+2161,536857
+2162,537318
+2163,537499
+2164,537809
+2165,538010
+2166,538197
+2167,538432
+2168,538840
+2169,539024
+2170,539326
+2171,539554
+2172,539817
+2173,540013
+2174,540292
+2175,540472
+2176,540779
+2177,541004
+2178,541325
+2179,541523
+2180,541797
+2181,541977
+2182,542264
+2183,542442
+2184,542769
+2185,543069
+2186,543337
+2187,543585
+2188,544063
+2189,544337
+2190,544601
+2191,544843
+2192,545105
+2193,545344
+2194,545654
+2195,545854
+2196,546235
+2197,546421
+2198,546734
+2199,547019
+2200,547316
+2201,547593
+2202,547845
+2203,548093
+2204,548877
+2205,549126
+2206,549292
+2207,549742
+2208,549925
+2209,550323
+2210,550591
+2211,550751
+2212,551103
+2213,551298
+2214,551664
+2215,551953
+2216,552174
+2217,552471
+2218,552654
+2219,552931
+2220,553135
+2221,553328
+2222,553733
+2223,553927
+2224,554238
+2225,554445
+2226,554709
+2227,554898
+2228,555244
+2229,555427
+2230,555739
+2231,555949
+2232,556309
+2233,556522
+2234,556843
+2235,557014
+2236,557303
+2237,557505
+2238,557855
+2239,558065
+2240,558428
+2241,558673
+2242,558845
+2243,559178
+2244,559391
+2245,559696
+2246,559903
+2247,560225
+2248,560495
+2249,560700
+2250,561075
+2251,561279
+2252,561636
+2253,561819
+2254,562184
+2255,562526
+2256,562835
+2257,563115
+2258,563376
+2259,563646
+2260,563902
+2261,564174
+2262,564476
+2263,564765
+2264,565028
+2265,565290
+2266,565874
+2267,566073
+2268,566428
+2269,566636
+2270,567028
+2271,567264
+2272,567602
+2273,567819
+2274,567948
+2275,568394
+2276,568631
+2277,568957
+2278,569251
+2279,569505
+2280,569758
+2281,569992
+2282,570239
+2283,570499
+2284,570754
+2285,570967
+2286,571238
+2287,571449
+2288,571788
+2289,571979
+2290,572260
+2291,572482
+2292,572744
+2293,572946
+2294,573266
+2295,573488
+2296,573867
+2297,574040
+2298,574382
+2299,574581
+2300,574943
+2301,575224
+2302,575497
+2303,575785
+2304,576035
+2305,576289
+2306,576548
+2307,576783
+2308,577016
+2309,577535
+2310,577784
+2311,578211
+2312,578387
+2313,578739
+2314,578917
+2315,579264
+2316,579521
+2317,579835
+2318,580104
+2319,580356
+2320,580627
+2321,580854
+2322,581132
+2323,581405
+2324,581679
+2325,581957
+2326,582245
+2327,582531
+2328,583082
+2329,583259
+2330,583664
+2331,583882
+2332,584303
+2333,584583
+2334,584766
+2335,585105
+2336,585325
+2337,585677
+2338,585968
+2339,586252
+2340,586525
+2341,586765
+2342,586959
+2343,587348
+2344,587515
+2345,587837
+2346,588036
+2347,588384
+2348,588607
+2349,588916
+2350,589183
+2351,589410
+2352,589659
+2353,589901
+2354,590185
+2355,590457
+2356,590722
+2357,591296
+2358,591498
+2359,591857
+2360,592038
+2361,592396
+2362,592600
+2363,593004
+2364,593289
+2365,593542
+2366,593762
+2367,594013
+2368,594247
+2369,594510
+2370,594797
+2371,595040
+2372,595324
+2373,595554
+2374,595796
+2375,596061
+2376,596307
+2377,596881
+2378,597097
+2379,597479
+2380,597678
+2381,598039
+2382,598256
+2383,598558
+2384,598863
+2385,599192
+2386,599491
+2387,599714
+2388,599992
+2389,600193
+2390,600452
+2391,600653
+2392,601063
+2393,601266
+2394,601667
+2395,601954
+2396,602239
+2397,602726
+2398,602931
+2399,603345
+2400,603544
+2401,603938
+2402,604224
+2403,604400
+2404,604575
+2405,604960
+2406,605186
+2407,605559
+2408,605873
+2409,606138
+2410,606362
+2411,606654
+2412,606860
+2413,607288
+2414,607486
+2415,607873
+2416,608176
+2417,608472
+2418,608731
+2419,608969
+2420,609510
+2421,609708
+2422,610114
+2423,610321
+2424,610684
+2425,610943
+2426,611223
+2427,611507
+2428,611799
+2429,612078
+2430,612363
+2431,612636
+2432,612903
+2433,613161
+2434,613403
+2435,613650
+2436,613889
+2437,614114
+2438,614421
+2439,614650
+2440,615031
+2441,615212
+2442,615545
+2443,615798
+2444,616036
+2445,616351
+2446,616631
+2447,616815
+2448,617127
+2449,617361
+2450,617646
+2451,617906
+2452,618102
+2453,618253
+2454,618631
+2455,618850
+2456,619181
+2457,619438
+2458,619674
+2459,619886
+2460,620138
+2461,620421
+2462,620693
+2463,620981
+2464,621474
+2465,621730
+2466,621993
+2467,622258
+2468,622522
+2469,622748
+2470,623102
+2471,623314
+2472,623708
+2473,623900
+2474,624236
+2475,624501
+2476,624776
+2477,625017
+2478,625359
+2479,625578
+2480,625940
+2481,626111
+2482,626472
+2483,626685
+2484,627066
+2485,627352
+2486,627626
+2487,628158
+2488,628371
+2489,628678
+2490,628879
+2491,629170
+2492,629380
+2493,629775
+2494,629977
+2495,630287
+2496,630469
+2497,630762
+2498,630945
+2499,631269
+2500,631558
+2501,631804
+2502,632069
+2503,632305
+2504,632555
+2505,632816
+2506,633052
+2507,633314
+2508,633585
+2509,633871
+2510,634140
+2511,634733
+2512,634923
+2513,635279
+2514,635584
+2515,635907
+2516,636211
+2517,636479
+2518,636702
+2519,636995
+2520,637191
+2521,637549
+2522,637753
+2523,638125
+2524,638346
+2525,638677
+2526,638952
+2527,639202
+2528,639434
+2529,639679
+2530,639921
+2531,640213
+2532,640461
+2533,640806
+2534,640995
+2535,641291
+2536,641474
+2537,641835
+2538,642077
+2539,642421
+2540,642690
+2541,642945
+2542,643198
+2543,643456
+2544,643711
+2545,643959
+2546,644208
+2547,644466
+2548,644744
+2549,645027
+2550,645277
+2551,645522
+2552,645743
+2553,645988
+2554,646206
+2555,646510
+2556,646799
+2557,647074
+2558,647299
+2559,647545
+2560,647726
+2561,648089
+2562,648356
+2563,648629
+2564,648899
+2565,649161
+2566,649408
+2567,649664
+2568,649927
diff --git a/example_data/ecg_mit_bih_arrhythmia/data/200_pvc.csv b/example_data/ecg_mit_bih_arrhythmia/data/200_pvc.csv
new file mode 100644
index 00000000..892f8b5f
--- /dev/null
+++ b/example_data/ecg_mit_bih_arrhythmia/data/200_pvc.csv
@@ -0,0 +1,827 @@
+,PVC
+0,225
+1,689
+2,1147
+3,1610
+4,2072
+5,2506
+6,2989
+7,3484
+8,6285
+9,6718
+10,7260
+11,7455
+12,8074
+13,8577
+14,8726
+15,9384
+16,12364
+17,12900
+18,13052
+19,13733
+20,14538
+21,15085
+22,15595
+23,16385
+24,16880
+25,17338
+26,17860
+27,18383
+28,19128
+29,19606
+30,20099
+31,20641
+32,21120
+33,21574
+34,22057
+35,25313
+36,25795
+37,25993
+38,26595
+39,27109
+40,27652
+41,28203
+42,28747
+43,29311
+44,30286
+45,30788
+46,31323
+47,31793
+48,32286
+49,32770
+50,36087
+51,36629
+52,37184
+53,37789
+54,38319
+55,38810
+56,39319
+57,39484
+58,39791
+59,40377
+60,40889
+61,41355
+62,41928
+63,42730
+64,43212
+65,43722
+66,44261
+67,44756
+68,45245
+69,45759
+70,46270
+71,47027
+72,47544
+73,48043
+74,63633
+75,63859
+76,64395
+77,64628
+78,65114
+79,65638
+80,66173
+81,66647
+82,67155
+83,67668
+84,68191
+85,68701
+86,69212
+87,69754
+88,70307
+89,70798
+90,71261
+91,71819
+92,72320
+93,72805
+94,73309
+95,73788
+96,74282
+97,77564
+98,78043
+99,78565
+100,79133
+101,79657
+102,80686
+103,81170
+104,81653
+105,82144
+106,82613
+107,82764
+108,83371
+109,87340
+110,87848
+111,92581
+112,93511
+113,94047
+114,95405
+115,96354
+116,96819
+117,98661
+118,98907
+119,99998
+120,100949
+121,101386
+122,104095
+123,104533
+124,105863
+125,106262
+126,108533
+127,109879
+128,110725
+129,111223
+130,112970
+131,113404
+132,113834
+133,114287
+134,115144
+135,116039
+136,116436
+137,116861
+138,117313
+139,118211
+140,118623
+141,120016
+142,120442
+143,121288
+144,121759
+145,123128
+146,124540
+147,124976
+148,126860
+149,127277
+150,127733
+151,128203
+152,131042
+153,131466
+154,133096
+155,133618
+156,141242
+157,141772
+158,142226
+159,142740
+160,143161
+161,143828
+162,143988
+163,144592
+164,146441
+165,146939
+166,147402
+167,147918
+168,153826
+169,154459
+170,155010
+171,155505
+172,155997
+173,156519
+174,157023
+175,157512
+176,157959
+177,158494
+178,158991
+179,159455
+180,159922
+181,160919
+182,161560
+183,163922
+184,164411
+185,164916
+186,165435
+187,165936
+188,167745
+189,168223
+190,168687
+191,169197
+192,169386
+193,169910
+194,172523
+195,173061
+196,173646
+197,174227
+198,174788
+199,175357
+200,175916
+201,178259
+202,178967
+203,179958
+204,180449
+205,180969
+206,181429
+207,181927
+208,182480
+209,183208
+210,183703
+211,184208
+212,184730
+213,185236
+214,187438
+215,188018
+216,188553
+217,202649
+218,203152
+219,203662
+220,204189
+221,204740
+222,205185
+223,205688
+224,206225
+225,206697
+226,207163
+227,207653
+228,207887
+229,208413
+230,208920
+231,209389
+232,209841
+233,210370
+234,210889
+235,211360
+236,211855
+237,212400
+238,212870
+239,213389
+240,213905
+241,214403
+242,215025
+243,215513
+244,215979
+245,216565
+246,216810
+247,217288
+248,217465
+249,218093
+250,219376
+251,219865
+252,220311
+253,220847
+254,221367
+255,221859
+256,226356
+257,226859
+258,227018
+259,227195
+260,227842
+261,228427
+262,230906
+263,231363
+264,231889
+265,232377
+266,233316
+267,233752
+268,234243
+269,234431
+270,234980
+271,235911
+272,236384
+273,237321
+274,237777
+275,238731
+276,238899
+277,239854
+278,240320
+279,241267
+280,242167
+281,243128
+282,243583
+283,244486
+284,244984
+285,245897
+286,246320
+287,247300
+288,247780
+289,248652
+290,249106
+291,251426
+292,251885
+293,255358
+294,255834
+295,256297
+296,257239
+297,257684
+298,258204
+299,259119
+300,259588
+301,261069
+302,261539
+303,263041
+304,263473
+305,266893
+306,267417
+307,267910
+308,268917
+309,269418
+310,269887
+311,270391
+312,280680
+313,281196
+314,281717
+315,283687
+316,284159
+317,284620
+318,285084
+319,285574
+320,286638
+321,287095
+322,287541
+323,288045
+324,289043
+325,289512
+326,289669
+327,290260
+328,292173
+329,292676
+330,293143
+331,294034
+332,294523
+333,297339
+334,297790
+335,298701
+336,298979
+337,301415
+338,302312
+339,303186
+340,304069
+341,304924
+342,305806
+343,315628
+344,322680
+345,323987
+346,329400
+347,330754
+348,331726
+349,332601
+350,334457
+351,337263
+352,337753
+353,338281
+354,340435
+355,340610
+356,340959
+357,341142
+358,342308
+359,342834
+360,345189
+361,345642
+362,346118
+363,346609
+364,347121
+365,348038
+366,348534
+367,349032
+368,349495
+369,349970
+370,350933
+371,351406
+372,351884
+373,352331
+374,352624
+375,354285
+376,354801
+377,355295
+378,355800
+379,356550
+380,357052
+381,357572
+382,358124
+383,358600
+384,360605
+385,361074
+386,361226
+387,361822
+388,362339
+389,362761
+390,363232
+391,363738
+392,364258
+393,364704
+394,365204
+395,365686
+396,366195
+397,366666
+398,367142
+399,367578
+400,368134
+401,368639
+402,369103
+403,369557
+404,370081
+405,370586
+406,371102
+407,371587
+408,372074
+409,372612
+410,373132
+411,373273
+412,373898
+413,374584
+414,379898
+415,380487
+416,381119
+417,381717
+418,382304
+419,382803
+420,383451
+421,383952
+422,384439
+423,384946
+424,385515
+425,385684
+426,386288
+427,386805
+428,387307
+429,387844
+430,388365
+431,388834
+432,389384
+433,389941
+434,390455
+435,390947
+436,391483
+437,392027
+438,392599
+439,393102
+440,393656
+441,394234
+442,394763
+443,394913
+444,395557
+445,396126
+446,396325
+447,396468
+448,396585
+449,397091
+450,397718
+451,398314
+452,398647
+453,399221
+454,399754
+455,400371
+456,400987
+457,401553
+458,402030
+459,402556
+460,402724
+461,403357
+462,403844
+463,404331
+464,404899
+465,405648
+466,406130
+467,406620
+468,407075
+469,407653
+470,408148
+471,408325
+472,408537
+473,409157
+474,409703
+475,410177
+476,410689
+477,411227
+478,411739
+479,412237
+480,412726
+481,413236
+482,413807
+483,413979
+484,414539
+485,416868
+486,417346
+487,417497
+488,418178
+489,418782
+490,419280
+491,420113
+492,420614
+493,421085
+494,421602
+495,422128
+496,422677
+497,422877
+498,423427
+499,423946
+500,424496
+501,425022
+502,425487
+503,426037
+504,426214
+505,426822
+506,427328
+507,427809
+508,428291
+509,428850
+510,429359
+511,429791
+512,430325
+513,430881
+514,431386
+515,431555
+516,432138
+517,432619
+518,433113
+519,433656
+520,434142
+521,434634
+522,435219
+523,435713
+524,436189
+525,436696
+526,437194
+527,437710
+528,438200
+529,438649
+530,439135
+531,439679
+532,440179
+533,440643
+534,441146
+535,441678
+536,442199
+537,442675
+538,443183
+539,443684
+540,444241
+541,444715
+542,445164
+543,445692
+544,446215
+545,446688
+546,447177
+547,447669
+548,448165
+549,448666
+550,449142
+551,449589
+552,450140
+553,450639
+554,451104
+555,451577
+556,452076
+557,452578
+558,453097
+559,453545
+560,454032
+561,454510
+562,455064
+563,455547
+564,456072
+565,456605
+566,457129
+567,457616
+568,458125
+569,458605
+570,459210
+571,459722
+572,460188
+573,460342
+574,461003
+575,462593
+576,463090
+577,463603
+578,463797
+579,464323
+580,464784
+581,465312
+582,465816
+583,466278
+584,466727
+585,467229
+586,467724
+587,468230
+588,468708
+589,469162
+590,469678
+591,470201
+592,470660
+593,471133
+594,471678
+595,472164
+596,472649
+597,473125
+598,473604
+599,474128
+600,474625
+601,475110
+602,477245
+603,477757
+604,478273
+605,478764
+606,479305
+607,479803
+608,479987
+609,480641
+610,481204
+611,481655
+612,482191
+613,482699
+614,483288
+615,483830
+616,484300
+617,484823
+618,485347
+619,485800
+620,486302
+621,486844
+622,487316
+623,487817
+624,490078
+625,490551
+626,491051
+627,491562
+628,492060
+629,492579
+630,493060
+631,493573
+632,494046
+633,494528
+634,494964
+635,495505
+636,496007
+637,496456
+638,496926
+639,497424
+640,497940
+641,498086
+642,498660
+643,499131
+644,499604
+645,500137
+646,500629
+647,501086
+648,501570
+649,502143
+650,502634
+651,503086
+652,503575
+653,504073
+654,504603
+655,505096
+656,505520
+657,506025
+658,506580
+659,507040
+660,507505
+661,507685
+662,508239
+663,508749
+664,509199
+665,509493
+666,512220
+667,512771
+668,513253
+669,513735
+670,514214
+671,514676
+672,515172
+673,515682
+674,516110
+675,516578
+676,517103
+677,517610
+678,518060
+679,518547
+680,519047
+681,519555
+682,520063
+683,520527
+684,520988
+685,521515
+686,522036
+687,522494
+688,522995
+689,523515
+690,524020
+691,524487
+692,524976
+693,525455
+694,525996
+695,526487
+696,526924
+697,527396
+698,527918
+699,528398
+700,528887
+701,529353
+702,529824
+703,530298
+704,530806
+705,531250
+706,531693
+707,532212
+708,532710
+709,532905
+710,533623
+711,537499
+712,538010
+713,538197
+714,538432
+715,539024
+716,540013
+717,540472
+718,541004
+719,541523
+720,541977
+721,542442
+722,545344
+723,545854
+724,546421
+725,549126
+726,549292
+727,549925
+728,550751
+729,551298
+730,552174
+731,552654
+732,553135
+733,553328
+734,553927
+735,554445
+736,554898
+737,555427
+738,555949
+739,556522
+740,557014
+741,557505
+742,558065
+743,558845
+744,559391
+745,559903
+746,560700
+747,561279
+748,561819
+749,566073
+750,566636
+751,567264
+752,567819
+753,567948
+754,568631
+755,568957
+756,570967
+757,571449
+758,571979
+759,572946
+760,573488
+761,574040
+762,574581
+763,577784
+764,578387
+765,578917
+766,579521
+767,583259
+768,583882
+769,584766
+770,585325
+771,586765
+772,586959
+773,587515
+774,588036
+775,588607
+776,591498
+777,592038
+778,592600
+779,597097
+780,597678
+781,598256
+782,599714
+783,600193
+784,600653
+785,601266
+786,602931
+787,603544
+788,604400
+789,604575
+790,605186
+791,606860
+792,607486
+793,609708
+794,610321
+795,614650
+796,615212
+797,616036
+798,616815
+799,617361
+800,618102
+801,618253
+802,618850
+803,623314
+804,623900
+805,625578
+806,626111
+807,626685
+808,628371
+809,628879
+810,629380
+811,629977
+812,630469
+813,630945
+814,634923
+815,636702
+816,637191
+817,637753
+818,638346
+819,640461
+820,640995
+821,641474
+822,642077
+823,646206
+824,647299
+825,647726
diff --git a/examples/algorithms/README.rst b/examples/algorithms/README.rst
new file mode 100644
index 00000000..8a5482ff
--- /dev/null
+++ b/examples/algorithms/README.rst
@@ -0,0 +1,4 @@
+.. _custom_algorithms:
+
+Algorithms
+----------
diff --git a/examples/algorithms/_01_algorithms_qrs_detection.py b/examples/algorithms/_01_algorithms_qrs_detection.py
new file mode 100644
index 00000000..86e64047
--- /dev/null
+++ b/examples/algorithms/_01_algorithms_qrs_detection.py
@@ -0,0 +1,286 @@
+r"""
+
+.. _custom_algorithms_qrs_detection:
+
+Algorithms - A real world example: QRS-Detection
+================================================
+
+In this example we will implement a custom algorithm and discuss, when you might want to use an algorithm class over
+just pipelines.
+
+Specifically we will implement a simple algorithm, designed to identify individual QRS complexes from a continuous
+ECG signal.
+If you have no idea what this all means, don't worry about it.
+Simply we want to find peaks in a continuous signal that has some artifacts.
+
+.. warning:: The algorithm we design is **not** a good algorithms! There are way better and properly evaluated
+             algorithms to do this job! Don't use this algorithms for anything :)
+
+When should you use custom algorithms?
+--------------------------------------
+Algorithms are a completely optional feature of tpcp and in many cases not required.
+However, algorithm subclasses provide a structured way to implement new algorithms when you don't have any better
+structure to follow.
+Further they allow the setting of nested parameters (e.g. when used as parameters to pipelines) and can benefit from
+other tooling in tpcp (e.g. cloning).
+For more general information have a look at the general documentation page :ref:`datasets_algorithms_pipelines`.
+
+Implementing QRS-Detection
+--------------------------
+In general our QRS-Detection will have two steps:
+
+1. High-pass filter the data to remove baseline drift. We will use a Butterworth filter for that.
+2. Apply a peak finding strategy to find the (hopefully dominant) R-peaks.
+   We will use :func:`~scipy.signal.find_peaks` with a couple of parameters for that.
+
+As all algorithms, our algorithm needs to inherit from `tpcp.Algorithm` and implement an action method.
+In our case we will call the action method `detect`, as it makes sense based on what the algorithm does.
+This `detect` method will first do the filtering and then the peak search, which we will split into two methods to keep
+things easier to understand.
+
+If you just want the final implementation, without all the explanation, check
+:ref:`custom_algorithms_qrs_detection_final`.
+
+Ok that is still a bunch of code... But let's focus on the aspects that are important in general:
+
+1. We inherit from `Algorithm`
+2. We get and define all parameters in the init without modification
+3. We define the name of out action method using `_action_method = "detect"`
+4. After we do the computations, we set the results on the instance
+5. We return self
+6. (Optionally) we applied the :func:`~tpcp.make_action_safe` decorator to our action method, which makes some runtimes
+   checks to ensure our implementation follows the tpcp spec.
+
+"""
+from typing import List
+
+import numpy as np
+import pandas as pd
+from scipy import signal
+
+from tpcp import Algorithm, Parameter, make_action_safe
+
+
+class QRSDetector(Algorithm):
+    _action_methods = "detect"
+
+    # Input Parameters
+    high_pass_filter_cutoff_hz: Parameter[float]
+    max_heart_rate_bpm: Parameter[float]
+    min_r_peak_height_over_baseline: Parameter[float]
+
+    # Results
+    r_peak_positions_: pd.Series
+
+    # Some internal constants
+    _HIGH_PASS_FILTER_ORDER: int = 4
+
+    def __init__(
+        self,
+        max_heart_rate_bpm: float = 200.0,
+        min_r_peak_height_over_baseline: float = 1.0,
+        high_pass_filter_cutoff_hz: float = 0.5,
+    ):
+        self.max_heart_rate_bpm = max_heart_rate_bpm
+        self.min_r_peak_height_over_baseline = min_r_peak_height_over_baseline
+        self.high_pass_filter_cutoff_hz = high_pass_filter_cutoff_hz
+
+    @make_action_safe
+    def detect(self, single_channel_ecg: pd.Series, sampling_rate_hz: float):
+        ecg = single_channel_ecg.to_numpy().flatten()
+
+        filtered_signal = self._filter(ecg, sampling_rate_hz)
+        peak_positions = self._search_strategy(filtered_signal, sampling_rate_hz)
+
+        self.r_peak_positions_ = pd.Series(peak_positions)
+        return self
+
+    def _search_strategy(
+        self, filtered_signal: np.ndarray, sampling_rate_hz: float, use_height: bool = True
+    ) -> np.ndarray:
+        # Calculate the minimal distance based on the expected heart rate
+        min_distance_between_peaks = 1 / (self.max_heart_rate_bpm / 60) * sampling_rate_hz
+
+        height = None
+        if use_height:
+            height = self.min_r_peak_height_over_baseline
+        peaks, _ = signal.find_peaks(filtered_signal, distance=min_distance_between_peaks, height=height)
+        return peaks
+
+    def _filter(self, ecg_signal: np.ndarray, sampling_rate_hz: float) -> np.ndarray:
+        sos = signal.butter(
+            btype="high",
+            N=self._HIGH_PASS_FILTER_ORDER,
+            Wn=self.high_pass_filter_cutoff_hz,
+            output="sos",
+            fs=sampling_rate_hz,
+        )
+        return signal.sosfiltfilt(sos, ecg_signal)
+
+
+# %%
+# Testing the implementation
+# --------------------------
+# To test the implementation, we load our example ECG data using the dataset created in a previous example.
+#
+# Based on the simple test we can see that our algorithm works (at least for this piece of data).
+from pathlib import Path
+
+from examples.datasets.datasets_final_ecg import ECGExampleData
+
+# Loading the data
+try:
+    HERE = Path(__file__).parent
+except NameError:
+    HERE = Path(".").resolve()
+data_path = HERE.parent.parent / "example_data/ecg_mit_bih_arrhythmia/data"
+example_data = ECGExampleData(data_path)
+ecg_data = example_data[0].data["ecg"]
+
+# Initialize the algorithm
+algorithm = QRSDetector()
+algorithm = algorithm.detect(ecg_data, example_data.sampling_rate_hz)
+
+# Visualize the results
+import matplotlib.pyplot as plt
+
+plt.figure()
+plt.plot(ecg_data[:5000])
+subset_peaks = algorithm.r_peak_positions_[algorithm.r_peak_positions_ < 5000.0]
+plt.plot(subset_peaks, ecg_data[subset_peaks], "s")
+plt.show()
+
+# %%
+# Making the algorithm trainable
+# ------------------------------
+# The implementation so far heavily depends on the value of the `min_r_peak_height_over_baseline` parameter.
+# If this is set incorrectly, everything will go wrong.
+# This parameter describes the minimal expected value of the filtered signal at the position of an R-peak.
+# Without looking at the filtered data, this value is hard to guess.
+# The value will depend on potential preprocessing applied to the data and the measurement conditions.
+# But we should be able to calculate a suitable value based on some training data (with R-peak annotations) recorded
+# under similar conditions.
+#
+# Therefore, we will create a second implementation of our algorithm that is *trainable*.
+# Meaning, we will implement a method (`self_optimize`) that is able to estimate a suitable value for our cutoff
+# based on some training data.
+#
+# From an implementation perspective, this means that we need to do the following things:
+#
+# 1. Our Algorithms now needs to inherit from :class:`~tpcp.OptimizableAlgorithm`
+# 2. We need to mark the parameters that we want to optimize as `OptimizableParameter` using the type annotations on
+#    the class level.
+# 3. Implement a `self_optimize` method that takes the data of multiple recordings including the reference labels to
+#    calculate a suitable threshold. This method should modify only parameters marked as `OptimizableParameter` and then
+#    return `self`.
+# 4. We introduce a new parameter called `r_peak_match_tolerance_s` that is used by our `self_optimize` method.
+#    Changing it, changes the output of our optimization.
+#    Therefore, it is a Hyper-Parameter of our method.
+#    We mark it as such using the type-hints on class level.
+# 5. (Optional) Wrap the `self_optimize` method with the :func:`~tpcp.make_optimize_safe` decorator. It will perform
+#    some runtime checks and inform us, if we did not implement `self_optimize` as expected.
+#
+# .. note:: The process required to implement an `OptimizableAlgorithm` will always be very similar to what we did
+#           here.
+#           It doesn't matter, if the optimization only optimizes a threshold or trains a neuronal network.
+#           The structure will be very similar.
+#
+# From a scientific perspective, we optimize our parameter by trying to find all R-peaks without a height restriction
+# first.
+# Based on the detected R-peaks, we determine, which of them are actually correctly detected, by checking if they are
+# within the threshold `r_peak_match_tolerance_s` of a reference R-peak.
+# Then we find the best height threshold to maximise our predictive power within these preliminary detected peaks.
+#
+# Again, there are probably better ways to do it... But this is just an example, and we already have way too much code
+# that is not relevant for you to understand the basics of Algorithms.
+from sklearn.metrics import roc_curve
+
+from examples.algorithms.algorithms_qrs_detection_final import match_events_with_reference
+from tpcp import HyperParameter, OptimizableAlgorithm, OptimizableParameter, make_optimize_safe
+
+
+class OptimizableQrsDetector(QRSDetector, OptimizableAlgorithm):
+    min_r_peak_height_over_baseline: OptimizableParameter[float]
+    r_peak_match_tolerance_s: HyperParameter[float]
+
+    def __init__(
+        self,
+        max_heart_rate_bpm: float = 200.0,
+        min_r_peak_height_over_baseline: float = 1.0,
+        r_peak_match_tolerance_s: float = 0.01,
+        high_pass_filter_cutoff_hz: float = 1,
+    ):
+        self.r_peak_match_tolerance_s = r_peak_match_tolerance_s
+        super().__init__(
+            max_heart_rate_bpm=max_heart_rate_bpm,
+            min_r_peak_height_over_baseline=min_r_peak_height_over_baseline,
+            high_pass_filter_cutoff_hz=high_pass_filter_cutoff_hz,
+        )
+
+    @make_optimize_safe
+    def self_optimize(self, ecg_data: List[pd.Series], r_peaks: List[pd.Series], sampling_rate_hz: float):
+        all_labels = []
+        all_peak_heights = []
+        for d, p in zip(ecg_data, r_peaks):
+            filtered = self._filter(d.to_numpy().flatten(), sampling_rate_hz)
+            # Find all potential peaks without the height threshold
+            potential_peaks = self._search_strategy(filtered, sampling_rate_hz, use_height=False)
+            # Determine the label for each peak, by matching them with our ground truth
+            labels = np.zeros(potential_peaks.shape)
+            matches, _ = match_events_with_reference(
+                events=potential_peaks,
+                reference=p.to_numpy().astype(int),
+                tolerance=self.r_peak_match_tolerance_s * sampling_rate_hz,
+                one_to_one=True,
+            )
+            labels[matches] = 1
+            labels = labels.astype(bool)
+            all_labels.append(labels)
+            all_peak_heights.append(filtered[potential_peaks])
+        all_labels = np.hstack(all_labels)
+        all_peak_heights = np.hstack(all_peak_heights)
+        # We "brute-force" a good cutoff by testing a bunch of thresholds and then calculating the Youden Index for
+        # each.
+        fpr, tpr, thresholds = roc_curve(all_labels, all_peak_heights)
+        youden_index = tpr - fpr
+        # The best Youden index gives us a balance between sensitivity and specificity.
+        self.min_r_peak_height_over_baseline = thresholds[np.argmax(youden_index)]
+        return self
+
+
+# %%
+# Testing the implementation
+# --------------------------
+# To test the trainable implementation, we need a train and a test set.
+# In this case we simply use the first two recordings as train set and a third recording as test set.
+#
+# Then we first call `self_optimize` with the train data.
+
+train_data = example_data[:2]
+train_ecg_data = [d.data["ecg"] for d in train_data]
+train_r_peaks = [d.r_peak_positions_["r_peak_position"] for d in train_data]
+
+algorithm = OptimizableQrsDetector()
+algorithm = algorithm.self_optimize(train_ecg_data, train_r_peaks, train_data.sampling_rate_hz)
+
+# %%
+# After the optimization, we can access the modified parameters.
+print(
+    "The optimized value of the threshold `min_r_peak_height_over_baseline` is:",
+    algorithm.min_r_peak_height_over_baseline,
+)
+
+# %%
+# Then we can apply the algorithm to our test set.
+# And again, we can see that the algorithm works fine on the piece of data we are inspecting here.
+test_data = example_data[3]
+test_ecg_data = test_data.data["ecg"]
+
+algorithm = algorithm.detect(test_ecg_data, test_data.sampling_rate_hz)
+
+# Visualize the results
+plt.figure()
+plt.plot(test_ecg_data[:5000])
+subset_peaks = algorithm.r_peak_positions_[algorithm.r_peak_positions_ < 5000.0]
+plt.plot(subset_peaks, test_ecg_data[subset_peaks], "s")
+plt.show()
diff --git a/examples/algorithms/__init__.py b/examples/algorithms/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/examples/algorithms/algorithms_qrs_detection_final.py b/examples/algorithms/algorithms_qrs_detection_final.py
new file mode 100644
index 00000000..4c89f53f
--- /dev/null
+++ b/examples/algorithms/algorithms_qrs_detection_final.py
@@ -0,0 +1,232 @@
+r"""
+.. _custom_algorithms_qrs_detection_final:
+
+The final QRS detection algorithms
+==================================
+
+These are the QRS detection algorithms, that we developed step by step :ref:`custom_algorithms_qrs_detection`.
+This file can be used as quick reference or to import the class into other examples without side effects.
+"""
+
+from typing import List, Tuple, Union
+
+import numpy as np
+import pandas as pd
+from scipy import signal
+from scipy.spatial import cKDTree, minkowski_distance
+from sklearn.metrics import roc_curve
+
+from tpcp import (
+    Algorithm,
+    HyperParameter,
+    OptimizableAlgorithm,
+    OptimizableParameter,
+    Parameter,
+    make_action_safe,
+    make_optimize_safe,
+)
+
+
+def match_events_with_reference(
+    events: np.ndarray, reference: np.ndarray, tolerance: Union[int, float], one_to_one: bool = True
+) -> Tuple[np.ndarray, np.ndarray]:
+    """Find matches in two lists based on the distance between their vectors.
+
+    Parameters
+    ----------
+    events : array with shape (n, d)
+        An n long array of d-dimensional vectors
+    reference : array with shape (m, d)
+        An m long array of d-dimensional vectors
+    tolerance
+        Max allowed Chebyshev distance between matches
+    one_to_one
+        If True only valid one-to-one matches are returned (see more below)
+
+    Returns
+    -------
+    event_indices
+        Indices from the events array that have a match in the right list.
+        If `one_to_one` is False, indices might repeat.
+    reference_indices
+        Indices from the reference array that have a match in the left list.
+        If `one_to_one` is False, indices might repeat.
+        A valid match pare is then `(event_indices[i], reference_indices[i]) for all i.
+
+    Notes
+    -----
+    This function supports 2 modes:
+
+    `one_to_one` = False:
+        In this mode every match is returned as long the distance in all dimensions between the matches is at most
+        tolerance.
+        This is equivalent to the Chebyshev distance between the matches
+        (aka `np.max(np.abs(left_match - right_match)) < tolerance`).
+        This means multiple matches for each vector will be returned.
+        This means the respective indices will occur multiple times in the output vectors.
+    `one_to_one` = True:
+        In this mode only a single match per index is allowed in both directions.
+        This means that every index will only occur once in the output arrays.
+        If multiple matches are possible based on the tolerance of the Chebyshev distance, the closest match will be
+        selected based on the Manhatten distance (aka `np.sum(np.abs(left_match - right_match`).
+        Only this match will be returned.
+        Note, that in the implementation, we first get the closest match based on the Manhatten distance and check in a
+        second step if this closed match is also valid based on the Chebyshev distance.
+
+    """
+    if len(events) == 0 or len(reference) == 0:
+        return np.array([]), np.array([])
+
+    events = events.squeeze()
+    reference = reference.squeeze()
+    assert np.ndim(events) == 1, "Events must be a 1D-array"
+    assert np.ndim(reference) == 1, "Reference must be a 1D-array"
+    events = np.atleast_2d(events).T
+    reference = np.atleast_2d(reference).T
+
+    right_tree = cKDTree(reference)
+    left_tree = cKDTree(events)
+
+    if one_to_one is False:
+        # p = np.inf is used to select the Chebyshev distance
+        keys = list(zip(*right_tree.sparse_distance_matrix(left_tree, tolerance, p=np.inf).keys()))
+        # All values are returned that have a valid match
+        return (np.array([]), np.array([])) if len(keys) == 0 else (np.array(keys[1]), np.array(keys[0]))
+
+    # one_to_one is True
+    # We calculate the closest neighbor based on the Manhatten distance in both directions and then find only the cases
+    # were the right side closest neighbor resulted in the same pairing as the left side closest neighbor ensuring
+    # that we have true one-to-one-matches
+
+    # p = 1 is used to select the Manhatten distance
+    l_nearest_distance, l_nearest_neighbor = right_tree.query(events, p=1, workers=-1)
+    _, r_nearest_neighbor = left_tree.query(reference, p=1, workers=-1)
+
+    # Filter the once that are true one-to-one matches
+    l_indices = np.arange(len(events))
+    combined_indices = np.vstack([l_indices, l_nearest_neighbor]).T
+    boolean_map = r_nearest_neighbor[l_nearest_neighbor] == l_indices
+    valid_matches = combined_indices[boolean_map]
+
+    # Check if the remaining matches are inside our Chebyshev tolerance distance.
+    # If not, delete them.
+    valid_matches_distance = l_nearest_distance[boolean_map]
+    index_large_matches = np.where(valid_matches_distance > tolerance)[0]
+    if index_large_matches.size > 0:
+        # Minkowski with p = np.inf uses the Chebyshev distance
+        output = (
+            minkowski_distance(events[index_large_matches], reference[valid_matches[index_large_matches, 1]], p=np.inf)
+            > tolerance
+        )
+
+        valid_matches = np.delete(valid_matches, index_large_matches[output], axis=0)
+
+    valid_matches = valid_matches.T
+
+    return valid_matches[0], valid_matches[1]
+
+
+class QRSDetector(Algorithm):
+    _action_methods = "detect"
+
+    # Input Parameters
+    high_pass_filter_cutoff_hz: Parameter[float]
+    max_heart_rate_bpm: Parameter[float]
+    min_r_peak_height_over_baseline: Parameter[float]
+
+    # Results
+    r_peak_positions_: pd.Series
+
+    # Some internal constants
+    _HIGH_PASS_FILTER_ORDER: int = 4
+
+    def __init__(
+        self,
+        max_heart_rate_bpm: float = 200.0,
+        min_r_peak_height_over_baseline: float = 1.0,
+        high_pass_filter_cutoff_hz: float = 1,
+    ):
+        self.max_heart_rate_bpm = max_heart_rate_bpm
+        self.min_r_peak_height_over_baseline = min_r_peak_height_over_baseline
+        self.high_pass_filter_cutoff_hz = high_pass_filter_cutoff_hz
+
+    @make_action_safe
+    def detect(self, single_channel_ecg: pd.Series, sampling_rate_hz: float):
+        ecg = single_channel_ecg.to_numpy().flatten()
+
+        filtered_signal = self._filter(ecg, sampling_rate_hz)
+        peak_positions = self._search_strategy(filtered_signal, sampling_rate_hz)
+
+        self.r_peak_positions_ = pd.Series(peak_positions)
+        return self
+
+    def _search_strategy(
+        self, filtered_signal: np.ndarray, sampling_rate_hz: float, use_height: bool = True
+    ) -> np.ndarray:
+        # Calculate the minimal distance based on the expected heart rate
+        min_distance_between_peaks = 1 / (self.max_heart_rate_bpm / 60) * sampling_rate_hz
+
+        height = None
+        if use_height:
+            height = self.min_r_peak_height_over_baseline
+        peaks, _ = signal.find_peaks(filtered_signal, distance=min_distance_between_peaks, height=height)
+        return peaks
+
+    def _filter(self, ecg_signal: np.ndarray, sampling_rate_hz: float) -> np.ndarray:
+        sos = signal.butter(
+            btype="high",
+            N=self._HIGH_PASS_FILTER_ORDER,
+            Wn=self.high_pass_filter_cutoff_hz,
+            output="sos",
+            fs=sampling_rate_hz,
+        )
+        return signal.sosfiltfilt(sos, ecg_signal)
+
+
+class OptimizableQrsDetector(QRSDetector, OptimizableAlgorithm):
+    min_r_peak_height_over_baseline: OptimizableParameter[float]
+    r_peak_match_tolerance_s: HyperParameter[float]
+
+    def __init__(
+        self,
+        max_heart_rate_bpm: float = 200.0,
+        min_r_peak_height_over_baseline: float = 1.0,
+        r_peak_match_tolerance_s: float = 0.01,
+        high_pass_filter_cutoff_hz: float = 1,
+    ):
+        self.r_peak_match_tolerance_s = r_peak_match_tolerance_s
+        super().__init__(
+            max_heart_rate_bpm=max_heart_rate_bpm,
+            min_r_peak_height_over_baseline=min_r_peak_height_over_baseline,
+            high_pass_filter_cutoff_hz=high_pass_filter_cutoff_hz,
+        )
+
+    @make_optimize_safe
+    def self_optimize(self, ecg_data: List[pd.Series], r_peaks: List[pd.Series], sampling_rate_hz: float):
+        all_labels = []
+        all_peak_heights = []
+        for d, p in zip(ecg_data, r_peaks):
+            filtered = self._filter(d.to_numpy().flatten(), sampling_rate_hz)
+            # Find all potential peaks without the height threshold
+            potential_peaks = self._search_strategy(filtered, sampling_rate_hz, use_height=False)
+            # Determine the label for each peak, by matching them with our ground truth
+            labels = np.zeros(potential_peaks.shape)
+            matches, _ = match_events_with_reference(
+                events=np.atleast_2d(potential_peaks).T,
+                reference=np.atleast_2d(p.to_numpy().astype(int)).T,
+                tolerance=self.r_peak_match_tolerance_s * sampling_rate_hz,
+                one_to_one=True,
+            )
+            labels[matches] = 1
+            labels = labels.astype(bool)
+            all_labels.append(labels)
+            all_peak_heights.append(filtered[potential_peaks])
+        all_labels = np.hstack(all_labels)
+        all_peak_heights = np.hstack(all_peak_heights)
+        # We "brute-force" a good cutoff by testing a bunch of thresholds and then calculating the Youden Index for
+        # each.
+        fpr, tpr, thresholds = roc_curve(all_labels, all_peak_heights)
+        youden_index = tpr - fpr
+        # The best Youden index gives us a balance between sensitivity and specificity.
+        self.min_r_peak_height_over_baseline = thresholds[np.argmax(youden_index)]
+        return self
diff --git a/examples/datasets/README.rst b/examples/datasets/README.rst
new file mode 100644
index 00000000..e744f1ef
--- /dev/null
+++ b/examples/datasets/README.rst
@@ -0,0 +1,4 @@
+.. _custom_datasets:
+
+Datasets
+--------
diff --git a/examples/custom_dataset.py b/examples/datasets/_01_datasets_basics.py
similarity index 98%
rename from examples/custom_dataset.py
rename to examples/datasets/_01_datasets_basics.py
index 0e03c917..5d953cb8 100644
--- a/examples/custom_dataset.py
+++ b/examples/datasets/_01_datasets_basics.py
@@ -1,13 +1,13 @@
 r"""
-.. _custom_dataset:
+.. _custom_dataset_basics:
 
-Custom Dataset
-==============
+Custom Dataset - Basics
+=======================
 
 Datasets represent a set of recordings that should all be processed in the same way.
 For example the data of multiple participants in a study, multiple days of recording, or multiple tests.
-The goal of datasets is to provide a consistent interface to access the raw data, meta data, and potential reference
-information in an object oriented way.
+The goal of datasets is to provide a consistent interface to access the raw data, metadata, and potential reference
+information in an object-oriented way.
 It is up to you to define, what is considered a single "data-point" for your dataset.
 Note, that datasets can be arbitrarily nested (e.g. multiple participants with multiple recordings).
 
diff --git a/examples/datasets/_02_datasets_real_world_example.py b/examples/datasets/_02_datasets_real_world_example.py
new file mode 100644
index 00000000..58244c01
--- /dev/null
+++ b/examples/datasets/_02_datasets_real_world_example.py
@@ -0,0 +1,408 @@
+r"""
+.. _custom_dataset_ecg:
+
+Custom Dataset - A real world example
+=====================================
+
+To better understand how you would actually use tpcp datasets, we are going to build a dataset class for an actual
+dataset.
+We are going to use a subset of the `MIT-BIH Arrhythmia Database <https://physionet.org/content/mitdb/1.0.0/>`_.
+The actual content of the data is not relevant, but it has a couple of key characteristics that are typical for such
+datasets:
+
+- Data comes in individual files per participant/recording
+- There are multiple files (with different formats and structures) for each recording
+- Each recording/data point is an entire time series
+
+These characteristics typically make working with such a dataset a little cumbersome.
+In the following we want to explore how we can create a tpcp dataset for it, to make future work with the data easier.
+
+If you want to see other real-life implementations of tpcp-datasets you can also check out:
+
+* https://github.com/mad-lab-fau/sensor_position_dataset_helper/blob/master/sensor_position_dataset_helper/tpcp_dataset.py
+* https://github.com/mad-lab-fau/cft-analysis/tree/main/cft_analysis/datasets
+
+If you just want the final implementation, without all the explanation, check :ref:`custom_dataset_final_ecg`.
+
+"""
+
+# %%
+# Creating an index
+# -----------------
+# First we need to figure out what data we have and convert that into an index dataframe.
+# To make things a little more complicated we will add a second layer to the data, by assigning each participant
+# into one of three "patient groups" arbitrarily.
+#
+# In the data we have 3 files per participant:
+#   1. {patient_id}.pk.gz -> The ECG recording
+#   2. {patient_id}_all.csv -> The position of the R-peaks of all heart beats (PVC or normal).
+#       All heart beats that show a different condition than PVC are already excluded
+#   3. {patient_id}_pvc.csv -> The position of all PVC heart beats in the recording.
+#
+# Later we need to include the data of all files into the dataset, but to generate out index, it is sufficient to only
+# list one of the datatypes.
+from pathlib import Path
+from typing import List, Optional, Union
+
+from tpcp import Dataset
+
+try:
+    HERE = Path(__file__).parent
+except NameError:
+    HERE = Path(".").resolve()
+data_path = HERE.parent.parent / "example_data/ecg_mit_bih_arrhythmia/data"
+
+# Note that we sort the files explicitly, as the file order might depend on the operating system.
+# Otherwise, the ordering of our dataset might not be reproducible
+participant_ids = [f.name.split("_")[0] for f in sorted(data_path.glob("*_all.csv"))]
+
+
+# %%
+# This information forms one level of our dataset.
+# We will add the "patient group" as arbitrary hardcoded second level to our dataset to make things a little more
+# interesting.
+#
+# Afterwards we put everything into an index that we will use for our dataset.
+from itertools import cycle
+
+import pandas as pd
+
+patient_group = [g for g, _ in zip(cycle(("group_1", "group_2", "group_3")), participant_ids)]
+
+data_index = pd.DataFrame({"patient_group": patient_group, "participant": participant_ids})
+data_index
+
+# %%
+# Creating the dataset
+# --------------------
+# Now that we know how to create our index, we will integrate this logic into our dataset.
+# Note, that we do not want to hardcode the dataset path and hence, turn it into a parameter of the dataset.
+# The rest of the logic stays the same and goes into the `create_index` method.
+#
+# .. note:: Note that we sort the files explicitly, as the file order might depend on the operating system.
+#           Otherwise, the ordering of our dataset might not be reproducible.
+
+
+class ECGExampleData(Dataset):
+    data_path: Path
+
+    def __init__(
+        self,
+        data_path: Path,
+        *,
+        groupby_cols: Optional[Union[List[str], str]] = None,
+        subset_index: Optional[pd.DataFrame] = None,
+    ):
+        self.data_path = data_path
+        super().__init__(groupby_cols=groupby_cols, subset_index=subset_index)
+
+    def create_index(self) -> pd.DataFrame:
+        participant_ids = [f.name.split("_")[0] for f in sorted(self.data_path.glob("*_all.csv"))]
+        patient_group = [g for g, _ in zip(cycle(("group_1", "group_2", "group_3")), participant_ids)]
+        df = pd.DataFrame({"patient_group": patient_group, "participant": participant_ids})
+        # Some additional checks to avoid common issues
+        if len(df) == 0:
+            raise ValueError(
+                "The dataset is empty. Are you sure you selected the correct folder? Current folder is: "
+                f"{self.data_path}"
+            )
+        return df
+
+
+ECGExampleData(data_path=data_path)
+
+# %%
+# Adding data
+# -----------
+# The implementation above is a fully functional dataset and can be used to split or iterate the index.
+# However, to make things really convenient, we want to add data access parameters to the dataset.
+# We start with the raw ecg data.
+#
+# In general, it is completely up to you how you implement this.
+# You can use methods on the dataset, properties, or create a set of functions, that get a dataset instance as an input.
+# The way below shows how we usually do it.
+# The most important thing in all cases is documentation to make sure everyone knows what data they are getting and
+# in which format.
+#
+# As we don't know how people will use the dataset, we will load the data only on demand.
+# Further, loading the data (in this case) only makes sense, when there is just a single participant selected in the
+# dataset.
+#
+# We will implement this logic by using a `property` to implement "load-on-demand" and the `dataset.is_single` method
+# to check that there is really only a single participant selected.
+
+
+class ECGExampleData(Dataset):
+    data_path: Path
+
+    def __init__(
+        self,
+        data_path: Path,
+        *,
+        groupby_cols: Optional[Union[List[str], str]] = None,
+        subset_index: Optional[pd.DataFrame] = None,
+    ):
+        self.data_path = data_path
+        super().__init__(groupby_cols=groupby_cols, subset_index=subset_index)
+
+    @property
+    def sampling_rate_hz(self) -> float:
+        """The sampling rate of the raw ECG recording in Hz"""
+        return 360.0
+
+    @property
+    def data(self) -> pd.DataFrame:
+        """The raw ECG data of a participant's recording.
+
+        The dataframe contains a single column called "ecg".
+        The index values are just samples.
+        You can use the sampling rate (`self.sampling_rate_hz`) to convert it into time
+        """
+        # Check that there is only a single participant in the dataset
+        if not self.is_single(None):
+            raise ValueError("Data can only be accessed, when there is just a single participant in the dataset.")
+        # Reconstruct the ecg file path based on the data index
+        p_id = self.index["participant"][0]
+        return pd.read_pickle(self.data_path / f"{p_id}.pk.gz")
+
+    def create_index(self) -> pd.DataFrame:
+        participant_ids = [f.name.split("_")[0] for f in sorted(self.data_path.glob("*_all.csv"))]
+        patient_group = [g for g, _ in zip(cycle(("group_1", "group_2", "group_3")), participant_ids)]
+        df = pd.DataFrame({"patient_group": patient_group, "participant": participant_ids})
+        # Some additional checks to avoid common issues
+        if len(df) == 0:
+            raise ValueError(
+                "The dataset is empty. Are you sure you selected the correct folder? Current folder is: "
+                f"{self.data_path}"
+            )
+        return df
+
+
+# %%
+# With that logic, we can now select a subset of the dataset that contains only a single participant and then access
+# the data.
+dataset = ECGExampleData(data_path=data_path)
+subset = dataset[0]
+subset
+
+# %%
+subset.data
+
+# %%
+# Adding more data
+# ----------------
+# In the same way, we can add the remaining data.
+# The remaining data we have available is both data generated by human labelers on the ECG signal.
+# Aka data that you usually would not have available with your ECG recording.
+# Hence, we will treat this information as "reference data/labels".
+# By convention, we usually use a trailing `_` after the property name to indicate that.
+#
+# We also add one "derived" property (`labeled_r_peaks_`) that returns the data in a more convenient format for
+# certain tasks.
+# You could also implement methods or properties that perform certain computations.
+# For example if there is a typical pre-processing that should always be applied to the data, it might be good to add
+# a property `data_cleaned` (or similar) that runs this processing on demand when the parameter is accessed.
+
+
+class ECGExampleData(Dataset):
+    data_path: Path
+
+    def __init__(
+        self,
+        data_path: Path,
+        *,
+        groupby_cols: Optional[Union[List[str], str]] = None,
+        subset_index: Optional[pd.DataFrame] = None,
+    ):
+        self.data_path = data_path
+        super().__init__(groupby_cols=groupby_cols, subset_index=subset_index)
+
+    @property
+    def sampling_rate_hz(self) -> float:
+        """The sampling rate of the raw ECG recording in Hz"""
+        return 360.0
+
+    @property
+    def data(self) -> pd.DataFrame:
+        """The raw ECG data of a participant's recording.
+
+        The dataframe contains a single column called "ecg".
+        The index values are just samples.
+        You can use the sampling rate (`self.sampling_rate_hz`) to convert it into time
+        """
+        # Check that there is only a single participant in the dataset
+        self.assert_is_single(None, "data")
+        # Reconstruct the ecg file path based on the data index
+        p_id = self.index["participant"][0]
+        return pd.read_pickle(self.data_path / f"{p_id}.pk.gz")
+
+    @property
+    def r_peak_positions_(self) -> pd.DataFrame:
+        """The sample positions of all R-peaks in the ECG data.
+
+        This includes all R-Peaks (PVC or normal)
+        """
+        self.assert_is_single(None, "r_peaks_")
+        p_id = self.index["participant"][0]
+        r_peaks = pd.read_csv(self.data_path / f"{p_id}_all.csv", index_col=0)
+        r_peaks = r_peaks.rename(columns={"R": "r_peak_position"})
+        return r_peaks
+
+    @property
+    def pvc_positions_(self) -> pd.DataFrame:
+        """The positions of R-peaks belonging to abnormal PVC peaks in the data stream.
+
+        The position is equivalent to a position entry in `self.r_peak_positions_`.
+        """
+        self.assert_is_single(None, "pvc_positions_")
+        p_id = self.index["participant"][0]
+        pvc_peaks = pd.read_csv(self.data_path / f"{p_id}_pvc.csv", index_col=0)
+        pvc_peaks = pvc_peaks.rename(columns={"PVC": "pvc_position"})
+        return pvc_peaks
+
+    @property
+    def labeled_r_peaks_(self) -> pd.DataFrame:
+        """All r-peak positions with an additional column that labels them as normal or PVC."""
+        self.assert_is_single(None, "labeled_r_peaks_")
+        r_peaks = self.r_peak_positions_
+        r_peaks["label"] = "normal"
+        r_peaks.loc[r_peaks["r_peak_position"].isin(self.pvc_positions_["pvc_position"]), "label"] = "pvc"
+        return r_peaks
+
+    def create_index(self) -> pd.DataFrame:
+        participant_ids = [f.name.split("_")[0] for f in sorted(self.data_path.glob("*_all.csv"))]
+        patient_group = [g for g, _ in zip(cycle(("group_1", "group_2", "group_3")), participant_ids)]
+        df = pd.DataFrame({"patient_group": patient_group, "participant": participant_ids})
+        # Some additional checks to avoid common issues
+        if len(df) == 0:
+            raise ValueError(
+                "The dataset is empty. Are you sure you selected the correct folder? Current folder is: "
+                f"{self.data_path}"
+            )
+        return df
+
+
+dataset = ECGExampleData(data_path=data_path)
+subset = dataset[0]
+subset.labeled_r_peaks_
+
+# %%
+# Conclusion
+# ----------
+# While building the dataset is not always easy and requires you to think about how you want to access the data, it
+# makes working with the data in the future easy.
+# Even without using any other tpcp feature, it provides a clear overview over the data available and abstracts the
+# complexity of data loading.
+# This can prevent accidental errors and just a much faster and better workflow in case new people want to work with
+# a dataset.
+
+# %%
+# Advanced Concepts - Caching
+# ---------------------------
+# Loading/pre-processing the data on demand in the dataset above is a good optimization, if you only need to access the
+# data once.
+# However, if you need to access the data multiple times you might want to cache the loaded data within a single
+# execution of you code, or even cache time-consuming computations across multiple runs/programs.
+# Depending on the scenario this can either be achieved by using a in memory cache like `functools.lru_cache` or a disk
+# cache like `joblib.Memory`.
+#
+# Finding the right functions to cache and to do it in a way that balances runtime and other resource usage is tricky.
+# So only do that, if you really need it.
+# However, when you implement it, the best approach is to extract the part you want to cache into a global function
+# **without** side-effects and then wrap this function with your caching method of choice.
+#
+# Below we will demonstrate how to do that using Pythons `lru_cache` for the `data` property and make caching optional
+# using a dataset parameter.
+from functools import lru_cache
+
+
+def load_pandas_pickle_file(file_path):
+    return pd.read_pickle(file_path)
+
+
+cached_load_pandas_pickle_file = lru_cache(10)(load_pandas_pickle_file)
+
+
+class ECGExampleData(Dataset):
+    data_path: Path
+    use_lru_cache: bool
+
+    def __init__(
+        self,
+        data_path: Path,
+        *,
+        use_lru_cache: bool = True,
+        groupby_cols: Optional[Union[List[str], str]] = None,
+        subset_index: Optional[pd.DataFrame] = None,
+    ):
+        self.data_path = data_path
+        self.use_lru_cache = use_lru_cache
+        super().__init__(groupby_cols=groupby_cols, subset_index=subset_index)
+
+    @property
+    def sampling_rate_hz(self) -> float:
+        """The sampling rate of the raw ECG recording in Hz"""
+        return 360.0
+
+    @property
+    def data(self) -> pd.DataFrame:
+        """The raw ECG data of a participant's recording.
+
+        The dataframe contains a single column called "ecg".
+        The index values are just samples.
+        You can use the sampling rate (`self.sampling_rate_hz`) to convert it into time
+        """
+        # Check that there is only a single participant in the dataset
+        self.assert_is_single(None, "data")
+        # Reconstruct the ecg file path based on the data index
+        p_id = self.index["participant"][0]
+        file_path = self.data_path / f"{p_id}.pk.gz"
+        # We try to use the cache if enabled.
+        if self.use_lru_cache:
+            return cached_load_pandas_pickle_file(file_path)
+        return load_pandas_pickle_file(file_path)
+
+    @property
+    def r_peak_positions_(self) -> pd.DataFrame:
+        """The sample positions of all R-peaks in the ECG data.
+
+        This includes all R-Peaks (PVC or normal)
+        """
+        self.assert_is_single(None, "r_peaks_")
+        p_id = self.index["participant"][0]
+        r_peaks = pd.read_csv(self.data_path / f"{p_id}_all.csv", index_col=0)
+        r_peaks = r_peaks.rename(columns={"R": "r_peak_position"})
+        return r_peaks
+
+    @property
+    def pvc_positions_(self) -> pd.DataFrame:
+        """The positions of R-peaks belonging to abnormal PVC peaks in the data stream.
+
+        The position is equivalent to a position entry in `self.r_peak_positions_`.
+        """
+        self.assert_is_single(None, "pvc_positions_")
+        p_id = self.index["participant"][0]
+        pvc_peaks = pd.read_csv(self.data_path / f"{p_id}_pvc.csv", index_col=0)
+        pvc_peaks = pvc_peaks.rename(columns={"PVC": "pvc_position"})
+        return pvc_peaks
+
+    @property
+    def labeled_r_peaks_(self) -> pd.DataFrame:
+        """All r-peak positions with an additional column that labels them as normal or PVC."""
+        self.assert_is_single(None, "labeled_r_peaks_")
+        r_peaks = self.r_peak_positions_
+        r_peaks["label"] = "normal"
+        r_peaks.loc[r_peaks["r_peak_position"].isin(self.pvc_positions_["pvc_position"]), "label"] = "pvc"
+        return r_peaks
+
+    def create_index(self) -> pd.DataFrame:
+        participant_ids = [f.name.split("_")[0] for f in sorted(self.data_path.glob("*_all.csv"))]
+        patient_group = [g for g, _ in zip(cycle(("group_1", "group_2", "group_3")), participant_ids)]
+        df = pd.DataFrame({"patient_group": patient_group, "participant": participant_ids})
+        # Some additional checks to avoid common issues
+        if len(df) == 0:
+            raise ValueError(
+                "The dataset is empty. Are you sure you selected the correct folder? Current folder is: "
+                f"{self.data_path}"
+            )
+        return df
diff --git a/examples/datasets/__init__.py b/examples/datasets/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/examples/datasets/datasets_final_ecg.py b/examples/datasets/datasets_final_ecg.py
new file mode 100644
index 00000000..9e201320
--- /dev/null
+++ b/examples/datasets/datasets_final_ecg.py
@@ -0,0 +1,108 @@
+"""
+.. _custom_dataset_final_ecg:
+
+The final ECG Example dataset
+=============================
+
+This is the final ECG Example dataset, that we developed step by step in the example :ref:`custom_dataset_ecg`.
+This file can be used as quick reference or to import the class into other examples without side effects.
+"""
+from functools import lru_cache
+from itertools import cycle
+from pathlib import Path
+from typing import List, Optional, Union
+
+import pandas as pd
+
+from tpcp import Dataset
+
+
+def load_pandas_pickle_file(file_path):
+    return pd.read_pickle(file_path)
+
+
+cached_load_pandas_pickle_file = lru_cache(10)(load_pandas_pickle_file)
+
+
+class ECGExampleData(Dataset):
+    data_path: Path
+    use_lru_cache: bool
+
+    def __init__(
+        self,
+        data_path: Path,
+        *,
+        use_lru_cache: bool = True,
+        groupby_cols: Optional[Union[List[str], str]] = None,
+        subset_index: Optional[pd.DataFrame] = None,
+    ):
+        self.data_path = data_path
+        self.use_lru_cache = use_lru_cache
+        super().__init__(groupby_cols=groupby_cols, subset_index=subset_index)
+
+    @property
+    def sampling_rate_hz(self) -> float:
+        """The sampling rate of the raw ECG recording in Hz"""
+        return 360.0
+
+    @property
+    def data(self) -> pd.DataFrame:
+        """The raw ECG data of a participant's recording.
+
+        The dataframe contains a single column called "ecg".
+        The index values are just samples.
+        You can use the sampling rate (`self.sampling_rate_hz`) to convert it into time
+        """
+        # Check that there is only a single participant in the dataset
+        self.assert_is_single(None, "data")
+        # Reconstruct the ecg file path based on the data index
+        p_id = self.index["participant"][0]
+        file_path = self.data_path / f"{p_id}.pk.gz"
+        # We try to use the cache if enabled.
+        if self.use_lru_cache:
+            return cached_load_pandas_pickle_file(file_path)
+        return load_pandas_pickle_file(file_path)
+
+    @property
+    def r_peak_positions_(self) -> pd.DataFrame:
+        """The sample positions of all R-peaks in the ECG data.
+
+        This includes all R-Peaks (PVC or normal)
+        """
+        self.assert_is_single(None, "r_peaks_")
+        p_id = self.index["participant"][0]
+        r_peaks = pd.read_csv(self.data_path / f"{p_id}_all.csv", index_col=0)
+        r_peaks = r_peaks.rename(columns={"R": "r_peak_position"})
+        return r_peaks
+
+    @property
+    def pvc_positions_(self) -> pd.DataFrame:
+        """The positions of R-peaks belonging to abnormal PVC peaks in the data stream.
+
+        The position is equivalent to a position entry in `self.r_peak_positions_`.
+        """
+        self.assert_is_single(None, "pvc_positions_")
+        p_id = self.index["participant"][0]
+        pvc_peaks = pd.read_csv(self.data_path / f"{p_id}_pvc.csv", index_col=0)
+        pvc_peaks = pvc_peaks.rename(columns={"PVC": "pvc_position"})
+        return pvc_peaks
+
+    @property
+    def labeled_r_peaks_(self) -> pd.DataFrame:
+        """All r-peak positions with an additional column that labels them as normal or PVC."""
+        self.assert_is_single(None, "labeled_r_peaks_")
+        r_peaks = self.r_peak_positions_
+        r_peaks["label"] = "normal"
+        r_peaks.loc[r_peaks["r_peak_position"].isin(self.pvc_positions_["pvc_position"]), "label"] = "pvc"
+        return r_peaks
+
+    def create_index(self) -> pd.DataFrame:
+        participant_ids = [f.name.split("_")[0] for f in sorted(self.data_path.glob("*_all.csv"))]
+        patient_group = [g for g, _ in zip(cycle(("group_1", "group_2", "group_3")), participant_ids)]
+        df = pd.DataFrame({"patient_group": patient_group, "participant": participant_ids})
+        if len(df) == 0:
+            raise ValueError(
+                "The dataset is empty. Are you sure you selected the correct folder? Current folder is: "
+                f"{self.data_path}"
+            )
+        return df
diff --git a/examples/parameter_optimization/README.rst b/examples/parameter_optimization/README.rst
new file mode 100644
index 00000000..91787249
--- /dev/null
+++ b/examples/parameter_optimization/README.rst
@@ -0,0 +1,4 @@
+.. _parameter_optimization:
+
+Parameter Optimization
+----------------------
diff --git a/examples/parameter_optimization/_01_gridsearch.py b/examples/parameter_optimization/_01_gridsearch.py
new file mode 100644
index 00000000..bf7edfb3
--- /dev/null
+++ b/examples/parameter_optimization/_01_gridsearch.py
@@ -0,0 +1,181 @@
+r"""
+.. _grid_search:
+
+Grid Search optimal Algorithm Parameter
+=======================================
+
+In case no better way exists to optimize a parameter of a algorithm or pipeline an exhaustive Gridsearch might be a
+good idea.
+`tpcp` provides a Gridsearch that is algorithm agnostic (as long as you can wrap your algorithm into a pipeline).
+
+As example, we are going to Gridsearch some parameters of the `QRSDetector` we implemented in
+:ref:`custom_algorithms_qrs_detection`.
+
+"""
+# %%
+# To perform a GridSearch (or any other form of parameter optimization in Gaitmap), we first need to have a
+# **Dataset**, a **Pipeline** and a **score** function.
+#
+# 1. The Dataset
+# --------------
+# Datsets wrap multiple recordings into an easy-to-use interface that can be passed around between the higher
+# level `tpcp` functions.
+# Learn more about this :ref:`here <custom_datasets>`.
+# If you are lucky, you do not need to create the dataset on your own, but someone has already created a dataset
+# for the data you want to use.
+#
+# Here, we're just going to reuse the ECGExample dataset we created in :ref:`custom_dataset_ecg`.
+#
+# For our GridSearch, we need an instance of this dataset.
+from pathlib import Path
+
+from examples.datasets.datasets_final_ecg import ECGExampleData
+
+try:
+    HERE = Path(__file__).parent
+except NameError:
+    HERE = Path(".").resolve()
+data_path = HERE.parent.parent / "example_data/ecg_mit_bih_arrhythmia/data"
+example_data = ECGExampleData(data_path)
+
+# %%
+# 1. The Pipeline
+# ---------------
+# The pipeline simply defines what algorithms we want to run on our data and defines, which parameters of the pipeline
+# you still want to be able to modify (e.g. to optimize in the GridSearch).
+#
+# The pipeline usually needs 3 things:
+#
+# 1. It needs to be subclass of :class:`~tpcp.Pipeline`.
+# 2. It needs to have a `run` method that runs all the algorithmic steps and stores the results as class attributes.
+#    The `run` method should expect only a single data point (in our case a single recording of one sensor) as input.
+# 3. A `init` that defines all parameters that should be adjustable. Note, that the names in the function signature of
+#    the `init` method, **must** match the corresponding attribute names (e.g. `max_cost` -> `self.max_cost`).
+#    If you want to adjust multiple parameters that all belong to the same algorithm, it might also be convenient to
+#    just pass the algorithm as a parameter. However, keep potential issues with mutable defaults in mind (:ref:`more
+#    info <mutable_defaults>`).
+#
+# Here we simply extract the data and sampling rate from the datapoint and then run the algorithm.
+# We store the final results we are interested in on the pipeline object.
+#
+# For the final GridSearch, we need an instance of the pipeline object.
+import pandas as pd
+
+from examples.algorithms.algorithms_qrs_detection_final import QRSDetector
+from tpcp import Parameter, Pipeline, cf
+
+
+class MyPipeline(Pipeline):
+    algorithm: Parameter[QRSDetector]
+
+    r_peak_positions_: pd.Series
+
+    def __init__(self, algorithm: QRSDetector = cf(QRSDetector())):
+        self.algorithm = algorithm
+
+    def run(self, datapoint: ECGExampleData):
+        # Note: We need to clone the algorithm instance, to make sure we don't leak any data between runs.
+        algo = self.algorithm.clone()
+        algo.detect(datapoint.data, datapoint.sampling_rate_hz)
+
+        self.r_peak_positions_ = algo.r_peak_positions_
+        return self
+
+
+pipe = MyPipeline()
+
+
+# %%
+# 3. The scorer
+# -------------
+# In the context of a gridsearch, we want to calculate the performance of our algorithm and rank the different
+# parameter candidates accordingly.
+# This is what our score function is for.
+# It gets a pipeline object (**without** results!) and a data point (i.e. a single recording) as input and should
+# return a some sort of performance metric.
+# A higher value is always considered better.
+# If you want to calculate multiple performance measures, you can also return a dictionary of such values.
+# In any case, the performance for a specific parameter combination in the GridSearch will be calculated as the mean
+# over all datapoints.
+# (Note, if you want to change this, you can create custom subclasses of :class:`~tpcp.validate.Scorer`).
+#
+# A typical score function will first call `safe_run` (which calls `run` internally) on the pipeline and then
+# compare the output with some reference.
+# This reference should be supplied as part of the dataset.
+#
+# Instead of using a function as scorer (shown here), you can also implement a method called `score` on your pipeline.
+# Then just pass `None` (which is the default) for the `scoring` parameter in the GridSearch (and other optimizers).
+# However, a function is usually more flexible.
+#
+# In this case we compare the identified R-peaks with the reference and identify which R-peaks were correctly
+# found within a certain margin around the reference points
+# Based on these matches, we calculate the precision, the recall, and the f1-score using some helper functions.
+from examples.algorithms.algorithms_qrs_detection_final import match_events_with_reference
+
+
+def score(pipeline: MyPipeline, datapoint: ECGExampleData):
+    # We use the `safe_run` wrapper instead of just run. This is always a good idea.
+    # We don't need to clone the pipeline here, as GridSearch will already clone the pipeline internally and `run`
+    # will clone it again.
+    pipeline = pipeline.safe_run(datapoint)
+    tolerance_s = 0.02  # We just use 20 ms for this example
+    matches_events, _ = match_events_with_reference(
+        pipeline.r_peak_positions_.to_numpy(),
+        datapoint.r_peak_positions_.to_numpy(),
+        tolerance=tolerance_s * datapoint.sampling_rate_hz,
+    )
+    n_tp = len(matches_events)
+    precision = n_tp / len(pipeline.r_peak_positions_)
+    recall = n_tp / len(datapoint.r_peak_positions_)
+    f1_score = (2 * n_tp) / (len(pipeline.r_peak_positions_) + len(datapoint.r_peak_positions_))
+    return {"precision": precision, "recall": recall, "f1_score": f1_score}
+
+
+# %%
+# The Parameters
+# --------------
+# The last step before running the GridSearch, is to select the parameters we want to test for each dataset.
+# For this, we can directly use sklearn's `ParameterGrid`.
+#
+# In this example, we will just test three values for the `high_pass_filter_cutoff_hz`.
+# As this is a nested paramater, we use the `__` syntax to set it.
+from sklearn.model_selection import ParameterGrid
+
+parameters = ParameterGrid({"algorithm__high_pass_filter_cutoff_hz": [0.25, 0.5, 1]})
+
+# %%
+# Running the GridSearch
+# ----------------------
+# Now we have all the pieces to run the GridSearch.
+# After initializing, we can use `optimize` to run the GridSearch.
+#
+# .. note:: If the score function returns a dictionary of scores, `rank_scorer` must be set to the name of the score,
+#           that should be used to decide on the best parameter set.
+from tpcp.optimize import GridSearch
+
+gs = GridSearch(pipe, parameters, scoring=score, return_optimized="f1_score")
+gs = gs.optimize(example_data)
+
+# %%
+# The main results are stored in `gs_results_`.
+# It shows the mean performance per parameter combination, the rank for each parameter combination and the
+# performance for each individual data point (in our case a single recording of one participant).
+results = gs.gs_results_
+results
+
+#%%
+pd.DataFrame(results)
+
+# %%
+# Further, the `optimized_pipeline_` parameter holds an instance of the pipeline initialized with the best parameter
+# combination.
+print("Best Para Combi:", gs.best_params_)
+print("Paras of optimized Pipeline:", gs.optimized_pipeline_.get_params())
+
+# %%
+# To run the optimized pipeline, we can directly use the `run`/`safe_run` method on the GridSearch object.
+# This makes it possible to use the `GridSearch` as a replacement for your pipeline object with minimal code changes.
+#
+# If you tried to call `run`/`safe_run` (or `score` for that matter), before the optimization, an error is raised.
+r_peaks = gs.safe_run(example_data[0]).r_peak_positions_
+r_peaks
diff --git a/examples/parameter_optimization/_02_optimizable_pipelines.py b/examples/parameter_optimization/_02_optimizable_pipelines.py
new file mode 100644
index 00000000..fcba6664
--- /dev/null
+++ b/examples/parameter_optimization/_02_optimizable_pipelines.py
@@ -0,0 +1,158 @@
+r"""
+.. _optimize_pipelines:
+
+Optimizable Pipelines
+=====================
+
+Some gait analysis algorithms can actively be "trained" to improve their performance or adapt it to a certain dataset.
+In `tpcp` we use the term "optimize" instead of "train", as not all algorithms are based on "machine learning" in the
+traditional sense.
+We consider all algorithms/pipelines "optimizable" if they have parameters and models that can be adapted and optimized
+using an algorithm specific optimization method.
+Algorithms that can **only** be optimized by brute force (e.g. via GridSearch) are explicitly excluded from this group.
+For more information about the conceptional idea behind this, see the guide on
+:ref:`algorithm evaluation <algorithm_evaluation>`.
+
+In this example we will implement an optimizable pipeline around the `OptimizableQrsDetector` we developed in
+:ref:`custom_algorithms_qrs_detection`.
+As optimization might depend on the dataset and pre-processing, we need to write a wrapper around the `self_optimize`
+method of the `OptimizableQrsDetector` on a pipeline level.
+However, in general this should be really straight forward, as most of the complexity is already implemented on
+algorithm level.
+
+This example shows how such a pipeline should be implemented and how it can be optimized using
+:class:`~tpcp.optimize.Optimize`.
+"""
+
+# %%
+# The Pipeline
+# ------------
+# Our pipeline will implement all the logic on how our algorithms are applied to the data and how algorithms should
+# be optimized based on train data.
+#
+# An optimizable pipeline usually needs the following things:
+#
+# 1. It needs to be a subclass of :class:`~tpcp.OptimizablePipeline`.
+# 2. It needs to have a `run` method that runs all the algorithmic steps and stores the results as class attributes.
+#    The `run` method should expect only a single data point (in our case a single recording of one sensor) as input.
+# 3. It needs to have an `self_optimize` method, that performs a data-driven optimization of one or more input
+#    parameters.
+#    This method is expected to return `self` and is only allowed to modify parameters marked as `OptimizableParameter`
+#    using the class-level typehints (more below)
+# 4. A `init` that defines all parameters that should be adjustable. Note, that the names in the function signature of
+#    the `init` method, **must** match the corresponding attribute names (e.g. `max_cost` -> `self.max_cost`).
+#    If you want to adjust multiple parameters that all belong to the same algorithm, it might also be convenient to
+#    just pass the algorithm as a parameter. However, keep potential issues with mutable defaults in mind (:ref:`more
+#    info <mutable_defaults>`). As `OptimizableQrsDetector` is a tpcp-algorithm class, we can do that in our case.
+# 5. At least one of the input parameters must be marked as `OptimizableParameter` in the class-level typehints.
+#    If parameters are nested tpcp objects you can use the `__` syntax to mark nested values as optimizable.
+#    Note, that you always need to mark the parameters you want to optimize in the current pipeline.
+#    Annotations in nested objects are not considered.
+#    The more precise you are with these annotations, the more help the runtime checks in tpcp can provide.
+# 6. (Optionally) Mark parameters as `PureParameter` using the type annotations. This can be used by GridSearchCv to
+#    apply some performance optimizations. However, be careful with that! In our case, there are not `PureParameters`,
+#    As all (nested) input parameters change the output of the `self_optimize` method.
+#
+
+import pandas as pd
+
+from examples.algorithms.algorithms_qrs_detection_final import OptimizableQrsDetector
+from examples.datasets.datasets_final_ecg import ECGExampleData
+from tpcp import OptimizableParameter, OptimizablePipeline, Parameter, cf
+
+
+class MyPipeline(OptimizablePipeline):
+    algorithm: Parameter[OptimizableQrsDetector]
+    algorithm__min_r_peak_height_over_baseline: OptimizableParameter[float]
+
+    r_peak_positions_: pd.Series
+
+    def __init__(self, algorithm: OptimizableQrsDetector = cf(OptimizableQrsDetector())):
+        self.algorithm = algorithm
+
+    def self_optimize(self, dataset: ECGExampleData, **kwargs):
+        ecg_data = [d.data["ecg"] for d in dataset]
+        r_peaks = [d.r_peak_positions_["r_peak_position"] for d in dataset]
+        # Note: We need to clone the algorithm instance, to make sure we don't leak any data between runs.
+        algo = self.algorithm.clone()
+        self.algorithm = algo.self_optimize(ecg_data, r_peaks, dataset.sampling_rate_hz)
+        return self
+
+    def run(self, datapoint: ECGExampleData):
+        # Note: We need to clone the algorithm instance, to make sure we don't leak any data between runs.
+        algo = self.algorithm.clone()
+        algo.detect(datapoint.data, datapoint.sampling_rate_hz)
+
+        self.r_peak_positions_ = algo.r_peak_positions_
+        return self
+
+
+pipe = MyPipeline()
+
+
+# %%
+# Comparison
+# ----------
+# To see the effect of the optimization, we will compare the output of the optimized pipeline with the output of the
+# default pipeline.
+# As it is not the goal of this example to perform any form of actual evaluation of a model, we will just compare the
+# number of identified R-peaks to show, that the optimization had an impact on the output.
+#
+# For a fair comparison, we must use some train data to optimize the pipeline and then compare the outputs only on a
+# separate test set.
+from pathlib import Path
+
+from sklearn.model_selection import train_test_split
+
+try:
+    HERE = Path(__file__).parent
+except NameError:
+    HERE = Path(".").resolve()
+data_path = HERE.parent.parent / "example_data/ecg_mit_bih_arrhythmia/data"
+example_data = ECGExampleData(data_path)
+train_set, test_set = train_test_split(example_data, train_size=0.7, random_state=0)
+# We only want a single dataset in the test set
+test_set = test_set[0]
+(train_set.groups, test_set.groups)
+
+# %%
+# The Baseline
+# ------------
+# For our baseline, we will use the pipeline, but will not apply the optimization.
+# This means, the pipeline will use the default threshold.
+pipeline = MyPipeline()
+
+# We use the `safe_run` wrapper instead of just run. This is always a good idea.
+results = pipeline.safe_run(test_set)
+print("The default `min_r_peak_height_over_baseline` is", pipeline.algorithm.min_r_peak_height_over_baseline)
+print("Number of R-Peaks:", len(results.r_peak_positions_))
+
+
+# %%
+# Optimization
+# ------------
+# To optimize the pipeline, we will **not** call `self_optimize` directly, but use the
+# :class:`~tpcp.optimize.Optimize` wrapper.
+# It has the same interface as other optimization methods like :class:`~tpcp.optimize.GridSearch`.
+# Further, it makes some checks to catch potential implementation errors of our `self_optimize` method.
+#
+# Note, that the optimize method will perform all optimizations on a copy of the pipeline.
+# The means the pipeline object used as input will not be modified.
+from tpcp.optimize import Optimize
+
+# Remember we only optimize on the `train_set`.
+optimized_pipe = Optimize(pipeline).optimize(train_set)
+optimized_results = optimized_pipe.safe_run(test_set)
+print("The optimized `min_r_peak_height_over_baseline` is", optimized_results.algorithm.min_r_peak_height_over_baseline)
+print("Number of R-Peaks:", len(optimized_results.r_peak_positions_))
+
+# %%
+# We can see that training has drastically modified the threshold and increased the number of R-peaks we detected.
+# To figure our, if all the new R-peaks are actually correct, we would need to make a more extensive evaluation.
+#
+#
+# Final Notes
+# -----------
+# In this example we only modified a threshold of the algorithm.
+# However, the concept of optimization can be expanded to anything imaginable (e.g. templates, ML-models, NN-models).
+#
diff --git a/examples/parameter_optimization/_03_gridsearch_cv.py b/examples/parameter_optimization/_03_gridsearch_cv.py
new file mode 100644
index 00000000..abea8515
--- /dev/null
+++ b/examples/parameter_optimization/_03_gridsearch_cv.py
@@ -0,0 +1,184 @@
+r"""
+.. _gridsearch_cv:
+
+GridSearchCV
+============
+
+When trying to optimize parameters for algorithms that have trainable components, it is required to perform
+the parameter search on a validation set (that is separate from the test set used for the final validation).
+Even better, is to use a cross validation for this step.
+In tpcp this can be done by using :class:`~tpcp.optimize.GridSearchCV`.
+
+This example explains how to use this method.
+To learn more about the concept, review the :ref:`evaluation guide <algorithm_evaluation>` and the `sklearn guide on
+tuning hyperparameters <https://scikit-learn.org/stable/modules/grid_search.html#grid-search>`_.
+
+"""
+import random
+
+import pandas as pd
+
+random.seed(1)  # We set the random seed for repeatable results
+
+# %%
+# Dataset
+# -------
+# As always, we need a dataset, a pipeline, and a scoring method for a parameter search.
+# Here, we're just going to reuse the ECGExample dataset we created in :ref:`custom_dataset_ecg`.
+from pathlib import Path
+
+from examples.datasets.datasets_final_ecg import ECGExampleData
+
+try:
+    HERE = Path(__file__).parent
+except NameError:
+    HERE = Path(".").resolve()
+data_path = HERE.parent.parent / "example_data/ecg_mit_bih_arrhythmia/data"
+example_data = ECGExampleData(data_path)
+
+# %%
+# The Pipeline
+# ------------
+# When using `GridSearchCV` our pipeline must be "optimizable".
+# Otherwise, we have no need for the CV part and could just use a simple gridsearch.
+# Here we are going to create an optimizable pipeline that wraps the optimizable version of the QRS detector we
+# developed in :ref:`custom_algorithms_qrs_detection`.
+#
+# For more information about the pipeline below check :ref:`optimize_pipelines`.
+#    Todo: Full dedicated example for `PureParameter`
+from examples.algorithms.algorithms_qrs_detection_final import OptimizableQrsDetector
+from tpcp import OptimizableParameter, OptimizablePipeline, Parameter, cf
+
+
+class MyPipeline(OptimizablePipeline):
+    algorithm: Parameter[OptimizableQrsDetector]
+    algorithm__min_r_peak_height_over_baseline: OptimizableParameter[float]
+
+    r_peak_positions_: pd.Series
+
+    def __init__(self, algorithm: OptimizableQrsDetector = cf(OptimizableQrsDetector())):
+        self.algorithm = algorithm
+
+    def self_optimize(self, dataset: ECGExampleData, **kwargs):
+        ecg_data = [d.data["ecg"] for d in dataset]
+        r_peaks = [d.r_peak_positions_["r_peak_position"] for d in dataset]
+        # Note: We need to clone the algorithm instance, to make sure we don't leak any data between runs.
+        algo = self.algorithm.clone()
+        self.algorithm = algo.self_optimize(ecg_data, r_peaks, dataset.sampling_rate_hz)
+        return self
+
+    def run(self, datapoint: ECGExampleData):
+        # Note: We need to clone the algorithm instance, to make sure we don't leak any data between runs.
+        algo = self.algorithm.clone()
+        algo.detect(datapoint.data, datapoint.sampling_rate_hz)
+
+        self.r_peak_positions_ = algo.r_peak_positions_
+        return self
+
+
+pipe = MyPipeline()
+
+
+# %%
+# The Scorer
+# ----------
+# The scorer is identical to the scoring function used in the other examples.
+# The F1-score is still the most important parameter for our comparison.
+from examples.algorithms.algorithms_qrs_detection_final import match_events_with_reference
+
+
+def score(pipeline: MyPipeline, datapoint: ECGExampleData):
+    # We use the `safe_run` wrapper instead of just run. This is always a good idea.
+    # We don't need to clone the pipeline here, as GridSearch will already clone the pipeline internally and `run`
+    # will clone it again.
+    pipeline = pipeline.safe_run(datapoint)
+    tolerance_s = 0.02  # We just use 20 ms for this example
+    matches_events, _ = match_events_with_reference(
+        pipeline.r_peak_positions_.to_numpy(),
+        datapoint.r_peak_positions_.to_numpy(),
+        tolerance=tolerance_s * datapoint.sampling_rate_hz,
+    )
+    n_tp = len(matches_events)
+    precision = n_tp / len(pipeline.r_peak_positions_)
+    recall = n_tp / len(datapoint.r_peak_positions_)
+    f1_score = (2 * n_tp) / (len(pipeline.r_peak_positions_) + len(datapoint.r_peak_positions_))
+    return {"precision": precision, "recall": recall, "f1_score": f1_score}
+
+
+# %%
+# Data Splitting
+# --------------
+# Like with a normal cross validation, we need to decide on the number of folds and type of splits.
+# In `tpcp` we support all cross validation iterators provided in :ref:`sklearn
+# <https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators>`.
+#
+# To keep the runtime low for this example, we are going to use a 2-fold CV.
+from sklearn.model_selection import KFold
+
+cv = KFold(n_splits=2)
+
+# %%
+# The Parameters
+# --------------
+# The pipeline above exposes a couple of (nested) parameters.
+# `min_r_peak_height_over_baseline` is the parameter we want to optimize.
+# All other parameters are effectively hyper-parameters as they change the outcome of the optimization.
+# We could differentiate further and say that only `r_peak_match_tolerance_s` is a true hyper parameter, as it only
+# effects the outcome of the optimization, but the `run` method is independent from it.
+# `max_heart_rate_bpm` and `high_pass_filter_cutoff_hz` effect both the optimization and `run`.
+#
+# We could run the gridsearch over any combination of parameters.
+# However, to keep things simple, we will only test a couple of values for `high_pass_filter_cutoff_hz`.
+from sklearn.model_selection import ParameterGrid
+
+parameters = ParameterGrid({"algorithm__high_pass_filter_cutoff_hz": [0.25, 0.5, 1]})
+
+# %%
+# GridSearchCV
+# ------------
+# Setting up the GridSearchCV object is similar to the normal GridSearch, we just need to add the additional `cv`
+# parameter.
+# Then we can simply run the search using the `optimize` method.
+from tpcp.optimize import GridSearchCV
+
+gs = GridSearchCV(pipeline=MyPipeline(), parameter_grid=parameters, scoring=score, cv=cv, return_optimized="f1_score")
+gs = gs.optimize(example_data)
+
+# %%
+# Results
+# -------
+# The output is also comparable to the output of the GridSearch.
+# The main results are stored in the `cv_results_` parameter.
+# But instead of just a single performance value per parameter, we get one value per fold and the mean and std over
+# all folds.
+results = gs.cv_results_
+results_df = pd.DataFrame(results)
+
+results_df
+
+# %%
+# The mean score is the primary parameter used to select the best parameter combi (if `return_optimized` is True).
+# All other values performance values are just there to provide further inside.
+
+results_df[["mean_test_precision", "mean_test_recall", "mean_test_f1_score"]]
+
+# %%
+# For even more insight, you can inspect the scores per datapoint:
+
+results_df.filter(like="test_single")
+
+# %%
+# If `return_optimized` was set to True (or the name of a score), a final optimization is performed using the best
+# set of parameters and **all** the available data.
+# The resulting pipeline will be stored in `optimizable_pipeline_`.
+print("Best Para Combi:", gs.best_params_)
+print("Paras of optimized Pipeline:", gs.optimized_pipeline_.get_params())
+
+# %%
+# To run the optimized pipeline, we can directly use the `run`/`safe_run` method on the GridSearch object.
+# This makes it possible to use the `GridSearch` as a replacement for your pipeline object with minimal code changes.
+#
+# If you tried to call `run`/`safe_run` (or `score` for that matter), before the optimization, an error is
+# raised.
+r_peaks = gs.safe_run(example_data[0]).r_peak_positions_
+r_peaks
diff --git a/examples/parameter_optimization/__init__.py b/examples/parameter_optimization/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/examples/validation/README.rst b/examples/validation/README.rst
new file mode 100644
index 00000000..5865faa7
--- /dev/null
+++ b/examples/validation/README.rst
@@ -0,0 +1,4 @@
+.. _Validation:
+
+Validation
+----------
diff --git a/examples/validation/_01_cross_validation.py b/examples/validation/_01_cross_validation.py
new file mode 100644
index 00000000..44692f45
--- /dev/null
+++ b/examples/validation/_01_cross_validation.py
@@ -0,0 +1,202 @@
+r"""
+.. _cross_validation:
+
+Cross Validation
+================
+
+Whenever using some sort of trainable algorithm it is important to clearly separate the training and the testing data to
+get an unbiased result.
+Usually this is achieved by a train-test split.
+However, if you don't have that much data, there is always a risk that one random train-test split, will provide
+better (or worse) results than another.
+In these cases it is a good idea to use cross-validation.
+In this procedure, you perform multiple train-test splits and average the results over all "folds".
+For more information see our :ref:`evaluation guide <algorithm_evaluation>` and the `sklearn guide on cross
+validation <https://scikit-learn.org/stable/modules/cross_validation.html>`_.
+
+In this example, we will learn how to use the :func:`~tpcp.optimize.cross_validate` function implemented in
+tcpc.
+For this, we will redo the example on :ref:`optimizable pipelines <optimize_pipelines>` but we will perform the final
+evaluation via cross-validation.
+If you want to have more information on how the dataset and pipeline is built, head over to this example.
+Here we will just copy the code over.
+"""
+# %%
+# Dataset
+from pathlib import Path
+
+from examples.datasets.datasets_final_ecg import ECGExampleData
+
+try:
+    HERE = Path(__file__).parent
+except NameError:
+    HERE = Path(".").resolve()
+data_path = HERE.parent.parent / "example_data/ecg_mit_bih_arrhythmia/data"
+example_data = ECGExampleData(data_path)
+
+# %%
+# Pipeline
+import pandas as pd
+
+from examples.algorithms.algorithms_qrs_detection_final import OptimizableQrsDetector
+from tpcp import OptimizableParameter, OptimizablePipeline, Parameter, cf
+
+
+class MyPipeline(OptimizablePipeline):
+    algorithm: Parameter[OptimizableQrsDetector]
+    algorithm__min_r_peak_height_over_baseline: OptimizableParameter[float]
+
+    r_peak_positions_: pd.Series
+
+    def __init__(self, algorithm: OptimizableQrsDetector = cf(OptimizableQrsDetector())):
+        self.algorithm = algorithm
+
+    def self_optimize(self, dataset: ECGExampleData, **kwargs):
+        ecg_data = [d.data["ecg"] for d in dataset]
+        r_peaks = [d.r_peak_positions_["r_peak_position"] for d in dataset]
+        # Note: We need to clone the algorithm instance, to make sure we don't leak any data between runs.
+        algo = self.algorithm.clone()
+        self.algorithm = algo.self_optimize(ecg_data, r_peaks, dataset.sampling_rate_hz)
+        return self
+
+    def run(self, datapoint: ECGExampleData):
+        # Note: We need to clone the algorithm instance, to make sure we don't leak any data between runs.
+        algo = self.algorithm.clone()
+        algo.detect(datapoint.data, datapoint.sampling_rate_hz)
+
+        self.r_peak_positions_ = algo.r_peak_positions_
+        return self
+
+
+# %%
+# The Scorer
+# ----------
+# The scorer is identical to the scoring function used in the other examples.
+# The F1-score is still the most important parameter for our comparison.
+from examples.algorithms.algorithms_qrs_detection_final import match_events_with_reference
+
+
+def score(pipeline: MyPipeline, datapoint: ECGExampleData):
+    # We use the `safe_run` wrapper instead of just run. This is always a good idea.
+    # We don't need to clone the pipeline here, as GridSearch will already clone the pipeline internally and `run`
+    # will clone it again.
+    pipeline = pipeline.safe_run(datapoint)
+    tolerance_s = 0.02  # We just use 20 ms for this example
+    matches_events, _ = match_events_with_reference(
+        pipeline.r_peak_positions_.to_numpy(),
+        datapoint.r_peak_positions_.to_numpy(),
+        tolerance=tolerance_s * datapoint.sampling_rate_hz,
+    )
+    n_tp = len(matches_events)
+    precision = n_tp / len(pipeline.r_peak_positions_)
+    recall = n_tp / len(datapoint.r_peak_positions_)
+    f1_score = (2 * n_tp) / (len(pipeline.r_peak_positions_) + len(datapoint.r_peak_positions_))
+    return {"precision": precision, "recall": recall, "f1_score": f1_score}
+
+
+# %%
+# Data Splitting
+# --------------
+# Before performing a cross validation, we need to decide on the number of folds and type of splits.
+# In `tpcp` we support all cross validation iterators provided in :ref:`sklearn
+# <https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators>`.
+#
+# To keep the runtime low for this example, we are going to use a 3-fold CV.
+from sklearn.model_selection import KFold
+
+cv = KFold(n_splits=3)
+
+# %%
+# Cross Validation
+# ----------------
+# Now we have all the pieces for the final cross validation.
+# First we need to create instances of our data and pipeline.
+# Then we need to wrap our pipeline instance into an :class:`~tpcp.optimize.Optimize` wrapper.
+# Finally, we can call `tpcp.validate.cross_validate`.
+from tpcp.optimize import Optimize
+from tpcp.validate import cross_validate
+
+pipe = MyPipeline()
+optimizable_pipe = Optimize(pipe)
+
+results = cross_validate(
+    optimizable_pipe, example_data, scoring=score, cv=cv, return_optimizer=True, return_train_score=True
+)
+result_df = pd.DataFrame(results)
+result_df
+
+# %%
+# Understanding the Results
+# -------------------------
+# The cross validation provides a lot of outputs (some of them can be disabled using the function parameters).
+# To simplify things a little, we will split the output into four parts:
+#
+# The main output are the test set performance values.
+# Each row corresponds to performance in respective fold.
+performance = result_df[["test_precision", "test_recall", "test_f1_score"]]
+performance
+
+# %%
+# The final generalization performance you would report is usually the average over all folds.
+# The STD can also be interesting, as it tells you how stable your optimization is and if your splits provide
+# comparable data distributions.
+generalization_performance = performance.agg(["mean", "std"])
+generalization_performance
+
+# %%
+# If you need more insight into the results (e.g. when the std of your results is high), you can inspect the
+# individual score for each data point.
+# In this example this is only a list with a single element per score, as we only had a single datapoint per fold.
+# In a real scenario, this will be a list of all datapoints.
+# Inspecting this list can help to identify potential issues with certain parts of your dataset.
+# To link the performance values to a specific datapoint, you can look at the `test_data_labels` field.
+single_performance = result_df[
+    ["test_single_precision", "test_single_recall", "test_single_f1_score", "test_data_labels"]
+]
+single_performance
+
+# %%
+# Even further insight is provided by the train results (if activated in parameters).
+# These are the performance results on the train set and can indicate if the training provided meaningful results and
+# can also indicate over-fitting, if the performance of the test set is much worse than the performance on the train
+# set.
+train_performance = result_df[
+    [
+        "train_precision",
+        "train_recall",
+        "train_f1_score",
+        "train_single_precision",
+        "train_single_recall",
+        "train_single_f1_score",
+        "train_data_labels",
+    ]
+]
+train_performance
+
+# %%
+# The final level of debug information is provided via the timings (note the long runtime in fold 0 can be explained
+# by the jit-compiler used in `BarthDtw`) ...
+timings = result_df[["score_time", "optimize_time"]]
+timings
+
+# %%
+# ... and the optimized pipeline object.
+# This is the actual trained object generated in this fold.
+# You can apply it to other data for testing or inspect the actual object for further debug information that might be
+# stored on it.
+optimized_pipeline = result_df["optimizer"][0]
+optimized_pipeline
+
+#%%
+optimized_pipeline.optimized_pipeline_.get_params()
+
+# %%
+# Further Notes
+# -------------
+# We also support grouped cross validation.
+# Check the :ref:`dataset guide <custom_dataset_basics>` on how you can group the data before cross-validation or
+# generate data labels to be used with `GroupedKFold`.
+#
+# `Optimize` is just an example of an optimizer that can be passed to cross validation.
+# You can pass any `tpcp` optimizer like `GridSearch` or `GridSearchCV` or custom optimizer that implement the
+# `tpcp.optimize.BaseOptimize` interface.
diff --git a/examples/validation/__init__.py b/examples/validation/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/pyproject.toml b/pyproject.toml
index bf5f5ea1..4037def7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -24,7 +24,7 @@ typing-extensions = ">=3.7"
 [tool.poetry.dev-dependencies]
 pytest = "^6.2.1"
 pytest-cov = "^2.8.1"
-prospector = "^1.2.0"
+prospector = "^1.7.6"
 black = "^20.8b1"
 isort = "^5.9.3"
 poethepoet = "^0.10.0"


Test patch:
diff --git a/tests/test_examples/test_all_examples.py b/tests/test_examples/test_all_examples.py
index 4e55a599..061a6aa5 100644
--- a/tests/test_examples/test_all_examples.py
+++ b/tests/test_examples/test_all_examples.py
@@ -1,4 +1,60 @@
+# This is needed to avoid plots to open
+import matplotlib
+from numpy.testing import assert_almost_equal, assert_array_equal
+
+matplotlib.use("Agg")
+
+
 def test_custom_dataset():
     # There is not really anything specific, we want to test here, so we just run everything and check that there are
     # no errors.
-    import examples.custom_dataset  # noqa
+    import examples.datasets._01_datasets_basics  # noqa
+
+
+def test_real_life_dataset():
+    from examples.datasets._02_datasets_real_world_example import ECGExampleData, data_path
+
+    dataset = ECGExampleData(data_path=data_path)
+    assert dataset.index.shape == (12, 2)
+
+    # Just test that accessing them does not produce any errors
+    subset = dataset[0]
+    subset.data
+    subset.sampling_rate_hz
+    subset.labeled_r_peaks_
+    subset.pvc_positions_
+    subset.r_peak_positions_
+
+
+def test_qrs_algorithm():
+    from examples.algorithms._01_algorithms_qrs_detection import algorithm
+
+    assert algorithm.min_r_peak_height_over_baseline == 1.1229521656012118
+    assert_array_equal(algorithm.r_peak_positions_[:3], [197, 459, 708])
+
+
+def test_gridsearch():
+    from examples.parameter_optimization._01_gridsearch import r_peaks, results
+
+    assert_array_equal(r_peaks[:3], [77, 370, 663])
+    assert_almost_equal(results["f1_score"], [0.58380606, 0.57964556, 0.5699779])
+
+
+def test_optimizable_pipeline():
+    from examples.parameter_optimization._02_optimizable_pipelines import optimized_results, results
+
+    assert len(results.r_peak_positions_) == 30
+    assert len(optimized_results.r_peak_positions_) == 429
+
+
+def test_gridsearchcv():
+    from examples.parameter_optimization._03_gridsearch_cv import r_peaks, results
+
+    assert_array_equal(r_peaks[:3], [77, 370, 663])
+    assert_almost_equal(results["mean_test_f1_score"], [0.7241103, 0.723562, 0.7273862])
+
+
+def test_cross_validate():
+    from examples.validation._01_cross_validation import results
+
+    assert_almost_equal(results["test_f1_score"], [0.5440936, 0.7202062, 0.9266753])