boris-behav-obs 9.0.8__tar.gz → 9.1.1__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 (119) hide show
  1. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/PKG-INFO +1 -1
  2. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/advanced_event_filtering.py +9 -4
  3. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/analysis_plugins/number_of_occurences.py +1 -2
  4. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/analysis_plugins/time_budget.py +1 -3
  5. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/behavior_binary_table.py +12 -0
  6. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/config.py +5 -0
  7. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/config_file.py +8 -8
  8. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/connections.py +3 -1
  9. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/cooccurence.py +9 -1
  10. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/core.py +178 -62
  11. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/dialog.py +9 -5
  12. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/edit_event.py +3 -8
  13. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/event_operations.py +17 -12
  14. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/events_snapshots.py +5 -5
  15. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/export_events.py +29 -13
  16. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/export_observation.py +17 -2
  17. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/observation_operations.py +37 -1
  18. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/param_panel.py +12 -0
  19. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/param_panel_ui.py +6 -0
  20. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/plot_events.py +13 -6
  21. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/project_functions.py +22 -12
  22. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/project_import_export.py +9 -9
  23. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/select_observations.py +1 -3
  24. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/select_subj_behav.py +12 -1
  25. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/synthetic_time_budget.py +8 -0
  26. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/time_budget_functions.py +20 -15
  27. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/time_budget_widget.py +18 -7
  28. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/utilities.py +3 -3
  29. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/version.py +2 -2
  30. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/write_event.py +2 -1
  31. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris_behav_obs.egg-info/PKG-INFO +1 -1
  32. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/pyproject.toml +2 -2
  33. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/LICENSE.TXT +0 -0
  34. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/MANIFEST.in +0 -0
  35. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/README.TXT +0 -0
  36. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/README.md +0 -0
  37. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/__init__.py +0 -0
  38. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/__main__.py +0 -0
  39. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/about.py +0 -0
  40. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/add_modifier.py +0 -0
  41. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/add_modifier_ui.py +0 -0
  42. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/analysis_plugins/__init__.py +0 -0
  43. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/analysis_plugins/number_of_occurences_by_independent_variable.py +0 -0
  44. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/behav_coding_map_creator.py +0 -0
  45. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/behaviors_coding_map.py +0 -0
  46. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/boris_cli.py +0 -0
  47. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/cmd_arguments.py +0 -0
  48. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/coding_pad.py +0 -0
  49. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/converters.py +0 -0
  50. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/converters_ui.py +0 -0
  51. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/core_qrc.py +0 -0
  52. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/core_ui.py +0 -0
  53. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/db_functions.py +0 -0
  54. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/dev.py +0 -0
  55. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/duration_widget.py +0 -0
  56. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/edit_event_ui.py +0 -0
  57. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/events_cursor.py +0 -0
  58. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/exclusion_matrix.py +0 -0
  59. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/external_processes.py +0 -0
  60. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/geometric_measurement.py +0 -0
  61. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/gui_utilities.py +0 -0
  62. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/image_overlay.py +0 -0
  63. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/import_observations.py +0 -0
  64. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/irr.py +0 -0
  65. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/latency.py +0 -0
  66. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/map_creator.py +0 -0
  67. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/measurement_widget.py +0 -0
  68. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/media_file.py +0 -0
  69. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/menu_options.py +0 -0
  70. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/modifiers_coding_map.py +0 -0
  71. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/mpv-1.0.3.py +0 -0
  72. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/mpv.py +0 -0
  73. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/mpv2.py +0 -0
  74. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/observation.py +0 -0
  75. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/observation_ui.py +0 -0
  76. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/observations_list.py +0 -0
  77. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/otx_parser.py +0 -0
  78. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/player_dock_widget.py +0 -0
  79. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/plot_data_module.py +0 -0
  80. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/plot_events_rt.py +0 -0
  81. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/plot_spectrogram_rt.py +0 -0
  82. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/plot_waveform_rt.py +0 -0
  83. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/plugins.py +0 -0
  84. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/portion/__init__.py +0 -0
  85. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/portion/const.py +0 -0
  86. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/portion/dict.py +0 -0
  87. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/portion/func.py +0 -0
  88. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/portion/interval.py +0 -0
  89. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/portion/io.py +0 -0
  90. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/preferences.py +0 -0
  91. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/preferences_ui.py +0 -0
  92. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/project.py +0 -0
  93. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/project_ui.py +0 -0
  94. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/qrc_boris.py +0 -0
  95. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/qrc_boris5.py +0 -0
  96. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/select_modifiers.py +0 -0
  97. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/state_events.py +0 -0
  98. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/subjects_pad.py +0 -0
  99. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/transitions.py +0 -0
  100. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/video_equalizer.py +0 -0
  101. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/video_equalizer_ui.py +0 -0
  102. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/video_operations.py +0 -0
  103. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/view_df.py +0 -0
  104. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris/view_df_ui.py +0 -0
  105. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris_behav_obs.egg-info/SOURCES.txt +0 -0
  106. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris_behav_obs.egg-info/dependency_links.txt +0 -0
  107. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris_behav_obs.egg-info/entry_points.txt +0 -0
  108. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris_behav_obs.egg-info/requires.txt +0 -0
  109. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/boris_behav_obs.egg-info/top_level.txt +0 -0
  110. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/setup.cfg +0 -0
  111. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_db_functions.py +0 -0
  112. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_export_observation.py +0 -0
  113. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_irr.py +0 -0
  114. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_observation_gui.py +0 -0
  115. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_otx_parser.py +0 -0
  116. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_preferences_gui.py +0 -0
  117. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_project_functions.py +0 -0
  118. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_time_budget.py +0 -0
  119. {boris_behav_obs-9.0.8 → boris_behav_obs-9.1.1}/tests/test_utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: boris-behav-obs
