boris-behav-obs 9.0.1__tar.gz → 9.0.4__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.
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/PKG-INFO +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/__init__.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/__main__.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/about.py +2 -2
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/add_modifier.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/add_modifier_ui.py +22 -22
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/advanced_event_filtering.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/analysis_plugins/number_of_occurences.py +6 -3
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/analysis_plugins/number_of_occurences_by_independent_variable.py +6 -4
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/analysis_plugins/time_budget.py +24 -14
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/behav_coding_map_creator.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/behavior_binary_table.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/behaviors_coding_map.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/boris_cli.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/cmd_arguments.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/coding_pad.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/config.py +16 -9
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/config_file.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/connections.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/converters.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/cooccurence.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/core.py +144 -176
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/db_functions.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/dialog.py +10 -277
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/edit_event.py +8 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/event_operations.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/events_cursor.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/events_snapshots.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/exclusion_matrix.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/export_events.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/export_observation.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/external_processes.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/geometric_measurement.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/gui_utilities.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/image_overlay.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/import_observations.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/irr.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/latency.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/map_creator.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/measurement_widget.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/media_file.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/menu_options.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/modifiers_coding_map.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/observation.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/observation_operations.py +530 -425
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/observations_list.py +3 -3
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/otx_parser.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/param_panel.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/player_dock_widget.py +13 -9
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/plot_data_module.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/plot_events.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/plot_events_rt.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/plot_spectrogram_rt.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/plot_waveform_rt.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/plugins.py +2 -2
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/preferences.py +6 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/preferences_ui.py +7 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/project.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/project_functions.py +73 -76
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/project_import_export.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/select_modifiers.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/select_observations.py +6 -6
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/select_subj_behav.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/state_events.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/subjects_pad.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/synthetic_time_budget.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/time_budget_functions.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/time_budget_widget.py +5 -5
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/transitions.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/utilities.py +8 -8
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/version.py +3 -3
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/video_equalizer.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/video_operations.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/write_event.py +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris_behav_obs.egg-info/PKG-INFO +1 -1
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/pyproject.toml +2 -2
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/LICENSE.TXT +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/MANIFEST.in +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/README.TXT +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/README.md +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/analysis_plugins/__init__.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/converters_ui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/core_qrc.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/core_ui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/dev.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/duration_widget.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/edit_event_ui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/mpv-1.0.3.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/mpv.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/mpv2.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/observation_ui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/param_panel_ui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/portion/__init__.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/portion/const.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/portion/dict.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/portion/func.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/portion/interval.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/portion/io.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/project_ui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/qrc_boris.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/qrc_boris5.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/video_equalizer_ui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/view_df.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/view_df_ui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris_behav_obs.egg-info/SOURCES.txt +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris_behav_obs.egg-info/dependency_links.txt +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris_behav_obs.egg-info/entry_points.txt +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris_behav_obs.egg-info/requires.txt +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris_behav_obs.egg-info/top_level.txt +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/setup.cfg +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_db_functions.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_export_observation.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_irr.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_observation_gui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_otx_parser.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_preferences_gui.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_project_functions.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_time_budget.py +0 -0
- {boris_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/tests/test_utilities.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
BORIS
|
|
3
3
|
Behavioral Observation Research Interactive Software
|
|
4
|
-
Copyright 2012-
|
|
4
|
+
Copyright 2012-2025 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
|
|
@@ -93,7 +93,7 @@ def actionAbout_activated(self):
|
|
|
93
93
|
about_dialog.setInformativeText(
|
|
94
94
|
(
|
|
95
95
|
f"<b>{cfg.programName}</b> v. {version.__version__} - {version.__version_date__}"
|
|
96
|
-
"<p>Copyright © 2012-
|
|
96
|
+
"<p>Copyright © 2012-2025 Olivier Friard - Marco Gamba<br>"
|
|
97
97
|
"Department of Life Sciences and Systems Biology<br>"
|
|
98
98
|
"University of Torino - Italy<br>"
|
|
99
99
|
"<br>"
|
|
@@ -95,9 +95,9 @@ class Ui_Dialog(object):
|
|
|
95
95
|
self.tabWidgetModifiersSets = QTabWidget(Dialog)
|
|
96
96
|
self.tabWidgetModifiersSets.setObjectName(u"tabWidgetModifiersSets")
|
|
97
97
|
self.tabWidgetModifiersSets.setMaximumSize(QSize(16777215, 30))
|
|
98
|
-
self.tabWidgetModifiersSets.setTabPosition(QTabWidget.North)
|
|
99
|
-
self.tabWidgetModifiersSets.setTabShape(QTabWidget.Rounded)
|
|
100
|
-
self.tabWidgetModifiersSets.setElideMode(Qt.ElideNone)
|
|
98
|
+
self.tabWidgetModifiersSets.setTabPosition(QTabWidget.TabPosition.North)
|
|
99
|
+
self.tabWidgetModifiersSets.setTabShape(QTabWidget.TabShape.Rounded)
|
|
100
|
+
self.tabWidgetModifiersSets.setElideMode(Qt.TextElideMode.ElideNone)
|
|
101
101
|
self.tabWidgetModifiersSets.setDocumentMode(True)
|
|
102
102
|
|
|
103
103
|
self.verticalLayout.addWidget(self.tabWidgetModifiersSets)
|
|
@@ -158,6 +158,11 @@ class Ui_Dialog(object):
|
|
|
158
158
|
|
|
159
159
|
self.horizontalLayout.addWidget(self.pbMoveDown)
|
|
160
160
|
|
|
161
|
+
self.pb_sort_modifiers = QPushButton(Dialog)
|
|
162
|
+
self.pb_sort_modifiers.setObjectName(u"pb_sort_modifiers")
|
|
163
|
+
|
|
164
|
+
self.horizontalLayout.addWidget(self.pb_sort_modifiers)
|
|
165
|
+
|
|
161
166
|
self.pbRemoveModifier = QPushButton(Dialog)
|
|
162
167
|
self.pbRemoveModifier.setObjectName(u"pbRemoveModifier")
|
|
163
168
|
|
|
@@ -166,11 +171,6 @@ class Ui_Dialog(object):
|
|
|
166
171
|
|
|
167
172
|
self.verticalLayout.addLayout(self.horizontalLayout)
|
|
168
173
|
|
|
169
|
-
self.pb_sort_modifiers = QPushButton(Dialog)
|
|
170
|
-
self.pb_sort_modifiers.setObjectName(u"pb_sort_modifiers")
|
|
171
|
-
|
|
172
|
-
self.verticalLayout.addWidget(self.pb_sort_modifiers)
|
|
173
|
-
|
|
174
174
|
self.horizontalLayout_3 = QHBoxLayout()
|
|
175
175
|
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
|
|
176
176
|
self.pbAddSet = QPushButton(Dialog)
|
|
@@ -178,6 +178,16 @@ class Ui_Dialog(object):
|
|
|
178
178
|
|
|
179
179
|
self.horizontalLayout_3.addWidget(self.pbAddSet)
|
|
180
180
|
|
|
181
|
+
self.pbMoveSetLeft = QPushButton(Dialog)
|
|
182
|
+
self.pbMoveSetLeft.setObjectName(u"pbMoveSetLeft")
|
|
183
|
+
|
|
184
|
+
self.horizontalLayout_3.addWidget(self.pbMoveSetLeft)
|
|
185
|
+
|
|
186
|
+
self.pbMoveSetRight = QPushButton(Dialog)
|
|
187
|
+
self.pbMoveSetRight.setObjectName(u"pbMoveSetRight")
|
|
188
|
+
|
|
189
|
+
self.horizontalLayout_3.addWidget(self.pbMoveSetRight)
|
|
190
|
+
|
|
181
191
|
self.pbRemoveSet = QPushButton(Dialog)
|
|
182
192
|
self.pbRemoveSet.setObjectName(u"pbRemoveSet")
|
|
183
193
|
|
|
@@ -188,16 +198,6 @@ class Ui_Dialog(object):
|
|
|
188
198
|
|
|
189
199
|
self.horizontalLayout_4 = QHBoxLayout()
|
|
190
200
|
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
|
|
191
|
-
self.pbMoveSetLeft = QPushButton(Dialog)
|
|
192
|
-
self.pbMoveSetLeft.setObjectName(u"pbMoveSetLeft")
|
|
193
|
-
|
|
194
|
-
self.horizontalLayout_4.addWidget(self.pbMoveSetLeft)
|
|
195
|
-
|
|
196
|
-
self.pbMoveSetRight = QPushButton(Dialog)
|
|
197
|
-
self.pbMoveSetRight.setObjectName(u"pbMoveSetRight")
|
|
198
|
-
|
|
199
|
-
self.horizontalLayout_4.addWidget(self.pbMoveSetRight)
|
|
200
|
-
|
|
201
201
|
|
|
202
202
|
self.verticalLayout.addLayout(self.horizontalLayout_4)
|
|
203
203
|
|
|
@@ -258,8 +258,8 @@ class Ui_Dialog(object):
|
|
|
258
258
|
self.lbModifier.setText(QCoreApplication.translate("Dialog", u"Modifier", None))
|
|
259
259
|
self.lbCode.setText(QCoreApplication.translate("Dialog", u"Key code", None))
|
|
260
260
|
self.lbCodeHelp.setText(QCoreApplication.translate("Dialog", u"Key code is case sensitive. Type one character or a function key (F1, F2... F12)", None))
|
|
261
|
-
self.pbAddModifier.setText("")
|
|
262
|
-
self.pbModifyModifier.setText("")
|
|
261
|
+
self.pbAddModifier.setText(QCoreApplication.translate("Dialog", u"->", None))
|
|
262
|
+
self.pbModifyModifier.setText(QCoreApplication.translate("Dialog", u"<-", None))
|
|
263
263
|
self.lb_name.setText(QCoreApplication.translate("Dialog", u"Set name", None))
|
|
264
264
|
self.lb_description.setText(QCoreApplication.translate("Dialog", u"Description", None))
|
|
265
265
|
self.lbType.setText(QCoreApplication.translate("Dialog", u"Modifier type", None))
|
|
@@ -271,12 +271,12 @@ class Ui_Dialog(object):
|
|
|
271
271
|
self.lbValues.setText(QCoreApplication.translate("Dialog", u"Values", None))
|
|
272
272
|
self.pbMoveUp.setText(QCoreApplication.translate("Dialog", u"Move modifier up", None))
|
|
273
273
|
self.pbMoveDown.setText(QCoreApplication.translate("Dialog", u"Move modifier down", None))
|
|
274
|
-
self.pbRemoveModifier.setText(QCoreApplication.translate("Dialog", u"Remove modifier", None))
|
|
275
274
|
self.pb_sort_modifiers.setText(QCoreApplication.translate("Dialog", u"Sort modifiers", None))
|
|
275
|
+
self.pbRemoveModifier.setText(QCoreApplication.translate("Dialog", u"Remove modifier", None))
|
|
276
276
|
self.pbAddSet.setText(QCoreApplication.translate("Dialog", u"Add set of modifiers", None))
|
|
277
|
-
self.pbRemoveSet.setText(QCoreApplication.translate("Dialog", u"Remove set of modifiers", None))
|
|
278
277
|
self.pbMoveSetLeft.setText(QCoreApplication.translate("Dialog", u"Move set left", None))
|
|
279
278
|
self.pbMoveSetRight.setText(QCoreApplication.translate("Dialog", u"Move set right", None))
|
|
279
|
+
self.pbRemoveSet.setText(QCoreApplication.translate("Dialog", u"Remove set of modifiers", None))
|
|
280
280
|
self.pb_add_subjects.setText(QCoreApplication.translate("Dialog", u"Add subjects as modifiers", None))
|
|
281
281
|
self.pb_load_file.setText(QCoreApplication.translate("Dialog", u"Load modifiers from file", None))
|
|
282
282
|
self.pbCancel.setText(QCoreApplication.translate("Dialog", u"Cancel", None))
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
BORIS
|
|
3
3
|
Behavioral Observation Research Interactive Software
|
|
4
|
-
Copyright 2012-
|
|
4
|
+
Copyright 2012-2025 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_behav_obs-9.0.1 → boris_behav_obs-9.0.4}/boris/analysis_plugins/number_of_occurences.py
RENAMED
|
@@ -6,8 +6,8 @@ number of occurences of behaviors
|
|
|
6
6
|
|
|
7
7
|
import pandas as pd
|
|
8
8
|
|
|
9
|
-
__version__ = "0.
|
|
10
|
-
__version_date__ = "
|
|
9
|
+
__version__ = "0.2.0"
|
|
10
|
+
__version_date__ = "2025-01-25"
|
|
11
11
|
__plugin_name__ = "Number of occurences of behaviors"
|
|
12
12
|
__author__ = "Olivier Friard - University of Torino - Italy"
|
|
13
13
|
|
|
@@ -17,7 +17,10 @@ def run(df: pd.DataFrame):
|
|
|
17
17
|
Calculate the number of occurrences of behaviors by subject.
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
string_results: str = ""
|
|
21
|
+
df_results: pd.DataFrame = df.groupby(["Subject", "Behavior"])["Behavior"].count().reset_index(name="number of occurences")
|
|
22
|
+
|
|
23
|
+
return df_results, string_results
|
|
21
24
|
|
|
22
25
|
|
|
23
26
|
def main(df: pd.DataFrame, observations_list: list = [], parameters: dict = {}) -> pd.DataFrame:
|
|
@@ -6,8 +6,8 @@ number of occurences of behaviors by independent_variable
|
|
|
6
6
|
|
|
7
7
|
import pandas as pd
|
|
8
8
|
|
|
9
|
-
__version__ = "0.
|
|
10
|
-
__version_date__ = "
|
|
9
|
+
__version__ = "0.2.0"
|
|
10
|
+
__version_date__ = "2025-01-25"
|
|
11
11
|
__plugin_name__ = "Number of occurences of behaviors by subject by independent_variable"
|
|
12
12
|
__author__ = "Olivier Friard - University of Torino - Italy"
|
|
13
13
|
|
|
@@ -17,7 +17,9 @@ def run(df: pd.DataFrame):
|
|
|
17
17
|
Calculate the number of occurrences of behaviors by subject and by independent_variable.
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
str_results: str = ""
|
|
21
|
+
|
|
22
|
+
df_results: df.DataFrame = (
|
|
21
23
|
df.groupby(
|
|
22
24
|
[
|
|
23
25
|
"independent variable 'Weather'",
|
|
@@ -29,7 +31,7 @@ def run(df: pd.DataFrame):
|
|
|
29
31
|
.reset_index(name="number of occurences")
|
|
30
32
|
)
|
|
31
33
|
|
|
32
|
-
return
|
|
34
|
+
return df_results, str_results
|
|
33
35
|
|
|
34
36
|
|
|
35
37
|
def main(df: pd.DataFrame, observations_list: list = [], parameters: dict = {}) -> pd.DataFrame:
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"""
|
|
2
2
|
BORIS plugin
|
|
3
|
+
|
|
4
|
+
Time budget
|
|
3
5
|
"""
|
|
4
6
|
|
|
5
7
|
import pandas as pd
|
|
8
|
+
import numpy as np
|
|
6
9
|
|
|
7
|
-
__version__ = "0.
|
|
8
|
-
__version_date__ = "
|
|
10
|
+
__version__ = "0.2.0"
|
|
11
|
+
__version_date__ = "2025-01-25"
|
|
9
12
|
__plugin_name__ = "Time budget"
|
|
10
13
|
__author__ = "Olivier Friard - University of Torino - Italy"
|
|
11
14
|
|
|
@@ -20,37 +23,44 @@ def run(df: pd.DataFrame):
|
|
|
20
23
|
- Standard deviation of behavior duration (in seconds)
|
|
21
24
|
- Inter-event intervals mean (in seconds)
|
|
22
25
|
- Inter-event intervals standard deviation (in seconds)
|
|
23
|
-
- % of total duration
|
|
26
|
+
- % of total subject observation duration
|
|
24
27
|
"""
|
|
25
28
|
|
|
29
|
+
string_results: str = "test\ntest1"
|
|
30
|
+
|
|
31
|
+
group_by = ["Subject", "Behavior"]
|
|
32
|
+
|
|
26
33
|
dfs = [
|
|
27
|
-
df.groupby(
|
|
28
|
-
df.groupby(
|
|
29
|
-
df.groupby(
|
|
30
|
-
df.groupby(
|
|
34
|
+
df.groupby(group_by)["Behavior"].count().reset_index(name="number of occurences"),
|
|
35
|
+
df.groupby(group_by)["Duration (s)"].sum().reset_index(name="total duration"),
|
|
36
|
+
df.groupby(group_by)["Duration (s)"].mean().astype(float).round(3).reset_index(name="duration mean"),
|
|
37
|
+
df.groupby(group_by)["Duration (s)"].std().astype(float).round(3).reset_index(name="duration std dev"),
|
|
31
38
|
]
|
|
32
39
|
|
|
33
40
|
# inter events
|
|
34
41
|
df2 = df.sort_values(by=["Observation id", "Subject", "Behavior", "Start (s)"])
|
|
35
42
|
df2["diff"] = df2.groupby(["Observation id", "Subject", "Behavior"])["Start (s)"].shift(periods=-1) - df2["Stop (s)"]
|
|
36
43
|
|
|
37
|
-
dfs.append(df2.groupby(
|
|
44
|
+
dfs.append(df2.groupby(group_by)["diff"].mean().astype(float).round(3).reset_index(name="inter-event intervals mean"))
|
|
45
|
+
|
|
46
|
+
dfs.append(df2.groupby(group_by)["diff"].std().astype(float).round(3).reset_index(name="inter-event intervals std dev"))
|
|
47
|
+
|
|
48
|
+
# % of total subject observation time
|
|
38
49
|
|
|
39
|
-
|
|
50
|
+
interval = (df.groupby(["Subject"])["Stop (s)"].max() - df.groupby(["Subject"])["Start (s)"].min()).replace(0, np.nan)
|
|
40
51
|
|
|
41
|
-
# % of time
|
|
42
52
|
dfs.append(
|
|
43
|
-
(100 * df.groupby(
|
|
53
|
+
(100 * df.groupby(group_by)["Duration (s)"].sum() / interval)
|
|
44
54
|
.astype(float)
|
|
45
55
|
.round(3)
|
|
46
|
-
.reset_index(name="% of total duration")
|
|
56
|
+
.reset_index(name="% of total subject observation duration")
|
|
47
57
|
)
|
|
48
58
|
|
|
49
59
|
merged_df = dfs[0]
|
|
50
60
|
for df in dfs[1:]:
|
|
51
|
-
merged_df = pd.merge(merged_df, df, on=
|
|
61
|
+
merged_df = pd.merge(merged_df, df, on=group_by)
|
|
52
62
|
|
|
53
|
-
return merged_df
|
|
63
|
+
return merged_df, string_results
|
|
54
64
|
|
|
55
65
|
|
|
56
66
|
def main(df: pd.DataFrame, observations_list: list = [], parameters: dict = {}) -> pd.DataFrame:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
BORIS
|
|
3
3
|
Behavioral Observation Research Interactive Software
|
|
4
|
-
Copyright 2012-
|
|
4
|
+
Copyright 2012-2025 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
|
|
@@ -3,7 +3,7 @@ BORIS CLI
|
|
|
3
3
|
|
|
4
4
|
Behavioral Observation Research Interactive Software Command Line Interface
|
|
5
5
|
|
|
6
|
-
Copyright 2012-
|
|
6
|
+
Copyright 2012-2025 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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
BORIS
|
|
3
3
|
Behavioral Observation Research Interactive Software
|
|
4
|
-
Copyright 2012-
|
|
4
|
+
Copyright 2012-2025 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-
|
|
4
|
+
Copyright 2012-2025 Olivier Friard
|
|
5
5
|
|
|
6
6
|
This file is part of BORIS.
|
|
7
7
|
|
|
@@ -22,6 +22,10 @@ This file is part of BORIS.
|
|
|
22
22
|
|
|
23
23
|
programName: str = "BORIS"
|
|
24
24
|
|
|
25
|
+
MACOS_CODE = "darwin"
|
|
26
|
+
MPV_SOCKET = "/tmp/mpvsocket"
|
|
27
|
+
|
|
28
|
+
|
|
25
29
|
ETHOGRAM_REPOSITORY_URL = "https://www.boris.unito.it/static/ethograms"
|
|
26
30
|
|
|
27
31
|
project_format_version: str = "7.0"
|
|
@@ -130,11 +134,21 @@ CHAR_FORBIDDEN_IN_MODIFIERS = "(|),`~"
|
|
|
130
134
|
ADAPT_FAST_JUMP = "adapt_fast_jump"
|
|
131
135
|
ADAPT_FAST_JUMP_DEFAULT = False
|
|
132
136
|
|
|
137
|
+
TIME = "time"
|
|
138
|
+
BEHAVIOR_CODE = "code"
|
|
139
|
+
SUBJECT = "subject"
|
|
140
|
+
MODIFIER = "modifier"
|
|
141
|
+
COMMENT = "comment"
|
|
142
|
+
BEHAVIOR_KEY = "key"
|
|
143
|
+
SUBJECT_KEY = "key"
|
|
144
|
+
BEHAVIOR_CATEGORY = "category"
|
|
133
145
|
|
|
134
|
-
|
|
146
|
+
|
|
147
|
+
subjectsFields = [SUBJECT_KEY, SUBJECT_NAME, DESCRIPTION]
|
|
135
148
|
|
|
136
149
|
UNPAIRED = "UNPAIRED"
|
|
137
150
|
DISPLAY_SUBTITLES = "display_subtitles"
|
|
151
|
+
CHECK_PROJECT_INTEGRITY = "check_project_integrity"
|
|
138
152
|
|
|
139
153
|
|
|
140
154
|
YES = "Yes"
|
|
@@ -186,13 +200,6 @@ DATA_PLOT_FIELDS = {
|
|
|
186
200
|
}
|
|
187
201
|
DATA_PLOT_STYLES = ["b-", "r-", "g-", "bo", "ro", "go"]
|
|
188
202
|
|
|
189
|
-
TIME = "time"
|
|
190
|
-
BEHAVIOR_CODE = "code"
|
|
191
|
-
SUBJECT = "subject"
|
|
192
|
-
MODIFIER = "modifier"
|
|
193
|
-
COMMENT = "comment"
|
|
194
|
-
BEHAVIOR_KEY = "key"
|
|
195
|
-
BEHAVIOR_CATEGORY = "category"
|
|
196
203
|
|
|
197
204
|
FILE_PATH = "file_path"
|
|
198
205
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
BORIS
|
|
3
3
|
Behavioral Observation Research Interactive Software
|
|
4
|
-
Copyright 2012-
|
|
4
|
+
Copyright 2012-2025 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-
|
|
4
|
+
Copyright 2012-2025 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
|