boris-behav-obs 8.27.2__tar.gz → 8.27.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-8.27.2 → boris_behav_obs-8.27.4}/PKG-INFO +1 -1
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/export_events.py +7 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/preferences_ui.py +2 -2
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/project.py +4 -9
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/project_import_export.py +26 -17
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/version.py +2 -2
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris_behav_obs.egg-info/PKG-INFO +1 -1
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/pyproject.toml +2 -2
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/LICENSE.TXT +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/MANIFEST.in +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/README.TXT +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/README.rst +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/__init__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/__main__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/about.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/add_modifier.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/add_modifier_ui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/advanced_event_filtering.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/behav_coding_map_creator.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/behavior_binary_table.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/behaviors_coding_map.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/boris_cli.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/cmd_arguments.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/coding_pad.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/config.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/config_file.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/connections.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/converters.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/converters_ui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/cooccurence.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/core.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/core_qrc.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/core_ui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/db_functions.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/dev.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/dialog.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/duration_widget.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/edit_event.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/edit_event_ui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/event_operations.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/events_cursor.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/events_snapshots.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/exclusion_matrix.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/export_observation.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/external_processes.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/geometric_measurement.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/gui_utilities.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/image_overlay.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/import_observations.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/irr.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/latency.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/map_creator.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/measurement_widget.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/media_file.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/menu_options.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/modifiers_coding_map.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/mpv.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/mpv2.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/observation.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/observation_operations.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/observation_ui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/observations_list.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/otx_parser.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/param_panel.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/param_panel_ui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/player_dock_widget.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/plot_data_module.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/plot_events.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/plot_events_rt.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/plot_spectrogram_rt.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/plot_waveform_rt.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/portion/__init__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/portion/const.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/portion/dict.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/portion/func.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/portion/interval.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/portion/io.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/preferences.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/project_functions.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/project_ui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/__init__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/__main__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/colorsystem.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/dark/__init__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/dark/darkstyle_rc.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/dark/palette.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/example/__init__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/example/__main__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/example/ui/__init__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/light/__init__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/light/lightstyle_rc.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/light/palette.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/palette.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/utils/__init__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/utils/__main__.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/utils/images.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qdarkstyle/utils/scss.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qrc_boris.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/qrc_boris5.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/select_modifiers.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/select_observations.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/select_subj_behav.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/state_events.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/subjects_pad.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/synthetic_time_budget.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/time_budget_functions.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/time_budget_widget.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/transitions.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/utilities.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/video_equalizer.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/video_equalizer_ui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/video_operations.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/vlc_local.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris/write_event.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris_behav_obs.egg-info/SOURCES.txt +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris_behav_obs.egg-info/dependency_links.txt +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris_behav_obs.egg-info/entry_points.txt +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris_behav_obs.egg-info/requires.txt +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris_behav_obs.egg-info/top_level.txt +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/setup.cfg +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_db_functions.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_export_observation.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_irr.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_observation_gui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_otx_parser.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_preferences_gui.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_project_functions.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_time_budget.py +0 -0
- {boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/tests/test_utilities.py +0 -0
|
@@ -461,6 +461,8 @@ def export_aggregated_events(self):
|
|
|
461
461
|
_, max_modifiers = export_observation.export_aggregated_events(self.pj, parameters, obs_id)
|
|
462
462
|
tot_max_modifiers = max(tot_max_modifiers, max_modifiers)
|
|
463
463
|
|
|
464
|
+
logging.debug(f"tot_max_modifiers: {tot_max_modifiers}")
|
|
465
|
+
|
|
464
466
|
data_grouped_obs = tablib.Dataset()
|
|
465
467
|
|
|
466
468
|
mem_command: str = "" # remember user choice when file already exists
|
|
@@ -517,6 +519,8 @@ def export_aggregated_events(self):
|
|
|
517
519
|
if not r:
|
|
518
520
|
QMessageBox.warning(None, cfg.programName, msg, QMessageBox.Ok | QMessageBox.Default, QMessageBox.NoButton)
|
|
519
521
|
|
|
522
|
+
"""
|
|
523
|
+
# disabled after introduction of the force_number_modifiers parameter in export_aggregated_events function
|
|
520
524
|
if len(data_single_obs_sorted) and max_modifiers < tot_max_modifiers:
|
|
521
525
|
for i in range(tot_max_modifiers - max_modifiers):
|
|
522
526
|
data_single_obs_sorted.insert_col(
|
|
@@ -524,9 +528,12 @@ def export_aggregated_events(self):
|
|
|
524
528
|
col=[""] * (len(list(data_single_obs_sorted))),
|
|
525
529
|
header=f"Modif #{i}",
|
|
526
530
|
)
|
|
531
|
+
"""
|
|
532
|
+
|
|
527
533
|
data_grouped_obs.extend(data_single_obs_sorted)
|
|
528
534
|
|
|
529
535
|
data_grouped_obs_all = tablib.Dataset(headers=list(fields_type(tot_max_modifiers).keys()))
|
|
536
|
+
|
|
530
537
|
data_grouped_obs_all.extend(data_grouped_obs)
|
|
531
538
|
data_grouped_obs_all.title = "Aggregated events"
|
|
532
539
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
|
|
3
|
-
# Form implementation generated from reading ui file 'preferences.ui'
|
|
3
|
+
# Form implementation generated from reading ui file 'boris/preferences.ui'
|
|
4
4
|
#
|
|
5
5
|
# Created by: PyQt5 UI code generator 5.15.6
|
|
6
6
|
#
|
|
@@ -331,7 +331,7 @@ class Ui_prefDialog(object):
|
|
|
331
331
|
self.pb_reset_category_colors.setText(_translate("prefDialog", "Reset colors to default"))
|
|
332
332
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_colors), _translate("prefDialog", "Plot colors"))
|
|
333
333
|
self.label_9.setText(_translate("prefDialog", "Toolbar icons size"))
|
|
334
|
-
self.cb_darkmode.setText(_translate("prefDialog", "Dark mode"))
|
|
334
|
+
self.cb_darkmode.setText(_translate("prefDialog", "Dark mode (should be necessary to relaunch BORIS)"))
|
|
335
335
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_interface), _translate("prefDialog", "Interface"))
|
|
336
336
|
self.pb_refresh.setText(_translate("prefDialog", "Refresh"))
|
|
337
337
|
self.pbCancel.setText(_translate("prefDialog", "Cancel"))
|
|
@@ -578,7 +578,7 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
578
578
|
# convert modifier shortcuts
|
|
579
579
|
if self.twBehaviors.item(row, cfg.behavioursFields[cfg.MODIFIERS]).text():
|
|
580
580
|
modifiers_dict = (
|
|
581
|
-
|
|
581
|
+
json.loads(self.twBehaviors.item(row, cfg.behavioursFields[cfg.MODIFIERS]).text())
|
|
582
582
|
if self.twBehaviors.item(row, cfg.behavioursFields[cfg.MODIFIERS]).text()
|
|
583
583
|
else {}
|
|
584
584
|
)
|
|
@@ -593,7 +593,7 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
593
593
|
except Exception:
|
|
594
594
|
logging.warning("error during conversion of modifier short cut to lower case")
|
|
595
595
|
|
|
596
|
-
self.twBehaviors.item(row, cfg.behavioursFields[cfg.MODIFIERS]).setText(
|
|
596
|
+
self.twBehaviors.item(row, cfg.behavioursFields[cfg.MODIFIERS]).setText(json.dumps(modifiers_dict))
|
|
597
597
|
|
|
598
598
|
def convert_subjects_keys_to_lower_case(self):
|
|
599
599
|
"""
|
|
@@ -796,7 +796,7 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
796
796
|
else:
|
|
797
797
|
QMessageBox.information(self, cfg.programName, "Change the behavior type on first column to select a coding map")
|
|
798
798
|
|
|
799
|
-
# check if double click on
|
|
799
|
+
# check if double click on behavior type
|
|
800
800
|
if column == cfg.behavioursFields["type"]:
|
|
801
801
|
self.behavior_type_doubleclicked(row)
|
|
802
802
|
|
|
@@ -808,6 +808,7 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
808
808
|
if column == cfg.behavioursFields[cfg.BEHAVIOR_CATEGORY]:
|
|
809
809
|
self.category_doubleclicked(row)
|
|
810
810
|
|
|
811
|
+
# check if double click on modifiers
|
|
811
812
|
if column == cfg.behavioursFields[cfg.MODIFIERS]:
|
|
812
813
|
# check if behavior has coding map
|
|
813
814
|
if (
|
|
@@ -1735,12 +1736,6 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
1735
1736
|
QMessageBox.critical(self, cfg.programName, "Error removing leading/trailing spaces in modifiers")
|
|
1736
1737
|
|
|
1737
1738
|
else:
|
|
1738
|
-
"""
|
|
1739
|
-
if row["modifiers"]:
|
|
1740
|
-
row["modifiers"] = eval(row["modifiers"])
|
|
1741
|
-
else:
|
|
1742
|
-
row["modifiers"] = {}
|
|
1743
|
-
"""
|
|
1744
1739
|
row["modifiers"] = json.loads(row["modifiers"]) if row["modifiers"] else {}
|
|
1745
1740
|
else:
|
|
1746
1741
|
row[field] = ""
|
|
@@ -133,7 +133,7 @@ def export_ethogram(self) -> None:
|
|
|
133
133
|
# modifiers
|
|
134
134
|
if self.twBehaviors.item(r, cfg.behavioursFields[cfg.MODIFIERS]).text():
|
|
135
135
|
# modifiers a string
|
|
136
|
-
modifiers_dict =
|
|
136
|
+
modifiers_dict = json.loads(self.twBehaviors.item(r, cfg.behavioursFields[cfg.MODIFIERS]).text())
|
|
137
137
|
modifiers_list = []
|
|
138
138
|
for key in modifiers_dict:
|
|
139
139
|
values = ",".join(modifiers_dict[key]["values"])
|
|
@@ -350,19 +350,22 @@ def import_ethogram_from_dict(self, project: dict):
|
|
|
350
350
|
item.setBackground(QColor(230, 230, 230))
|
|
351
351
|
|
|
352
352
|
else:
|
|
353
|
-
if field == cfg.MODIFIERS
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
353
|
+
if field == cfg.MODIFIERS:
|
|
354
|
+
if isinstance(project[cfg.ETHOGRAM][i][field], str):
|
|
355
|
+
modif_set_dict = {}
|
|
356
|
+
if project[cfg.ETHOGRAM][i][field]:
|
|
357
|
+
modif_set_list = project[cfg.ETHOGRAM][i][field].split("|")
|
|
358
|
+
for modif_set in modif_set_list:
|
|
359
|
+
modif_set_dict[str(len(modif_set_dict))] = {
|
|
360
|
+
"name": "",
|
|
361
|
+
"type": cfg.SINGLE_SELECTION,
|
|
362
|
+
"values": modif_set.split(","),
|
|
363
|
+
}
|
|
364
|
+
project[cfg.ETHOGRAM][i][field] = dict(modif_set_dict)
|
|
365
|
+
else:
|
|
366
|
+
item.setText(json.dumps(project[cfg.ETHOGRAM][i][field]))
|
|
367
|
+
else:
|
|
368
|
+
item.setText(project[cfg.ETHOGRAM][i][field])
|
|
366
369
|
|
|
367
370
|
if field not in cfg.ETHOGRAM_EDITABLE_FIELDS:
|
|
368
371
|
item.setFlags(Qt.ItemIsEnabled)
|
|
@@ -425,7 +428,10 @@ def load_dataframe_into_behaviors_tablewidget(self, df: pd.DataFrame) -> int:
|
|
|
425
428
|
for _, row in df.iterrows():
|
|
426
429
|
behavior = {"coding map": ""}
|
|
427
430
|
for x in ethogram_header:
|
|
428
|
-
|
|
431
|
+
if ethogram_header[x].upper() in row:
|
|
432
|
+
behavior[x] = row[ethogram_header[x].upper()] if str(row[ethogram_header[x].upper()]) != "nan" else ""
|
|
433
|
+
else:
|
|
434
|
+
behavior[x] = ""
|
|
429
435
|
|
|
430
436
|
self.twBehaviors.setRowCount(self.twBehaviors.rowCount() + 1)
|
|
431
437
|
|
|
@@ -460,8 +466,11 @@ def load_dataframe_into_behaviors_tablewidget(self, df: pd.DataFrame) -> int:
|
|
|
460
466
|
|
|
461
467
|
|
|
462
468
|
def import_behaviors_from_project(self):
|
|
469
|
+
"""
|
|
470
|
+
import ethogram from a BORIS project file
|
|
471
|
+
"""
|
|
463
472
|
fn = QFileDialog().getOpenFileName(
|
|
464
|
-
self, "Import behaviors from project file", "", ("Project files (*.boris *.boris.gz);;" "All files (*)")
|
|
473
|
+
self, "Import behaviors from BORIS project file", "", ("Project files (*.boris *.boris.gz);;" "All files (*)")
|
|
465
474
|
)
|
|
466
475
|
file_name = fn[0] if type(fn) is tuple else fn
|
|
467
476
|
|
|
@@ -474,7 +483,7 @@ def import_behaviors_from_project(self):
|
|
|
474
483
|
|
|
475
484
|
def import_behaviors_from_text_file(self):
|
|
476
485
|
"""
|
|
477
|
-
Import
|
|
486
|
+
Import ethogram from text file (CSV or TSV)
|
|
478
487
|
"""
|
|
479
488
|
|
|
480
489
|
if self.twBehaviors.rowCount():
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "boris-behav-obs"
|
|
3
|
-
version = "8.27.
|
|
3
|
+
version = "8.27.4"
|
|
4
4
|
description = "BORIS - Behavioral Observation Research Interactive Software"
|
|
5
5
|
authors = [{ name="Olivier Friard", email="olivier.friard@unito.it" }]
|
|
6
6
|
readme = "README.rst"
|
|
@@ -58,7 +58,7 @@ line-length = 140
|
|
|
58
58
|
exclude = ["*_ui.py", "mpv*"]
|
|
59
59
|
|
|
60
60
|
[tool.bumpver]
|
|
61
|
-
current_version = "8.27.
|
|
61
|
+
current_version = "8.27.4"
|
|
62
62
|
version_pattern = "MAJOR.MINOR.PATCH"
|
|
63
63
|
|
|
64
64
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boris_behav_obs-8.27.2 → boris_behav_obs-8.27.4}/boris_behav_obs.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|