3
- Version: 9.0.8
3
+ Version: 9.1.1
4
4
  Summary: BORIS - Behavioral Observation Research Interactive Software
5
5
  Author-email: Olivier Friard <olivier.friard@unito.it>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -235,7 +235,7 @@ class Advanced_event_filtering_dialog(QDialog):
235
235
  self.tw.clear()
236
236
 
237
237
  if flag_error or self.rb_details.isChecked():
238
- self.lb_results.setText(f"Results ({len(self.out)} event{'s'*(len(self.out) > 1)})")
238
+ self.lb_results.setText(f"Results ({len(self.out)} event{'s' * (len(self.out) > 1)})")
239
239
 
240
240
  self.tw.setRowCount(len(self.out))
241
241
  self.tw.setColumnCount(len(self.details_header)) # obs_id, comment, start, stop, duration
@@ -261,7 +261,7 @@ class Advanced_event_filtering_dialog(QDialog):
261
261
  ]
262
262
  )
263
263
 
264
- self.lb_results.setText(f"Results ({len(summary)} observation{'s'*(len(summary) > 1)})")
264
+ self.lb_results.setText(f"Results ({len(summary)} observation{'s' * (len(summary) > 1)})")
265
265
  self.tw.setRowCount(len(summary))
266
266
  self.tw.setColumnCount(len(self.summary_header)) # obs_id, mean, stdev
267
267
  self.tw.setHorizontalHeaderLabels(self.summary_header)
@@ -352,17 +352,22 @@ def event_filtering(self):
352
352
 
353
353
  max_media_duration_all_obs, _ = observation_operations.media_duration(self.pj[cfg.OBSERVATIONS], selected_observations)
354
354
 
355
+ start_interval, end_interval = observation_operations.time_intervals_range(self.pj[cfg.OBSERVATIONS], selected_observations)
356
+
355
357
  parameters = select_subj_behav.choose_obs_subj_behav_category(
356
358
  self,
357
359
  selected_observations,
358
360
  start_coding=start_coding,
359
361
  end_coding=end_coding,
362
+ start_interval=start_interval,
363
+ end_interval=end_interval,
360
364
  maxTime=max_media_duration_all_obs,
361
365
  show_include_modifiers=False,
362
366
  show_exclude_non_coded_behaviors=False,
363
367
  by_category=False,
364
368
  n_observations=len(selected_observations),
365
369
  )
370
+
366
371
  if parameters == {}:
367
372
  return
368
373
 
@@ -380,7 +385,7 @@ def event_filtering(self):
380
385
  cursor.execute("SELECT MIN(start), MAX(stop) FROM aggregated_events")
381
386
  min_time, max_time = cursor.fetchone()
382
387
 
383
- if parameters[cfg.TIME_INTERVAL] == cfg.TIME_ARBITRARY_INTERVAL:
388
+ if parameters[cfg.TIME_INTERVAL] in (cfg.TIME_ARBITRARY_INTERVAL, cfg.TIME_OBS_INTERVAL):
384
389
  min_time = float(parameters[cfg.START_TIME])
385
390
  max_time = float(parameters[cfg.END_TIME])
386
391
 
@@ -443,6 +448,6 @@ def event_filtering(self):
443
448
 
444
449
  w = Advanced_event_filtering_dialog(events)
