boris-behav-obs 9.6.4__tar.gz → 9.6.5__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 (127) hide show
  1. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/PKG-INFO +2 -2
  2. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/README.md +1 -1
  3. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/irr_cohen_kappa.py +15 -3
  4. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/irr_cohen_kappa_with_modifiers.py +13 -2
  5. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/irr_weighted_cohen_kappa.py +14 -3
  6. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/irr_weighted_cohen_kappa_with_modifiers.py +14 -3
  7. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/version.py +2 -2
  8. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris_behav_obs.egg-info/PKG-INFO +2 -2
  9. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris_behav_obs.egg-info/SOURCES.txt +0 -1
  10. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/pyproject.toml +1 -1
  11. boris_behav_obs-9.6.4/boris/1.py +0 -45
  12. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/LICENSE.TXT +0 -0
  13. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/MANIFEST.in +0 -0
  14. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/README.TXT +0 -0
  15. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/__init__.py +0 -0
  16. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/__main__.py +0 -0
  17. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/about.py +0 -0
  18. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/add_modifier.py +0 -0
  19. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/add_modifier_ui.py +0 -0
  20. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/advanced_event_filtering.py +0 -0
  21. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/__init__.py +0 -0
  22. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/_latency.py +0 -0
  23. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/list_of_dataframe_columns.py +0 -0
  24. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/number_of_occurences.py +0 -0
  25. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/number_of_occurences_by_independent_variable.py +0 -0
  26. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/analysis_plugins/time_budget.py +0 -0
  27. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/behav_coding_map_creator.py +0 -0
  28. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/behavior_binary_table.py +0 -0
  29. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/behaviors_coding_map.py +0 -0
  30. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/boris_cli.py +0 -0
  31. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/cmd_arguments.py +0 -0
  32. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/coding_pad.py +0 -0
  33. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/config.py +0 -0
  34. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/config_file.py +0 -0
  35. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/connections.py +0 -0
  36. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/converters.py +0 -0
  37. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/converters_ui.py +0 -0
  38. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/cooccurence.py +0 -0
  39. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/core.py +0 -0
  40. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/core_qrc.py +0 -0
  41. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/core_ui.py +0 -0
  42. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/db_functions.py +0 -0
  43. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/dev.py +0 -0
  44. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/dialog.py +0 -0
  45. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/duration_widget.py +0 -0
  46. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/edit_event.py +0 -0
  47. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/edit_event_ui.py +0 -0
  48. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/event_operations.py +0 -0
  49. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/events_cursor.py +0 -0
  50. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/events_snapshots.py +0 -0
  51. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/exclusion_matrix.py +0 -0
  52. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/export_events.py +0 -0
  53. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/export_observation.py +0 -0
  54. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/external_processes.py +0 -0
  55. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/geometric_measurement.py +0 -0
  56. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/gui_utilities.py +0 -0
  57. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/image_overlay.py +0 -0
  58. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/import_observations.py +0 -0
  59. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/irr.py +0 -0
  60. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/latency.py +0 -0
  61. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/measurement_widget.py +0 -0
  62. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/media_file.py +0 -0
  63. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/menu_options.py +0 -0
  64. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/modifier_coding_map_creator.py +0 -0
  65. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/modifiers_coding_map.py +0 -0
  66. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/mpv-1.0.3.py +0 -0
  67. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/mpv.py +0 -0
  68. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/mpv2.py +0 -0
  69. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/observation.py +0 -0
  70. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/observation_operations.py +0 -0
  71. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/observation_ui.py +0 -0
  72. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/observations_list.py +0 -0
  73. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/otx_parser.py +0 -0
  74. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/param_panel.py +0 -0
  75. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/param_panel_ui.py +0 -0
  76. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/player_dock_widget.py +0 -0
  77. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/plot_data_module.py +0 -0
  78. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/plot_events.py +0 -0
  79. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/plot_events_rt.py +0 -0
  80. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/plot_spectrogram_rt.py +0 -0
  81. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/plot_waveform_rt.py +0 -0
  82. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/plugins.py +0 -0
  83. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/portion/__init__.py +0 -0
  84. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/portion/const.py +0 -0
  85. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/portion/dict.py +0 -0
  86. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/portion/func.py +0 -0
  87. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/portion/interval.py +0 -0
  88. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/portion/io.py +0 -0
  89. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/preferences.py +0 -0
  90. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/preferences_ui.py +0 -0
  91. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/project.py +0 -0
  92. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/project_functions.py +0 -0
  93. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/project_import_export.py +0 -0
  94. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/project_ui.py +0 -0
  95. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/qrc_boris.py +0 -0
  96. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/qrc_boris5.py +0 -0
  97. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/select_modifiers.py +0 -0
  98. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/select_observations.py +0 -0
  99. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/select_subj_behav.py +0 -0
  100. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/state_events.py +0 -0
  101. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/subjects_pad.py +0 -0
  102. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/synthetic_time_budget.py +0 -0
  103. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/time_budget_functions.py +0 -0
  104. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/time_budget_widget.py +0 -0
  105. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/transitions.py +0 -0
  106. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/utilities.py +0 -0
  107. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/video_equalizer.py +0 -0
  108. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/video_equalizer_ui.py +0 -0
  109. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/video_operations.py +0 -0
  110. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/view_df.py +0 -0
  111. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/view_df_ui.py +0 -0
  112. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris/write_event.py +0 -0
  113. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris_behav_obs.egg-info/dependency_links.txt +0 -0
  114. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris_behav_obs.egg-info/entry_points.txt +0 -0
  115. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris_behav_obs.egg-info/requires.txt +0 -0
  116. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/boris_behav_obs.egg-info/top_level.txt +0 -0
  117. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/setup.cfg +0 -0
  118. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_db_functions.py +0 -0
  119. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_export_observation.py +0 -0
  120. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_irr.py +0 -0
  121. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_observation_gui.py +0 -0
  122. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_otx_parser.py +0 -0
  123. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_preferences_gui.py +0 -0
  124. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_project_functions.py +0 -0
  125. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_time_budget.py +0 -0
  126. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_utilities.py +0 -0
  127. {boris_behav_obs-9.6.4 → boris_behav_obs-9.6.5}/tests/test_utilities2.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boris-behav-obs
