Пример #1
0
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)
Пример #2
0
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")
Пример #7
0
    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()
Пример #8
0
def test_GIVEN_invalid_json_string_WHEN_json_to_nexus_called_THEN_error_is_raised(
):
    with pytest.raises(ValueError):
        json_to_nexus("{")