445
450
  w.lb_time_interval.setText(
446
- ("Time interval: " f"{util.smart_time_format(min_time, self.timeFormat)} - " f"{util.smart_time_format(max_time, self.timeFormat)}")
451
+ (f"Time interval: {util.smart_time_format(min_time, self.timeFormat)} - {util.smart_time_format(max_time, self.timeFormat)}")
447
452
  )
448
453
  w.exec_()
@@ -17,10 +17,9 @@ def run(df: pd.DataFrame):
17
17
  Calculate the number of occurrences of behaviors by subject.
18
18
  """
19
19
 
20
- string_results: str = ""
21
20
  df_results: pd.DataFrame = df.groupby(["Subject", "Behavior"])["Behavior"].count().reset_index(name="number of occurences")
22
21
 
23
- return df_results, string_results
22
+ return df_results
24
23
 
25
24
 
26
25
  def main(df: pd.DataFrame, observations_list: list = [], parameters: dict = {}) -> pd.DataFrame:
@@ -26,8 +26,6 @@ def run(df: pd.DataFrame):
26
26
  - % of total subject observation duration
27
27
  """
28
28
 
29
- string_results: str = "test\ntest1"
30
-
31
29
  group_by = ["Subject", "Behavior"]
32
30
 
33
31
  dfs = [
@@ -60,7 +58,7 @@ def run(df: pd.DataFrame):
60
58
  for df in dfs[1:]:
61
59
  merged_df = pd.merge(merged_df, df, on=group_by)
62
60
 
63
- return merged_df, string_results
61
+ return merged_df
64
62
 
65
63
 
66
64
  def main(df: pd.DataFrame, observations_list: list = [], parameters: dict = {}) -> pd.DataFrame:
@@ -79,6 +79,14 @@ def create_behavior_binary_table(pj: dict, selected_observations: list, paramete
79
79
  max_obs_length, _ = observation_operations.observation_length(pj, [obs_id])
80
80
  end_time = dec(max_obs_length)
81
81
 
82
+ if parameters_obs["time"] == cfg.TIME_OBS_INTERVAL:
83
+ obs_interval = pj[cfg.OBSERVATIONS][obs_id][cfg.OBSERVATION_TIME_INTERVAL]
84
+ offset = pj[cfg.OBSERVATIONS][obs_id][cfg.TIME_OFFSET]
85
+ start_time = dec(obs_interval[0]) + offset
86
+ # Use max observation length for end time if no interval is defined (=0)
87
+ max_obs_length, _ = observation_operations.observation_length(pj, [obs_id])
88
+ end_time = dec(obs_interval[1]) + offset if obs_interval[1] != 0 else dec(max_obs_length)
89
+
82
90
  if obs_id not in results_df:
83
91
  results_df[obs_id] = {}
84
92
 
@@ -201,11 +209,15 @@ def behavior_binary_table(self):
201
209
 
202
210
  start_coding, end_coding, _ = observation_operations.coding_time(self.pj[cfg.OBSERVATIONS], selected_observations)
203
211
 
212
+ start_interval, end_interval = observation_operations.time_intervals_range(self.pj[cfg.OBSERVATIONS], selected_observations)
213
+
204
214
  parameters = select_subj_behav.choose_obs_subj_behav_category(
205
215
  self,
206
216
  selected_observations,
207
217
  start_coding=start_coding,
208
218
  end_coding=end_coding,
219
+ start_interval=start_interval,
220
+ end_interval=end_interval,
209
221
  maxTime=max_media_duration_all_obs,
210
222
  show_include_modifiers=True,
211
223
  show_exclude_non_coded_behaviors=True,
@@ -256,9 +256,13 @@ HAS_AUDIO_IDX = 6
256
256
  STATE_EVENT = "State event"
257
257
  STATE_EVENT_WITH_CODING_MAP = "State event with coding map"
258
258
 
259
+ STATE_EVENT_TYPES = [STATE_EVENT, STATE_EVENT_WITH_CODING_MAP]
260
+
259
261
  POINT_EVENT = "Point event"
260
262
  POINT_EVENT_WITH_CODING_MAP = "Point event with coding map"
261
263
 
264
+ POINT_EVENT_TYPES = [POINT_EVENT, POINT_EVENT_WITH_CODING_MAP]
265
+
262
266
  BEHAVIOR_TYPES = [
263
267
  POINT_EVENT,
264
268
  STATE_EVENT,
@@ -395,6 +399,7 @@ TIMESTAMP_idx = 3
395
399
 
396
400
  TIME_FULL_OBS = "full obs"
397
401
  TIME_EVENTS = "limit to events"
402
+ TIME_OBS_INTERVAL = "interval of observation"
398
403
  TIME_ARBITRARY_INTERVAL = "time interval"
399
404
 
400
405
  AVAILABLE_INDEP_VAR_TYPES = [NUMERIC, TEXT, SET_OF_VALUES, TIMESTAMP]
@@ -36,19 +36,19 @@ def read(self):
36
36
  read config file
37
37
  """
38
38
 
39
- iniFilePath = pl.Path.home() / pl.Path(".boris")
39
+ ini_fil_p_pe_p_path = pl.Path.home() / pl.Path(".boris")
40
40
 
41
- logging.debug(f"read config file: {iniFilePath}")
41
+ logging.debug(f"read config file: {ini_fil_p_pe_p_path}")
42
42
 
43
- if iniFilePath.is_file():
44
- settings = QSettings(str(iniFilePath), QSettings.IniFormat)
43
+ if ini_fil_p_pe_p_path.is_file():
44
+ settings = QSettings(str(ini_fil_p_pe_p_path), QSettings.IniFormat)
45
45
 
46
46
  try:
47
47
  self.config_param = settings.value("config")
48
48
  except Exception:
49
- self.config_param = None
49
+ self.config_param = {}
50
50
 
51
- if self.config_param is None:
51
+ if self.config_param == {}:
52
52
  self.config_param = cfg.INIT_PARAM
53
53
 
54
54
  # for back compatibility
@@ -245,7 +245,7 @@ def read(self):
245
245
  if (
246
246
  dialog.MessageDialog(
247
247
  cfg.programName,
248
- ("The colors list contain colors that are very light.\n" "Do you want to reload the default colors list?"),
248
+ ("The colors list contain colors that are very light.\nDo you want to reload the default colors list?"),
249
249
  [cfg.NO, cfg.YES],
250
250
  )
251
251
  == cfg.YES
@@ -262,7 +262,7 @@ def read(self):
262
262
  if (
263
263
  dialog.MessageDialog(
264
264
  cfg.programName,
265
- ("The colors list contain colors that are very light.\n" "Do you want to reload the default colors list?"),
265
+ ("The colors list contain colors that are very light.\nDo you want to reload the default colors list?"),
266
266
  [cfg.NO, cfg.YES],
267
267
  )
268
268
  == cfg.YES
@@ -160,7 +160,9 @@ def connections(self):
160
160
  self.actionAll_transitions.triggered.connect(lambda: transitions.transitions_matrix(self, "frequency"))
161
161
  self.actionNumber_of_transitions.triggered.connect(lambda: transitions.transitions_matrix(self, "number"))
162
162
 
163
- self.actionFrequencies_of_transitions_after_behaviors.triggered.connect(lambda: self.transitions_matrix("frequencies_after_behaviors"))
163
+ self.actionFrequencies_of_transitions_after_behaviors.triggered.connect(
164
+ lambda: transitions.transitions_matrix(self, "frequencies_after_behaviors")
165
+ )
164
166
 
165
167
  # menu playback
166
168
  self.actionJumpTo.triggered.connect(self.jump_to)
@@ -82,6 +82,8 @@ def get_cooccurence(self):
82
82
  if not_ok or not selected_observations:
83
83
  return
84
84
 
85
+ max_media_duration_all_obs, _ = observation_operations.media_duration(self.pj[cfg.OBSERVATIONS], selected_observations)
86
+
85
87
  start_coding, end_coding, _ = observation_operations.coding_time(self.pj[cfg.OBSERVATIONS], selected_observations)
86
88
  # exit with message if events do not have timestamp
87
89
  if start_coding.is_nan():
@@ -94,12 +96,18 @@ def get_cooccurence(self):
94
96
  )
95
97
  return
96
98
 
99
+ start_interval, end_interval = observation_operations.time_intervals_range(self.pj[cfg.OBSERVATIONS], selected_observations)
100
+
97
101
  while True:
98
102
  flag_ok: bool = True
99
103
  parameters = select_subj_behav.choose_obs_subj_behav_category(
100
104
  self,
101
105
  selected_observations,
102
- window_title="Select the behaviors",
106
+ start_coding=start_coding,
107
+ end_coding=end_coding,
108
+ start_interval=start_interval,
109
+ end_interval=end_interval,
110
+ maxTime=max_media_duration_all_obs,
103
111
  n_observations=len(selected_observations),
104
112
  show_include_modifiers=False,
105
113
  show_exclude_non_coded_behaviors=True,