boris-behav-obs 9.7.15__py3-none-any.whl → 9.8.2__py3-none-any.whl

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 (80) hide show
  1. boris/__init__.py +1 -1
  2. boris/__main__.py +1 -1
  3. boris/about.py +4 -3
  4. boris/add_modifier.py +1 -1
  5. boris/advanced_event_filtering.py +1 -1
  6. boris/analysis_plugins/irr_weighted_cohen_kappa.py +2 -2
  7. boris/behav_coding_map_creator.py +1 -1
  8. boris/behavior_binary_table.py +1 -1
  9. boris/behaviors_coding_map.py +1 -1
  10. boris/boris_cli.py +1 -1
  11. boris/cmd_arguments.py +1 -1
  12. boris/coding_pad.py +1 -1
  13. boris/config.py +10 -1
  14. boris/config_file.py +18 -19
  15. boris/connections.py +12 -13
  16. boris/converters.py +1 -1
  17. boris/cooccurence.py +1 -1
  18. boris/core.py +41 -42
  19. boris/core_qrc.py +1830 -1967
  20. boris/core_ui.py +1 -1
  21. boris/db_functions.py +5 -14
  22. boris/dialog.py +24 -24
  23. boris/edit_event.py +1 -1
  24. boris/event_operations.py +1 -1
  25. boris/events_cursor.py +1 -1
  26. boris/events_snapshots.py +133 -78
  27. boris/exclusion_matrix.py +1 -1
  28. boris/export_events.py +49 -43
  29. boris/export_observation.py +1 -1
  30. boris/external_processes.py +1 -1
  31. boris/geometric_measurement.py +1 -1
  32. boris/gui_utilities.py +1 -1
  33. boris/image_overlay.py +1 -1
  34. boris/import_observations.py +1 -1
  35. boris/ipc_mpv.py +1 -1
  36. boris/irr.py +1 -1
  37. boris/latency.py +1 -1
  38. boris/measurement_widget.py +1 -1
  39. boris/media_file.py +1 -1
  40. boris/menu_options.py +14 -12
  41. boris/modifier_coding_map_creator.py +1 -1
  42. boris/modifiers_coding_map.py +1 -1
  43. boris/observation.py +13 -14
  44. boris/observation_operations.py +1 -1
  45. boris/observations_list.py +1 -1
  46. boris/otx_parser.py +1 -1
  47. boris/param_panel.py +1 -1
  48. boris/player_dock_widget.py +1 -1
  49. boris/plot_data_module.py +1 -1
  50. boris/plot_events.py +1 -1
  51. boris/plot_events_rt.py +1 -1
  52. boris/plot_spectrogram_rt.py +2 -2
  53. boris/plot_waveform_rt.py +1 -1
  54. boris/plugins.py +1 -1
  55. boris/preferences.py +1 -1
  56. boris/project.py +1 -1
  57. boris/project_functions.py +12 -12
  58. boris/project_import_export.py +1 -1
  59. boris/select_modifiers.py +1 -1
  60. boris/select_observations.py +22 -23
  61. boris/select_subj_behav.py +4 -4
  62. boris/state_events.py +1 -1
  63. boris/subjects_pad.py +1 -1
  64. boris/synthetic_time_budget.py +1 -1
  65. boris/time_budget_functions.py +1 -1
  66. boris/time_budget_widget.py +1 -1
  67. boris/transitions.py +1 -1
  68. boris/utilities.py +1 -1
  69. boris/version.py +3 -3
  70. boris/video_equalizer.py +1 -1
  71. boris/video_operations.py +1 -1
  72. boris/view_df.py +28 -4
  73. boris/write_event.py +1 -1
  74. {boris_behav_obs-9.7.15.dist-info → boris_behav_obs-9.8.2.dist-info}/METADATA +2 -2
  75. boris_behav_obs-9.8.2.dist-info/RECORD +110 -0
  76. {boris_behav_obs-9.7.15.dist-info → boris_behav_obs-9.8.2.dist-info}/WHEEL +1 -1
  77. boris_behav_obs-9.7.15.dist-info/RECORD +0 -110
  78. {boris_behav_obs-9.7.15.dist-info → boris_behav_obs-9.8.2.dist-info}/entry_points.txt +0 -0
  79. {boris_behav_obs-9.7.15.dist-info → boris_behav_obs-9.8.2.dist-info}/licenses/LICENSE.TXT +0 -0
  80. {boris_behav_obs-9.7.15.dist-info → boris_behav_obs-9.8.2.dist-info}/top_level.txt +0 -0
boris/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
4
 
5
- Copyright 2012-2025 Olivier Friard
5
+ Copyright 2012-2026 Olivier Friard
6
6
 
7
7
  This file is part of BORIS.
8
8
 
boris/__main__.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This file is part of BORIS.
7
7
 
boris/about.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This program is free software; you can redistribute it and/or modify
7
7
  it under the terms of the GNU General Public License as published by
@@ -80,7 +80,8 @@ def actionAbout_activated(self):
80
80
  programs_versions.extend(["\nGraphViz", gv_result if "graphviz" in gv_result else "not installed", "https://www.graphviz.org/"])
81
81
 
82
82
  about_dialog: QMessageBox = QMessageBox()
83
- about_dialog.setIconPixmap(QPixmap(":/boris_unito"))
83
+ # about_dialog.setIconPixmap(QPixmap(":/boris_unito"))
84
+ about_dialog.setIconPixmap(QPixmap(":/dbios_unito"))
84
85
 
85
86
  about_dialog.setWindowTitle(f"About {cfg.programName}")
86
87
  about_dialog.setStandardButtons(QMessageBox.Ok)
@@ -90,7 +91,7 @@ def actionAbout_activated(self):
90
91
  about_dialog.setInformativeText(
91
92
  (
92
93
  f"<b>{cfg.programName}</b> v. {version.__version__} - {version.__version_date__}"
93
- "<p>Copyright &copy; 2012-2025 Olivier Friard - Marco Gamba<br>"
94
+ "<p>Copyright &copy; 2012-2026 Olivier Friard - Marco Gamba<br>"
94
95
  "Department of Life Sciences and Systems Biology<br>"
95
96
  "University of Torino - Italy<br>"
96
97
  "<br>"
boris/add_modifier.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This file is part of BORIS.
7
7
 
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This program is free software; you can redistribute it and/or modify
7
7
  it under the terms of the GNU General Public License as published by
@@ -4,9 +4,9 @@ BORIS plugin
4
4
  Inter Rater Reliability (IRR) Weighted Cohen's Kappa
5
5
  """
6
6
 
7
- import pandas as pd
8
- from typing import List, Tuple, Dict, Optional
7
+ from typing import Dict, List, Optional, Tuple
9
8
 
9
+ import pandas as pd
10
10
  from PySide6.QtWidgets import QInputDialog
11
11
 
12
12
  __version__ = "0.0.3"
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This file is part of BORIS.
7
7
 
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This program is free software; you can redistribute it and/or modify
7
7
  it under the terms of the GNU General Public License as published by
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This file is part of BORIS.
7
7
 
boris/boris_cli.py CHANGED
@@ -3,7 +3,7 @@ BORIS CLI
3
3
 
4
4
  Behavioral Observation Research Interactive Software Command Line Interface
5
5
 
6
- Copyright 2012-2025 Olivier Friard
6
+ Copyright 2012-2026 Olivier Friard
7
7
 
8
8
  This program is free software; you can redistribute it and/or modify
9
9
  it under the terms of the GNU General Public License as published by
boris/cmd_arguments.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
 
7
7
  This program is free software; you can redistribute it and/or modify
boris/coding_pad.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This program is free software; you can redistribute it and/or modify
7
7
  it under the terms of the GNU General Public License as published by
boris/config.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This file is part of BORIS.
7
7
 
@@ -165,6 +165,7 @@ REMOVE = "Remove"
165
165
  SAVE = "Save"
166
166
  DISCARD = "Discard"
167
167
  OK = "OK"
168
+ ABORT = "Abort"
168
169
  OVERWRITE = "Overwrite"
169
170
  OVERWRITE_ALL = "Overwrite all"
170
171
  SKIP = "Skip"
@@ -493,6 +494,13 @@ FRAME_DEFAULT_CACHE_SIZE = 1
493
494
 
494
495
  EXCLUDED = "excluded"
495
496
 
497
+ # codes for Input_dialog class
498
+ CHECKBOX = "cb"
499
+ LINE_EDIT = "le"
500
+ SPINBOX = "sb"
501
+ DOUBLE_SPINBOX = "dsb"
502
+ ITEMS_LIST = "il"
503
+
496
504
  # modifiers
497
505
  MODIFIERS = "modifiers"
498
506
  SINGLE_SELECTION = 0
@@ -740,6 +748,7 @@ INIT_PARAM = {
740
748
  PROJECT_FILE_INDENTATION: PROJECT_FILE_INDENTATION_DEFAULT_VALUE,
741
749
  f"{MEDIA} tw fields": MEDIA_TW_EVENTS_FIELDS_DEFAULT,
742
750
  # FRAME_STEP_SIZE: FRAME_STEP_SIZE_DEFAULT_VALUE,
751
+ TOOLBAR_ICON_SIZE: DEFAULT_TOOLBAR_ICON_SIZE_VALUE,
743
752
  }
744
753
 
745
754
  SDIS_EXT = "sds"
boris/config_file.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This file is part of BORIS.
7
7
 
@@ -21,27 +21,27 @@ This file is part of BORIS.
21
21
  Read and write the BORIS config file
22
22
  """
23
23
 
24
- import pathlib as pl
25
24
  import logging
25
+ import pathlib as pl
26
26
  import time
27
27
 
28
+ from PySide6.QtCore import QByteArray, QSettings
29
+
28
30
  from . import config as cfg
29
31
  from . import dialog
30
32
 
31
- from PySide6.QtCore import QByteArray, QSettings
32
-
33
33
 
34
- def read(self):
34
+ def read(self) -> None:
35
35
  """
36
36
  read config file
37
37
  """
38
38
 
39
- ini_fil_p_pe_p_path = pl.Path.home() / pl.Path(".boris")
39
+ ini_file_path = pl.Path.home() / pl.Path(".boris")
40
40
 
41
- logging.debug(f"read config file: {ini_fil_p_pe_p_path}")
41
+ logging.debug(f"read config file: {ini_file_path}")
42
42
 
43
- if ini_fil_p_pe_p_path.is_file():
44
- settings = QSettings(str(ini_fil_p_pe_p_path), QSettings.IniFormat)
43
+ if ini_file_path.is_file():
44
+ settings = QSettings(str(ini_file_path), QSettings.Format.IniFormat)
45
45
 
46
46
  try:
47
47
  self.config_param = settings.value("config")
@@ -180,7 +180,7 @@ def read(self):
180
180
  "(An internet connection is required)\n"
181
181
  "You can change this option in the Preferences (File > Preferences)"
182
182
  ),
183
- [cfg.YES, cfg.NO],
183
+ (cfg.YES, cfg.NO),
184
184
  )
