Skip to content

Commit

Permalink
Added a str_list to annotation utilities to handle None for MATLAB
Browse files Browse the repository at this point in the history
  • Loading branch information
VisLab committed Apr 25, 2024
1 parent 8daebfa commit 94671fe
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 2 deletions.
14 changes: 14 additions & 0 deletions hed/tools/analysis/annotation_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,20 @@ def merge_hed_dict(sidecar_dict, hed_dict):
sidecar_dict[key]['Levels'] = value_dict['Levels']


def str_list(obj_list):
""" Return a list with the objects converted to string except for None elements.
Parameters:
obj_list (list): A list of objects that are None or have a str method.
Returns:
list: A list with the objects converted to strings -- except None values are preserved.
"""

# Using list comprehension to convert non-None items to strings
return [str(item) if item is not None else None for item in obj_list]


def str_to_tabular(tsv_str, sidecar=None):
""" Return a TabularInput a tsv string.
Expand Down
19 changes: 17 additions & 2 deletions tests/tools/analysis/test_annotation_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
from hed import schema as hedschema
from hed.errors import HedFileError
from hed.models.sidecar import Sidecar
from hed.models.hed_string import HedString
from hed.tools.analysis.annotation_util import check_df_columns, df_to_hed, extract_tags,\
hed_to_df, merge_hed_dict, strs_to_sidecar, str_to_tabular
hed_to_df, merge_hed_dict, strs_to_sidecar, str_to_tabular, str_list
from hed.tools.analysis.annotation_util import _flatten_cat_col, _flatten_val_col, _get_value_entry, _tag_list_to_str, \
_update_cat_dict, generate_sidecar_entry
# from hed.tools.analysis.annotation_util import _find_last_pos, _find_first_pos, trim_back, trim_front
from hed.tools.analysis.tabular_summary import TabularSummary
from hed.tools.util.io_util import get_file_list

Expand Down Expand Up @@ -308,6 +308,21 @@ def test_strs_to_tabular(self):
events_contents = file.read()
tab_in = str_to_tabular(events_contents, sidecar=self.json_path)

def test_str_list(self):
# schema
# list1 = [HedString('Red, Sensory-event', schema)]
list1 = ['abc', '', None, 3.24]
str_list1 = str_list(list1)
self.assertEqual(len(str_list1), len(list1))
self.assertIsNone(str_list1[2], None)
self.assertEqual(str_list1[3], '3.24')
self.assertFalse(str_list1[1])
list2 = [HedString('Red, Sensory-event', self.hed_schema), None, HedString('', self.hed_schema)]
str_list2 = str_list(list2)
self.assertEqual(len(str_list2), len(list2))
self.assertIsNone(str_list2[1], None)
self.assertEqual(str_list2[0], 'Red,Sensory-event')
self.assertEqual(str_list2[2], '')

def test_flatten_cat_col(self):
col1 = self.sidecar2c["a"]
Expand Down

0 comments on commit 94671fe

Please sign in to comment.