3
- Version: 9.6.4
3
+ Version: 9.6.5
4
4
  Summary: BORIS - Behavioral Observation Research Interactive Software
5
5
  Author-email: Olivier Friard <olivier.friard@unito.it>
6
6
  License-Expression: GPL-3.0-only
@@ -52,7 +52,7 @@ It provides also some analysis tools like time budget and some plotting function
52
52
  <!-- The BO-RIS paper has more than [![BORIS citations counter](https://penelope.unito.it/friard/boris_scopus_citations.png) citations](https://www.boris.unito.it/citations) in peer-reviewed scientific publications. -->
53
53
 
54
54
 
55
- The BORIS paper has more than 2332 citations in peer-reviewed scientific publications.
55
+ The BORIS paper has more than 2336 citations in peer-reviewed scientific publications.
56
56
 
57
57
 
58
58
 
@@ -14,7 +14,7 @@ It provides also some analysis tools like time budget and some plotting function
14
14
  <!-- The BO-RIS paper has more than [![BORIS citations counter](https://penelope.unito.it/friard/boris_scopus_citations.png) citations](https://www.boris.unito.it/citations) in peer-reviewed scientific publications. -->
15
15
 
16
16
 
17
- The BORIS paper has more than 2332 citations in peer-reviewed scientific publications.
17
+ The BORIS paper has more than 2336 citations in peer-reviewed scientific publications.
18
18
 
19
19
 
20
20
 
@@ -5,11 +5,14 @@ Inter Rater Reliability (IRR) Unweighted Cohen's Kappa
5
5
  """
6
6
 
7
7
  import pandas as pd
8
- from sklearn.metrics import cohen_kappa_score
9
8
  from typing import Dict, Tuple
10
9
 
11
- __version__ = "0.0.2"
12
- __version_date__ = "2025-08-29"
10
+ from sklearn.metrics import cohen_kappa_score
11
+ from PySide6.QtWidgets import QInputDialog
12
+
13
+
14
+ __version__ = "0.0.3"
15
+ __version_date__ = "2025-09-02"
13
16
  __plugin_name__ = "Inter Rater Reliability - Unweighted Cohen's Kappa"
14
17
  __author__ = "Olivier Friard - University of Torino - Italy"
15
18
  __description__ = """
@@ -52,6 +55,15 @@ def run(df: pd.DataFrame) -> pd.DataFrame:
52
55
  # Sort to ensure deterministic representation (e.g., "A+B" instead of "B+A")
53
56
  return "+".join(sorted(active_codes))
54
57
 
58
+ # ask user for the number of decimal places for rounding (can be negative)
59
+ round_decimals, ok = QInputDialog.getInt(
60
+ None, "Rounding", "Enter the number of decimal places for rounding (can be negative)", value=3, minValue=-5, maxValue=3, step=1
61
+ )
62
+
63
+ # round times
64
+ df["Start (s)"] = df["Start (s)"].round(round_decimals)
65
+ df["Stop (s)"] = df["Stop (s)"].round(round_decimals)
66
+
55
67
  # Get unique values
56
68
  unique_obs_list = df["Observation id"].unique().tolist()
57
69
 
@@ -5,10 +5,12 @@ Inter Rater Reliability (IRR) Unweighted Cohen's Kappa with modifiers
5
5
  """
6
6
 
7
7
  import pandas as pd
8
+
8
9
  from sklearn.metrics import cohen_kappa_score
10
+ from PySide6.QtWidgets import QInputDialog
9
11
 
10
- __version__ = "0.0.2"
11
- __version_date__ = "2025-08-29"
12
+ __version__ = "0.0.3"
13
+ __version_date__ = "2025-09-02"
12
14
  __plugin_name__ = "Inter Rater Reliability - Unweighted Cohen's Kappa with modifiers"
13
15
  __author__ = "Olivier Friard - University of Torino - Italy"
14
16
  __description__ = """
@@ -52,6 +54,15 @@ def run(df: pd.DataFrame):
52
54
  # Sort to ensure deterministic representation (e.g., "A+B" instead of "B+A")
53
55
  return "+".join(sorted(active_codes))
54
56
 
57
+ # ask user for the number of decimal places for rounding (can be negative)
58
+ round_decimals, ok = QInputDialog.getInt(
59
+ None, "Rounding", "Enter the number of decimal places for rounding (can be negative)", value=3, minValue=-5, maxValue=3, step=1
60
+ )
61
+
62
+ # round times
63
+ df["Start (s)"] = df["Start (s)"].round(round_decimals)
64
+ df["Stop (s)"] = df["Stop (s)"].round(round_decimals)
65
+
55
66
  # Get unique values
56
67
  unique_obs_list = df["Observation id"].unique().tolist()
57
68
 
@@ -7,8 +7,10 @@ Inter Rater Reliability (IRR) Weighted Cohen's Kappa
7
7
  import pandas as pd
8
8
  from typing import List, Tuple, Dict, Optional
9
9
 
10
- __version__ = "0.0.2"
11
- __version_date__ = "2025-08-29"
10
+ from PySide6.QtWidgets import QInputDialog
11
+
12
+ __version__ = "0.0.3"
13
+ __version_date__ = "2025-09-02"
12
14
  __plugin_name__ = "Inter Rater Reliability - Weighted Cohen's Kappa"
13
15
  __author__ = "Olivier Friard - University of Torino - Italy"
14
16
  __description__ = """
@@ -72,7 +74,7 @@ def run(df: pd.DataFrame):
72
74
  active_codes = [seg[2] for seg in obs if seg[0] <= t < seg[1]]
73
75
  if not active_codes:
74
76
  return None
75
- return "+".join(sorted(active_codes)) # rappresentazione deterministica
77
+ return "+".join(sorted(active_codes))
76
78
 
77
79
  # 4. Build weighted contingency table (durations instead of counts)
78
80
  contingency: Dict[Tuple[Optional[str], Optional[str]], float] = {}
@@ -104,6 +106,15 @@ def run(df: pd.DataFrame):
104
106
 
105
107
  return kappa, po, pe, contingency
106
108
 
109
+ # ask user for the number of decimal places for rounding (can be negative)
110
+ round_decimals, ok = QInputDialog.getInt(
111
+ None, "Rounding", "Enter the number of decimal places for rounding (can be negative)", value=3, minValue=-5, maxValue=3, step=1
112
+ )
113
+
114
+ # round times
115
+ df["Start (s)"] = df["Start (s)"].round(round_decimals)
116
+ df["Stop (s)"] = df["Stop (s)"].round(round_decimals)
117
+
107
118
  # Get unique values as a numpy array
108
119
  unique_obs = df["Observation id"].unique()
109
120
 
@@ -7,8 +7,10 @@ Inter Rater Reliability (IRR) Weighted Cohen's Kappa with modifiers
7
7
  import pandas as pd
8
8
  from typing import List, Tuple, Dict, Optional
9
9
 
10
- __version__ = "0.0.2"
11
- __version_date__ = "2025-08-29"
10
+ from PySide6.QtWidgets import QInputDialog
11
+
12
+ __version__ = "0.0.3"
13
+ __version_date__ = "2025-09-02"
12
14
  __plugin_name__ = "Inter Rater Reliability - Weighted Cohen's Kappa with modifiers"
13
15
  __author__ = "Olivier Friard - University of Torino - Italy"
14
16
  __description__ = """
@@ -72,7 +74,7 @@ def run(df: pd.DataFrame):
72
74
  active_codes = [seg[2] for seg in obs if seg[0] <= t < seg[1]]
73
75
  if not active_codes:
74
76
  return None
75
- return "+".join(sorted(active_codes)) # rappresentazione deterministica
77
+ return "+".join(sorted(active_codes))
76
78
 
77
79
  # 4. Build weighted contingency table (durations instead of counts)
78
80
  contingency: Dict[Tuple[Optional[str], Optional[str]], float] = {}
@@ -104,6 +106,15 @@ def run(df: pd.DataFrame):
104
106
 
105
107
  return kappa, po, pe, contingency
106
108
 
109
+ # ask user for the number of decimal places for rounding (can be negative)
110
+ round_decimals, ok = QInputDialog.getInt(
111
+ None, "Rounding", "Enter the number of decimal places for rounding (can be negative)", value=3, minValue=-5, maxValue=3, step=1
112
+ )
113
+
114
+ # round times
115
+ df["Start (s)"] = df["Start (s)"].round(round_decimals)
116
+ df["Stop (s)"] = df["Stop (s)"].round(round_decimals)
117
+
107
118
  # Get unique values as a numpy array
108
119
  unique_obs = df["Observation id"].unique()
109
120
 
@@ -20,5 +20,5 @@ This file is part of BORIS.
20
20
 
21
21
  """
22
22
 
23
- __version__ = "9.6.4"
24
- __version_date__ = "2025-08-29"
23
+ __version__ = "9.6.5"
24
+ __version_date__ = "2025-09-02"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boris-behav-obs
3
- Version: 9.6.4
3
+ Version: 9.6.5
4
4
  Summary: BORIS - Behavioral Observation Research Interactive Software
5
5
  Author-email: Olivier Friard <olivier.friard@unito.it>
6
6
  License-Expression: GPL-3.0-only
@@ -52,7 +52,7 @@ It provides also some analysis tools like time budget and some plotting function
52
52
  <!-- The BO-RIS paper has more than [![BORIS citations counter](https://penelope.unito.it/friard/boris_scopus_citations.png) citations](https://www.boris.unito.it/citations) in peer-reviewed scientific publications. -->
53
53
 
54
54
 
55
- The BORIS paper has more than 2332 citations in peer-reviewed scientific publications.
55
+ The BORIS paper has more than 2336 citations in peer-reviewed scientific publications.
56
56
 
57
57
 
58
58
 
@@ -3,7 +3,6 @@ MANIFEST.in
3
3
  README.TXT
4
4
  README.md
5
5
  pyproject.toml
6
- boris/1.py
7
6
  boris/__init__.py
8
7
  boris/__main__.py
9
8
  boris/about.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "boris-behav-obs"
3
- version = "9.6.4"
3
+ version = "9.6.5"
4
4
  description = "BORIS - Behavioral Observation Research Interactive Software"
5
5
  authors = [{ name="Olivier Friard", email="olivier.friard@unito.it" }]
6
6
  readme = "README.md"
@@ -1,45 +0,0 @@
1
- import time
2
- from PIL import Image, ImageDraw, ImageFont
3
- import mpv
4
-
5
- player = mpv.MPV()
6
-
7
- player.loop = True
8
- player.play('/home/olivier/gdrive_sync/src/python/generate_video_test/video1.mp4')
9
- player.wait_until_playing()
10
-
11
- font = ImageFont.truetype('DejaVuSans.ttf', 40)
12
-
13
- overlay = player.create_image_overlay()
14
-
15
- img = Image.new('RGBA', (400, 150), (255, 255, 255, 0))
16
- d = ImageDraw.Draw(img)
17
- d.text((10, 10), 'Hello World', font=font, fill=(0, 255, 255, 128))
18
- #d.text((10, 60), f't={ts:.3f}', font=font, fill=(255, 0, 255, 255))
19
-
20
- pos = 100
21
-
22
- overlay.update(img, pos=(2*pos, pos))
23
-
24
-
25
- while not player.core_idle:
26
- pass
27
-
28
-
29
- '''
30
- for pos in range(0, 500, 5):
31
- ts = player.time_pos
32
- if ts is None:
33
- break
34
-
35
- img = Image.new('RGBA', (400, 150), (255, 255, 255, 0))
36
- d = ImageDraw.Draw(img)
37
- d.text((10, 10), 'Hello World', font=font, fill=(0, 255, 255, 128))
38
- d.text((10, 60), f't={ts:.3f}', font=font, fill=(255, 0, 255, 255))
39
-
40
- overlay.update(img, pos=(2*pos, pos))
41
- time.sleep(0.05)
42
-
43
-
44
- overlay.remove()
45
- '''