185
185
  == cfg.YES
186
186
  )
@@ -244,7 +244,7 @@ def read(self):
244
244
  dialog.MessageDialog(
245
245
  cfg.programName,
246
246
  ("The colors list contain colors that are very light.\nDo you want to reload the default colors list?"),
247
- [cfg.NO, cfg.YES],
247
+ (cfg.NO, cfg.YES),
248
248
  )
249
249
  == cfg.YES
250
250
  ):
@@ -261,7 +261,7 @@ def read(self):
261
261
  dialog.MessageDialog(
262
262
  cfg.programName,
263
263
  ("The colors list contain colors that are very light.\nDo you want to reload the default colors list?"),
264
- [cfg.NO, cfg.YES],
264
+ (cfg.NO, cfg.YES),
265
265
  )
266
266
  == cfg.YES
267
267
  ):
@@ -280,7 +280,7 @@ def read(self):
280
280
  "You can change this option in the"
281
281
  " Preferences (File > Preferences)"
282
282
  ),
283
- [cfg.NO, cfg.YES],
283
+ (cfg.NO, cfg.YES),
284
284
  )
285
285
  == cfg.YES
286
286
  )
@@ -289,18 +289,17 @@ def read(self):
289
289
 
290
290
  # recent projects
291
291
  logging.debug("read recent projects")
