Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

np.asscalar() is deprecated and prevents the metadata from being saved in some experiments #98

Open
nvbln opened this issue Apr 5, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@nvbln
Copy link
Contributor

nvbln commented Apr 5, 2024

I got the following error trace whilst saving the metadata in Stytra after the experiment finished:

  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\tracking_experiments.py", line 441, in end_protocol
    super().end_protocol(save)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\tracking_experiments.py", line 141, in end_protocol
    super().end_protocol(save=save)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\__init__.py", line 528, in end_protocol
    self.save_data()
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\tracking_experiments.py", line 460, in save_data
    super().save_data()
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\__init__.py", line 759, in save_data
    super().save_data()
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\__init__.py", line 498, in save_data
    self.dc.save(self.filename_base() + "metadata.json")  # save data_log
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\collectors\data_collector.py", line 234, in save
    self.save_json_log(output_path)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\collectors\data_collector.py", line 215, in save_json_log
    clean_dict = self.get_clean_dict(convert_datetime=True)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\collectors\data_collector.py", line 156, in get_clean_dict
    return prepare_json(clean_data_dict, **kwargs)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 128, in prepare_json
    new_dict[key] = prepare_json(value, **kwargs)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 128, in prepare_json
    new_dict[key] = prepare_json(value, **kwargs)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 133, in prepare_json
    return [prepare_json(el, **kwargs) for el in it]
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 133, in <listcomp>
    return [prepare_json(el, **kwargs) for el in it]
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 128, in prepare_json
    new_dict[key] = prepare_json(value, **kwargs)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 135, in prepare_json
    return np.asscalar(it)
  File "C:\Users\portugueslab\anaconda3\envs\opto_stytra_env\lib\site-packages\numpy\__init__.py", line 311, in __getattr__
    raise AttributeError("module {!r} has no attribute "
Error in sys.excepthook:
Traceback (most recent call last):
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\tracking_experiments.py", line 482, in excepthook
    super()._finish_recording()
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\tracking_experiments.py", line 244, in _finish_recording
    self.frame_recorder.finish_event.set()
AttributeError: 'TrackingExperiment' object has no attribute 'frame_recorder'

Original exception was:
Traceback (most recent call last):
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\tracking_experiments.py", line 441, in end_protocol
    super().end_protocol(save)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\tracking_experiments.py", line 141, in end_protocol
    super().end_protocol(save=save)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\__init__.py", line 528, in end_protocol
    self.save_data()
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\tracking_experiments.py", line 460, in save_data
    super().save_data()
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\__init__.py", line 759, in save_data
    super().save_data()
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\experiments\__init__.py", line 498, in save_data
    self.dc.save(self.filename_base() + "metadata.json")  # save data_log
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\collectors\data_collector.py", line 234, in save
<class 'AttributeError'>: module 'numpy' has no attribute 'asscalar'
    self.save_json_log(output_path)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\collectors\data_collector.py", line 215, in save_json_log
    clean_dict = self.get_clean_dict(convert_datetime=True)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\collectors\data_collector.py", line 156, in get_clean_dict
    return prepare_json(clean_data_dict, **kwargs)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 128, in prepare_json
    new_dict[key] = prepare_json(value, **kwargs)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 128, in prepare_json
    new_dict[key] = prepare_json(value, **kwargs)
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 133, in prepare_json
    return [prepare_json(el, **kwargs) for el in it]
  File "C:\Users\portugueslab\python\opto_stytra\stytra\stytra\utilities.py", line 133, in <listcomp>
    return [pr

It seems that the prepare_json() function relies on a deprecated Numpy function. The fix seems relatively easy: change return np.asscalar(it) to return it.item().

I tested it, and I can confirm that the metadata file is saved again as before. However, I didn't check the file contents to see if the output has changed.

@nvbln nvbln added the bug Something isn't working label Apr 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant