def test_GIVEN_json_containing_link_WHEN_json_to_nexus_called_THEN_link_created_in_NeXus( ): dataset_name = "test_dataset" link_name = "test_link" test_json = f""" {{ "nexus_structure": {{ "children": [ {{ "type": "dataset", "name": "{dataset_name}", "dataset": {{ "type": "int32", "size": [1] }}, "values": [1] }}, {{ "type": "link", "name": "{link_name}", "target": "/dataset_name" }} ] }} }} """ nexus_file = json_to_nexus(test_json) assert isinstance(nexus_file.get(link_name, getlink=True), h5py.SoftLink)
def test_GIVEN_json_containing_string_dataset_and_attribute_WHEN_json_to_nexus_called_THEN_dataset_created_in_NeXus( ): dataset_name = "test_dataset" dataset_value = "How long is a string?" attribute_name = "test_attribute" attribute_value = "forty-two" test_json = f""" {{ "nexus_structure": {{ "children": [ {{ "type": "dataset", "name": "{dataset_name}", "attributes": [ {{ "name": "{attribute_name}", "values": "{attribute_value}" }} ], "dataset": {{ "type": "string", "size": [1] }}, "values": ["{dataset_value}"] }} ] }} }} """ nexus_file = json_to_nexus(test_json) assert dataset_name in nexus_file assert nexus_file[dataset_name][...] == dataset_value assert attribute_name in nexus_file[dataset_name].attrs.keys() assert nexus_file[dataset_name].attrs[attribute_name] == attribute_value
def test_GIVEN_json_containing_dataset_WHEN_json_to_nexus_called_THEN_dataset_created_in_NeXus( ): dataset_name = "test_dataset" dataset_value = 1817 attribute_name = "test_attribute" attribute_value = 42 test_json = f""" {{ "children": [ {{ "type": "dataset", "name": "{dataset_name}", "attributes": [ {{ "name": "{attribute_name}", "values": {attribute_value} }} ], "dataset": {{ "type": "float", "size": [1] }}, "values": [{dataset_value}] }} ] }} """ nexus_file = json_to_nexus(test_json) assert dataset_name in nexus_file assert np.isclose(nexus_file[dataset_name][...], dataset_value) assert nexus_file[dataset_name][...].dtype == np.float32 assert attribute_name in nexus_file[dataset_name].attrs.keys() assert nexus_file[dataset_name].attrs[attribute_name] == attribute_value
def test_GIVEN_json_containing_stream_WHEN_json_to_nexus_called_THEN_stream_created_in_NeXus( ): group_name = "test_group" topic = "test_topic" writer_module = "f142" source = "test_source" type = "double" test_json = f""" {{ "children": [ {{ "type": "group", "name": "{group_name}", "children": [ {{ "type": "stream", "stream": {{ "type": "{type}", "writer_module": "{writer_module}", "source": "{source}", "topic": "{topic}" }} }} ] }} ] }} """ nexus_file = json_to_nexus(test_json) assert group_name in nexus_file assert nexus_file[group_name] assert nexus_file[group_name]["topic"][()] == topic assert nexus_file[group_name]["writer_module"][()] == writer_module assert nexus_file[group_name]["type"][()] == type assert nexus_file[group_name]["source"][()] == source
def test_GIVEN_json_containing_group_WHEN_json_to_nexus_called_THEN_group_created_in_NeXus( ): group_name = "test_group" test_json = f""" {{ "children": [ {{ "type": "group", "name": "{group_name}", "children": [] }} ] }} """ nexus_file = json_to_nexus(test_json) assert group_name in nexus_file assert isinstance(nexus_file[group_name], h5py.Group)
def test_GIVEN_json_containing_entry_group_WHEN_json_to_nexus_called_THEN_entry_created_in_NeXus( ): test_json = """ { "children": [ { "type": "group", "name": "test_entry", "children": [], "attributes": [ { "name": "NX_class", "values": "NXentry" } ] } ] } """ nexus_file = json_to_nexus(test_json) assert "test_entry" in nexus_file assert is_nexus_class(nexus_file["test_entry"], "NXentry")
def open_json_file(self): filename = file_dialog(False, "Open File Writer JSON File", JSON_FILE_TYPES) if filename: with open(filename, "r") as json_file: json_data = json_file.read() try: nexus_file = json_to_nexus(json_data) except Exception as exception: show_warning_dialog( "Provided file not recognised as valid JSON", "Invalid JSON", f"{exception}", parent=self, ) return existing_file = self.instrument.nexus.nexus_file if self.instrument.nexus.load_nexus_file(nexus_file): self._update_views() existing_file.close()
def test_GIVEN_invalid_json_string_WHEN_json_to_nexus_called_THEN_error_is_raised( ): with pytest.raises(ValueError): json_to_nexus("{")