292
+ self.recent_projects: list = []
292
293
  recent_projects_file_path = pl.Path.home() / ".boris_recent_projects"
293
294
  if recent_projects_file_path.is_file():
294
- settings = QSettings(str(recent_projects_file_path), QSettings.IniFormat)
295
+ settings = QSettings(str(recent_projects_file_path), QSettings.Format.IniFormat)
295
296
  try:
296
297
  self.recent_projects = settings.value("recent_projects").split("|||")
297
298
  while "" in self.recent_projects:
298
299
  self.recent_projects.remove("")
299
300
  self.set_recent_projects_menu()
300
301
  except Exception:
301
- self.recent_projects = []
302
- else:
303
- self.recent_projects = []
302
+ pass
304
303
 
305
304
 
306
305
  def save(self, lastCheckForNewVersion=0):
@@ -312,7 +311,7 @@ def save(self, lastCheckForNewVersion=0):
312
311
 
313
312
  logging.debug(f"save config file: {file_path}")
314
313
 
315
- settings = QSettings(str(file_path), QSettings.IniFormat)
314
+ settings = QSettings(str(file_path), QSettings.Format.IniFormat)
316
315
 
317
316
  settings.setValue("config", self.config_param)
318
317
 
@@ -352,5 +351,5 @@ def save(self, lastCheckForNewVersion=0):
352
351
  # recent projects
353
352
  logging.debug("Save recent projects")
354
353
 
355
- settings = QSettings(str(pl.Path.home() / ".boris_recent_projects"), QSettings.IniFormat)
354
+ settings = QSettings(str(pl.Path.home() / ".boris_recent_projects"), QSettings.Format.IniFormat)
356
355
  settings.setValue("recent_projects", "|||".join(self.recent_projects))
boris/connections.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This program is free software; you can redistribute it and/or modify
7
7
  it under the terms of the GNU General Public License as published by
@@ -22,35 +22,34 @@ Copyright 2012-2025 Olivier Friard
22
22
  from PySide6.QtCore import Qt, QTimer
23
23
  from PySide6.QtGui import QAction
24
24
 
25
- from . import config as cfg
26
25
  from . import (
27
26
  about,
28
27
  behav_coding_map_creator,
29
28
  behavior_binary_table,
30
29
  behaviors_coding_map,
31
30
  coding_pad,
31
+ cooccurence,
32
32
  event_operations,
33
33
  events_snapshots,
34
34
  export_events,
35
+ external_processes,
35
36
  geometric_measurement,
36
37
  image_overlay,
37
38
  import_observations,
38
39
  irr,
39
40
  latency,
40
- cooccurence,
41
41
  media_file,
42
42
  observation_operations,
43
43
  preferences,
44
+ project_functions,
44
45
  project_import_export,
45
46
  synthetic_time_budget,
46
47
  time_budget_widget,
47
48
  transitions,
48
49
  video_equalizer,
49
50
  video_operations,
50
- project_functions,
51
- external_processes,
52
51
  )
53
-
52
+ from . import config as cfg
54
53
  from . import state_events as state_events
55
54
 
56
55
 
@@ -151,8 +150,8 @@ def connections(self):
151
150
  self.actionExport_events_as_Praat_TextGrid.triggered.connect(lambda: export_events.export_events_as_textgrid(self))
152
151
  self.actionJWatcher.triggered.connect(lambda: export_events.export_tabular_events(self, "jwatcher"))
153
152
 
