epyt-flow 0.8.0__tar.gz → 0.9.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/PKG-INFO +1 -1
  2. epyt_flow-0.9.0/epyt_flow/VERSION +1 -0
  3. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/__init__.py +1 -0
  4. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/batadal.py +1 -1
  5. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/battledim.py +4 -3
  6. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/gecco_water_quality.py +4 -4
  7. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/leakdb.py +9 -9
  8. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/water_usage.py +2 -2
  9. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/networks.py +15 -27
  10. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/gym/control_gyms.py +2 -2
  11. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/gym/scenario_control_env.py +1 -1
  12. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/metrics.py +28 -28
  13. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/models/sensor_interpolation_detector.py +3 -3
  14. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/base_handler.py +4 -4
  15. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scada_data/data_handlers.py +11 -11
  16. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scada_data/export_handlers.py +2 -2
  17. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scada_data/handlers.py +9 -9
  18. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scenario/event_handlers.py +6 -6
  19. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scenario/handlers.py +15 -15
  20. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scenario/simulation_handlers.py +7 -7
  21. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scenario/uncertainty_handlers.py +6 -6
  22. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/serialization.py +4 -2
  23. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/actuator_events.py +1 -1
  24. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/leakages.py +1 -1
  25. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/quality_events.py +16 -5
  26. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/sensor_reading_attack.py +1 -1
  27. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/sensor_reading_event.py +3 -3
  28. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/system_event.py +1 -1
  29. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/scada/advanced_control.py +2 -2
  30. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/scada/scada_data.py +117 -131
  31. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/scada/scada_data_export.py +1 -1
  32. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/scenario_simulator.py +120 -26
  33. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/scenario_visualizer.py +9 -9
  34. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/sensor_config.py +22 -28
  35. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/topology.py +2 -2
  36. epyt_flow-0.9.0/epyt_flow/uncertainty/model_uncertainty.py +792 -0
  37. epyt_flow-0.9.0/epyt_flow/uncertainty/sensor_noise.py +148 -0
  38. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/uncertainty/uncertainties.py +4 -4
  39. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/uncertainty/utils.py +7 -7
  40. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/utils.py +9 -8
  41. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow.egg-info/PKG-INFO +1 -1
  42. epyt_flow-0.8.0/epyt_flow/VERSION +0 -1
  43. epyt_flow-0.8.0/epyt_flow/uncertainty/model_uncertainty.py +0 -315
  44. epyt_flow-0.8.0/epyt_flow/uncertainty/sensor_noise.py +0 -73
  45. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/CITATION.cff +0 -0
  46. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/CODE_OF_CONDUCT.md +0 -0
  47. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/LICENSE +0 -0
  48. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/MANIFEST.in +0 -0
  49. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/README.md +0 -0
  50. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/REQUIREMENTS.txt +0 -0
  51. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/AUTHORS +0 -0
  52. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/LICENSE +0 -0
  53. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/Readme_SRC_Engines.txt +0 -0
  54. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/enumstxt.h +0 -0
  55. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/epanet.c +0 -0
  56. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/epanet2.c +0 -0
  57. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/epanet2.def +0 -0
  58. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/errors.dat +0 -0
  59. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/funcs.h +0 -0
  60. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/genmmd.c +0 -0
  61. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/hash.c +0 -0
  62. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/hash.h +0 -0
  63. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/hydcoeffs.c +0 -0
  64. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/hydraul.c +0 -0
  65. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/hydsolver.c +0 -0
  66. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/hydstatus.c +0 -0
  67. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2.h +0 -0
  68. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2_2.h +0 -0
  69. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/include/epanet2_enums.h +0 -0
  70. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/inpfile.c +0 -0
  71. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/input1.c +0 -0
  72. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/input2.c +0 -0
  73. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/input3.c +0 -0
  74. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/main.c +0 -0
  75. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/mempool.c +0 -0
  76. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/mempool.h +0 -0
  77. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/output.c +0 -0
  78. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/project.c +0 -0
  79. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/quality.c +0 -0
  80. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/qualreact.c +0 -0
  81. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/qualroute.c +0 -0
  82. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/report.c +0 -0
  83. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/rules.c +0 -0
  84. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/smatrix.c +0 -0
  85. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/text.h +0 -0
  86. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET/SRC_engines/types.h +0 -0
  87. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/MSX_Updates.txt +0 -0
  88. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/dispersion.h +0 -0
  89. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/hash.c +0 -0
  90. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/hash.h +0 -0
  91. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/include/epanetmsx.h +0 -0
  92. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/include/epanetmsx_export.h +0 -0
  93. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/mathexpr.c +0 -0
  94. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/mathexpr.h +0 -0
  95. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/mempool.c +0 -0
  96. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/mempool.h +0 -0
  97. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxchem.c +0 -0
  98. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxcompiler.c +0 -0
  99. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxdict.h +0 -0
  100. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxdispersion.c +0 -0
  101. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxerr.c +0 -0
  102. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxfile.c +0 -0
  103. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxfuncs.c +0 -0
  104. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxfuncs.h +0 -0
  105. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxinp.c +0 -0
  106. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxout.c +0 -0
  107. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxproj.c +0 -0
  108. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxqual.c +0 -0
  109. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxrpt.c +0 -0
  110. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxtank.c +0 -0
  111. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxtoolkit.c +0 -0
  112. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxtypes.h +0 -0
  113. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxutils.c +0 -0
  114. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/msxutils.h +0 -0
  115. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/newton.c +0 -0
  116. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/newton.h +0 -0
  117. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/rk5.c +0 -0
  118. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/rk5.h +0 -0
  119. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/ros2.c +0 -0
  120. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/ros2.h +0 -0
  121. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/smatrix.c +0 -0
  122. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/Src/smatrix.h +0 -0
  123. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/EPANET-MSX/readme.txt +0 -0
  124. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/compile_linux.sh +0 -0
  125. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/EPANET/compile_macos.sh +0 -0
  126. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/__init__.py +0 -0
  127. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/__init__.py +0 -0
  128. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/batadal_data.py +0 -0
  129. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/battledim_data.py +0 -0
  130. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/data/benchmarks/leakdb_data.py +0 -0
  131. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/gym/__init__.py +0 -0
  132. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/models/__init__.py +0 -0
  133. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/models/event_detector.py +0 -0
  134. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/__init__.py +0 -0
  135. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/res_manager.py +0 -0
  136. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scada_data/__init__.py +0 -0
  137. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/scenario/__init__.py +0 -0
  138. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/rest_api/server.py +0 -0
  139. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/__init__.py +0 -0
  140. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/__init__.py +0 -0
  141. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/event.py +0 -0
  142. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/events/sensor_faults.py +0 -0
  143. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/parallel_simulation.py +1 -1
  144. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/scada/__init__.py +0 -0
  145. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/simulation/scenario_config.py +1 -1
  146. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow/uncertainty/__init__.py +0 -0
  147. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow.egg-info/SOURCES.txt +0 -0
  148. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow.egg-info/dependency_links.txt +0 -0
  149. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow.egg-info/requires.txt +0 -0
  150. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/epyt_flow.egg-info/top_level.txt +0 -0
  151. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/pyproject.toml +0 -0
  152. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/setup.cfg +0 -0
  153. {epyt_flow-0.8.0 → epyt_flow-0.9.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: epyt-flow
3
- Version: 0.8.0
3
+ Version: 0.9.0
4
4
  Summary: EPyT-Flow -- EPANET Python Toolkit - Flow
5
5
  Author-email: André Artelt <aartelt@techfak.uni-bielefeld.de>, "Marios S. Kyriakou" <kiriakou.marios@ucy.ac.cy>, "Stelios G. Vrachimis" <vrachimis.stelios@ucy.ac.cy>
6
6
  License: MIT License
@@ -0,0 +1 @@
1
+ 0.9.0
@@ -6,6 +6,7 @@ import os
6
6
 
7
7
  with open(os.path.join(os.path.dirname(__file__), 'VERSION'), encoding="utf-8") as f:
8
8
  VERSION = f.read().strip()
9
+ __version__ = VERSION
9
10
 
10
11
 
11
12
  def compile_libraries_unix(lib_epanet_name: str, compile_script_name: str,
@@ -91,7 +91,7 @@ def load_data(download_dir: str = None, return_X_y: bool = False,
91
91
  `dict`
92
92
  Dictionary of the loaded benchmark data. The dictionary contains the two training
93
93
  data sets ("train_1" and "train_2"), as well as the test data set ("test").
94
- If `return_X_y` is False, each dictionary entry is a Pandas dataframe.
94
+ If `return_X_y` is False, each dictionary entry is a `Pandas dataframe <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html>`_.
95
95
  Otherwise, it is a tuple of sensor readings and labels (except for the test set) --
96
96
  if `return_ground_truth` is True or `return_features_desc` is True, the corresponding
97
97
  data is appended to the tuple.
@@ -286,7 +286,7 @@ def load_data(return_test_scenario: bool, download_dir: str = None, return_X_y:
286
286
 
287
287
  Returns
288
288
  -------
289
- Either a `pandas.DataFrame` instance or a tuple of Numpy arrays.
289
+ Either a `pandas.DataFrame <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html>`_ instance or a tuple of `Numpy arrays <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_.
290
290
  Benchmark data set.
291
291
  """
292
292
  # Download data files if necessary
@@ -389,8 +389,9 @@ def load_scada_data(return_test_scenario: bool, download_dir: str = None,
389
389
  :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `list[tuple[numpy.ndarray, numpy.ndarray]]`
390
390
  The simulated benchmark scenario as either a
391
391
  :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` instance or as a tuple of
392
- (X, y) Numpy arrays. If 'return_leak_locations' is True, the leak locations are included
393
- as an instance of `scipy.sparse.bsr_array` as well.
392
+ (X, y) `Numpy arrays <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_.
393
+ If 'return_leak_locations' is True, the leak locations are included
394
+ as an instance of `scipy.sparse.bsr_array <https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.bsr_array.html>`_ as well.
394
395
  """
395
396
  download_dir = download_dir if download_dir is not None else get_temp_folder()
396
397
 
@@ -31,9 +31,9 @@ def compute_evaluation_score(y_pred: np.ndarray, y: np.ndarray) -> float:
31
31
 
32
32
  Parameters
33
33
  ----------
34
- y_pred : `numpy.ndarray`
34
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
35
35
  Event indication prediction over time
36
- y : `numpy.ndarray`
36
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
37
37
  Ground truth event indication over time.
38
38
 
39
39
  Returns
@@ -85,7 +85,7 @@ def load_gecco2017_water_quality_data(download_dir: str = None, return_X_y: bool
85
85
 
86
86
  Returns
87
87
  -------
88
- `pandas.DataFrame` or `tuple[numpy.ndarray, numpy.ndarray]`
88
+ `pandas.DataFrame <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html>`_ or `tuple[numpy.ndarray, numpy.ndarray] <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
89
89
  The benchmark data set as either a Pandas data frame or as a pair of (X, y) Numpy arrays.
90
90
  """
91
91
  url_data = "https://zenodo.org/records/3884465/files/1_gecco2017_water_quality.csv?download=1"
@@ -154,7 +154,7 @@ def load_gecco2018_water_quality_data(download_dir: str = None, return_X_y: bool
154
154
 
155
155
  Returns
156
156
  -------
157
- `pandas.DataFrame` or `tuple[numpy.ndarray, numpy.ndarray]`
157
+ `pandas.DataFrame <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html>`_ or `tuple[numpy.ndarray, numpy.ndarray] <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
158
158
  The benchmark data set as either a Pandas data frame or as a pair of (X, y) Numpy arrays.
159
159
  """
160
160
  # Download data if necessary
@@ -97,7 +97,7 @@ def compute_evaluation_score(scenarios_id: list[int], use_net1: bool,
97
97
  List of scenarios ID that are to be evaluated -- there is a total number of 1000 scenarios.
98
98
  use_net1 : `bool`
99
99
  If True, Net1 LeakDB will be used for evaluation, otherwise the Hanoi LeakDB will be used.
100
- y_pred_labels_per_scenario : `list[numpy.ndarray]`
100
+ y_pred_labels_per_scenario : `list[numpy.ndarray] <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
101
101
  Predicted binary labels (over time) for each scenario in `scenarios_id`.
102
102
 
103
103
  Returns
@@ -201,7 +201,7 @@ def load_data(scenarios_id: list[int], use_net1: bool, download_dir: str = None,
201
201
  The default is False.
202
202
  return_leak_locations : `bool`
203
203
  If True and if `return_X_y` is True, the leak locations are returned as well --
204
- as an instance of `scipy.sparse.bsr_array`.
204
+ as an instance of `scipy.sparse.bsr_array <https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.bsr_array.html>`_.
205
205
 
206
206
  The default is False.
207
207
  verbose : `bool`, optional
@@ -327,7 +327,7 @@ def load_scada_data(scenarios_id: list[int], use_net1: bool = True, download_dir
327
327
  The default is False.
328
328
  return_leak_locations : `bool`
329
329
  If True, the leak locations are returned as well --
330
- as an instance of `scipy.sparse.bsr_array`.
330
+ as an instance of `scipy.sparse.bsr_array <https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.bsr_array.html>`_.
331
331
 
332
332
  The default is False.
333
333
  verbose : `bool`, optional
@@ -341,7 +341,7 @@ def load_scada_data(scenarios_id: list[int], use_net1: bool = True, download_dir
341
341
  The simulated benchmark scenarios as either a list of
342
342
  :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` instances or as a list of
343
343
  (X, y) Numpy arrays. If 'return_leak_locations' is True, the leak locations are included
344
- as an instance of `scipy.sparse.bsr_array` as well.
344
+ as an instance of `scipy.sparse.bsr_array <https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.bsr_array.html>`_ as well.
345
345
  """
346
346
  download_dir = download_dir if download_dir is not None else get_temp_folder()
347
347
 
@@ -491,9 +491,9 @@ def load_scenarios(scenarios_id: list[int], use_net1: bool = True,
491
491
 
492
492
  return dem_final
493
493
 
494
- week_pattern_url = "https://github.com/KIOS-Research/LeakDB/raw/master/CCWI-WDSA2018/" +\
494
+ week_pattern_url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/CCWI-WDSA2018/" +\
495
495
  "Dataset_Generator_Py3/weekPat_30min.mat"
496
- year_offset_url = "https://github.com/KIOS-Research/LeakDB/raw/master/CCWI-WDSA2018/" +\
496
+ year_offset_url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/CCWI-WDSA2018/" +\
497
497
  "Dataset_Generator_Py3/yearOffset_30min.mat"
498
498
 
499
499
  download_if_necessary(os.path.join(download_dir, "weekPat_30min.mat"),
@@ -544,9 +544,9 @@ def load_scenarios(scenarios_id: list[int], use_net1: bool = True,
544
544
  upper = data + z
545
545
  return lower + np.random.uniform() * (upper - lower)
546
546
 
547
- my_uncertainties = {"pipe_length_uncertainty": MyUniformUncertainty(low=0, high=0.25),
548
- "pipe_roughness_uncertainty": MyUniformUncertainty(low=0, high=0.25),
549
- "base_demand_uncertainty": MyUniformUncertainty(low=0, high=0.25)}
547
+ my_uncertainties = {"global_pipe_length_uncertainty": MyUniformUncertainty(low=0, high=0.25),
548
+ "global_pipe_roughness_uncertainty": MyUniformUncertainty(low=0, high=0.25),
549
+ "global_base_demand_uncertainty": MyUniformUncertainty(low=0, high=0.25)}
550
550
  model_uncertainty = ModelUncertainty(**my_uncertainties)
551
551
 
552
552
  # Create sensor config (place pressure and flow sensors everywhere)
@@ -22,9 +22,9 @@ def compute_evaluation_score(y_pred: np.ndarray, y: np.ndarray) -> dict:
22
22
 
23
23
  Parameters
24
24
  ----------
25
- y_pred : `numpy.ndarray`
25
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
26
26
  Event indication prediction over time
27
- y : `numpy.ndarray`
27
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
28
28
  Ground truth event indication over time.
29
29
 
30
30
  Returns
@@ -102,7 +102,7 @@ def load_inp(f_in: str, include_empty_sensor_config: bool = True,
102
102
  Scenario configuration for the .inp file.
103
103
  """
104
104
  if not os.path.isfile(f_in):
105
- raise ValueError("Can not find 'f_in'")
105
+ raise ValueError(f"Can not find {f_in}")
106
106
 
107
107
  if include_empty_sensor_config is True:
108
108
  return ScenarioConfig(f_inp_in=f_in, sensor_config=create_empty_sensor_config(f_inp=f_in),
@@ -153,8 +153,7 @@ def load_net1(download_dir: str = get_temp_folder(), verbose: bool = True,
153
153
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
154
154
  """
155
155
  f_in = os.path.join(download_dir, "Net1.inp")
156
- url = "https://raw.githubusercontent.com/OpenWaterAnalytics/EPyT/main/epyt/networks/" + \
157
- "asce-tf-wdst/Net1.inp"
156
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/Net1.inp"
158
157
 
159
158
  download_if_necessary(f_in, url, verbose)
160
159
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -201,8 +200,7 @@ def load_net2(download_dir: str = get_temp_folder(), verbose: bool = True,
201
200
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
202
201
  """
203
202
  f_in = os.path.join(download_dir, "Net2.inp")
204
- url = "https://raw.githubusercontent.com/OpenWaterAnalytics/EPyT/main/epyt/networks/" + \
205
- "asce-tf-wdst/Net2.inp"
203
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/Net2.inp"
206
204
 
207
205
  download_if_necessary(f_in, url, verbose)
208
206
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -249,8 +247,7 @@ def load_net3(download_dir: str = get_temp_folder(), verbose: bool = True,
249
247
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
250
248
  """
251
249
  f_in = os.path.join(download_dir, "Net3.inp")
252
- url = "https://raw.githubusercontent.com/OpenWaterAnalytics/EPyT/main/epyt/networks/" + \
253
- "asce-tf-wdst/Net3.inp"
250
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/Net3.inp"
254
251
 
255
252
  download_if_necessary(f_in, url, verbose)
256
253
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -297,7 +294,7 @@ def load_net6(download_dir: str = get_temp_folder(), verbose: bool = True,
297
294
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
298
295
  """
299
296
  f_in = os.path.join(download_dir, "Net6.inp")
300
- url = "https://github.com/OpenWaterAnalytics/WNTR/raw/main/examples/networks/Net6.inp"
297
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/Net6.inp"
301
298
 
302
299
  download_if_necessary(f_in, url, verbose)
303
300
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -344,8 +341,7 @@ def load_richmond(download_dir: str = get_temp_folder(), verbose: bool = True,
344
341
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
345
342
  """
346
343
  f_in = os.path.join(download_dir, "Richmond_standard.inp")
347
- url = "https://raw.githubusercontent.com/OpenWaterAnalytics/EPyT/main/epyt/networks/" + \
348
- "exeter-benchmarks/Richmond_standard.inp"
344
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/Richmond_standard.inp"
349
345
 
350
346
  download_if_necessary(f_in, url, verbose)
351
347
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -392,8 +388,7 @@ def load_micropolis(download_dir: str = get_temp_folder(), verbose: bool = True,
392
388
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
393
389
  """
394
390
  f_in = os.path.join(download_dir, "MICROPOLIS_v1.inp")
395
- url = "https://github.com/OpenWaterAnalytics/EPyT/raw/main/epyt/networks/asce-tf-wdst/" + \
396
- "MICROPOLIS_v1.inp"
391
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/MICROPOLIS_v1.inp"
397
392
 
398
393
  download_if_necessary(f_in, url, verbose)
399
394
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -440,8 +435,7 @@ def load_balerma(download_dir: str = get_temp_folder(), verbose: bool = True,
440
435
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
441
436
  """
442
437
  f_in = os.path.join(download_dir, "Balerma.inp")
443
- url = "https://github.com/OpenWaterAnalytics/EPyT/raw/main/epyt/networks/" + \
444
- "asce-tf-wdst/Balerma.inp"
438
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/Balerma.inp"
445
439
 
446
440
  download_if_necessary(f_in, url, verbose)
447
441
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -488,8 +482,7 @@ def load_rural(download_dir: str = get_temp_folder(), verbose: bool = True,
488
482
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
489
483
  """
490
484
  f_in = os.path.join(download_dir, "RuralNetwork.inp")
491
- url = "https://github.com/OpenWaterAnalytics/EPyT/raw/main/epyt/networks/" + \
492
- "asce-tf-wdst/RuralNetwork.inp"
485
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/RuralNetwork.inp"
493
486
 
494
487
  download_if_necessary(f_in, url, verbose)
495
488
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -536,8 +529,7 @@ def load_bwsn1(download_dir: str = get_temp_folder(), verbose: bool = True,
536
529
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
537
530
  """
538
531
  f_in = os.path.join(download_dir, "BWSN_Network_1.inp")
539
- url = "https://github.com/OpenWaterAnalytics/EPyT/raw/main/epyt/networks/" + \
540
- "asce-tf-wdst/BWSN_Network_1.inp"
532
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/BWSN_Network_1.inp"
541
533
 
542
534
  download_if_necessary(f_in, url, verbose)
543
535
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -584,8 +576,7 @@ def load_bwsn2(download_dir: str = get_temp_folder(), verbose: bool = True,
584
576
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
585
577
  """
586
578
  f_in = os.path.join(download_dir, "BWSN_Network_2.inp")
587
- url = "https://github.com/OpenWaterAnalytics/EPyT/raw/main/epyt/networks/" + \
588
- "asce-tf-wdst/BWSN_Network_2.inp"
579
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/BWSN_Network_2.inp"
589
580
 
590
581
  download_if_necessary(f_in, url, verbose)
591
582
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -632,8 +623,7 @@ def load_anytown(download_dir: str = get_temp_folder(), verbose: bool = True,
632
623
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
633
624
  """
634
625
  f_in = os.path.join(download_dir, "Anytown.inp")
635
- url = "https://raw.githubusercontent.com/OpenWaterAnalytics/EPyT/main/epyt/networks/" + \
636
- "asce-tf-wdst/Anytown.inp"
626
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/Anytown.inp"
637
627
 
638
628
  download_if_necessary(f_in, url, verbose)
639
629
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -727,7 +717,7 @@ def load_ctown(download_dir: str = get_temp_folder(), verbose: bool = True,
727
717
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
728
718
  """
729
719
  f_in = os.path.join(download_dir, "CTOWN.INP")
730
- url = "https://github.com/scy-phy/www.batadal.net/raw/master/data/CTOWN.INP"
720
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/CTOWN.INP"
731
721
 
732
722
  download_if_necessary(f_in, url, verbose)
733
723
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -783,8 +773,7 @@ def load_kentucky(wdn_id: int = 1, download_dir: str = get_temp_folder(),
783
773
  raise ValueError(f"Unknown network 'ky{wdn_id}.inp'")
784
774
 
785
775
  f_in = os.path.join(download_dir, f"ky{wdn_id}.inp")
786
- url = "https://raw.githubusercontent.com/OpenWaterAnalytics/EPyT/main/epyt/networks/" + \
787
- f"asce-tf-wdst/ky{wdn_id}.inp"
776
+ url = f"https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/ky{wdn_id}.inp"
788
777
 
789
778
  download_if_necessary(f_in, url, verbose)
790
779
  return load_inp(f_in, flow_units_id=flow_units_id)
@@ -836,8 +825,7 @@ def load_hanoi(download_dir: str = get_temp_folder(),
836
825
  :class:`~epyt_flow.simulation.scenario_simulator.ScenarioSimulator`.
837
826
  """
838
827
  f_in = os.path.join(download_dir, "Hanoi.inp")
839
- url = "https://raw.githubusercontent.com/OpenWaterAnalytics/EPyT/main/epyt/networks/" + \
840
- "asce-tf-wdst/Hanoi.inp"
828
+ url = "https://filedn.com/lumBFq2P9S74PNoLPWtzxG4/EPyT-Flow/Networks/Hanoi.inp"
841
829
 
842
830
  download_if_necessary(f_in, url, verbose)
843
831
  config = load_inp(f_in, flow_units_id=flow_units_id)
@@ -15,7 +15,7 @@ def register(env_name: str, env: ScenarioControlEnv) -> None:
15
15
  ----------
16
16
  env_name : `str`
17
17
  Name of the environment -- must be unique among all environments.
18
- env : :class:`epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
18
+ env : :class:`~epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
19
19
  Environment.
20
20
  """
21
21
  if env_name in environments:
@@ -38,7 +38,7 @@ def make(env_name: str, **kwds) -> ScenarioControlEnv:
38
38
 
39
39
  Returns
40
40
  -------
41
- :class:`epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
41
+ :class:`~epyt_flow.gym.scenario_control_env.ScenarioControlEnv`
42
42
  Environment.
43
43
  """
44
44
  if env_name not in environments:
@@ -194,7 +194,7 @@ class ScenarioControlEnv(ABC):
194
194
  if pattern_idx == 0:
195
195
  warnings.warn(f"No pattern for pump '{pump_id}' found -- a new pattern is created")
196
196
  pattern_idx = self._scenario_sim.epanet_api.addPattern(f"pump_speed_{pump_id}")
197
- self._scenario_sim.epanet_api.setLinkPumpPatternIndex(pattern_idx)
197
+ self._scenario_sim.epanet_api.setLinkPumpPatternIndex(pump_idx, pattern_idx)
198
198
 
199
199
  self._scenario_sim.epanet_api.setPattern(pattern_idx, np.array([speed]))
200
200
 
@@ -12,9 +12,9 @@ def r2_score(y_pred: np.ndarray, y: np.ndarray) -> float:
12
12
 
13
13
  Parameters
14
14
  ----------
15
- y_pred : `numpy.ndarray`
15
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
16
16
  Predicted outputs.
17
- y : `numpy.ndarray`
17
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
18
18
  Ground truth outputs.
19
19
 
20
20
  Returns
@@ -31,9 +31,9 @@ def running_r2_score(y_pred: np.ndarray, y: np.ndarray) -> list[float]:
31
31
 
32
32
  Parameters
33
33
  ----------
34
- y_pred : `numpy.ndarray`
34
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
35
35
  Predicted outputs.
36
- y : `numpy.ndarray`
36
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
37
37
  Ground truth outputs.
38
38
 
39
39
  Returns
@@ -55,9 +55,9 @@ def mean_squared_error(y_pred: np.ndarray, y: np.ndarray) -> float:
55
55
 
56
56
  Parameters
57
57
  ----------
58
- y_pred : `numpy.ndarray`
58
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
59
59
  Predicted outputs.
60
- y : `numpy.ndarray`
60
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
61
61
  Ground truth outputs.
62
62
 
63
63
  Returns
@@ -74,9 +74,9 @@ def running_mse(y_pred: np.ndarray, y: np.ndarray) -> list[float]:
74
74
 
75
75
  Parameters
76
76
  ----------
77
- y_pred : `numpy.ndarray`
77
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
78
78
  Predicted outputs.
79
- y : `numpy.ndarray`
79
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
80
80
  Ground truth outputs.
81
81
 
82
82
  Returns
@@ -112,9 +112,9 @@ def mape(y_pred: np.ndarray, y: np.ndarray, epsilon: float = .05) -> float:
112
112
 
113
113
  Parameters
114
114
  ----------
115
- y_pred : `numpy.ndarray`
115
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
116
116
  Predicted outputs.
117
- y : `numpy.ndarray`
117
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
118
118
  Ground truth outputs.
119
119
  epsilon : `float`, optional
120
120
  Small number added to predictions and ground truth to avoid division-by-zero.
@@ -153,9 +153,9 @@ def smape(y_pred: np.ndarray, y: np.ndarray, epsilon: float = .05) -> float:
153
153
 
154
154
  Parameters
155
155
  ----------
156
- y_pred : `numpy.ndarray`
156
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
157
157
  Predicted outputs.
158
- y : `numpy.ndarray`
158
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
159
159
  Ground truth outputs.
160
160
  epsilon : `float`, optional
161
161
  Small number added to predictions and ground truth to avoid division-by-zero.
@@ -194,9 +194,9 @@ def mase(y_pred: np.ndarray, y: np.ndarray, epsilon: float = .05) -> float:
194
194
 
195
195
  Parameters
196
196
  ----------
197
- y_pred : `numpy.ndarray`
197
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
198
198
  Predicted outputs.
199
- y : `numpy.ndarray`
199
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
200
200
  Ground truth outputs.
201
201
  epsilon : `float`, optional
202
202
  Small number added to predictions and ground truth to avoid division-by-zero.
@@ -242,9 +242,9 @@ def f1_micro_score(y_pred: np.ndarray, y: np.ndarray) -> float:
242
242
 
243
243
  Parameters
244
244
  ----------
245
- y_pred : `numpy.ndarray`
245
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
246
246
  Predicted labels.
247
- y : `numpy.ndarray`
247
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
248
248
  Ground truth labels.
249
249
 
250
250
  Returns
@@ -270,9 +270,9 @@ def roc_auc_score(y_pred: np.ndarray, y: np.ndarray) -> float:
270
270
 
271
271
  Parameters
272
272
  ----------
273
- y_pred : `numpy.ndarray`
273
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
274
274
  Predicted labels.
275
- y : `numpy.ndarray`
275
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
276
276
  Ground truth labels.
277
277
 
278
278
  Returns
@@ -298,9 +298,9 @@ def true_positive_rate(y_pred: np.ndarray, y: np.ndarray) -> float:
298
298
 
299
299
  Parameters
300
300
  ----------
301
- y_pred : `numpy.ndarray`
301
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
302
302
  Predicted labels.
303
- y : `numpy.ndarray`
303
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
304
304
  Ground truth labels.
305
305
 
306
306
  Returns
@@ -335,9 +335,9 @@ def true_negative_rate(y_pred: np.ndarray, y: np.ndarray) -> float:
335
335
 
336
336
  Parameters
337
337
  ----------
338
- y_pred : `numpy.ndarray`
338
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
339
339
  Predicted labels.
340
- y : `numpy.ndarray`
340
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
341
341
  Ground truth labels.
342
342
 
343
343
  Returns
@@ -372,9 +372,9 @@ def precision_score(y_pred: np.ndarray, y: np.ndarray) -> float:
372
372
 
373
373
  Parameters
374
374
  ----------
375
- y_pred : `numpy.ndarray`
375
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
376
376
  Predicted labels.
377
- y : `numpy.ndarray`
377
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
378
378
  Ground truth labels.
379
379
 
380
380
  Returns
@@ -405,9 +405,9 @@ def accuracy_score(y_pred: np.ndarray, y: np.ndarray) -> float:
405
405
 
406
406
  Parameters
407
407
  ----------
408
- y_pred : `numpy.ndarray`
408
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
409
409
  Predicted labels.
410
- y : `numpy.ndarray`
410
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
411
411
  Ground truth labels.
412
412
 
413
413
  Returns
@@ -434,9 +434,9 @@ def f1_score(y_pred: np.ndarray, y: np.ndarray) -> float:
434
434
 
435
435
  Parameters
436
436
  ----------
437
- y_pred : `numpy.ndarray`
437
+ y_pred : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
438
438
  Predicted labels.
439
- y : `numpy.ndarray`
439
+ y : `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
440
440
  Ground truth labels.
441
441
 
442
442
  Returns
@@ -20,7 +20,7 @@ class SensorInterpolationDetector(EventDetector):
20
20
  Regressor class that will be used for the sensor interpolation.
21
21
  Must implement the usual `fit` and `predict` functions.
22
22
 
23
- The default is `sklearn.linear_model.LinearRegression`
23
+ The default is `sklearn.linear_model.LinearRegression <https://scikit-learn.org/dev/modules/generated/sklearn.linear_model.LinearRegression.html>`_
24
24
  """
25
25
  def __init__(self, regressor_type: Any = LinearRegression, **kwds):
26
26
  self.__regressor_type = regressor_type
@@ -63,7 +63,7 @@ class SensorInterpolationDetector(EventDetector):
63
63
 
64
64
  Parameters
65
65
  ----------
66
- scada_data : :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `numpy.ndarray`
66
+ scada_data : :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
67
67
  SCADA data to fit this detector.
68
68
  """
69
69
  if isinstance(scada_data, ScadaData):
@@ -93,7 +93,7 @@ class SensorInterpolationDetector(EventDetector):
93
93
 
94
94
  Parameters
95
95
  ----------
96
- scada_data : :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `numpy.ndarray`
96
+ scada_data : :class:`~epyt_flow.simulation.scada.scada_data.ScadaData` or `numpy.ndarray <https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html>`_
97
97
  SCADA data in which to look for events/anomalies.
98
98
 
99
99
  Returns
@@ -17,7 +17,7 @@ class BaseHandler():
17
17
 
18
18
  Parameters
19
19
  ----------
20
- resp : `falcon.Response`
20
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
21
21
  Response instance.
22
22
  error_msg : `str`
23
23
  Error message.
@@ -43,7 +43,7 @@ class BaseHandler():
43
43
 
44
44
  Parameters
45
45
  ----------
46
- resp : `falcon.Response`
46
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
47
47
  Response instance.
48
48
  """
49
49
  resp.status = falcon.HTTP_BAD_REQUEST
@@ -55,7 +55,7 @@ class BaseHandler():
55
55
 
56
56
  Parameters
57
57
  ----------
58
- req : `falcon.Request`
58
+ req : `falcon.Request <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#request>`_
59
59
  Request instance.
60
60
 
61
61
  Returns
@@ -74,7 +74,7 @@ class BaseHandler():
74
74
 
75
75
  Parameters
76
76
  ----------
77
- resp : `falcon.Response`
77
+ resp : `falcon.Response <https://falcon.readthedocs.io/en/stable/api/request_and_response_asgi.html#response>`_
78
78
  Response instance.
79
79
  data : `Any`
80
80
  Data to be sent.