154
- self.actionExtract_events_from_media_files.triggered.connect(lambda: events_snapshots.extract_events(self))
155
- self.actionExtract_frames_from_media_files.triggered.connect(lambda: events_snapshots.events_snapshots(self))
153
+ self.actionExtract_events_from_media_files.triggered.connect(lambda: events_snapshots.extract_media_clips(self))
154
+ self.actionExtract_frames_from_media_files.triggered.connect(lambda: events_snapshots.extract_media_snapshots(self))
156
155
 
157
156
  self.actionCohen_s_kappa.triggered.connect(lambda: irr.irr_cohen_kappa(self))
158
157
  self.actionNeedleman_Wunsch.triggered.connect(lambda: irr.needleman_wunch(self))
@@ -268,7 +267,7 @@ def connections(self):
268
267
  self.tv_events.doubleClicked.connect(self.tv_events_doubleClicked)
269
268
 
270
269
  # Actions for twEthogram context menu
271
- self.twEthogram.setContextMenuPolicy(Qt.ActionsContextMenu)
270
+ self.twEthogram.setContextMenuPolicy(Qt.ContextMenuPolicy.ActionsContextMenu)
272
271
  self.twEthogram.horizontalHeader().sortIndicatorChanged.connect(self.twEthogram_sorted)
273
272
 
274
273
  self.actionViewBehavior.triggered.connect(self.view_behavior)
@@ -283,7 +282,7 @@ def connections(self):
283
282
  self.twEthogram.addAction(self.actionShowAllBehaviors)
284
283
 
285
284
  # Actions for twSubjects context menu
286
- self.twSubjects.setContextMenuPolicy(Qt.ActionsContextMenu)
285
+ self.twSubjects.setContextMenuPolicy(Qt.ContextMenuPolicy.ActionsContextMenu)
287
286
  self.twSubjects.horizontalHeader().sortIndicatorChanged.connect(self.sort_twSubjects)
288
287
  self.actionFilterSubjects.triggered.connect(self.filter_subjects)
289
288
  self.twSubjects.addAction(self.actionFilterSubjects)
@@ -297,7 +296,7 @@ def connections(self):
297
296
  # tw_headers.addAction(self.actionConfigure_twEvents_columns)
298
297
 
299
298
  tv_headers = self.tv_events.horizontalHeader()
300
- tv_headers.setContextMenuPolicy(Qt.ActionsContextMenu)
299
+ tv_headers.setContextMenuPolicy(Qt.ContextMenuPolicy.ActionsContextMenu)
301
300
  tv_headers.addAction(self.actionConfigure_tvevents_columns)
302
301
 
303
302
  # Actions for twEvents menu
@@ -340,7 +339,7 @@ def connections(self):
340
339
  # self.twEvents.addAction(self.actionDelete_selected_events)
341
340
 
342
341
  # Actions for tv_events menu
343
- self.tv_events.setContextMenuPolicy(Qt.ActionsContextMenu)
342
+ self.tv_events.setContextMenuPolicy(Qt.ContextMenuPolicy.ActionsContextMenu)
344
343
 
345
344
  self.tv_events.addAction(self.actionAdd_event)
346
345
  self.tv_events.addAction(self.actionEdit_selected_events)
@@ -385,7 +384,7 @@ def connections(self):
385
384
  # Actions for twSubjects context menu
386
385
  self.actionDeselectCurrentSubject.triggered.connect(lambda: self.update_subject(""))
387
386
 
388
- self.twSubjects.setContextMenuPolicy(Qt.ActionsContextMenu)
387
+ self.twSubjects.setContextMenuPolicy(Qt.ContextMenuPolicy.ActionsContextMenu)
389
388
  self.twSubjects.addAction(self.actionDeselectCurrentSubject)
390
389
 
391
390
  # subjects
boris/converters.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This file is part of BORIS.
7
7
 
boris/cooccurence.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2025 Olivier Friard
4
+ Copyright 2012-2026 Olivier Friard
5
5
 
6
6
  This program is free software; you can redistribute it and/or modify
7
7
  it under the terms of the GNU General Public License as published by